@jentrix/cli 0.5.13 → 0.5.15

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.
package/surface.json CHANGED
@@ -11,7 +11,6 @@
11
11
  },
12
12
  "description": "Claim a work lease on a target before starting work. Returns CONFLICT (with the active lease in error.current) when the target already has a blocking/exclusive lease and no approved takeover (policyEvaluationId) is supplied — so you can wait, take over, hand off, or run in parallel BEFORE expensive execution.",
13
13
  "inputSchema": {
14
- "$schema": "http://json-schema.org/draft-07/schema#",
15
14
  "properties": {
16
15
  "agentJobId": {
17
16
  "anyOf": [
@@ -168,7 +167,6 @@
168
167
  },
169
168
  "description": "Append cases to an EXISTING eval dataset (admin scope + ADMIN role). Each case cuts a NEW immutable version (prior members preserved + the new case) and advances the head, all in one transaction — a consumer pinned to a prior version keeps resolving its original case set. Returns the head version and per-case append results.",
170
169
  "inputSchema": {
171
- "$schema": "http://json-schema.org/draft-07/schema#",
172
170
  "properties": {
173
171
  "cases": {
174
172
  "items": {
@@ -295,7 +293,6 @@
295
293
  },
296
294
  "description": "Link a project to a board, task, repo, doc, decision, metric, or agent. For connected sessions, a REPO link uses the normalized lowercase \"owner/name\" as targetId (a GitHub URL is accepted and normalized) — the link that satisfies the session repo gate. Adding an edge that already exists is a no-op. Needs the workspace ADMIN role.",
297
295
  "inputSchema": {
298
- "$schema": "http://json-schema.org/draft-07/schema#",
299
296
  "properties": {
300
297
  "label": {
301
298
  "anyOf": [
@@ -377,7 +374,6 @@
377
374
  },
378
375
  "description": "Link two tasks of ANY board kind in the same workspace (cross-board allowed), e.g. a bug that BLOCKS a deal. Kinds: BLOCKS, DEPENDS_ON, RELATES_TO, DUPLICATES. Rejects BLOCKS/DEPENDS_ON edges that would create a cycle — the error names the cycle path by task key. Adding an edge that already exists is a no-op.",
379
376
  "inputSchema": {
380
- "$schema": "http://json-schema.org/draft-07/schema#",
381
377
  "properties": {
382
378
  "fromTaskId": {
383
379
  "description": "Task ID on the FROM side of the edge (any board kind).",
@@ -419,7 +415,6 @@
419
415
  },
420
416
  "description": "Jentrix MVP: anchor an OPEN session to a work item + accountable owner after the operator confirmed the wizard's choices. The server builds the alignment snapshot (ids + display names), stores it on the session, and returns it — echo it VERBATIM to the operator. Re-aligning replaces the anchor and writes a visible activity row, never silently. The session's project/workspace are immutable — a different project means a new session. Requires expectedUpdatedAt (CAS). taskId null = \"no task — session-level work\".",
421
417
  "inputSchema": {
422
- "$schema": "http://json-schema.org/draft-07/schema#",
423
418
  "properties": {
424
419
  "agentEmoji": {
425
420
  "anyOf": [
@@ -512,7 +507,6 @@
512
507
  },
513
508
  "description": "Archive a board (admin scope + board ADMIN) — the inverse of unarchive_boards. Soft delete: the board and its tasks are retained and unarchive_boards reverses it.",
514
509
  "inputSchema": {
515
- "$schema": "http://json-schema.org/draft-07/schema#",
516
510
  "properties": {
517
511
  "boardId": {
518
512
  "description": "Board to archive.",
@@ -537,7 +531,6 @@
537
531
  },
538
532
  "description": "Archive a contact (soft delete — disappears from pickers but existing deal links are preserved).",
539
533
  "inputSchema": {
540
- "$schema": "http://json-schema.org/draft-07/schema#",
541
534
  "properties": {
542
535
  "contactId": {
543
536
  "description": "ID of the contact to archive.",
@@ -562,7 +555,6 @@
562
555
  },
563
556
  "description": "Archive a harness run (admin scope + ADMIN role). TERMINAL-ONLY: a non-terminal run is refused with the shared archive preflight naming cancellation as the way through, so a run can never be archived out from under a claimed attempt. Soft delete; the run and its stages are retained.",
564
557
  "inputSchema": {
565
- "$schema": "http://json-schema.org/draft-07/schema#",
566
558
  "properties": {
567
559
  "harnessId": {
568
560
  "description": "Alias for harnessRunId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -592,7 +584,6 @@
592
584
  },
593
585
  "description": "Archive a model profile (admin scope + ADMIN role). Soft delete; the profile leaves the active list but is retained. Returns the archived profile.",
594
586
  "inputSchema": {
595
- "$schema": "http://json-schema.org/draft-07/schema#",
596
587
  "properties": {
597
588
  "modelProfileId": {
598
589
  "minLength": 1,
@@ -621,7 +612,6 @@
621
612
  },
622
613
  "description": "Archive a provider connection (admin scope + ADMIN role). REFUSED while an active worker release or an in-flight attempt depends on it (the shared archive preflight — cannot silently break running work); the audit records the dependency report either way. Soft delete. Returns the archived (redacted) connection.",
623
614
  "inputSchema": {
624
- "$schema": "http://json-schema.org/draft-07/schema#",
625
615
  "properties": {
626
616
  "connectionId": {
627
617
  "minLength": 1,
@@ -650,7 +640,6 @@
650
640
  },
651
641
  "description": "Archive a task (soft delete — it disappears from the board but is recoverable).",
652
642
  "inputSchema": {
653
- "$schema": "http://json-schema.org/draft-07/schema#",
654
643
  "properties": {
655
644
  "taskId": {
656
645
  "description": "ID of the task to archive (soft delete).",
@@ -675,7 +664,6 @@
675
664
  },
676
665
  "description": "Bind a TRUSTED current provider session/thread id (from provider lifecycle hooks or app-server context — never model-authored text) to a Jentrix session. With sessionId: late-binds a CLI-started session's provider thread (CAS). Without: attach-creates an ACTIVE session for the current provider thread; repeating with the same tuple converges on the existing session. A competing active binding fails SESSION_ALREADY_BOUND. Requires idempotencyKey.",
677
666
  "inputSchema": {
678
- "$schema": "http://json-schema.org/draft-07/schema#",
679
667
  "properties": {
680
668
  "connection": {
681
669
  "oneOf": [
@@ -816,7 +804,6 @@
816
804
  },
817
805
  "description": "Attach a first-class artifact (PR/diff/log/screenshot/eval report/run summary/…) linked to a task/project/run/decision/Work Order. EXTERNAL_URL storage takes a url; R2_OBJECT storage requires an uploadGrantId from POST /api/artifacts/upload-grant (REST, same bearer) after PUTting the bytes to its presigned uploadUrl — `jentrix artifact upload <file>` runs that whole flow. Returns the stored artifact record.",
818
806
  "inputSchema": {
819
- "$schema": "http://json-schema.org/draft-07/schema#",
820
807
  "properties": {
821
808
  "approvalRequestId": {
822
809
  "anyOf": [
@@ -1094,7 +1081,6 @@
1094
1081
  },
1095
1082
  "description": "Authorize a communication connector (OAuth) via elicitation. Sends the user a URL-mode elicitation to complete the provider grant IN THEIR BROWSER; the freshly-minted access token is deposited straight into the M4 credential broker by the provider callback and NEVER returns over MCP. On accept, pins the credential onto the source BY REFERENCE and reports { authorized, action, credentialRef } — a reference, never a secret. Requires a client that supports elicitation. Admin scope + ADMIN role.",
1096
1083
  "inputSchema": {
1097
- "$schema": "http://json-schema.org/draft-07/schema#",
1098
1084
  "properties": {
1099
1085
  "sourceId": {
1100
1086
  "description": "The communication source (connector) to authorize.",
@@ -1125,7 +1111,6 @@
1125
1111
  },
1126
1112
  "description": "Authorize the external runner's LOCAL git commit for a validated harness stage — a repo:commit permission check that honors freeze, leases, and policy. AUTHORIZATION ONLY: it mints no credential and approves no gate. The runner performs the local commit itself, then reports the SHA via submit_harness_stage_result; the push/PR is the separate single-use brokered repo:push / repo:pr_create path, and merge is the separate always-human MERGE gate. Only a VALIDATED (or COMMIT_GATE) stage on a non-frozen run can authorize; otherwise CONFLICT/FORBIDDEN. Returns { authorized, harnessRunId, branch }. Admin only.",
1127
1113
  "inputSchema": {
1128
- "$schema": "http://json-schema.org/draft-07/schema#",
1129
1114
  "properties": {
1130
1115
  "branch": {
1131
1116
  "anyOf": [
@@ -1203,7 +1188,6 @@
1203
1188
  },
1204
1189
  "description": "Create up to 50 tasks in one column in a single transaction (all-or-nothing). Returns each new task's id, number, and key in input order.",
1205
1190
  "inputSchema": {
1206
- "$schema": "http://json-schema.org/draft-07/schema#",
1207
1191
  "properties": {
1208
1192
  "columnId": {
1209
1193
  "description": "Target column for ALL created tasks (one column per call).",
@@ -1284,7 +1268,6 @@
1284
1268
  },
1285
1269
  "description": "Move up to 50 tasks to new columns at once (each appended to the end of its destination, in input order). Access is checked per task; valid moves apply in one transaction with per-item results.",
1286
1270
  "inputSchema": {
1287
- "$schema": "http://json-schema.org/draft-07/schema#",
1288
1271
  "properties": {
1289
1272
  "idempotencyKey": {
1290
1273
  "description": "Optional idempotency key: retrying with the same key and arguments within 24h returns the original result instead of creating duplicates. Reusing a key with different arguments fails with CONFLICT.",
@@ -1335,7 +1318,6 @@
1335
1318
  },
1336
1319
  "description": "Update up to 50 tasks at once. Access is checked per task; valid updates apply in one transaction and the per-item result array reports any failures so you can retry just those.",
1337
1320
  "inputSchema": {
1338
- "$schema": "http://json-schema.org/draft-07/schema#",
1339
1321
  "properties": {
1340
1322
  "idempotencyKey": {
1341
1323
  "description": "Optional idempotency key: retrying with the same key and arguments within 24h returns the original result instead of creating duplicates. Reusing a key with different arguments fails with CONFLICT.",
@@ -1421,7 +1403,6 @@
1421
1403
  },
1422
1404
  "description": "Cancel a harness run while PRESERVING its audit history (artifacts, findings, decisions, and activity stay queryable). A terminal state move — not an archive/delete. Records the cancelling actor + reason. Admin only.",
1423
1405
  "inputSchema": {
1424
- "$schema": "http://json-schema.org/draft-07/schema#",
1425
1406
  "properties": {
1426
1407
  "expectedUpdatedAt": {
1427
1408
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current state.",
@@ -1469,7 +1450,6 @@
1469
1450
  },
1470
1451
  "description": "Runner only: claim the current turn of a job, opening an AgentRun and returning its runId plus the routedReleaseId the run must EXECUTE against (the candidate when a RUNNING canary routed this claim into its traffic fraction, otherwise the pointed-to baseline; null for unbound/personal claims). The worker MUST run the routedReleaseId. Atomic — a second claim while one run is live is a CONFLICT. Pass the runId to the role session for its submit, and heartbeat it while it works.",
1471
1452
  "inputSchema": {
1472
- "$schema": "http://json-schema.org/draft-07/schema#",
1473
1453
  "properties": {
1474
1454
  "appRevision": {
1475
1455
  "description": "The worker image's build-stamped app revision (git SHA). Refused fail-closed on mismatch with a stamped control plane.",
@@ -1569,7 +1549,6 @@
1569
1549
  },
1570
1550
  "description": "Clone an immutable agent release into a new CANDIDATE while changing only codeSnapshotRef. The server copies every opaque prompt, tool-profile, skill, policy, runtime, dataset, model, and budget pin without returning or requiring the raw snapshots. The clone must pass a fresh gating eval before activation.",
1571
1551
  "inputSchema": {
1572
- "$schema": "http://json-schema.org/draft-07/schema#",
1573
1552
  "properties": {
1574
1553
  "codeSnapshotRef": {
1575
1554
  "maxLength": 400,
@@ -1605,7 +1584,6 @@
1605
1584
  },
1606
1585
  "description": "Copy a harness template into a NEW template in the same workspace (ADMIN; admin scope) — the way you fork a pipeline to vary it without touching the one that is in use. The copy always lands as a DRAFT even when cloned from a published version: it is new content that nobody has approved yet. Omit versionId to clone the published head (falling back to the draft when unpublished), and omit name for '<original> (copy)'. idempotencyKey is REQUIRED, so a retried CI step does not leave two copies behind.",
1607
1586
  "inputSchema": {
1608
- "$schema": "http://json-schema.org/draft-07/schema#",
1609
1587
  "properties": {
1610
1588
  "harnessTemplateId": {
1611
1589
  "minLength": 1,
@@ -1643,7 +1621,6 @@
1643
1621
  },
1644
1622
  "description": "Diff two versions of the same harness template — what a review of 'what changed between v3 and v4' actually needs. Steps are matched BY KEY, never by index, so a reordered pipeline reads as `moved` with its indices rather than as a wall of unrelated changes; a step reports `added`, `removed`, `modified`, `moved` or `unchanged`, and a modified one lists each changed field with its before/after. `settings` carries changes outside the step list (run defaults, budgets, credential refs). `identical: true` means the two definitions canonicalize to the same bytes.",
1645
1623
  "inputSchema": {
1646
- "$schema": "http://json-schema.org/draft-07/schema#",
1647
1624
  "properties": {
1648
1625
  "fromVersionId": {
1649
1626
  "minLength": 1,
@@ -1677,7 +1654,6 @@
1677
1654
  },
1678
1655
  "description": "Close a session with an honest lifecycle outcome (COMPLETED normal end / INTERRUPTED crash / CANCELLED pre-first-turn abort). The server verifies the trace-part manifest against durable artifacts, stores the deterministic RUN_SUMMARY, and sets captureComplete ONLY when every expected part and the summary are acknowledged — lifecycle and capture integrity stay orthogonal. Requires expectedUpdatedAt (CAS).",
1679
1656
  "inputSchema": {
1680
- "$schema": "http://json-schema.org/draft-07/schema#",
1681
1657
  "properties": {
1682
1658
  "captureError": {
1683
1659
  "anyOf": [
@@ -1996,7 +1972,6 @@
1996
1972
  },
1997
1973
  "description": "Create or configure the workspace's software-company profile (idempotent). Creates or adopts the five boards (Product Intake, Roadmap, Bugs, Support, Company Operations) — seeding Product Intake's exact New/Triage/Decision/Approved/Rejected columns and Company Operations' request columns/labels — and updates non-secret settings (repo/base branch, sources, required checks, review schedule, operator, agent bindings). Rejects a missing, cross-workspace, archived, duplicate, or wrong-kind board binding. Requires the workspace ADMIN role; changing the operator or the required release/security bindings requires OWNER. Pass expectedUpdatedAt for optimistic concurrency. Never stores credentials, tokens, or prompts.",
1998
1974
  "inputSchema": {
1999
- "$schema": "http://json-schema.org/draft-07/schema#",
2000
1975
  "properties": {
2001
1976
  "agentBindings": {
2002
1977
  "additionalProperties": {
@@ -2279,7 +2254,6 @@
2279
2254
  },
2280
2255
  "description": "Convert a board to a different kind (TASKS/CRM/SUPPORT/BUGS/ROADMAP). Requires ADMIN role. Eagerly creates the target kind's sidecar on every non-archived task; columns and other-kind sidecars are preserved. Returns how many sidecars were backfilled.",
2281
2256
  "inputSchema": {
2282
- "$schema": "http://json-schema.org/draft-07/schema#",
2283
2257
  "properties": {
2284
2258
  "boardId": {
2285
2259
  "description": "Board to convert. Discover via list_boards(workspaceId).",
@@ -2316,7 +2290,6 @@
2316
2290
  },
2317
2291
  "description": "Freeze a promoted playbook into a Skill Registry SkillVersion (admin scope + ADMIN role). Snapshots the playbook's VERIFIED executable definition (trigger, context, tools, content-hashed policy pins, eval-gated configuration digest) into an immutable, content-addressed version (origin = playbook) and pins it onto the playbook in one transaction. Content-addressed + idempotent: re-converting an unchanged playbook replays to the SAME version (created: false), never a duplicate. Only a promoted (enabled) playbook can be converted. Returns the skill/version ids, ordinal, and content hash.",
2318
2292
  "inputSchema": {
2319
- "$schema": "http://json-schema.org/draft-07/schema#",
2320
2293
  "properties": {
2321
2294
  "playbookId": {
2322
2295
  "minLength": 1,
@@ -2340,7 +2313,6 @@
2340
2313
  },
2341
2314
  "description": "Create an agent profile (admin scope; ADMIN role for a workspace agent). Omit workspaceId for a personal agent (owner-only). Pins role/provider/runtime/trust/scopes and the governance bindings. Returns the new agent's id.",
2342
2315
  "inputSchema": {
2343
- "$schema": "http://json-schema.org/draft-07/schema#",
2344
2316
  "properties": {
2345
2317
  "allowedProjectIds": {
2346
2318
  "description": "Project routing boundary within a workspace (empty = all).",
@@ -2586,7 +2558,6 @@
2586
2558
  },
2587
2559
  "description": "Cut a new immutable CANDIDATE release for an agent (admin scope + ADMIN role). Pins the full executable configuration — model + provider adapter, worker/sandbox image digests + SDK revision, code snapshot, prompt/tool-profile snapshots (folded by content hash), skillRefs, policy revisions, gating dataset version, and budget defaults — into a canonical configurationDigest. M18.2 worker config (R3/R4): pin the AI worker's registered runtime adapter + provider connection + generation controls + fallback either explicitly (runtimeAdapterKey/providerConnectionId/generationControls/workerFallback) or, preferably, by publishing the agent's SAVED worker draft with publishWorkerDraft:true (the configure→publish flow — reads the draft's prompt/skills/model). Either way the draft is validated server-side: an unsupported control (maxTurns for Codex, a raw temperature) or a connection/model that doesn't belong to the adapter is REFUSED, never hashed opaquely. Creation is ungated and never requires a prior eval (it breaks the create/evaluate circularity); a green gating run later marks it ELIGIBLE and set_active_release activates it. Workspace-governed releases MUST pin the full runtime/workspace set. Returns the created candidate.",
2588
2560
  "inputSchema": {
2589
- "$schema": "http://json-schema.org/draft-07/schema#",
2590
2561
  "properties": {
2591
2562
  "agentProfileId": {
2592
2563
  "minLength": 1,
@@ -2795,7 +2766,6 @@
2795
2766
  },
2796
2767
  "description": "Create a STARTING connected session BEFORE provider launch: validates operator membership, project visibility, and that the project links the checkout repository (refused otherwise — no model is invoked). The project determines and locks the workspace. Requires idempotencyKey (the CLI launch nonce).",
2797
2768
  "inputSchema": {
2798
- "$schema": "http://json-schema.org/draft-07/schema#",
2799
2769
  "properties": {
2800
2770
  "connection": {
2801
2771
  "oneOf": [
@@ -2923,7 +2893,6 @@
2923
2893
  },
2924
2894
  "description": "Create an automation rule (admin scope + ADMIN role). Board triggers: task.created, task.moved_to_column (optional columnId), label.added (optional labelId), due.passed, sla.breached, check.failed (a CI run entered a failing conclusion on a PR-linked task). Harness-lifecycle triggers (act on the run's anchor task): harness.created, harness.stage_ready, harness.stage_validated, harness.stage_committed, harness.finding_created, harness.blocked, harness.completed. Actions include the usual board ops plus start_delivery_workflow (launch a ci_failure_triage loop bound to the failing PR) and start_harness_stage_run (launch the run's next undone stage — harness triggers ONLY, in practice harness.stage_ready; deduped against an active stage job, a no-op while the run is frozen/cancelled/blocked, and never approves a gate). Actions run as the rule's creator with source 'automation' and can NEVER trigger other rules (hard loop guard).",
2925
2895
  "inputSchema": {
2926
- "$schema": "http://json-schema.org/draft-07/schema#",
2927
2896
  "properties": {
2928
2897
  "actions": {
2929
2898
  "items": {
@@ -3368,7 +3337,6 @@
3368
3337
  },
3369
3338
  "description": "Create a board in a workspace with the default columns for its kind (TASKS/CRM/SUPPORT/BUGS/ROADMAP, default TASKS).",
3370
3339
  "inputSchema": {
3371
- "$schema": "http://json-schema.org/draft-07/schema#",
3372
3340
  "properties": {
3373
3341
  "idempotencyKey": {
3374
3342
  "description": "Optional idempotency key: retrying with the same key and arguments within 24h returns the original result instead of creating duplicates. Reusing a key with different arguments fails with CONFLICT.",
@@ -3417,7 +3385,6 @@
3417
3385
  },
3418
3386
  "description": "Add a comment to a task (markdown body, max 20k chars).",
3419
3387
  "inputSchema": {
3420
- "$schema": "http://json-schema.org/draft-07/schema#",
3421
3388
  "properties": {
3422
3389
  "body": {
3423
3390
  "description": "Comment body (markdown, max 20k chars).",
@@ -3464,7 +3431,6 @@
3464
3431
  },
3465
3432
  "description": "Create a workspace-scoped contact (name required; email/phone/company/externalId optional). Contacts are shared by CRM deals and SUPPORT tickets. Returns the new contact ID.",
3466
3433
  "inputSchema": {
3467
- "$schema": "http://json-schema.org/draft-07/schema#",
3468
3434
  "properties": {
3469
3435
  "company": {
3470
3436
  "anyOf": [
@@ -3552,7 +3518,6 @@
3552
3518
  },
3553
3519
  "description": "Create a credential RECORD (admin scope + ADMIN role) — an opaque backend REFERENCE (installationId / token id), NEVER a secret. The secret half of a backend still enters via the sealed UI intake (H3). Returns the record id.",
3554
3520
  "inputSchema": {
3555
- "$schema": "http://json-schema.org/draft-07/schema#",
3556
3521
  "properties": {
3557
3522
  "allowedScopes": {
3558
3523
  "items": {
@@ -3638,7 +3603,6 @@
3638
3603
  },
3639
3604
  "description": "Propose a decision in the Decision Register (status PROPOSED). Any member may propose; decisions are immutable after acceptance (edits append a revision).",
3640
3605
  "inputSchema": {
3641
- "$schema": "http://json-schema.org/draft-07/schema#",
3642
3606
  "properties": {
3643
3607
  "affectedWork": {
3644
3608
  "anyOf": [
@@ -3880,7 +3844,6 @@
3880
3844
  },
3881
3845
  "description": "Create a NEW eval dataset and cut its first immutable versions from `cases` (admin scope + ADMIN role) — one version per case, all in one transaction. Refused with CONFLICT if a dataset with this key already exists (use add_eval_cases). Returns the head version and per-case append results.",
3882
3846
  "inputSchema": {
3883
- "$schema": "http://json-schema.org/draft-07/schema#",
3884
3847
  "properties": {
3885
3848
  "cases": {
3886
3849
  "items": {
@@ -4020,7 +3983,6 @@
4020
3983
  },
4021
3984
  "description": "Create a harness run governing the spec→plan→stage→review→commit loop over a task/project/repo scope. Returns the new run's id + slug.",
4022
3985
  "inputSchema": {
4023
- "$schema": "http://json-schema.org/draft-07/schema#",
4024
3986
  "properties": {
4025
3987
  "allowedPaths": {
4026
3988
  "description": "Path globs the run is allowed to touch (empty = unrestricted).",
@@ -4155,7 +4117,6 @@
4155
4117
  },
4156
4118
  "description": "Author a stage directly on a harness run (the hand-authored fallback to the coverage-enforced spec→plan decomposition loop; ADMIN only, admin scope). Appends it after the existing stages (next 1-based ordinal) carrying the SAME full plan a decomposition proposal does — title, acceptance criteria, traced spec criteria, expected branch behavior, suggested tests, risk notes, branch, commit policy. A NON-draft stage gets executable backing: it auto-mints a 1:1 Work Order when workOrderId is omitted, so it can be passed to request_harness_stage_run (the run must be task-anchored and non-terminal, a supplied workOrderId must back the run's anchor task, and the stage must carry at least one acceptance criterion + one suggested test). Pass draftOnly: true for a non-executable placeholder (no Work Order; request_harness_stage_run rejects it as a draft). Returns the new stage's id + number.",
4157
4119
  "inputSchema": {
4158
- "$schema": "http://json-schema.org/draft-07/schema#",
4159
4120
  "properties": {
4160
4121
  "acceptanceCriteria": {
4161
4122
  "default": [],
@@ -4359,7 +4320,6 @@
4359
4320
  },
4360
4321
  "description": "Create a harness template with an initial DRAFT version (ADMIN; admin scope). Omit `definition` for the built-in starter pipeline. A draft may be invalid — that is what drafts are for — but it may never carry secret material: a credential is referenced by alias, and a secret-shaped literal is refused at the door. idempotencyKey is REQUIRED: retrying with the same key and arguments replays the original result instead of creating a second template.",
4361
4322
  "inputSchema": {
4362
- "$schema": "http://json-schema.org/draft-07/schema#",
4363
4323
  "properties": {
4364
4324
  "definition": {
4365
4325
  "additionalProperties": false,
@@ -6964,7 +6924,6 @@
6964
6924
  },
6965
6925
  "description": "Open an incident (escalate a failed run / bad action into structured handling: severity, owner, timeline, affected entities). Returns the created incident.",
6966
6926
  "inputSchema": {
6967
- "$schema": "http://json-schema.org/draft-07/schema#",
6968
6927
  "properties": {
6969
6928
  "affected": {
6970
6929
  "description": "Blast radius: ids of affected tasks/contacts/repos/customers (loose ids, no FK).",
@@ -7102,7 +7061,6 @@
7102
7061
  },
7103
7062
  "description": "Create a model profile for a provider connection (admin scope + ADMIN role): the model identifier + a label, capabilities, an optional free-text pricing note (no numeric rate field), and workspace-default flag. Returns the created (redaction-safe) profile.",
7104
7063
  "inputSchema": {
7105
- "$schema": "http://json-schema.org/draft-07/schema#",
7106
7064
  "properties": {
7107
7065
  "capabilities": {
7108
7066
  "additionalProperties": false,
@@ -7220,7 +7178,6 @@
7220
7178
  },
7221
7179
  "description": "File ONE governed company-operations request on the workspace's Company Operations board (in the 'Requested' column, class-labelled ACCESS / PROCUREMENT / CONTRACT / PEOPLE). Records the requester, accountable owner, due date, requested effect, supporting evidence/source links, and amount/currency when applicable. This is only the intake step: moving the request to 'Approval required' mints exactly one PROPOSED approval Decision (pinning task/policies/credentials/sources/amount); the request can enter Approved only after a human accepts that Decision, and reach Done only with a human-authored result plus an evidence link. Requires a configured profile and workspace membership. Never records any payment, signature, provisioning, or employment change.",
7222
7180
  "inputSchema": {
7223
- "$schema": "http://json-schema.org/draft-07/schema#",
7224
7181
  "properties": {
7225
7182
  "amount": {
7226
7183
  "description": "Amount when applicable (procurement/contract).",
@@ -7312,7 +7269,6 @@
7312
7269
  },
7313
7270
  "description": "Create a project (the container that links boards/tasks/repos/decisions, with owner/constraints/milestones/risks). Admin-gated.",
7314
7271
  "inputSchema": {
7315
- "$schema": "http://json-schema.org/draft-07/schema#",
7316
7272
  "properties": {
7317
7273
  "budget": {
7318
7274
  "anyOf": [
@@ -7490,7 +7446,6 @@
7490
7446
  },
7491
7447
  "description": "Create a provider connection for a registered runtime adapter (ADMIN). Validation is mechanical and load-bearing: a vendor without a registered adapter — Google Gemini today — is refused with an explanation, never silently accepted; a custom OpenAI-compatible endpoint must be a public https:// URL (localhost/private/RFC1918/link-local destinations are refused through the SSRF guard); api_key/custom connections must reference a secret already stored through the protected credential-entry flow (providerSecretId — never a raw secret), while a subscription connection carries no server-side secret. Nothing reads the process environment, so a connection is creatable without editing environment files. Verification always starts 'unverified' — the connection is never presumed healthy. Returns the created (redacted) connection.",
7492
7448
  "inputSchema": {
7493
- "$schema": "http://json-schema.org/draft-07/schema#",
7494
7449
  "properties": {
7495
7450
  "baseUrl": {
7496
7451
  "anyOf": [
@@ -7566,7 +7521,6 @@
7566
7521
  },
7567
7522
  "description": "Dry-run a staged plan (task changes / bulk edits / outbound messages / etc.) BEFORE any external side effect. Returns the simulation with computed diffs + projected side effects. NEVER commits — approve + execute happen on the human approval surface (no execute_simulation tool in v1).",
7568
7523
  "inputSchema": {
7569
- "$schema": "http://json-schema.org/draft-07/schema#",
7570
7524
  "properties": {
7571
7525
  "agentProfileId": {
7572
7526
  "anyOf": [
@@ -7663,7 +7617,6 @@
7663
7617
  },
7664
7618
  "description": "Add a subtask (checklist item) to a task.",
7665
7619
  "inputSchema": {
7666
- "$schema": "http://json-schema.org/draft-07/schema#",
7667
7620
  "properties": {
7668
7621
  "idempotencyKey": {
7669
7622
  "description": "Optional idempotency key: retrying with the same key and arguments within 24h returns the original result instead of creating duplicates. Reusing a key with different arguments fails with CONFLICT.",
@@ -7701,7 +7654,6 @@
7701
7654
  },
7702
7655
  "description": "Create a new task in a column. Returns the new task's ID, per-workspace number, and human-readable key (e.g. STK-42).",
7703
7656
  "inputSchema": {
7704
- "$schema": "http://json-schema.org/draft-07/schema#",
7705
7657
  "properties": {
7706
7658
  "columnId": {
7707
7659
  "description": "Target column. Use list_columns(boardId) to discover.",
@@ -7768,7 +7720,6 @@
7768
7720
  },
7769
7721
  "description": "Create an outbound webhook for a workspace (requires the admin token scope + ADMIN role). Events are HMAC-SHA256-signed POSTs with X-Jentrix-Signature/-Timestamp/-Event/-Delivery-Id headers, duplicated as the pre-rename X-Stacks-* set with identical values; failed deliveries retry with backoff for up to 8 attempts. The signing secret is returned ONCE. URL must be public https.",
7770
7722
  "inputSchema": {
7771
- "$schema": "http://json-schema.org/draft-07/schema#",
7772
7723
  "properties": {
7773
7724
  "events": {
7774
7725
  "description": "Event names to deliver (e.g. task.created, comment.created, harness.stage_committed). Omit or pass [] for ALL events.",
@@ -7912,7 +7863,6 @@
7912
7863
  },
7913
7864
  "description": "Create a Work Order for a task (the versioned brief + Context Pack an agent run launches from). Deterministic skeleton; narrative fields are model-assisted.",
7914
7865
  "inputSchema": {
7915
- "$schema": "http://json-schema.org/draft-07/schema#",
7916
7866
  "properties": {
7917
7867
  "acceptanceCriteria": {
7918
7868
  "description": "Required behavior, tests, and definition of done.",
@@ -8045,7 +7995,6 @@
8045
7995
  },
8046
7996
  "description": "Create a new workspace and become its OWNER (write scope). REFUSED for a workspace-pinned token — a token scoped to one workspace cannot mint another (checked before any write). The name derives a unique slug and a task-key prefix, both write-once. Workspace DELETE stays UI-only.",
8047
7997
  "inputSchema": {
8048
- "$schema": "http://json-schema.org/draft-07/schema#",
8049
7998
  "properties": {
8050
7999
  "idempotencyKey": {
8051
8000
  "description": "REQUIRED idempotency key: creating a workspace demands one, so a retried call replays the original result instead of minting a second workspace. Same key + same arguments within 24h replays the original response; same key + different arguments fails with CONFLICT.",
@@ -8077,7 +8026,6 @@
8077
8026
  },
8078
8027
  "description": "Delete an automation rule (admin scope + ADMIN role). Permanent — the rule and its run history are removed. To pause a rule instead, use set_automation_enabled.",
8079
8028
  "inputSchema": {
8080
- "$schema": "http://json-schema.org/draft-07/schema#",
8081
8029
  "properties": {
8082
8030
  "automationId": {
8083
8031
  "description": "Alias for ruleId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -8106,7 +8054,6 @@
8106
8054
  },
8107
8055
  "description": "Delete a comment permanently. Only the comment's author can delete it.",
8108
8056
  "inputSchema": {
8109
- "$schema": "http://json-schema.org/draft-07/schema#",
8110
8057
  "properties": {
8111
8058
  "commentId": {
8112
8059
  "description": "Comment to delete.",
@@ -8131,7 +8078,6 @@
8131
8078
  },
8132
8079
  "description": "Delete a subtask permanently.",
8133
8080
  "inputSchema": {
8134
- "$schema": "http://json-schema.org/draft-07/schema#",
8135
8081
  "properties": {
8136
8082
  "subtaskId": {
8137
8083
  "description": "Subtask to delete.",
@@ -8156,7 +8102,6 @@
8156
8102
  },
8157
8103
  "description": "Delete an outbound webhook and its delivery history (admin scope).",
8158
8104
  "inputSchema": {
8159
- "$schema": "http://json-schema.org/draft-07/schema#",
8160
8105
  "properties": {
8161
8106
  "webhookId": {
8162
8107
  "description": "Webhook to delete.",
@@ -8181,7 +8126,6 @@
8181
8126
  },
8182
8127
  "description": "Discover model profiles from a connection's server-side /v1/models listing (admin scope + ADMIN role): each listed model becomes an ADVISORY (discovered) profile — discovered metadata is advisory, the runtime capability schema stays authoritative. Subscription connections have no server probe and are refused with the manual-add pointer. Idempotent (re-discovery converges). Returns the discovered count, models, seeded profiles, and a summary.",
8183
8128
  "inputSchema": {
8184
- "$schema": "http://json-schema.org/draft-07/schema#",
8185
8129
  "properties": {
8186
8130
  "connectionId": {
8187
8131
  "minLength": 1,
@@ -8208,7 +8152,6 @@
8208
8152
  },
8209
8153
  "description": "Export a harness template version as a portable `jentrix.harness-template` document (omit versionId for the published head). The document carries credential REFERENCES only — {alias, kind, scopes, description}, with no value field and no workspace-local binding — and the exporter SCANS the whole document with the platform secret detector and FAILS rather than emitting a silently-redacted copy. Feed the result to import_harness_template in another workspace.",
8210
8154
  "inputSchema": {
8211
- "$schema": "http://json-schema.org/draft-07/schema#",
8212
8155
  "properties": {
8213
8156
  "harnessTemplateId": {
8214
8157
  "minLength": 1,
@@ -8236,7 +8179,6 @@
8236
8179
  },
8237
8180
  "description": "Runner only: mark the claimed run failed (e.g. a provider error) — the job goes to BLOCKED for a human. Requires the runId.",
8238
8181
  "inputSchema": {
8239
- "$schema": "http://json-schema.org/draft-07/schema#",
8240
8182
  "properties": {
8241
8183
  "error": {
8242
8184
  "description": "Why the run failed.",
@@ -8270,7 +8212,6 @@
8270
8212
  },
8271
8213
  "description": "Find tasks SEMANTICALLY similar to an existing task (pass taskId) or to free text (pass workspaceId + query) via vector embeddings — catches duplicates and related work that keyword search misses. similarity is cosine in [0,1]; ≥0.8 is a strong duplicate candidate (link with add_task_link kind DUPLICATES). Embeddings refresh every ~5 minutes, so very recent edits may not match yet; falls back to an empty result with a notice when semantic search is not configured.",
8272
8214
  "inputSchema": {
8273
- "$schema": "http://json-schema.org/draft-07/schema#",
8274
8215
  "properties": {
8275
8216
  "limit": {
8276
8217
  "description": "Max results (default 10, max 25).",
@@ -8309,7 +8250,6 @@
8309
8250
  },
8310
8251
  "description": "Freeze a harness run (the run-level human STOP control): immediately rejects new claims, parks submissions, signals frozen on heartbeat so the runner pauses, and fails brokered repo/deploy/cloud credentials closed. Records the freezing actor + reason (redacted) + the prior status to restore on resume. Rejects an already-frozen run (resume first). Admin only.",
8311
8252
  "inputSchema": {
8312
- "$schema": "http://json-schema.org/draft-07/schema#",
8313
8253
  "properties": {
8314
8254
  "expectedUpdatedAt": {
8315
8255
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current state.",
@@ -8355,7 +8295,6 @@
8355
8295
  },
8356
8296
  "description": "Fetch one agent profile: role/provider/runtime/trust, scopes, skills, routing boundaries, cost profile, eval/failure caches, escalation path, status, linked credentials (no secret material), and a computed launch-eligibility breakdown (eligible + per-check reasons). Legacy recentRuns/latestEvals arrays remain empty; use the Agent Job, eval, trace, and release tools for current execution and quality state.",
8357
8297
  "inputSchema": {
8358
- "$schema": "http://json-schema.org/draft-07/schema#",
8359
8298
  "properties": {
8360
8299
  "agentId": {
8361
8300
  "description": "ID of the agent to fetch.",
@@ -8378,7 +8317,6 @@
8378
8317
  },
8379
8318
  "description": "Get one agent-workflow job's full state: phase, whose turn it is, iteration counts, runs, findings (with how-fixed notes), pending approval gates, and the plan versions. This is the poll endpoint — call it to decide whether it is your turn.",
8380
8319
  "inputSchema": {
8381
- "$schema": "http://json-schema.org/draft-07/schema#",
8382
8320
  "properties": {
8383
8321
  "jobId": {
8384
8322
  "minLength": 1,
@@ -8400,7 +8338,6 @@
8400
8338
  },
8401
8339
  "description": "Get one agent release in full: every pin group by content hash (model/runtime/workspace/governance), the field-level diff vs the immediate prior release, the gating EvalRun evidence (status/score/evidence digest/trace), the pointer transition history this release took part in, and its activation waivers. isActive reflects the profile pointer, not the status.",
8402
8340
  "inputSchema": {
8403
- "$schema": "http://json-schema.org/draft-07/schema#",
8404
8341
  "properties": {
8405
8342
  "releaseId": {
8406
8343
  "minLength": 1,
@@ -8427,7 +8364,6 @@
8427
8364
  },
8428
8365
  "description": "Fetch one connected session: lifecycle status, capture integrity (orthogonal to status), repository start/end state, linked summary/transcript artifacts, the stable usage object (provider-reported tokens or null — never estimated), and the append-only task-alignment interval history (alignments[], ordinal-ascending; the session's taskId mirrors the open interval).",
8429
8366
  "inputSchema": {
8430
- "$schema": "http://json-schema.org/draft-07/schema#",
8431
8367
  "properties": {
8432
8368
  "sessionId": {
8433
8369
  "minLength": 1,
@@ -8449,7 +8385,6 @@
8449
8385
  },
8450
8386
  "description": "Get one artifact record plus a short-lived signed downloadUrl (internal R2 objects; provenance-gated) or the external URL — the tool-surface twin of the stacks://artifact/{id} resource, for clients that only call tools. Redacted artifacts resolve to a tombstone with no URL.",
8451
8387
  "inputSchema": {
8452
- "$schema": "http://json-schema.org/draft-07/schema#",
8453
8388
  "properties": {
8454
8389
  "artifactId": {
8455
8390
  "minLength": 1,
@@ -8471,7 +8406,6 @@
8471
8406
  },
8472
8407
  "description": "THE orientation tool: board info + columns + concise task rows in one call. Use this first instead of list_boards → list_columns → list_tasks. Capped at 500 tasks (notice explains how to page the rest).",
8473
8408
  "inputSchema": {
8474
- "$schema": "http://json-schema.org/draft-07/schema#",
8475
8409
  "properties": {
8476
8410
  "boardId": {
8477
8411
  "description": "Board to snapshot. Discover via list_boards(workspaceId).",
@@ -8494,7 +8428,6 @@
8494
8428
  },
8495
8429
  "description": "Fetch one CI run in full, with its individual child check runs (name, status, conclusion, required flag, deep link). Discover ciRunId via list_ci_runs or get_pull_request.",
8496
8430
  "inputSchema": {
8497
- "$schema": "http://json-schema.org/draft-07/schema#",
8498
8431
  "properties": {
8499
8432
  "ciRunId": {
8500
8433
  "description": "CI run id (from list_ci_runs / get_pull_request).",
@@ -8517,7 +8450,6 @@
8517
8450
  },
8518
8451
  "description": "Read the Company Pulse: pure read-only aggregations over the workspace's existing tables (untriaged signals, accepted opportunities, active projects, agent runs, pending approvals, open incidents, support tickets, company-operations approvals/overdue) plus setup/preflight/reconciliation health. This is the SAME measured projection the /[workspaceSlug]/company page renders — every metric carries its definition, time window, and a workspace-relative link to the exact underlying records. Returns { configured: false } when no profile exists. No writes, no new analytics store.",
8519
8452
  "inputSchema": {
8520
- "$schema": "http://json-schema.org/draft-07/schema#",
8521
8453
  "properties": {
8522
8454
  "workspaceId": {
8523
8455
  "minLength": 1,
@@ -8539,7 +8471,6 @@
8539
8471
  },
8540
8472
  "description": "Fetch a Context Pack: the versioned, checksummed source/tool/policy manifest pinned to a Work Order version, plus its token-budget estimate and budget source (router or heuristic).",
8541
8473
  "inputSchema": {
8542
- "$schema": "http://json-schema.org/draft-07/schema#",
8543
8474
  "properties": {
8544
8475
  "contextPackId": {
8545
8476
  "description": "ID of the Context Pack.",
@@ -8562,7 +8493,6 @@
8562
8493
  },
8563
8494
  "description": "Fetch a decision with its full rationale, options, dissent, evidence, supersession lineage, and revision history (accepted decisions are immutable except via revisions).",
8564
8495
  "inputSchema": {
8565
- "$schema": "http://json-schema.org/draft-07/schema#",
8566
8496
  "properties": {
8567
8497
  "decisionId": {
8568
8498
  "description": "ID of the decision to fetch.",
@@ -8585,7 +8515,6 @@
8585
8515
  },
8586
8516
  "description": "Get one eval case in full: fixture, grader kind + config + version, tags, origin, and provenance (incidentId / sourceRunIds / sourceTraceId).",
8587
8517
  "inputSchema": {
8588
- "$schema": "http://json-schema.org/draft-07/schema#",
8589
8518
  "properties": {
8590
8519
  "evalCaseId": {
8591
8520
  "minLength": 1,
@@ -8612,7 +8541,6 @@
8612
8541
  },
8613
8542
  "description": "Get one eval dataset + its immutable, append-only versions (each with its content hash + pinned-case count). A run_eval with no explicit version runs the head; a gate references a specific version so advancing the head never changes what an existing release was gated on.",
8614
8543
  "inputSchema": {
8615
- "$schema": "http://json-schema.org/draft-07/schema#",
8616
8544
  "properties": {
8617
8545
  "datasetId": {
8618
8546
  "minLength": 1,
@@ -8639,7 +8567,6 @@
8639
8567
  },
8640
8568
  "description": "Get one eval run WITH its per-case results (the 'results reads' surface). The run carries its terminal status, aggregate score, gating flag, evidence digest, and trace id; each result row carries its verdict (PASSED/FAILED/ERRORED or the fail-closed EVIDENCE_UNAVAILABLE/EVIDENCE_EXPIRED), grader, and clickable traceId — so a deliberately failing case reads as a legible failed run.",
8641
8569
  "inputSchema": {
8642
- "$schema": "http://json-schema.org/draft-07/schema#",
8643
8570
  "properties": {
8644
8571
  "evalRunId": {
8645
8572
  "minLength": 1,
@@ -8666,7 +8593,6 @@
8666
8593
  },
8667
8594
  "description": "Get one experiment in full: mode, baseline/candidate releases, traffic fraction, guardrail spec (max spend / latency SLO / min quality / incident count), the governance snapshot recorded at start (pointer revision + regression head + required policy revisions — what the sweep compares to detect SUPERSEDED/STALE drift), the gating evidence a canary started on, terminal outcome + reason, and the baseline-vs-candidate comparison report (routed populations + live spend/latency/quality/incident metrics — shadow and canary share it).",
8668
8595
  "inputSchema": {
8669
- "$schema": "http://json-schema.org/draft-07/schema#",
8670
8596
  "properties": {
8671
8597
  "experimentId": {
8672
8598
  "minLength": 1,
@@ -8688,7 +8614,6 @@
8688
8614
  },
8689
8615
  "description": "Fetch a harness run's config, freeze state (frozen flag + freeze block), and the LIVE registry projection (per-stage status, the human gate each stage parks at, branch, commit, evidence count, and done/total) generated from the stage records — not a stored markdown blob. detailed (default) also returns the artifacts, decisions, findings, and delivery-correlation arrays; pass response_format: 'concise' for harness + registry only. This output is intentionally FROZEN and does NOT include pending gates or active/stuck runs — read those through companion calls: list_harness_stages (per-stage gate/branch/commit/evidence), get_agent_job / list_agent_jobs (loop phase + approval gates), and list_control_tower_items (the harness queues, incl. stuck/blocked). Agent-role (planner/reviewer) readiness has no read tool — a run missing roles surfaces as a launch/start failure, and roles are configured via set_harness_agents (whose result/conflict payload reports current assignment) or the harness Settings UI. Human gate approval is UI-first — there is no MCP self-approval tool.",
8690
8616
  "inputSchema": {
8691
- "$schema": "http://json-schema.org/draft-07/schema#",
8692
8617
  "properties": {
8693
8618
  "harnessId": {
8694
8619
  "description": "Alias for harnessRunId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -8724,7 +8649,6 @@
8724
8649
  },
8725
8650
  "description": "Fetch one harness artifact (by its HarnessArtifactLink id from get_harness): kind, version, checksum, supersession lineage, producing agent/model, plus a short-lived signed download URL (internal R2 objects) or external URL. The body is never inlined and the title is redacted — no unredacted secret is ever returned.",
8726
8651
  "inputSchema": {
8727
- "$schema": "http://json-schema.org/draft-07/schema#",
8728
8652
  "properties": {
8729
8653
  "harnessId": {
8730
8654
  "description": "Alias for harnessRunId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -8758,7 +8682,6 @@
8758
8682
  },
8759
8683
  "description": "Fetch one harness template with its full version history: every version's status (DRAFT or PUBLISHED), content hash, and lineage, plus the draft's validation summary INCLUDING the findings that gate publishing. detailed (default) returns each version's definition document — the ordered steps, per-step role assignments, evidence requirements, credential ALIASES (never values), and run-level defaults; pass response_format: 'concise' to omit the documents when you only need publish state. A PUBLISHED version is immutable: editing forks a new draft rather than changing it.",
8760
8684
  "inputSchema": {
8761
- "$schema": "http://json-schema.org/draft-07/schema#",
8762
8685
  "properties": {
8763
8686
  "harnessTemplateId": {
8764
8687
  "minLength": 1,
@@ -8788,7 +8711,6 @@
8788
8711
  },
8789
8712
  "description": "Get one incident in full: timeline, root cause, affected entities, rollback log, policy/eval gaps, linked decisions/policies/credentials/artifacts, and follow-up task ids.",
8790
8713
  "inputSchema": {
8791
- "$schema": "http://json-schema.org/draft-07/schema#",
8792
8714
  "properties": {
8793
8715
  "incidentId": {
8794
8716
  "minLength": 1,
@@ -8810,7 +8732,6 @@
8810
8732
  },
8811
8733
  "description": "Fetch one work lease by id: target, holder, mode, conflict policy, status, expiry, and takeover/handoff lineage.",
8812
8734
  "inputSchema": {
8813
- "$schema": "http://json-schema.org/draft-07/schema#",
8814
8735
  "properties": {
8815
8736
  "leaseId": {
8816
8737
  "minLength": 1,
@@ -8832,7 +8753,6 @@
8832
8753
  },
8833
8754
  "description": "Get one governed memory item in full: kind/scope, lifecycle status + `selectable`, title/body, provenance (source kind + id), the nominating/promoting actors + review note, supersession lineage, and TTL. Dates are ISO strings.",
8834
8755
  "inputSchema": {
8835
- "$schema": "http://json-schema.org/draft-07/schema#",
8836
8756
  "properties": {
8837
8757
  "memoryItemId": {
8838
8758
  "description": "The MemoryItem id to read in full.",
@@ -8860,7 +8780,6 @@
8860
8780
  },
8861
8781
  "description": "Fetch one recorded policy evaluation by id: the action class, final outcome, machine+human reason, the matched policy (if any), and the REDACTED action inputs. Use this to explain why an action was allowed/denied/required approval.",
8862
8782
  "inputSchema": {
8863
- "$schema": "http://json-schema.org/draft-07/schema#",
8864
8783
  "properties": {
8865
8784
  "evaluationId": {
8866
8785
  "minLength": 1,
@@ -8882,7 +8801,6 @@
8882
8801
  },
8883
8802
  "description": "Fetch a project with its owner, links, milestones, risks, and counts. Accepts projectId, or workspaceId + slug.",
8884
8803
  "inputSchema": {
8885
- "$schema": "http://json-schema.org/draft-07/schema#",
8886
8804
  "properties": {
8887
8805
  "projectId": {
8888
8806
  "description": "Project ID. Provide projectId, or workspaceId + slug.",
@@ -8910,7 +8828,6 @@
8910
8828
  },
8911
8829
  "description": "Fetch one delivery PR link in full: PR fields (state, draft, review decision, mergeable, head/base branch), owning task, CI runs with check counts, redacted CI-evidence count, and the GitHub deep link. Discover prLinkId via list_delivery_items.",
8912
8830
  "inputSchema": {
8913
- "$schema": "http://json-schema.org/draft-07/schema#",
8914
8831
  "properties": {
8915
8832
  "prLinkId": {
8916
8833
  "description": "Delivery PR link id (from list_delivery_items).",
@@ -8933,7 +8850,6 @@
8933
8850
  },
8934
8851
  "description": "Get one simulation: the staged plan, its checksum, and projectedEffects (diffs + projected notifications/activities/webhooks/automations/cost/credentials/approvals/lease-conflicts computed BEFORE any external side effect).",
8935
8852
  "inputSchema": {
8936
- "$schema": "http://json-schema.org/draft-07/schema#",
8937
8853
  "properties": {
8938
8854
  "simulationId": {
8939
8855
  "minLength": 1,
@@ -8955,7 +8871,6 @@
8955
8871
  },
8956
8872
  "description": "Get one skill in full: its identity + mutable head pointer and every IMMUTABLE version (content hash, lifecycle status, isHead flag, and the executable snapshot that IS the hashed content). Editing a skill never mutates a version — a new one is cut — so this history is append-only. Dates are ISO strings.",
8957
8873
  "inputSchema": {
8958
- "$schema": "http://json-schema.org/draft-07/schema#",
8959
8874
  "properties": {
8960
8875
  "skillId": {
8961
8876
  "description": "The Skill id to read (with its versions).",
@@ -8983,7 +8898,6 @@
8983
8898
  },
8984
8899
  "description": "Read the workspace's single software-company profile: its non-secret settings (operator, repo/base branch, required check names, weekly-review schedule, enabled/paused state), the resolved five-board + per-harness agent bindings, and the last reconcile result. Returns { configured: false } when no profile exists. Never returns credentials, tokens, or prompts.",
8985
8900
  "inputSchema": {
8986
- "$schema": "http://json-schema.org/draft-07/schema#",
8987
8901
  "properties": {
8988
8902
  "workspaceId": {
8989
8903
  "minLength": 1,
@@ -9005,7 +8919,6 @@
9005
8919
  },
9006
8920
  "description": "Fetch one spec with all its immutable versions, including per-version quality warnings (vague objective / missing acceptance / missing test plan / conflicting constraints) and a 0-100 quality score.",
9007
8921
  "inputSchema": {
9008
- "$schema": "http://json-schema.org/draft-07/schema#",
9009
8922
  "properties": {
9010
8923
  "specId": {
9011
8924
  "minLength": 1,
@@ -9027,7 +8940,6 @@
9027
8940
  },
9028
8941
  "description": "Fetch full details of a task including description, labels, assignees, subtasks, links, and recent activity. Accepts taskId, or workspaceId + number (the numeric part of a task key like STK-42). Pass response_format: 'concise' for scalars + counts only.",
9029
8942
  "inputSchema": {
9030
- "$schema": "http://json-schema.org/draft-07/schema#",
9031
8943
  "properties": {
9032
8944
  "number": {
9033
8945
  "description": "Task number within the workspace (numeric part of the key).",
@@ -9066,7 +8978,6 @@
9066
8978
  },
9067
8979
  "description": "Report THIS token's context (read scope) so an agent fails fast on scope instead of probing with FORBIDDEN calls: effective + raw stored scopes (empty stored = grandfathered full access until rotated), workspace pinning, displayName/emoji identity, expiry, and the per-minute rate-limit window (limit / used / remaining / reset). NO bearer material is ever returned.",
9068
8980
  "inputSchema": {
9069
- "$schema": "http://json-schema.org/draft-07/schema#",
9070
8981
  "properties": {},
9071
8982
  "type": "object"
9072
8983
  },
@@ -9080,7 +8991,6 @@
9080
8991
  },
9081
8992
  "description": "Fetch a Work Order with its draft fields (objective, acceptance criteria, non-goals, constraints, evidence, escalation), status, current immutable version, and the latest launch (pinned version + context pack ids).",
9082
8993
  "inputSchema": {
9083
- "$schema": "http://json-schema.org/draft-07/schema#",
9084
8994
  "properties": {
9085
8995
  "workOrderId": {
9086
8996
  "description": "ID of the Work Order.",
@@ -9103,7 +9013,6 @@
9103
9013
  },
9104
9014
  "description": "Fetch ONE immutable Work Order version's full frozen body (objective, acceptance criteria, non-goals, constraints, evidence requirements, escalation path) plus its Context Pack reference and mint-time checksum. Resolve by workOrderVersionId, or workOrderId + versionNumber.",
9105
9015
  "inputSchema": {
9106
- "$schema": "http://json-schema.org/draft-07/schema#",
9107
9016
  "properties": {
9108
9017
  "versionNumber": {
9109
9018
  "maximum": 9007199254740991,
@@ -9134,7 +9043,6 @@
9134
9043
  },
9135
9044
  "description": "Runner only: extend a claimed run's heartbeat (keep-alive). Requires the runId; a superseded runId is a CONFLICT. A run whose heartbeat lapses is swept to EXPIRED and its job to BLOCKED.",
9136
9045
  "inputSchema": {
9137
- "$schema": "http://json-schema.org/draft-07/schema#",
9138
9046
  "properties": {
9139
9047
  "jobId": {
9140
9048
  "minLength": 1,
@@ -9164,7 +9072,6 @@
9164
9072
  },
9165
9073
  "description": "Import contacts from parsed rows (admin scope + ADMIN role). Idempotent by externalId, then lower(email): a matching row UPDATES the existing contact, so a re-run yields zero duplicates. Returns created/updated counts.",
9166
9074
  "inputSchema": {
9167
- "$schema": "http://json-schema.org/draft-07/schema#",
9168
9075
  "properties": {
9169
9076
  "rows": {
9170
9077
  "items": {
@@ -9253,7 +9160,6 @@
9253
9160
  },
9254
9161
  "description": "Import a portable `jentrix.harness-template` document as a NEW template in this workspace (ADMIN; admin scope). It always lands as a DRAFT, never published: the document is untrusted input from another workspace and its credential aliases are unbound, so publishing is a decision you make after reading the returned validation summary. `contentHashMatches` reports whether the document's stated hash matched its definition. idempotencyKey is REQUIRED.",
9255
9162
  "inputSchema": {
9256
- "$schema": "http://json-schema.org/draft-07/schema#",
9257
9163
  "properties": {
9258
9164
  "document": {
9259
9165
  "additionalProperties": {},
@@ -9298,7 +9204,6 @@
9298
9204
  },
9299
9205
  "description": "Import tasks into a column from parsed rows (admin scope + ADMIN role), chunked through the bulk-create op. skipExistingTitles (default true) makes a re-run idempotent — rows whose title already exists on the board are skipped. Returns created/skippedExisting counts.",
9300
9206
  "inputSchema": {
9301
- "$schema": "http://json-schema.org/draft-07/schema#",
9302
9207
  "properties": {
9303
9208
  "columnId": {
9304
9209
  "minLength": 1,
@@ -9384,7 +9289,6 @@
9384
9289
  },
9385
9290
  "description": "Import a Trello board export into a NEW board (admin scope + ADMIN role): lists become columns and cards become tasks. Returns the new board slug and column/card counts.",
9386
9291
  "inputSchema": {
9387
- "$schema": "http://json-schema.org/draft-07/schema#",
9388
9292
  "properties": {
9389
9293
  "idempotencyKey": {
9390
9294
  "description": "Optional idempotency key: retrying with the same key and arguments within 24h returns the original result instead of creating duplicates. Reusing a key with different arguments fails with CONFLICT.",
@@ -9473,7 +9377,6 @@
9473
9377
  },
9474
9378
  "description": "Invite a member to a workspace by email (admin scope; ADMIN role, but an OWNER-role invite requires the OWNER role). The default membership-governance pack parks this behind REQUIRE_APPROVAL, so an agent-alone call surfaces as a human-approvable request; an approved binding lets it through. Acceptance stays with the invitee.",
9475
9379
  "inputSchema": {
9476
- "$schema": "http://json-schema.org/draft-07/schema#",
9477
9380
  "properties": {
9478
9381
  "email": {
9479
9382
  "format": "email",
@@ -9518,7 +9421,6 @@
9518
9421
  },
9519
9422
  "description": "Launch a PUBLISHED harness template version as a new harness run (ADMIN; admin scope), freezing the resolution the run executes under — resolved workers and releases, permission revisions, policies, credential bindings, budgets, gates, repository and work item — verbatim into the run, so what the run did is always answerable. Repo/work-item fields are launch-time and fall back to the version's defaults. Pass launchMode: 'dry_run' for an INERT run: identical rows plus a linked SimulationRun, refused at the claim so no execution leg ever opens, and dry-run evidence can never reach acceptance. Optional expectedChecksum binds the launch to a resolution you already read from preview_harness_template_launch — if it moved since (a re-pointed release, a republished permission revision, an edited policy) the launch fails with CONFLICT instead of freezing something unreviewed. idempotencyKey is REQUIRED. A DRAFT version is never launchable.",
9520
9423
  "inputSchema": {
9521
- "$schema": "http://json-schema.org/draft-07/schema#",
9522
9424
  "properties": {
9523
9425
  "allowedPaths": {
9524
9426
  "items": {
@@ -9607,7 +9509,6 @@
9607
9509
  },
9608
9510
  "description": "Link a credential to an agent (admin scope + ADMIN role): an existing ApiToken owned by a workspace member (workspace-pinned or the caller's own), or an OAuth client for M4 brokered grants. A disabled/deprecated agent is refused. Returns the link id.",
9609
9511
  "inputSchema": {
9610
- "$schema": "http://json-schema.org/draft-07/schema#",
9611
9512
  "properties": {
9612
9513
  "agentId": {
9613
9514
  "description": "Agent to link the credential to.",
@@ -9657,7 +9558,6 @@
9657
9558
  },
9658
9559
  "description": "Link or unlink a workspace contact to a SUPPORT task's ticket. Pass contactId=null to unlink. The contact must belong to the same workspace as the task. (Contacts are the single party directory — use list_contacts / create_contact to find or add people.)",
9659
9560
  "inputSchema": {
9660
- "$schema": "http://json-schema.org/draft-07/schema#",
9661
9561
  "properties": {
9662
9562
  "contactId": {
9663
9563
  "anyOf": [
@@ -9695,7 +9595,6 @@
9695
9595
  },
9696
9596
  "description": "Link a GitHub repository (from the connected App installation) to a board so its issues sync two-way (admin scope + ADMIN role). repoId is the numeric GitHub repo id as a string; defaultColumnId is where new issues land.",
9697
9597
  "inputSchema": {
9698
- "$schema": "http://json-schema.org/draft-07/schema#",
9699
9598
  "properties": {
9700
9599
  "boardId": {
9701
9600
  "description": "Target board for this repo's synced issues.",
@@ -9780,7 +9679,6 @@
9780
9679
  },
9781
9680
  "description": "Link an M1 Decision to a harness run (admin scope + ADMIN role), optionally scoped to a stage and optionally BLOCKING (the run/stage pauses until the decision is accepted). The decision must be in the run's workspace. Re-linking is an update — pass expectedUpdatedAt to guard against a concurrent change (CONFLICT embeds the current link).",
9782
9681
  "inputSchema": {
9783
- "$schema": "http://json-schema.org/draft-07/schema#",
9784
9682
  "properties": {
9785
9683
  "blocking": {
9786
9684
  "description": "Whether this decision blocks the run/stage until resolved.",
@@ -9843,7 +9741,6 @@
9843
9741
  },
9844
9742
  "description": "Link an existing task to a GitHub issue by number in a connected repo (write scope). Idempotent: a task already linked returns its existing link. The issue then syncs two-way per the repo's config.",
9845
9743
  "inputSchema": {
9846
- "$schema": "http://json-schema.org/draft-07/schema#",
9847
9744
  "properties": {
9848
9745
  "idempotencyKey": {
9849
9746
  "description": "Optional idempotency key: retrying with the same key and arguments within 24h returns the original result instead of creating duplicates. Reusing a key with different arguments fails with CONFLICT.",
@@ -9887,7 +9784,6 @@
9887
9784
  },
9888
9785
  "description": "Adopt an ORPHAN pull-request link onto a task (write scope). The recovery path for a PR whose branch/title/body carried no resolvable task key: sets the owner and flips linkState to MATCHED. The task must be on the board linked to the PR's repo (repo ↔ board is 1:1). Idempotent; pass expectedUpdatedAt for an optimistic-concurrency guard.",
9889
9786
  "inputSchema": {
9890
- "$schema": "http://json-schema.org/draft-07/schema#",
9891
9787
  "properties": {
9892
9788
  "expectedUpdatedAt": {
9893
9789
  "description": "Optimistic concurrency guard: the PR link's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the link's current state.",
@@ -9928,7 +9824,6 @@
9928
9824
  },
9929
9825
  "description": "List the activity log for a task or a whole board, newest first. Filter by since (ISO timestamp), source ('ui' = humans, 'mcp' = agents), or activity type — e.g. diff what humans did since your last run.",
9930
9826
  "inputSchema": {
9931
- "$schema": "http://json-schema.org/draft-07/schema#",
9932
9827
  "properties": {
9933
9828
  "boardId": {
9934
9829
  "description": "Scope to a whole board. Provide taskId or boardId.",
@@ -10174,7 +10069,6 @@
10174
10069
  },
10175
10070
  "description": "List the workspace's agent-workflow jobs (the plan→review→execute→review loops), filterable by phase and task. Poll get_agent_job for full state.",
10176
10071
  "inputSchema": {
10177
- "$schema": "http://json-schema.org/draft-07/schema#",
10178
10072
  "properties": {
10179
10073
  "cursor": {
10180
10074
  "anyOf": [
@@ -10237,7 +10131,6 @@
10237
10131
  },
10238
10132
  "description": "List an agent's immutable releases (content-addressed configuration pins). Filter by agentProfileId or status (CANDIDATE/ELIGIBLE/RETIRED). Each row carries its releaseNo, configurationDigest, model, gating eval run + dataset version, and isActive — 'active' is derived SOLELY from the profile's pointer, never a status. Cursor-paginated; call get_agent_release for the full pins + diff-vs-prior + eval evidence + pointer history.",
10239
10133
  "inputSchema": {
10240
- "$schema": "http://json-schema.org/draft-07/schema#",
10241
10134
  "properties": {
10242
10135
  "agentProfileId": {
10243
10136
  "minLength": 1,
@@ -10275,7 +10168,6 @@
10275
10168
  },
10276
10169
  "description": "List connected sessions in a workspace, filterable by project, operator, provider, lifecycle status, and captureComplete (the two dimensions are independent). Paginated; provider thread ids are omitted from list output.",
10277
10170
  "inputSchema": {
10278
- "$schema": "http://json-schema.org/draft-07/schema#",
10279
10171
  "properties": {
10280
10172
  "captureComplete": {
10281
10173
  "type": "boolean"
@@ -10336,7 +10228,6 @@
10336
10228
  },
10337
10229
  "description": "List the workspace's registered agents (teammate identities) with role, provider, runtime, trust level, status, latest eval score, recent failures, routing boundaries, and credential count. Filter by status/role. Paginated; pass nextCursor from the previous response to continue.",
10338
10230
  "inputSchema": {
10339
- "$schema": "http://json-schema.org/draft-07/schema#",
10340
10231
  "properties": {
10341
10232
  "cursor": {
10342
10233
  "anyOf": [
@@ -10403,7 +10294,6 @@
10403
10294
  },
10404
10295
  "description": "List first-class artifacts (PR/diff/log/screenshot/eval report/run summary/…) in a workspace, filterable by project/task/run/workOrder/session/type/creator. Internal (R2) artifacts expose hasObject; get_artifact returns the signed download URL. Redacted artifacts remain as tombstones.",
10405
10296
  "inputSchema": {
10406
- "$schema": "http://json-schema.org/draft-07/schema#",
10407
10297
  "properties": {
10408
10298
  "creatorId": {
10409
10299
  "minLength": 1,
@@ -10486,7 +10376,6 @@
10486
10376
  },
10487
10377
  "description": "List a task's attachments with short-lived signed download URLs (~5 min). Uploads are UI-only.",
10488
10378
  "inputSchema": {
10489
- "$schema": "http://json-schema.org/draft-07/schema#",
10490
10379
  "properties": {
10491
10380
  "taskId": {
10492
10381
  "description": "Task whose attachments to list.",
@@ -10509,7 +10398,6 @@
10509
10398
  },
10510
10399
  "description": "List a workspace's automation rules (admin scope), optionally filtered to one board plus workspace-wide rules. Shows trigger/conditions/actions, run counts, and enabled state.",
10511
10400
  "inputSchema": {
10512
- "$schema": "http://json-schema.org/draft-07/schema#",
10513
10401
  "properties": {
10514
10402
  "boardId": {
10515
10403
  "description": "Filter to rules scoped to this board (plus workspace-wide ones).",
@@ -10536,7 +10424,6 @@
10536
10424
  },
10537
10425
  "description": "List boards in a workspace.",
10538
10426
  "inputSchema": {
10539
- "$schema": "http://json-schema.org/draft-07/schema#",
10540
10427
  "properties": {
10541
10428
  "workspaceId": {
10542
10429
  "description": "Workspace ID. Discover via list_workspaces.",
@@ -10559,7 +10446,6 @@
10559
10446
  },
10560
10447
  "description": "List CI runs in a workspace (newest first) with status, conclusion, branch, and check roll-up counts. Filter to one PR (prLinkId) or one task (taskId). Paginated — pass nextCursor to continue.",
10561
10448
  "inputSchema": {
10562
- "$schema": "http://json-schema.org/draft-07/schema#",
10563
10449
  "properties": {
10564
10450
  "cursor": {
10565
10451
  "anyOf": [
@@ -10610,7 +10496,6 @@
10610
10496
  },
10611
10497
  "description": "List columns of a board, ordered by position. Columns represent statuses on the kanban board.",
10612
10498
  "inputSchema": {
10613
- "$schema": "http://json-schema.org/draft-07/schema#",
10614
10499
  "properties": {
10615
10500
  "boardId": {
10616
10501
  "description": "Board ID. Discover via list_boards(workspaceId).",
@@ -10633,7 +10518,6 @@
10633
10518
  },
10634
10519
  "description": "List a task's comments oldest-first, with authors.",
10635
10520
  "inputSchema": {
10636
- "$schema": "http://json-schema.org/draft-07/schema#",
10637
10521
  "properties": {
10638
10522
  "taskId": {
10639
10523
  "description": "Task whose comments to list.",
@@ -10656,7 +10540,6 @@
10656
10540
  },
10657
10541
  "description": "List governed communication connectors (Slack/email/calendar/doc). Each extends a source record carrying trust/freshness/privacy/owner/project-scope; outboundEnabled gates whether drafts may target it.",
10658
10542
  "inputSchema": {
10659
- "$schema": "http://json-schema.org/draft-07/schema#",
10660
10543
  "properties": {
10661
10544
  "workspaceId": {
10662
10545
  "minLength": 1,
@@ -10678,7 +10561,6 @@
10678
10561
  },
10679
10562
  "description": "List/search workspace contacts, optionally filtered by query (substring match on name/email/company), with total count. Concise by default — pass response_format: 'detailed' for phone/externalId/timestamps. Paginated; pass nextCursor from the previous response to continue.",
10680
10563
  "inputSchema": {
10681
- "$schema": "http://json-schema.org/draft-07/schema#",
10682
10564
  "properties": {
10683
10565
  "cursor": {
10684
10566
  "anyOf": [
@@ -10737,7 +10619,6 @@
10737
10619
  },
10738
10620
  "description": "List the workspace's OPEN, actionable Control-Tower items across agent workflow, delivery, harness, SLA, eval, policy, and credential queues, ranked highest-severity then oldest. Governed memory review uses the dedicated Memory page; the legacy MEMORY_CANDIDATES adapter has no MemoryItem source. Each item carries a queue, stable sourceKey, title, an 'explain why this is here' reason, severity, optional project/agent, first-seen time, and valid actions. Paginated; pass nextCursor to continue.",
10739
10621
  "inputSchema": {
10740
- "$schema": "http://json-schema.org/draft-07/schema#",
10741
10622
  "properties": {
10742
10623
  "agentProfileId": {
10743
10624
  "description": "Filter to one agent.",
@@ -10823,7 +10704,6 @@
10823
10704
  },
10824
10705
  "description": "List Decision Register entries in a workspace with owner, status, lineage, memory status, and revision counts. Filter by project, status, or memory status. Paginated.",
10825
10706
  "inputSchema": {
10826
- "$schema": "http://json-schema.org/draft-07/schema#",
10827
10707
  "properties": {
10828
10708
  "cursor": {
10829
10709
  "anyOf": [
@@ -10888,7 +10768,6 @@
10888
10768
  },
10889
10769
  "description": "List the delivery graph's pull-request links in a workspace (newest first), each with PR state, link state (MATCHED/ORPHAN), owning task key, and aggregate CI signal. Filter by board, linkState (ORPHAN = adoptable PRs), or PR state. Paginated — pass nextCursor to continue.",
10890
10770
  "inputSchema": {
10891
- "$schema": "http://json-schema.org/draft-07/schema#",
10892
10771
  "properties": {
10893
10772
  "boardId": {
10894
10773
  "description": "Filter to one board's linked repo.",
@@ -10951,7 +10830,6 @@
10951
10830
  },
10952
10831
  "description": "List eval cases in a workspace (fixture input + grader reference + origin/tags). Filter by origin (manual/incident/mined) or graderKind (deterministic/model_graded/trace). Cursor-paginated. Call get_eval_case for the full fixture + grader config.",
10953
10832
  "inputSchema": {
10954
- "$schema": "http://json-schema.org/draft-07/schema#",
10955
10833
  "properties": {
10956
10834
  "cursor": {
10957
10835
  "minLength": 1,
@@ -10993,7 +10871,6 @@
10993
10871
  },
10994
10872
  "description": "List eval datasets in a workspace (stable identity + mutable head pointer). Each row carries its key, head version id, and version count. Cursor-paginated. Call get_eval_dataset for its immutable version list.",
10995
10873
  "inputSchema": {
10996
- "$schema": "http://json-schema.org/draft-07/schema#",
10997
10874
  "properties": {
10998
10875
  "cursor": {
10999
10876
  "minLength": 1,
@@ -11019,7 +10896,6 @@
11019
10896
  },
11020
10897
  "description": "List eval runs in a workspace (dataset version × subject × trigger). Filter by subjectKind/subjectId, status, datasetId, or gating. Cursor-paginated concise rows — call get_eval_run for the per-case results + clickable traces.",
11021
10898
  "inputSchema": {
11022
- "$schema": "http://json-schema.org/draft-07/schema#",
11023
10899
  "properties": {
11024
10900
  "cursor": {
11025
10901
  "minLength": 1,
@@ -11077,7 +10953,6 @@
11077
10953
  },
11078
10954
  "description": "List shadow/canary experiments in a workspace (candidate-vs-baseline comparisons over the release pointer). Filter by agentProfileId, status (RUNNING/PROMOTED/ROLLED_BACK/SUPERSEDED/STALE/EXPIRED), or mode (SHADOW/CANARY). Each row carries its experimentNo, baseline/candidate release, traffic fraction, and window. A RUNNING canary is a deterministic routing override — the pointer stays on the baseline. Cursor-paginated; call get_experiment for the guardrail spec + governance snapshot + comparison report.",
11079
10955
  "inputSchema": {
11080
- "$schema": "http://json-schema.org/draft-07/schema#",
11081
10956
  "properties": {
11082
10957
  "agentProfileId": {
11083
10958
  "minLength": 1,
@@ -11123,7 +10998,6 @@
11123
10998
  },
11124
10999
  "description": "List the workspace's GitHub App connection and how many repos are linked (admin scope). Empty when GitHub isn't connected.",
11125
11000
  "inputSchema": {
11126
- "$schema": "http://json-schema.org/draft-07/schema#",
11127
11001
  "properties": {
11128
11002
  "workspaceId": {
11129
11003
  "description": "Workspace ID.",
@@ -11146,7 +11020,6 @@
11146
11020
  },
11147
11021
  "description": "List tasks linked to GitHub issues in a workspace with the issue url, state, and last-synced time (newest first, max 100).",
11148
11022
  "inputSchema": {
11149
- "$schema": "http://json-schema.org/draft-07/schema#",
11150
11023
  "properties": {
11151
11024
  "workspaceId": {
11152
11025
  "description": "Workspace ID.",
@@ -11169,7 +11042,6 @@
11169
11042
  },
11170
11043
  "description": "List a harness run's review findings (severity, category, status, title, the stage they target). Filter by stage/status/severity. Concise by default — pass response_format: 'detailed' for the body, reviewer, resolution note, verification refs, and the dedup identity (fingerprint, reopenCount, basisKind/basisRef): findings sharing a fingerprint are ONE defect reconciled across rounds, so re-raising one bumps reopenCount instead of filing a new row. Paginated; pass nextCursor to continue.",
11171
11044
  "inputSchema": {
11172
- "$schema": "http://json-schema.org/draft-07/schema#",
11173
11045
  "properties": {
11174
11046
  "cursor": {
11175
11047
  "anyOf": [
@@ -11250,7 +11122,6 @@
11250
11122
  },
11251
11123
  "description": "List a harness run's stages in order: status, the human gate it parks at, branch, the next build action, the open-finding + evidence (artifact) counts, and launchable (whether the stage has a backing Work Order — false for a draft stage; it means 'not a draft', NOT 'launchable right now', since serial ordering + run/stage status still apply at launch). Filter by status. Concise by default — pass response_format: 'detailed' for Work Order/lease ids, commit policy, acceptance criteria, and timestamps. Paginated; pass nextCursor to continue.",
11252
11124
  "inputSchema": {
11253
- "$schema": "http://json-schema.org/draft-07/schema#",
11254
11125
  "properties": {
11255
11126
  "cursor": {
11256
11127
  "anyOf": [
@@ -11316,7 +11187,6 @@
11316
11187
  },
11317
11188
  "description": "List a workspace's harness templates — reusable, versioned pipeline definitions a run is launched from (ADMIN-authored, MEMBER-readable). Each row carries the identity, the draft/published version numbers, the usage rollup, and the draft's validation COUNTS (pass the template to validate_harness_template for the findings behind them). Concise by construction: no definition documents. `updatedAt` is the value you pass back as expectedUpdatedAt on the next mutation. Ordered most-recently-updated first; a truncated page says so in `notice`.",
11318
11189
  "inputSchema": {
11319
- "$schema": "http://json-schema.org/draft-07/schema#",
11320
11190
  "properties": {
11321
11191
  "includeArchived": {
11322
11192
  "type": "boolean"
@@ -11347,7 +11217,6 @@
11347
11217
  },
11348
11218
  "description": "List Harness Automation runs in a workspace with status, current stage, and a live done/total stage count. Filter by project/task/status. Concise by default — pass response_format: 'detailed' for repo/branch config, freeze state, and timestamps. Paginated; pass nextCursor to continue.",
11349
11219
  "inputSchema": {
11350
- "$schema": "http://json-schema.org/draft-07/schema#",
11351
11220
  "properties": {
11352
11221
  "cursor": {
11353
11222
  "anyOf": [
@@ -11416,7 +11285,6 @@
11416
11285
  },
11417
11286
  "description": "List incidents (failed runs / bad actions escalated into postmortems). Open-first by default; filter by status/severity/owner. Concise rows — call get_incident for the full timeline + linked entities.",
11418
11287
  "inputSchema": {
11419
- "$schema": "http://json-schema.org/draft-07/schema#",
11420
11288
  "properties": {
11421
11289
  "cursor": {
11422
11290
  "minLength": 1,
@@ -11464,7 +11332,6 @@
11464
11332
  },
11465
11333
  "description": "List workspace initiatives (across all ROADMAP boards), with their parent board and total count. Paginated.",
11466
11334
  "inputSchema": {
11467
- "$schema": "http://json-schema.org/draft-07/schema#",
11468
11335
  "properties": {
11469
11336
  "cursor": {
11470
11337
  "anyOf": [
@@ -11511,7 +11378,6 @@
11511
11378
  },
11512
11379
  "description": "List repositories the connected GitHub App installation can access (admin scope + ADMIN role). Each row carries the repo id (as a string), owner/name, private flag, and whether it is already linked to a board (a repo links to exactly one board). Refused with a structured INVALID_INPUT when GitHub is not connected.",
11513
11380
  "inputSchema": {
11514
- "$schema": "http://json-schema.org/draft-07/schema#",
11515
11381
  "properties": {
11516
11382
  "workspaceId": {
11517
11383
  "description": "Workspace ID.",
@@ -11534,7 +11400,6 @@
11534
11400
  },
11535
11401
  "description": "List a workspace's pending (unaccepted) invitations (admin scope + ADMIN role): id, email, role, inviter, created/expiry. The invite token is never returned. Use the id with revoke_invitation.",
11536
11402
  "inputSchema": {
11537
- "$schema": "http://json-schema.org/draft-07/schema#",
11538
11403
  "properties": {
11539
11404
  "workspaceId": {
11540
11405
  "minLength": 1,
@@ -11556,7 +11421,6 @@
11556
11421
  },
11557
11422
  "description": "List labels available on a board.",
11558
11423
  "inputSchema": {
11559
- "$schema": "http://json-schema.org/draft-07/schema#",
11560
11424
  "properties": {
11561
11425
  "boardId": {
11562
11426
  "description": "Board ID.",
@@ -11579,7 +11443,6 @@
11579
11443
  },
11580
11444
  "description": "List work leases (coordination claims) in a workspace, newest first. Filter by targetType/status/holderAgentId. A lease says an actor is actively working a target for a bounded window. Check this before launching agent work to avoid duplicate/colliding runs.",
11581
11445
  "inputSchema": {
11582
- "$schema": "http://json-schema.org/draft-07/schema#",
11583
11446
  "properties": {
11584
11447
  "cursor": {
11585
11448
  "type": "string"
@@ -11632,7 +11495,6 @@
11632
11495
  },
11633
11496
  "description": "List ingested stakeholder messages/meetings linked to an entity (task/project/contact/decision/Work Order) — the linked-conversation panel + meeting commitments.",
11634
11497
  "inputSchema": {
11635
- "$schema": "http://json-schema.org/draft-07/schema#",
11636
11498
  "properties": {
11637
11499
  "contactId": {
11638
11500
  "anyOf": [
@@ -11713,7 +11575,6 @@
11713
11575
  },
11714
11576
  "description": "List members of a workspace. Use the userId field when assigning tasks.",
11715
11577
  "inputSchema": {
11716
- "$schema": "http://json-schema.org/draft-07/schema#",
11717
11578
  "properties": {
11718
11579
  "workspaceId": {
11719
11580
  "description": "Workspace ID.",
@@ -11736,7 +11597,6 @@
11736
11597
  },
11737
11598
  "description": "List a workspace's governed memory items (provenance-anchored units of durable knowledge). Each row carries its kind, lifecycle status, provenance (source kind + id), and `selectable` — true ONLY for ACCEPTED_TO_MEMORY items, the only status ever injected into a launch manifest. NOMINATED (proposed) and QUARANTINED (source superseded; parked for human re-review) items are visible but not selectable. Filter by status/sourceKind; cursor-paginated, newest first.",
11738
11599
  "inputSchema": {
11739
- "$schema": "http://json-schema.org/draft-07/schema#",
11740
11600
  "properties": {
11741
11601
  "cursor": {
11742
11602
  "minLength": 1,
@@ -11790,7 +11650,6 @@
11790
11650
  },
11791
11651
  "description": "List recorded outcome metrics (cycle time, reopen rate, human edits, approval burden, delivery metrics, …) for a workspace, comparing agent-assisted vs human-only cohorts where applicable. substrateGated=true marks legacy metric slots not yet derived from the newer run/eval registries. Filter by kind/cohort/project/agent.",
11792
11652
  "inputSchema": {
11793
- "$schema": "http://json-schema.org/draft-07/schema#",
11794
11653
  "properties": {
11795
11654
  "agentId": {
11796
11655
  "minLength": 1,
@@ -11856,7 +11715,6 @@
11856
11715
  },
11857
11716
  "description": "List promoted playbooks (reusable successful workflows) with their trigger, required policy/eval coverage, and enabled state.",
11858
11717
  "inputSchema": {
11859
- "$schema": "http://json-schema.org/draft-07/schema#",
11860
11718
  "properties": {
11861
11719
  "cursor": {
11862
11720
  "minLength": 1,
@@ -11882,7 +11740,6 @@
11882
11740
  },
11883
11741
  "description": "List the workspace's layered policies (system/workspace/project/agent/work-order/grant) with their template, governed domain, outcome, priority, and enabled state. Filter by domain/scope. Reads never surface credential backend references or secrets.",
11884
11742
  "inputSchema": {
11885
- "$schema": "http://json-schema.org/draft-07/schema#",
11886
11743
  "properties": {
11887
11744
  "domain": {
11888
11745
  "enum": [
@@ -11929,7 +11786,6 @@
11929
11786
  },
11930
11787
  "description": "List the workspace's policy evaluation feed (append-only), newest first, with each action's outcome and reason. Filter by runId/outcome/domain/since. Paginated; pass nextCursor to continue. Denials also surface in the Control Tower policy queue.",
11931
11788
  "inputSchema": {
11932
- "$schema": "http://json-schema.org/draft-07/schema#",
11933
11789
  "properties": {
11934
11790
  "cursor": {
11935
11791
  "type": "string"
@@ -11988,7 +11844,6 @@
11988
11844
  },
11989
11845
  "description": "List projects in a workspace with owner, status, and child/link/milestone/risk/decision counts. Filter by status, owner, or parent project. Paginated; pass nextCursor from the previous response to continue.",
11990
11846
  "inputSchema": {
11991
- "$schema": "http://json-schema.org/draft-07/schema#",
11992
11847
  "properties": {
11993
11848
  "cursor": {
11994
11849
  "anyOf": [
@@ -12060,7 +11915,6 @@
12060
11915
  },
12061
11916
  "description": "List a workspace's provider connections (ADMIN). A provider connection is how a registered runtime adapter (claude/codex) bills and where it sends requests. Each row is redacted at the ops-core boundary — a connection references its secret by id only (credentialRecordId), never any secret material — and carries its verification state (unverified / verified / failed / configured_but_unverified), the per-adapter verification source (server probe vs runner attestation), and, for subscription connections, the derived 'verified by runner NAME at TIME' summary plus the list of nodes currently eligible. Use it to see which connections are healthy and where a subscription can run.",
12062
11917
  "inputSchema": {
12063
- "$schema": "http://json-schema.org/draft-07/schema#",
12064
11918
  "properties": {
12065
11919
  "includeArchived": {
12066
11920
  "type": "boolean"
@@ -12085,7 +11939,6 @@
12085
11939
  },
12086
11940
  "description": "List an agent's release-pointer transitions (the activation audit trail), newest first. Filter by agentProfileId or toReleaseId. Each transition IS the immutable activation-verdict snapshot — reason (activation/promotion/rollback/waiver_activation), cited eval run + evidence digest, configuration digest, dataset version + observed head, policy revision pins, approver, and any waiver — so every pointer move is a visible, self-describing audit event. Cursor-paginated.",
12087
11941
  "inputSchema": {
12088
- "$schema": "http://json-schema.org/draft-07/schema#",
12089
11942
  "properties": {
12090
11943
  "agentProfileId": {
12091
11944
  "minLength": 1,
@@ -12119,7 +11972,6 @@
12119
11972
  },
12120
11973
  "description": "List dry-run simulations (proposed/approved/executed/expired). Concise rows — call get_simulation for the staged plan + projected side effects.",
12121
11974
  "inputSchema": {
12122
- "$schema": "http://json-schema.org/draft-07/schema#",
12123
11975
  "properties": {
12124
11976
  "cursor": {
12125
11977
  "minLength": 1,
@@ -12154,7 +12006,6 @@
12154
12006
  },
12155
12007
  "description": "List a workspace's skills (reusable, versioned agent capabilities). Each row carries its stable key, name, head version number + status (CANDIDATE/ELIGIBLE/RETIRED), and total version count — 'head' is the mutable current-version pointer; the versions themselves are immutable and content-addressed. Cursor-paginated; call get_skill for the full version history + executable snapshots.",
12156
12008
  "inputSchema": {
12157
- "$schema": "http://json-schema.org/draft-07/schema#",
12158
12009
  "properties": {
12159
12010
  "cursor": {
12160
12011
  "minLength": 1,
@@ -12181,7 +12032,6 @@
12181
12032
  },
12182
12033
  "description": "List governed knowledge sources (trust/freshness/privacy/owner/client/supersession). Superseded sources are EXCLUDED by default — pass includeSuperseded to show them. Client-private sources are blocked from unauthorized cross-client contexts.",
12183
12034
  "inputSchema": {
12184
- "$schema": "http://json-schema.org/draft-07/schema#",
12185
12035
  "properties": {
12186
12036
  "cursor": {
12187
12037
  "type": "string"
@@ -12230,7 +12080,6 @@
12230
12080
  },
12231
12081
  "description": "List executable specs (user story / constraints / non-goals / test plan / rollback / evidence / definition of done) in a workspace. Filter by taskId/projectId/status. Accepted specs feed Work Orders.",
12232
12082
  "inputSchema": {
12233
- "$schema": "http://json-schema.org/draft-07/schema#",
12234
12083
  "properties": {
12235
12084
  "cursor": {
12236
12085
  "type": "string"
@@ -12272,7 +12121,6 @@
12272
12121
  },
12273
12122
  "description": "List a task's outgoing and incoming links with the linked tasks' keys, titles, and boards.",
12274
12123
  "inputSchema": {
12275
- "$schema": "http://json-schema.org/draft-07/schema#",
12276
12124
  "properties": {
12277
12125
  "taskId": {
12278
12126
  "description": "Task whose outgoing and incoming links to list.",
@@ -12295,7 +12143,6 @@
12295
12143
  },
12296
12144
  "description": "List tasks in a board or column with board/column names, total count, and pagination. Concise by default — pass response_format: 'detailed' for sidecars/labels/assignees. At least one of boardId or columnId is required.",
12297
12145
  "inputSchema": {
12298
- "$schema": "http://json-schema.org/draft-07/schema#",
12299
12146
  "properties": {
12300
12147
  "boardId": {
12301
12148
  "description": "Filter by board. Provide either boardId or columnId.",
@@ -12350,7 +12197,6 @@
12350
12197
  },
12351
12198
  "description": "List a webhook's recent deliveries with status/attempts/errors (admin scope), newest first. Paginated.",
12352
12199
  "inputSchema": {
12353
- "$schema": "http://json-schema.org/draft-07/schema#",
12354
12200
  "properties": {
12355
12201
  "cursor": {
12356
12202
  "anyOf": [
@@ -12391,7 +12237,6 @@
12391
12237
  },
12392
12238
  "description": "List a workspace's outbound webhooks (admin scope). Secrets are never returned; consecutiveFailures > 0 means recent deliveries are exhausting their retries (3 in a row auto-disables the webhook).",
12393
12239
  "inputSchema": {
12394
- "$schema": "http://json-schema.org/draft-07/schema#",
12395
12240
  "properties": {
12396
12241
  "workspaceId": {
12397
12242
  "description": "Workspace ID.",
@@ -12414,7 +12259,6 @@
12414
12259
  },
12415
12260
  "description": "List Work Orders in a workspace with task key, status, current version number, and version/launch counts. Filter by task, project, or status. Paginated; pass nextCursor from the previous response to continue.",
12416
12261
  "inputSchema": {
12417
- "$schema": "http://json-schema.org/draft-07/schema#",
12418
12262
  "properties": {
12419
12263
  "cursor": {
12420
12264
  "anyOf": [
@@ -12478,7 +12322,6 @@
12478
12322
  },
12479
12323
  "description": "List the managed-execution workers enrolled in this deployment (ADMIN). Workers are deployment-global platform resources — not tenant data — so this shows identity, driver class + whether it is an approved production class, image/app/schema revision, liveness (live/stale/disabled via the 30s heartbeat cadence), and a COUNT of the worker's current claims. Current claims are derived from run rows at read time; no per-workspace claim detail is exposed. Use it to see which workers can accept managed eval work and which are down.",
12480
12324
  "inputSchema": {
12481
- "$schema": "http://json-schema.org/draft-07/schema#",
12482
12325
  "properties": {
12483
12326
  "includeDisabled": {
12484
12327
  "type": "boolean"
@@ -12503,7 +12346,6 @@
12503
12346
  },
12504
12347
  "description": "List workspaces the authenticated user belongs to, with their role.",
12505
12348
  "inputSchema": {
12506
- "$schema": "http://json-schema.org/draft-07/schema#",
12507
12349
  "properties": {},
12508
12350
  "type": "object"
12509
12351
  },
@@ -12519,7 +12361,6 @@
12519
12361
  },
12520
12362
  "description": "Create, rename, move, or archive a board column (action: 'create' | 'rename' | 'move' | 'archive'). create needs boardId+name; rename needs columnId+name; move needs columnId + beforeColumnId/afterColumnId; archive needs columnId (tasks in it disappear from the board with it).",
12521
12363
  "inputSchema": {
12522
- "$schema": "http://json-schema.org/draft-07/schema#",
12523
12364
  "properties": {
12524
12365
  "action": {
12525
12366
  "description": "Which column operation to perform.",
@@ -12589,7 +12430,6 @@
12589
12430
  },
12590
12431
  "description": "Create, update, or delete a board label (action: 'create' | 'update' | 'delete'). create needs boardId+name+color; update needs labelId and name and/or color; delete needs labelId. Creating an existing name returns the existing label. Use set_task_labels to apply labels to tasks.",
12591
12432
  "inputSchema": {
12592
- "$schema": "http://json-schema.org/draft-07/schema#",
12593
12433
  "properties": {
12594
12434
  "action": {
12595
12435
  "description": "Which label operation to perform.",
@@ -12639,7 +12479,6 @@
12639
12479
  },
12640
12480
  "description": "Map a GitHub user (numeric id as a string + login) to a Jentrix workspace member, or pass userId: null to unmap (admin scope + ADMIN role). The target must be a workspace member. Upsert — idempotent.",
12641
12481
  "inputSchema": {
12642
- "$schema": "http://json-schema.org/draft-07/schema#",
12643
12482
  "properties": {
12644
12483
  "githubLogin": {
12645
12484
  "minLength": 1,
@@ -12687,7 +12526,6 @@
12687
12526
  },
12688
12527
  "description": "Mark a CANDIDATE release ELIGIBLE from a passing gating eval run (admin scope). The run must be a gating AGENT_RELEASE run whose status is PASSED, whose configuration digest equals the release's, and (when the release pins one) whose dataset version matches the pinned gating dataset version — the M13.4 evidence bar, verified server-side. One-way: ELIGIBLE never reverts (retire instead); marking eligible records the verdict but grants no authority — set_active_release is the separate new-authority activation. AGE-248: this transition previously had no product surface, deadlocking managed claims on fresh deployments. Returns the release detail row.",
12689
12528
  "inputSchema": {
12690
- "$schema": "http://json-schema.org/draft-07/schema#",
12691
12529
  "properties": {
12692
12530
  "gatingEvalRunId": {
12693
12531
  "minLength": 1,
@@ -12716,7 +12554,6 @@
12716
12554
  },
12717
12555
  "description": "Merge one contact into another (admin scope) — the duplicate's deal links and tickets move to the survivor, empty survivor fields are filled from the duplicate, and the duplicate row is DELETED, all in one transaction. Cannot merge a contact into itself.",
12718
12556
  "inputSchema": {
12719
- "$schema": "http://json-schema.org/draft-07/schema#",
12720
12557
  "properties": {
12721
12558
  "duplicateId": {
12722
12559
  "description": "Contact folded into the survivor and deleted.",
@@ -12747,7 +12584,6 @@
12747
12584
  },
12748
12585
  "description": "Move a task to a different column (= change status on the kanban board) and/or reorder it. Use beforeTaskId/afterTaskId for placement; omit both to append to the end.",
12749
12586
  "inputSchema": {
12750
- "$schema": "http://json-schema.org/draft-07/schema#",
12751
12587
  "properties": {
12752
12588
  "afterTaskId": {
12753
12589
  "anyOf": [
@@ -12806,7 +12642,6 @@
12806
12642
  },
12807
12643
  "description": "Resolve what launching a published template version WOULD freeze, without writing anything (ADMIN role; read scope) — the launch review, as a tool. Returns the full resolution (workers and the immutable releases they pin, compiled permission revisions, policy revisions, credential bindings, budgets, gates, repository and work item), its `checksum`, and everything standing in the way: `blockers` refuse the launch, `warnings` do not, and `missingPrerequisites` says it in a sentence. Pass the returned checksum to launch_harness_template as expectedChecksum to bind the launch to exactly this resolution — if it moved since (a re-pointed release, a republished permission revision, an edited policy) the launch CONFLICTs instead of freezing something you never read. Takes every argument the launch takes, because a preview that resolved different inputs would be a preview of a different run.",
12808
12644
  "inputSchema": {
12809
- "$schema": "http://json-schema.org/draft-07/schema#",
12810
12645
  "properties": {
12811
12646
  "allowedPaths": {
12812
12647
  "items": {
@@ -12882,7 +12717,6 @@
12882
12717
  },
12883
12718
  "description": "Promote a healthy experiment candidate (admin scope + ADMIN role) — the explicit human action that moves the release pointer EXACTLY once. Writes the ReleasePointerTransition to the candidate AND transitions the experiment RUNNING → PROMOTED in ONE transaction, re-verifying the activation currency checks (digest-equal green gating run, current policy pins, dataset version at the head). Guardrail rollback, supersession (an admin moved the pointer mid-window), and staleness (governance drift) are the AUTOMATIC terminal paths and have no MCP surface — promotion is the only human, pointer-moving one. Use expectedRevision / expectedPointerRevision for safe retries. Returns the pointer transition it wrote.",
12884
12719
  "inputSchema": {
12885
- "$schema": "http://json-schema.org/draft-07/schema#",
12886
12720
  "properties": {
12887
12721
  "approvalRef": {
12888
12722
  "minLength": 1,
@@ -12928,7 +12762,6 @@
12928
12762
  },
12929
12763
  "description": "Mint a DRAFT harness template from a run that already worked (ADMIN; admin scope) — its stages become the steps, its roles the assignments, its repo/branch settings the defaults. Eligibility is strict and fails closed: the run must be unarchived, COMPLETED, and acceptanceState ACCEPTED. PENDING and WAITING_OPERATOR are verdicts still in flight; CONDITIONAL is a waiver that must never read as verified; LEGACY_UNATTESTED means acceptance was never established; a DRY RUN never promotes because nothing in it executed — each is refused with the reason. A SKIPPED stage promotes to an ARCHIVED step, so the pipeline's shape survives without resurrecting skipped work. Promotion buys provenance, never a validation bypass: the draft carries an ordinary validation summary and still has to pass publish. idempotencyKey is REQUIRED.",
12930
12764
  "inputSchema": {
12931
- "$schema": "http://json-schema.org/draft-07/schema#",
12932
12765
  "properties": {
12933
12766
  "harnessId": {
12934
12767
  "description": "Alias for harnessRunId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -12969,7 +12802,6 @@
12969
12802
  },
12970
12803
  "description": "Publish a harness template's open draft, freezing it as an immutable version that launches can name (ADMIN; admin scope). VALIDATION GATES THIS: a draft carrying any `error` finding is refused (warnings never block) — call validate_harness_template first to see what would refuse. A template with no open draft is refused too; edit it to fork one. expectedUpdatedAt is REQUIRED. Returns the published version's id, number, and content hash.",
12971
12804
  "inputSchema": {
12972
- "$schema": "http://json-schema.org/draft-07/schema#",
12973
12805
  "properties": {
12974
12806
  "expectedUpdatedAt": {
12975
12807
  "description": "REQUIRED on this surface: the template's `updatedAt` from your last read (ISO 8601). If the template changed since, the call fails with CONFLICT and the error embeds the current state under error.current so you can merge without a second read.",
@@ -13000,7 +12832,6 @@
13000
12832
  },
13001
12833
  "description": "Publish a worker's permission revision (admin scope + ADMIN role) — the boundary that GRANTS an AI worker its compiled permissions. Compilation is atomic: an uncompilable content is refused and nothing is written, so a returned revisionId proves the compiled enforcement bundle exists and is current. This is what clears the permission_revision_unset and compiled-artifact staleness blockers a launch preview reports. Governed by the worker.permission.publish policy key (seeded REQUIRE_APPROVAL), so a human approves the grant even though an agent can request it.",
13002
12834
  "inputSchema": {
13003
- "$schema": "http://json-schema.org/draft-07/schema#",
13004
12835
  "properties": {
13005
12836
  "agentProfileId": {
13006
12837
  "description": "The workspace AI worker whose permission template to publish into.",
@@ -13164,7 +12995,6 @@
13164
12995
  },
13165
12996
  "description": "Run the workspace's software-company reconciler once, on demand (ADMIN). This is the SAME idempotent operation the five-minute sweep runs for each enabled profile — the manual recovery/catch-up path: it re-derives all pending work from durable rows (signal intake, triage, investment-decision materialization, harness handoffs, CI-failure repair, release/deploy verification, incident recovery, support response, company-operations approvals, and the weekly operating review), advances what is ready, opens COMPANY_AUTOMATION exceptions for blocked contracts, and clears exceptions a prior retry has resolved (audit history preserved). Returns the created / advanced / skipped / failed subjects plus the count of cleared exceptions. A paused or disabled profile starts no new work (empty result). Never overrides freeze, cancellation, gate, lease, connector-disable, rollback, or release controls — it only invokes the existing operations as the configured operator.",
13166
12997
  "inputSchema": {
13167
- "$schema": "http://json-schema.org/draft-07/schema#",
13168
12998
  "properties": {
13169
12999
  "workspaceId": {
13170
13000
  "minLength": 1,
@@ -13188,7 +13018,6 @@
13188
13018
  },
13189
13019
  "description": "Record that a human performed an OPERATOR acceptance criterion of a harness run's acceptance policy (deploy, env restamp, runner restart, drill …). The criterion must match the policy verbatim and be OPERATOR mode — AUTOMATED criteria are proven by runner-attested verification commands and are rejected here. Captures a run-scoped evidence artifact (note redacted on ingest, criterion recorded on the link), writes the audit activity, and recalculates the run's acceptanceState in the same flow. Returns the new acceptanceState. Admin only.",
13190
13020
  "inputSchema": {
13191
- "$schema": "http://json-schema.org/draft-07/schema#",
13192
13021
  "properties": {
13193
13022
  "artifactId": {
13194
13023
  "anyOf": [
@@ -13256,7 +13085,6 @@
13256
13085
  },
13257
13086
  "description": "Record a §10.6 next action on an execution (admin scope + ADMIN role), optionally with the TERMINAL DISPOSITION of a failed or cancelled one. The action is REFUSED unless legal for the run's current state; a failed/cancelled execution carrying no disposition must be given one. The disposition columns and the append-only history row are written in one transaction. expectedUpdatedAt guards the write (CONFLICT embeds the current state). Returns the full resolution view: legalActions, disposition, and history.",
13258
13087
  "inputSchema": {
13259
- "$schema": "http://json-schema.org/draft-07/schema#",
13260
13088
  "properties": {
13261
13089
  "action": {
13262
13090
  "description": "The §10.6 action taken; refused unless legal for the state.",
@@ -13342,7 +13170,6 @@
13342
13170
  },
13343
13171
  "description": "Runner only: attach provider-reported token/cost usage to an attempt run AFTER its turn ended (legal on a closed run). Write-once — a run that already carries usage returns recorded=false. inputTokens is TOTAL input; cacheReadTokens/cacheCreationTokens are disjoint subsets of it. Never estimate: omit what the runtime did not report.",
13344
13172
  "inputSchema": {
13345
- "$schema": "http://json-schema.org/draft-07/schema#",
13346
13173
  "properties": {
13347
13174
  "jobId": {
13348
13175
  "minLength": 1,
@@ -13450,7 +13277,6 @@
13450
13277
  },
13451
13278
  "description": "Release a work lease you hold (status → released). Idempotent: releasing an already-inactive lease is a no-op. Pass expectedUpdatedAt for an optimistic-concurrency guard.",
13452
13279
  "inputSchema": {
13453
- "$schema": "http://json-schema.org/draft-07/schema#",
13454
13280
  "properties": {
13455
13281
  "expectedUpdatedAt": {
13456
13282
  "description": "Optimistic-concurrency guard: the lease's updatedAt from your last read. If it changed since, the call fails with CONFLICT.",
@@ -13484,7 +13310,6 @@
13484
13310
  },
13485
13311
  "description": "Remove a member from a workspace (admin scope + ADMIN role). You cannot remove YOURSELF, and the last OWNER cannot be removed. Governed by the membership pack (REQUIRE_APPROVAL by default). Concurrency is VALUE-CAS: pass `expectedRole`; `expectedUpdatedAt` is refused (M19.2). A value-CAS mismatch returns CONFLICT embedding the current role.",
13486
13312
  "inputSchema": {
13487
- "$schema": "http://json-schema.org/draft-07/schema#",
13488
13313
  "properties": {
13489
13314
  "expectedRole": {
13490
13315
  "description": "Value-CAS guard: the member's role you last read. If it changed since, the call fails with CONFLICT.",
@@ -13526,7 +13351,6 @@
13526
13351
  },
13527
13352
  "description": "Remove a project link (exact projectId + targetType + targetId match). Removing a link that does not exist is a no-op. Needs the workspace ADMIN role.",
13528
13353
  "inputSchema": {
13529
- "$schema": "http://json-schema.org/draft-07/schema#",
13530
13354
  "properties": {
13531
13355
  "projectId": {
13532
13356
  "minLength": 1,
@@ -13569,7 +13393,6 @@
13569
13393
  },
13570
13394
  "description": "Remove a task link (exact fromTaskId + toTaskId + kind match). No-op if the edge does not exist.",
13571
13395
  "inputSchema": {
13572
- "$schema": "http://json-schema.org/draft-07/schema#",
13573
13396
  "properties": {
13574
13397
  "fromTaskId": {
13575
13398
  "description": "Task ID on the FROM side.",
@@ -13611,7 +13434,6 @@
13611
13434
  },
13612
13435
  "description": "Rename a board.",
13613
13436
  "inputSchema": {
13614
- "$schema": "http://json-schema.org/draft-07/schema#",
13615
13437
  "properties": {
13616
13438
  "boardId": {
13617
13439
  "description": "Board to rename.",
@@ -13643,7 +13465,6 @@
13643
13465
  },
13644
13466
  "description": "Start a review-loop workflow on a task: creates the job + a Work Order draft (no launch yet) and names the planner/reviewer agents. The planner drafts, the reviewer reviews, with human gates before execution and at final acceptance. The `authoring` template is the exception: it converges on a validated spec, so approving its plan (authoring) gate completes the loop — there is no execution phase or final-acceptance gate.",
13645
13467
  "inputSchema": {
13646
- "$schema": "http://json-schema.org/draft-07/schema#",
13647
13468
  "properties": {
13648
13469
  "executorAgentId": {
13649
13470
  "description": "AgentProfile that executes. v1: must equal plannerAgentId (the planner executes) — a distinct executor is not yet routable.",
@@ -13717,7 +13538,6 @@
13717
13538
  },
13718
13539
  "description": "Mint a short-lived, scoped, action-bound credential grant from a credential record (admin only, policy-gated). The grant material is minted only at the injection boundary — never a long-lived raw secret.",
13719
13540
  "inputSchema": {
13720
- "$schema": "http://json-schema.org/draft-07/schema#",
13721
13541
  "properties": {
13722
13542
  "actionClass": {
13723
13543
  "description": "Exact action class the grant authorizes, e.g. repo:push.",
@@ -13783,7 +13603,6 @@
13783
13603
  },
13784
13604
  "description": "Start a delivery workflow on a task (feature | bugfix | ci_failure_triage | release_candidate | hotfix), optionally bound to an existing PR (prLinkId, on the task's own board). Same plan→review→execute→review loop as request_agent_workflow, but the reviewer turn reacts to the bound PR's CI (see get_agent_job's `delivery` block) and the ci_failure_triage executor pushes a fix to the PR branch via the governed push path. Merge/deploy stay human-gated (M8.3).",
13785
13605
  "inputSchema": {
13786
- "$schema": "http://json-schema.org/draft-07/schema#",
13787
13606
  "properties": {
13788
13607
  "idempotencyKey": {
13789
13608
  "maxLength": 200,
@@ -13858,7 +13677,6 @@
13858
13677
  },
13859
13678
  "description": "Request execution of the run's first undone stage (execution is serial, so it is the only one in line): acquires the stage lease + opens a fresh M7 AgentJob bound to the stage. The stage must have executable backing — a first-undone draft stage (no Work Order, e.g. a create_harness_stage draftOnly placeholder) is rejected as a draft, never launched. Optionally pass stageId to assert which stage you expect to launch — a mismatch (a different stage is next) is rejected rather than silently launching the wrong one. Long-running: task-augmentable — cancelling the task (tasks/cancel) cancels the underlying stage-execution kernel workload. Returns whether a stage was launched + the stage/job ids.",
13860
13679
  "inputSchema": {
13861
- "$schema": "http://json-schema.org/draft-07/schema#",
13862
13680
  "properties": {
13863
13681
  "harnessId": {
13864
13682
  "description": "Alias for harnessRunId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -13904,7 +13722,6 @@
13904
13722
  },
13905
13723
  "description": "Request an agent run for a Work Order. With no live executor wired, the launch is recorded in PENDING for a runner to claim (substrate fallback) and a notice is returned. Pass quickRun for a restricted-tools quick launch.",
13906
13724
  "inputSchema": {
13907
- "$schema": "http://json-schema.org/draft-07/schema#",
13908
13725
  "properties": {
13909
13726
  "allowedTools": {
13910
13727
  "description": "Restricted tool set for a quick run.",
@@ -13968,7 +13785,6 @@
13968
13785
  },
13969
13786
  "description": "Resolve a require_approval PolicyEvaluation by minting a scoped, time-bounded approval binding (admin only). The approved actor may then retry the gated action once within the binding's window.",
13970
13787
  "inputSchema": {
13971
- "$schema": "http://json-schema.org/draft-07/schema#",
13972
13788
  "properties": {
13973
13789
  "evaluationId": {
13974
13790
  "description": "The PolicyEvaluation (require_approval) being resolved.",
@@ -14008,7 +13824,6 @@
14008
13824
  },
14009
13825
  "description": "Resolve non-archived projects across every workspace the caller belongs to whose linked repository matches a normalized \"owner/name\". Used by connected-session setup to narrow project choices from the checkout; requires an unpinned human credential (workspace-pinned tokens are refused).",
14010
13826
  "inputSchema": {
14011
- "$schema": "http://json-schema.org/draft-07/schema#",
14012
13827
  "properties": {
14013
13828
  "repoOwnerName": {
14014
13829
  "description": "Normalized repository identity as lowercase \"owner/name\" (e.g. \"acme/api\").",
@@ -14035,7 +13850,6 @@
14035
13850
  },
14036
13851
  "description": "Reopen an eligible INTERRUPTED session (original operator or workspace admin; same project and repository — continuity failures are SESSION_RESUME_CONFLICT). Requires expectedUpdatedAt (CAS). A deliberate new work period should instead create a new session with continuesSessionId.",
14037
13852
  "inputSchema": {
14038
- "$schema": "http://json-schema.org/draft-07/schema#",
14039
13853
  "properties": {
14040
13854
  "expectedUpdatedAt": {
14041
13855
  "description": "REQUIRED optimistic concurrency guard: the session's updatedAt from your last read; a mismatch fails with CONFLICT embedding the current state.",
@@ -14080,7 +13894,6 @@
14080
13894
  },
14081
13895
  "description": "Retire a release (admin scope + ADMIN role) — a terminal move from CANDIDATE/ELIGIBLE to RETIRED. Idempotent: retiring an already-RETIRED release replays it. REFUSED with CONFLICT when the pointer currently holds the release (activate or roll back to another first). Returns the retired release.",
14082
13896
  "inputSchema": {
14083
- "$schema": "http://json-schema.org/draft-07/schema#",
14084
13897
  "properties": {
14085
13898
  "releaseId": {
14086
13899
  "minLength": 1,
@@ -14104,7 +13917,6 @@
14104
13917
  },
14105
13918
  "description": "Retry a stage parked BLOCKED by a FAILED or stalled execution job (runner crash, provider error, lapsed heartbeat) — moves it BLOCKED → READY so it becomes relaunchable, then request_harness_stage_run opens a fresh attempt. Must be the run's current (first-undone) stage on an EXECUTING run. NOT for a stage blocked by an unresolved decision (accept the decision and resume the stage instead — this is rejected to avoid bypassing the decision gate). Admin only.",
14106
13919
  "inputSchema": {
14107
- "$schema": "http://json-schema.org/draft-07/schema#",
14108
13920
  "properties": {
14109
13921
  "harnessId": {
14110
13922
  "description": "Alias for harnessRunId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -14145,7 +13957,6 @@
14145
13957
  },
14146
13958
  "description": "Revoke a pending workspace invitation (admin scope + ADMIN role). Discover the invitationId via list_invitations.",
14147
13959
  "inputSchema": {
14148
- "$schema": "http://json-schema.org/draft-07/schema#",
14149
13960
  "properties": {
14150
13961
  "invitationId": {
14151
13962
  "minLength": 1,
@@ -14169,7 +13980,6 @@
14169
13980
  },
14170
13981
  "description": "Run an eval: grade a subject configuration (AGENT_CONFIG / PLAYBOOK / HARNESS_TEMPLATE) against a dataset version (explicit datasetVersionId, else the dataset's head) on the managed kernel, then land a terminal EvalRun + per-case results via the outbox. A per-run budget is MANDATORY — set at least one of maxCases/maxTokens/maxSpendUsd. Pass gating:true to export unsampled and capture content-addressed evidence (a gating verdict gates promotion; running an eval never grants authority). Long-running: task-augmentable (tasks/get for status, tasks/cancel to cancel the kernel workload); the run id + terminal status/score come back either way, and the per-case results read from get_eval_run. The gating configuration digest is derived SERVER-SIDE — from the profile for AGENT_CONFIG and from the draft + coverage for PLAYBOOK (never caller-supplied); only HARNESS_TEMPLATE still takes configurationDigest. PLAYBOOK gating runs are driven from the promotion flow, not this tool.",
14171
13982
  "inputSchema": {
14172
- "$schema": "http://json-schema.org/draft-07/schema#",
14173
13983
  "properties": {
14174
13984
  "configurationDigest": {
14175
13985
  "description": "Only for HARNESS_TEMPLATE subjects (ignored for AGENT_CONFIG/PLAYBOOK — those digests are derived server-side).",
@@ -14279,7 +14089,6 @@
14279
14089
  },
14280
14090
  "description": "Save (upsert) an AI worker draft on a workspace agent (admin scope + ADMIN role) — the configure→publish flow's persisted snapshot: runtime adapter + provider connection + model profile + generation controls + optional fallback. The triple is validated server-side (an unsupported control or a connection/model that doesn't belong to the adapter is refused). expectedUpdatedAt optionally guards against a concurrent profile edit. Returns the resolved draft.",
14281
14091
  "inputSchema": {
14282
- "$schema": "http://json-schema.org/draft-07/schema#",
14283
14092
  "properties": {
14284
14093
  "agentId": {
14285
14094
  "minLength": 1,
@@ -14399,7 +14208,6 @@
14399
14208
  },
14400
14209
  "description": "Search the BODIES of typed artifacts (plan/decision/findings/report/diff/deliverable/learning/prompt/goal/prd) workspace-wide — full-text, websearch syntax (words, quoted phrases, -negation). This is how a LEARNING or a FINDINGS write-up is found again by what it says rather than by a title someone remembers. The index is built from the REDACTED stored text, so a secret redacted at ingest was never indexed. Archived and redacted artifacts are excluded; raw TRACE transcript parts are not searchable. Fetch a hit's content with get_artifact.",
14401
14210
  "inputSchema": {
14402
- "$schema": "http://json-schema.org/draft-07/schema#",
14403
14211
  "properties": {
14404
14212
  "query": {
14405
14213
  "description": "Search text matched against artifact titles and their stored (redacted) bodies. Websearch syntax supported.",
@@ -14435,7 +14243,6 @@
14435
14243
  },
14436
14244
  "description": "Search tasks workspace-wide across all boards: exact task key (for example STK-42), full-text (websearch syntax — words, quoted phrases, -negation) over title/description/comments, plus case-insensitive substring on title/description. Exact key hits rank first. Returns concise rows with board/column names. Archived tasks excluded.",
14437
14245
  "inputSchema": {
14438
- "$schema": "http://json-schema.org/draft-07/schema#",
14439
14246
  "properties": {
14440
14247
  "cursor": {
14441
14248
  "anyOf": [
@@ -14483,7 +14290,6 @@
14483
14290
  },
14484
14291
  "description": "Discover this MCP server's own tools: returns capability manifests (name, description, required scope, safety annotations, parameter names/types) filtered by free-text query, scope class, or task profile. Reads the CI-generated, drift-pinned tool registry — not a live introspection — so results are stable and match the frozen surface. Pass include_profiles to also get the registry+telemetry-derived task profiles (recommended tool bundles per workflow). Read-only; no workspace needed.",
14485
14292
  "inputSchema": {
14486
- "$schema": "http://json-schema.org/draft-07/schema#",
14487
14293
  "properties": {
14488
14294
  "include_profiles": {
14489
14295
  "description": "Also return the registry+telemetry-derived task profiles (tool bundles per workflow).",
@@ -14529,7 +14335,6 @@
14529
14335
  },
14530
14336
  "description": "Idempotently seed the starter eval datasets into a workspace (admin scope + ADMIN role): 'platform-smoke' (one case per grader kind), 'platform-smoke-deterministic' (judge-free grader smoke), and 'platform-smoke-managed-release' (the real-provider gate with an explicit JSON response contract). Release gating should pin the returned gatingDatasetVersionId (the managed release set): its predicate grades the actual managed-provider output, never the fixture's golden subject output. Re-running returns existing immutable head versions (created: false). AGE-248: the workspace bring-up affordance — a workspace-governed release must pin a gating dataset version.",
14531
14337
  "inputSchema": {
14532
- "$schema": "http://json-schema.org/draft-07/schema#",
14533
14338
  "properties": {
14534
14339
  "idempotencyKey": {
14535
14340
  "description": "Optional idempotency key: retrying with the same key and arguments within 24h returns the original result instead of creating duplicates. Reusing a key with different arguments fails with CONFLICT.",
@@ -14560,7 +14365,6 @@
14560
14365
  },
14561
14366
  "description": "Send an outbound reply on a governed communication connector (Slack/email), in the context of an ingested stakeholder message. LIVE delivery (M14.3d), FAIL-CLOSED at every layer: the source must have outbound enabled; the Policy Engine must not DENY or park the send; and the PROVENANCE FLOOR applies — a policy ALLOW delivers a human send, but this AGENT-initiated call parks at REQUIRE_APPROVAL (naming its provenance) unless a bound single-use approval for THIS exact payload authorizes it. `delivered:true` is reported ONLY from the provider acknowledgment; a transient failure leaves the send PENDING for the sweep drain to retry. A workspace with no live connector configured behaves byte-identically to v1 (delivered:false, the 'no live connector' notice). Admin scope + ADMIN role — provenance, not privilege, is what the floor gates.",
14562
14367
  "inputSchema": {
14563
- "$schema": "http://json-schema.org/draft-07/schema#",
14564
14368
  "properties": {
14565
14369
  "body": {
14566
14370
  "maxLength": 50000,
@@ -14607,7 +14411,6 @@
14607
14411
  },
14608
14412
  "description": "Move an agent's active-release pointer (admin scope + ADMIN role). mode 'activate' is the new-authority grant — requires a passing gating EvalRun whose subject digest equals the release's, with policy pins current and the pinned dataset version at the regression head (a stale head returns CONFLICT with the new head named; pass a governed waiverId to override). mode 'rollback' re-points to a prior ELIGIBLE release WITHOUT re-running the new-authority gate (the safe direction). Every move writes ONE reason-bearing, CAS-guarded ReleasePointerTransition — the visible activation-verdict audit event. Agents never self-approve: activation is an admin action. Returns the transition it wrote.",
14609
14413
  "inputSchema": {
14610
- "$schema": "http://json-schema.org/draft-07/schema#",
14611
14414
  "properties": {
14612
14415
  "approvalRef": {
14613
14416
  "minLength": 1,
@@ -14664,7 +14467,6 @@
14664
14467
  },
14665
14468
  "description": "Enable or disable an automation rule (admin scope + ADMIN role).",
14666
14469
  "inputSchema": {
14667
- "$schema": "http://json-schema.org/draft-07/schema#",
14668
14470
  "properties": {
14669
14471
  "automationId": {
14670
14472
  "description": "Alias for ruleId. Accepted interchangeably — pass either one; if both are given they must be equal.",
@@ -14697,7 +14499,6 @@
14697
14499
  },
14698
14500
  "description": "Set the full list of contacts attached to a CRM task's deal. REPLACES existing contacts — pass current+new to add, pass current-removed to remove, pass [] to clear. All contacts must belong to the same workspace as the task and not be archived. Writes one CONTACT_LINKED activity per added contact, one CONTACT_UNLINKED per removed.",
14699
14501
  "inputSchema": {
14700
- "$schema": "http://json-schema.org/draft-07/schema#",
14701
14502
  "properties": {
14702
14503
  "contactIds": {
14703
14504
  "description": "Full list of contact IDs to attach to this deal. REPLACES all existing contacts — pass current+new to add one, pass current-removed to remove one, pass [] to clear. Every contact must belong to the same workspace as the task and not be archived.",
@@ -14731,7 +14532,6 @@
14731
14532
  },
14732
14533
  "description": "Set a harness run's active PLANNER and REVIEWER agents so it can launch stage execution jobs. Pass an AgentProfile id per role (plannerAgentId, reviewerAgentId) — each must be an ACTIVE agent usable in the run's workspace with exactly one usable linked PAT; the token is resolved from the agent, never passed in. Supersedes prior role assignments (archived, not deleted, so history stays auditable). Pass expectedUpdatedAt for optimistic concurrency. Admin only.",
14733
14534
  "inputSchema": {
14734
- "$schema": "http://json-schema.org/draft-07/schema#",
14735
14535
  "properties": {
14736
14536
  "expectedUpdatedAt": {
14737
14537
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current state.",
@@ -14779,7 +14579,6 @@
14779
14579
  },
14780
14580
  "description": "Change a harness run's loop policy: budgets (maxIterations), ordering (sequential), the reviewer requirement (reviewerRequired), gate mode (requireHumanGates — default false: an APPROVED review auto-resolves the gate it opened; true parks every gate for a human), stage auto-advance (autoAdvanceStages — default true: the next stage launches on stage_ready, and a PLANNING run with an accepted spec auto-opens its first decomposition loop), stage auto-retry (autoRetryLimit — default 2: the sweep retries a mechanically blocked stage up to this many times while requireHumanGates is false; 0 disables; decision blocks never auto-retry), and branch strategy. Distinct from updating name/repo/branch config. Pass expectedUpdatedAt for optimistic concurrency. Admin only.",
14781
14581
  "inputSchema": {
14782
- "$schema": "http://json-schema.org/draft-07/schema#",
14783
14582
  "properties": {
14784
14583
  "autoAdvanceStages": {
14785
14584
  "description": "Auto-launch the next launchable stage on harness.stage_ready (after decomposition and after each stage commit). Default true; set false to launch stages manually via request_harness_stage_run.",
@@ -14851,7 +14650,6 @@
14851
14650
  },
14852
14651
  "description": "Archive or restore a harness template (ADMIN; admin scope) — one setter over one field, so pass archived: true or false. Archiving removes it from the default registry listing and blocks edit, publish and launch; it is a SOFT delete, so the template, every version, and every run already launched from it are retained, and archived: false reverses it exactly. expectedUpdatedAt is REQUIRED. Setting the state it is already in is a no-op.",
14853
14652
  "inputSchema": {
14854
- "$schema": "http://json-schema.org/draft-07/schema#",
14855
14653
  "properties": {
14856
14654
  "archived": {
14857
14655
  "description": "true archives the template (it leaves the default registry listing and can no longer be edited, published or launched); false restores it. A soft delete either way — versions and launched runs are always retained.",
@@ -14887,7 +14685,6 @@
14887
14685
  },
14888
14686
  "description": "Change a member's role (admin scope; the op requires the OWNER role, and the last owner cannot be demoted). Governed by the membership pack (REQUIRE_APPROVAL by default). Concurrency is VALUE-CAS: pass `expectedRole` (the role you last read); `expectedUpdatedAt` is refused (M19.2). A value-CAS mismatch returns CONFLICT embedding the current role.",
14889
14687
  "inputSchema": {
14890
- "$schema": "http://json-schema.org/draft-07/schema#",
14891
14688
  "properties": {
14892
14689
  "expectedRole": {
14893
14690
  "description": "Value-CAS guard: the member's role you last read. If it changed since, the call fails with CONFLICT.",
@@ -14938,7 +14735,6 @@
14938
14735
  },
14939
14736
  "description": "Enable or disable a model profile (admin scope + ADMIN role). Converges to the target state (same action → same end state). Returns the updated profile.",
14940
14737
  "inputSchema": {
14941
- "$schema": "http://json-schema.org/draft-07/schema#",
14942
14738
  "properties": {
14943
14739
  "enabled": {
14944
14740
  "type": "boolean"
@@ -14971,7 +14767,6 @@
14971
14767
  },
14972
14768
  "description": "Enable or disable a provider connection (admin scope + ADMIN role). Converges to the target state. Returns the updated (redacted) connection.",
14973
14769
  "inputSchema": {
14974
- "$schema": "http://json-schema.org/draft-07/schema#",
14975
14770
  "properties": {
14976
14771
  "connectionId": {
14977
14772
  "minLength": 1,
@@ -15004,7 +14799,6 @@
15004
14799
  },
15005
14800
  "description": "Update a linked repo's sync config (admin scope + ADMIN role): board, default/closed columns, direction, and the label/assignee/comment sync toggles + enabled. Only provided fields change.",
15006
14801
  "inputSchema": {
15007
- "$schema": "http://json-schema.org/draft-07/schema#",
15008
14802
  "properties": {
15009
14803
  "boardId": {
15010
14804
  "minLength": 1,
@@ -15069,7 +14863,6 @@
15069
14863
  },
15070
14864
  "description": "Enable, pause, or resume the workspace's software-company automation (ADMIN). Enable and resume run the fail-closed preflight first — the whole harness suite must resolve every board/agent/release/policy binding and the managed-path gating eval must pass. That eval gate is currently blocked on AGE-188/235/236 (the only eval backend is the simulated in-process plane), so enable/resume are refused with the exact blockers until a real backend lands; fixture/simulator-only evidence can never enable the profile. Pause never runs preflight and never cancels active Agent Jobs, Harness Runs, deliveries, or releases — it only stops new work from starting.",
15071
14865
  "inputSchema": {
15072
- "$schema": "http://json-schema.org/draft-07/schema#",
15073
14866
  "properties": {
15074
14867
  "action": {
15075
14868
  "enum": [
@@ -15106,7 +14899,6 @@
15106
14899
  },
15107
14900
  "description": "Set the full list of assignees on a task. REPLACES existing assignees. All user IDs must be members of the task's workspace.",
15108
14901
  "inputSchema": {
15109
- "$schema": "http://json-schema.org/draft-07/schema#",
15110
14902
  "properties": {
15111
14903
  "taskId": {
15112
14904
  "description": "ID of the task.",
@@ -15140,7 +14932,6 @@
15140
14932
  },
15141
14933
  "description": "Set the full list of labels on a task. REPLACES existing labels; pass current+new to add, pass current-removed to delete. All label IDs must belong to the task's board.",
15142
14934
  "inputSchema": {
15143
- "$schema": "http://json-schema.org/draft-07/schema#",
15144
14935
  "properties": {
15145
14936
  "labelIds": {
15146
14937
  "description": "Full list of label IDs to apply. REPLACES all existing labels — pass current+new to add, pass current-removed to delete.",
@@ -15174,7 +14965,6 @@
15174
14965
  },
15175
14966
  "description": "Enable or disable a managed-execution worker (ADMIN — the R13 kill switch). Disabling sets disabledAt and prevents the worker from accepting NEW claims immediately (in-flight runs finish or are cancelled explicitly); re-enabling clears it. Each change writes an audit activity. Returns the updated worker.",
15176
14967
  "inputSchema": {
15177
- "$schema": "http://json-schema.org/draft-07/schema#",
15178
14968
  "properties": {
15179
14969
  "enabled": {
15180
14970
  "type": "boolean"
@@ -15207,7 +14997,6 @@
15207
14997
  },
15208
14998
  "description": "Start a shadow or canary experiment for an agent (admin scope + ADMIN role for a canary). The baseline is NEVER caller-supplied — it is the profile's currently pointed-to release. A CANARY carries the FULL M13.4 activation bar, checked atomically: the candidate's green gating EvalRun for its exact digest, policy pins equal to the current required revisions, its dataset version at the current regression head, an explicit admin gate (approvalRef), and candidate preflight against the eligible worker pool — each missing requirement is named, and a stale head/policy is refused (a canary is partial activation, never a way around activation). A RUNNING canary deterministically routes trafficFraction of eligible claims to the candidate WITHOUT moving the pointer; guardrails evaluated on the sweep cadence roll it back on a breach. SHADOW carries a lighter bar (effects are captured, zero real side effects) and routes no traffic. Returns the started experiment.",
15209
14999
  "inputSchema": {
15210
- "$schema": "http://json-schema.org/draft-07/schema#",
15211
15000
  "properties": {
15212
15001
  "agentProfileId": {
15213
15002
  "minLength": 1,
@@ -15307,7 +15096,6 @@
15307
15096
  },
15308
15097
  "description": "Start the authoring loop on a DRAFT harness run: moves it DRAFT → AUTHORING, seeds a run-owned draft Spec, and opens the authoring agent job bound to the run (the planner/reviewer run the review loop toward the run's spec). Requires an anchor task, a repository on the run, and active planner+reviewer agents (set via set_harness_agents). Approving the resulting plan-approval gate (UI / Control Tower — no MCP self-approval) accepts the run-owned Spec, pins its SpecVersion, and advances the run AUTHORING → PLANNING. Pass expectedUpdatedAt for optimistic concurrency. Returns the run's new status + the opened job id. Admin only.",
15309
15098
  "inputSchema": {
15310
- "$schema": "http://json-schema.org/draft-07/schema#",
15311
15099
  "properties": {
15312
15100
  "expectedUpdatedAt": {
15313
15101
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current state.",
@@ -15355,7 +15143,6 @@
15355
15143
  },
15356
15144
  "description": "Start the decomposition loop on a PLANNING harness run (its spec validated and pinned): opens the decomposition agent job bound to the run. The planner proposes ordered stages via submit_plan's harnessStages (each tracing the accepted spec criteria it delivers); the reviewer validates them. Approving the resulting plan-approval gate (UI / Control Tower — no MCP self-approval) checks that every accepted spec criterion is covered, then mints the ordered HarnessStages + 1:1 Work Orders, snapshots the registry, and advances the run PLANNING → READY (an uncovered plan is rejected, naming the orphaned criteria, and the gate stays pending). Requires an anchor task, a repository, and active planner+reviewer agents. The run stays PLANNING until the gate mints the stages. Pass expectedUpdatedAt for optimistic concurrency. Returns the run's status + the opened job id. Admin only.",
15357
15145
  "inputSchema": {
15358
- "$schema": "http://json-schema.org/draft-07/schema#",
15359
15146
  "properties": {
15360
15147
  "expectedUpdatedAt": {
15361
15148
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current state.",
@@ -15403,7 +15190,6 @@
15403
15190
  },
15404
15191
  "description": "Arm a one-time import of a linked repo's existing issues (admin scope + ADMIN role). The /api/cron/github driver advances it one page per tick. Idempotent — re-arming resets the cursor.",
15405
15192
  "inputSchema": {
15406
- "$schema": "http://json-schema.org/draft-07/schema#",
15407
15193
  "properties": {
15408
15194
  "repoLinkId": {
15409
15195
  "description": "Repo link to remove.",
@@ -15428,7 +15214,6 @@
15428
15214
  },
15429
15215
  "description": "Manually stop a RUNNING experiment (admin scope + ADMIN role). A CANARY stop is a rollback — it opens an incident and traffic falls back to the baseline (the pointer is never moved); a SHADOW stop simply ends capture. A non-RUNNING experiment is refused with CONFLICT. Use expectedRevision for a safe retry. Returns the terminated experiment.",
15430
15216
  "inputSchema": {
15431
- "$schema": "http://json-schema.org/draft-07/schema#",
15432
15217
  "properties": {
15433
15218
  "expectedRevision": {
15434
15219
  "maximum": 9007199254740991,
@@ -15461,7 +15246,6 @@
15461
15246
  },
15462
15247
  "description": "Executor: submit the execution result (summary + produced artifact ids) and hand off to the reviewer. Artifacts are validated against the workspace and linked to this run. Requires the claimed runId.",
15463
15248
  "inputSchema": {
15464
- "$schema": "http://json-schema.org/draft-07/schema#",
15465
15249
  "properties": {
15466
15250
  "artifactIds": {
15467
15251
  "description": "Artifact ids produced this run (validated + linked to the run).",
@@ -15549,7 +15333,6 @@
15549
15333
  },
15550
15334
  "description": "Attach a generated artifact (PRD candidate/synthesized, review report, stage plan, prompt template, execution summary, diff, or test evidence) to a harness run/stage — either capturing new redacted markdown (title+body) or classifying an existing visible Artifact (artifactId). Returns the link (null if the artifact store is unconfigured).",
15551
15335
  "inputSchema": {
15552
- "$schema": "http://json-schema.org/draft-07/schema#",
15553
15336
  "properties": {
15554
15337
  "artifactId": {
15555
15338
  "anyOf": [
@@ -15864,7 +15647,6 @@
15864
15647
  },
15865
15648
  "description": "Reviewer: submit a verdict (APPROVED or CHANGES_REQUESTED) with structured findings on a harness stage_execution (or plan) job — the SAME M7 review contract, including severity-gated verdicts: every finding carries a REQUIRED severity 0-100 (>=60 blocks; below that a CHANGES_REQUESTED is recorded as APPROVED with follow-up findings). APPROVED opens the human acceptance gate; the findings normalize into the harness finding table so the validation gate + re-review continuity see them. Requires the claimed runId.",
15866
15649
  "inputSchema": {
15867
- "$schema": "http://json-schema.org/draft-07/schema#",
15868
15650
  "properties": {
15869
15651
  "expectedUpdatedAt": {
15870
15652
  "description": "Optimistic-concurrency guard: the job's updatedAt from your last read.",
@@ -16035,7 +15817,6 @@
16035
15817
  },
16036
15818
  "description": "Record a stage's structured execution output (changed files, commands run, tests run/not-run, risks, and the branch/commit it landed on) as a redacted execution-summary artifact + link the diff / test-evidence artifacts. Returns the post-capture validation gate (validatable + missing evidence + blocking-finding count) — the implicit validation request.",
16037
15819
  "inputSchema": {
16038
- "$schema": "http://json-schema.org/draft-07/schema#",
16039
15820
  "properties": {
16040
15821
  "branch": {
16041
15822
  "anyOf": [
@@ -16195,7 +15976,6 @@
16195
15976
  },
16196
15977
  "description": "Planner: submit (or revise) the plan. Freezes the plan as a new Work Order version and hands off to the reviewer. Requires the claimed runId. Pass resolutions to record how prior findings were fixed. For a harness decomposition job (templateKey 'decomposition'), pass harnessStages — the proposed ordered stages, each tracing the accepted spec criteria it delivers — which are persisted as the exact proposal the accept gate mints; harnessStages is rejected for any other workflow.",
16197
15978
  "inputSchema": {
16198
- "$schema": "http://json-schema.org/draft-07/schema#",
16199
15979
  "properties": {
16200
15980
  "acceptanceCriteria": {
16201
15981
  "description": "Required behavior, tests, and definition of done.",
@@ -16520,7 +16300,6 @@
16520
16300
  },
16521
16301
  "description": "Reviewer: submit a verdict (APPROVED or CHANGES_REQUESTED) with structured findings and the ids of any previously-addressed findings you now verify. Each finding carries a REQUIRED severity 0-100 (>=80 critical, 60-79 high, 40-59 medium, 20-39 low, <20 nit). Verdicts are severity-gated: CHANGES_REQUESTED stands only when a severity>=60 finding backs it (submitted now, or still open from a prior round) — otherwise it is recorded as APPROVED and the findings become follow-ups, so reject only for concrete blockers. On a HARNESS STAGE review every open blocking finding must be classified: re-raised in findings[], verified in verifiedFindingIds[], or deliberately left open in sustainedFindingIds[] — omitting one is rejected, because silence must never act as a veto. APPROVED opens a human approval gate. Requires the claimed runId.",
16522
16302
  "inputSchema": {
16523
- "$schema": "http://json-schema.org/draft-07/schema#",
16524
16303
  "properties": {
16525
16304
  "expectedUpdatedAt": {
16526
16305
  "description": "Optimistic-concurrency guard: the job's updatedAt from your last read.",
@@ -16691,7 +16470,6 @@
16691
16470
  },
16692
16471
  "description": "Mark a subtask complete or incomplete.",
16693
16472
  "inputSchema": {
16694
- "$schema": "http://json-schema.org/draft-07/schema#",
16695
16473
  "properties": {
16696
16474
  "completed": {
16697
16475
  "description": "New completion state.",
@@ -16721,7 +16499,6 @@
16721
16499
  },
16722
16500
  "description": "Move a harness stage to a new status through the GENERIC mover (admin scope + ADMIN role). Illegal transitions are refused verbatim by the ops core: COMMITTED (the commit boundary owns it), EXECUTING/VALIDATED (the execution loop owns them), moving a stage OUT of the execution family, and resuming a stage parked on an unaccepted blocking decision are all refused — this tool adds NO new legality. expectedUpdatedAt guards the write; a concurrent change returns CONFLICT embedding the current stage.",
16723
16501
  "inputSchema": {
16724
- "$schema": "http://json-schema.org/draft-07/schema#",
16725
16502
  "properties": {
16726
16503
  "expectedUpdatedAt": {
16727
16504
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current state.",
@@ -16787,7 +16564,6 @@
16787
16564
  },
16788
16565
  "description": "Restore one to 50 boards in a workspace atomically. Requires workspace admin access; already-active boards are idempotent no-ops.",
16789
16566
  "inputSchema": {
16790
- "$schema": "http://json-schema.org/draft-07/schema#",
16791
16567
  "properties": {
16792
16568
  "boardIds": {
16793
16569
  "description": "One to 50 unique board ids to restore. Discover archived ids via list_boards(workspaceId).",
@@ -16823,7 +16599,6 @@
16823
16599
  },
16824
16600
  "description": "Resume (unfreeze) a frozen harness run — restores its EXACT recorded prior status and clears the freeze. An operator/admin control (admin scope + admin role): an agent has no path to unfreeze its own run. Records the resuming actor + reason. Rejects a run that is not frozen. Admin only.",
16825
16601
  "inputSchema": {
16826
- "$schema": "http://json-schema.org/draft-07/schema#",
16827
16602
  "properties": {
16828
16603
  "expectedUpdatedAt": {
16829
16604
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current state.",
@@ -16871,7 +16646,6 @@
16871
16646
  },
16872
16647
  "description": "Unlink a repository from its board (admin scope). Synced tasks are kept; only the sync records are removed.",
16873
16648
  "inputSchema": {
16874
- "$schema": "http://json-schema.org/draft-07/schema#",
16875
16649
  "properties": {
16876
16650
  "repoLinkId": {
16877
16651
  "description": "Repo link to remove.",
@@ -16896,7 +16670,6 @@
16896
16670
  },
16897
16671
  "description": "Update an agent profile (admin scope + ADMIN role for a workspace agent). Only provided fields change. A trust-level RAISE on a workspace agent requires a passing gating eval for the agent's current configuration (policy-visible). expectedUpdatedAt guards the write; a stale value returns CONFLICT.",
16898
16672
  "inputSchema": {
16899
- "$schema": "http://json-schema.org/draft-07/schema#",
16900
16673
  "properties": {
16901
16674
  "agentId": {
16902
16675
  "description": "ID of the agent to update.",
@@ -17131,7 +16904,6 @@
17131
16904
  },
17132
16905
  "description": "Update the BugReport sidecar on a task whose board kind = BUGS. Only provided fields are changed; pass null to clear. Setting resolvedAt records BUG_RESOLVED; clearing it records BUG_REOPENED.",
17133
16906
  "inputSchema": {
17134
- "$schema": "http://json-schema.org/draft-07/schema#",
17135
16907
  "properties": {
17136
16908
  "actualBehavior": {
17137
16909
  "anyOf": [
@@ -17254,7 +17026,6 @@
17254
17026
  },
17255
17027
  "description": "Edit a comment's body. Only the comment's author can edit it.",
17256
17028
  "inputSchema": {
17257
- "$schema": "http://json-schema.org/draft-07/schema#",
17258
17029
  "properties": {
17259
17030
  "body": {
17260
17031
  "description": "New comment body (markdown, max 20k chars).",
@@ -17286,7 +17057,6 @@
17286
17057
  },
17287
17058
  "description": "Update fields on an existing contact. Only provided fields are changed; pass null to clear optional fields.",
17288
17059
  "inputSchema": {
17289
- "$schema": "http://json-schema.org/draft-07/schema#",
17290
17060
  "properties": {
17291
17061
  "company": {
17292
17062
  "anyOf": [
@@ -17373,7 +17143,6 @@
17373
17143
  },
17374
17144
  "description": "Update the Deal sidecar on a task whose board kind = CRM. Only provided fields are changed; pass null to clear. Creates the Deal row if it doesn't exist yet.",
17375
17145
  "inputSchema": {
17376
- "$schema": "http://json-schema.org/draft-07/schema#",
17377
17146
  "properties": {
17378
17147
  "amount": {
17379
17148
  "anyOf": [
@@ -17443,7 +17212,6 @@
17443
17212
  },
17444
17213
  "description": "Update a harness run's config/name (admin scope + ADMIN role): repo, baseBranch, allowedPaths, branch template/strategy, sequential, maxIterations, reviewerRequired. NOT a status mover — run lifecycle moves are owned by their loops. expectedUpdatedAt is the concurrency guard; a stale value returns CONFLICT embedding the current config.",
17445
17214
  "inputSchema": {
17446
- "$schema": "http://json-schema.org/draft-07/schema#",
17447
17215
  "properties": {
17448
17216
  "allowedPaths": {
17449
17217
  "description": "Path globs the run is allowed to touch (empty = unrestricted).",
@@ -17551,7 +17319,6 @@
17551
17319
  },
17552
17320
  "description": "Resolve a harness finding: mark it ACCEPTED / FIXED / REJECTED / VERIFIED / SUPERSEDED, or OPEN to reopen a fixed/verified finding on a regression (legal transitions only). REJECTED and SUPERSEDED require a resolutionNote. Pass expectedUpdatedAt for optimistic concurrency (stale → CONFLICT embedding the finding's current status/resolution). Reviewers reopening a regression should NOT set `adjudication` — it is for a human operator ruling on a parked finding, and it suppresses the reopen counter that drives the oscillation park. Setting `adjudication` raises this call to the ADMIN surface (admin token scope + workspace ADMIN role), like the other operator controls; a plain resolution stays at `write`.",
17553
17321
  "inputSchema": {
17554
- "$schema": "http://json-schema.org/draft-07/schema#",
17555
17322
  "properties": {
17556
17323
  "adjudication": {
17557
17324
  "description": "Set TRUE when a human operator is adjudicating this finding rather than the loop reopening it. A move back into OPEN normally counts as a reopen and feeds the oscillation park; an adjudication is the act that ENDS an oscillation, so it must not be counted as one. Defaults to false, so the reviewer's own reopen path is unchanged. Operator authority: setting it requires the workspace ADMIN role (and, over MCP, an admin-scoped token) — a plain resolution needs neither.",
@@ -17623,7 +17390,6 @@
17623
17390
  },
17624
17391
  "description": "Edit a harness template's DRAFT (ADMIN; admin scope). Published versions are immutable, so if the head is published this FORKS a new draft seeded from it and applies the edit there — the response's `forkedNewDraft` says which happened, and the new version number comes back with it. Send the whole definition document (it replaces the draft's), and/or the aggregate metadata (name/description/visibility). expectedUpdatedAt is REQUIRED: a stale value fails with CONFLICT carrying the template's current state, and a draft published out from under you fails with CONFLICT telling you to re-read and fork. Returns the resulting validation summary.",
17625
17392
  "inputSchema": {
17626
- "$schema": "http://json-schema.org/draft-07/schema#",
17627
17393
  "properties": {
17628
17394
  "definition": {
17629
17395
  "additionalProperties": false,
@@ -20234,7 +20000,6 @@
20234
20000
  },
20235
20001
  "description": "Update the Initiative sidecar on a task whose board kind = ROADMAP. Only provided fields are changed; pass null to clear.",
20236
20002
  "inputSchema": {
20237
- "$schema": "http://json-schema.org/draft-07/schema#",
20238
20003
  "properties": {
20239
20004
  "confidence": {
20240
20005
  "anyOf": [
@@ -20320,7 +20085,6 @@
20320
20085
  },
20321
20086
  "description": "Update fields on an existing project (name, status, owner, parent, goal statement, constraints, budget, success metrics). Only provided fields are changed; pass null to clear a nullable field. Needs the workspace ADMIN role. Pass expectedUpdatedAt (from your last read) for optimistic concurrency — a mismatch returns CONFLICT embedding the current state.",
20322
20087
  "inputSchema": {
20323
- "$schema": "http://json-schema.org/draft-07/schema#",
20324
20088
  "properties": {
20325
20089
  "budget": {
20326
20090
  "anyOf": [
@@ -20507,7 +20271,6 @@
20507
20271
  },
20508
20272
  "description": "Update fields on an existing task. Only provided fields are changed.",
20509
20273
  "inputSchema": {
20510
- "$schema": "http://json-schema.org/draft-07/schema#",
20511
20274
  "properties": {
20512
20275
  "description": {
20513
20276
  "description": "New markdown description.",
@@ -20573,7 +20336,6 @@
20573
20336
  },
20574
20337
  "description": "Update the Ticket sidecar on a task whose board kind = SUPPORT. Only provided fields are changed; pass null to clear.",
20575
20338
  "inputSchema": {
20576
- "$schema": "http://json-schema.org/draft-07/schema#",
20577
20339
  "properties": {
20578
20340
  "expectedUpdatedAt": {
20579
20341
  "description": "Optimistic concurrency guard: the entity's updatedAt from your last read. If it changed since, the call fails with CONFLICT and the error embeds the current entity.",
@@ -20675,7 +20437,6 @@
20675
20437
  },
20676
20438
  "description": "Rename a workspace and/or set its connected-session default repository (admin scope + ADMIN role). `defaultRepo` takes a normalized \"owner/name\" (lowercased at the write boundary; null clears it) — sessions fall back to it only when no project in the workspace carries an explicit REPO link. `slug` and `taskPrefix` are WRITE-ONCE — passing either is refused with INVALID_INPUT. Rename concurrency is VALUE-CAS, not timestamp CAS: pass `expectedName` (the name you last read); `expectedUpdatedAt` is refused (workspaces carry no updatedAt — M19.2). A value-CAS mismatch returns CONFLICT embedding the current state under error.current.",
20677
20439
  "inputSchema": {
20678
- "$schema": "http://json-schema.org/draft-07/schema#",
20679
20440
  "properties": {
20680
20441
  "defaultRepo": {
20681
20442
  "anyOf": [
@@ -20730,7 +20491,6 @@
20730
20491
  },
20731
20492
  "description": "Validate a harness template's draft (or a named version) WITHOUT writing anything — the SAME check that gates publishing, so `ok: true` here means publish_harness_template_version will not refuse on validation. Returns every finding with a stable code, severity (error blocks publish, warning never does), and a dotted path into the definition (e.g. steps.2.evidence). Secret-shaped literals are reported as an `secret_material` error: a template references credentials by alias only.",
20732
20493
  "inputSchema": {
20733
- "$schema": "http://json-schema.org/draft-07/schema#",
20734
20494
  "properties": {
20735
20495
  "harnessTemplateId": {
20736
20496
  "minLength": 1,
@@ -20758,7 +20518,6 @@
20758
20518
  },
20759
20519
  "description": "Verify a provider connection (ADMIN). Per-adapter: an api_key or custom endpoint is checked by a live server-side GET /v1/models probe (a model LISTING, never a model invocation) through the SSRF guard, and the raw signal is mapped to exactly one distinguished outcome — success, success-with-no-models, invalid credentials, unsupported endpoint, network failure, rate limited, model access denied, or provider temporarily unavailable — never a generic 'failed' or a false 'healthy'. A subscription connection has no server API to ping, so this recomputes its verification from the runner attestations instead. Returns the updated connection, the distinguished outcome (null for a subscription), and a redaction-safe human summary.",
20760
20520
  "inputSchema": {
20761
- "$schema": "http://json-schema.org/draft-07/schema#",
20762
20521
  "properties": {
20763
20522
  "connectionId": {
20764
20523
  "minLength": 1,
@@ -20787,7 +20546,6 @@
20787
20546
  },
20788
20547
  "description": "Freeze a Work Order's current draft into a new immutable version + Context Pack (with checksums). Returns the Work Order with its updated version list.",
20789
20548
  "inputSchema": {
20790
- "$schema": "http://json-schema.org/draft-07/schema#",
20791
20549
  "properties": {
20792
20550
  "idempotencyKey": {
20793
20551
  "maxLength": 200,