@cat-factory/mcp-server 0.40.0 → 0.42.0

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/dist/server.d.ts CHANGED
@@ -2,7 +2,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { type CatFactoryMcpOptions } from './config.ts';
3
3
  import { type CatFactoryTool } from './tools.generated.ts';
4
4
  /** The npm version, stamped into the SDK's `User-Agent` so a deployment can attribute calls. */
5
- export declare const MCP_SERVER_VERSION = "0.40.0";
5
+ export declare const MCP_SERVER_VERSION = "0.42.0";
6
6
  /** The name this server reports to a host. */
7
7
  export declare const MCP_SERVER_NAME = "cat-factory";
8
8
  export interface CatFactoryMcpServer {
package/dist/server.js CHANGED
@@ -19,7 +19,7 @@ import { CAT_FACTORY_TOOLS } from './tools.generated.js';
19
19
  // has been round-tripped through a second type system, and every gap in that conversion becomes a
20
20
  // tool that misdescribes its own input.
21
21
  /** The npm version, stamped into the SDK's `User-Agent` so a deployment can attribute calls. */
22
- export const MCP_SERVER_VERSION = '0.40.0';
22
+ export const MCP_SERVER_VERSION = '0.42.0';
23
23
  /** The name this server reports to a host. */
24
24
  export const MCP_SERVER_NAME = 'cat-factory';
25
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tools.generated.d.ts","sourceRoot":"","sources":["../src/tools.generated.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAA;IACnB,8FAA8F;IAC9F,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACnC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC5B,oBAAoB,EAAE,KAAK,CAAA;KAC5B,CAAA;IACD;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,CAAA;IACD,kDAAkD;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACtF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AA0HD,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAguCtD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,8BAA8B,EAAE,SAAS,0BAA0B,EAmB/E,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBpE,CAAA"}
1
+ {"version":3,"file":"tools.generated.d.ts","sourceRoot":"","sources":["../src/tools.generated.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAA;IACnB,8FAA8F;IAC9F,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACnC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC5B,oBAAoB,EAAE,KAAK,CAAA;KAC5B,CAAA;IACD;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,CAAA;IACD,kDAAkD;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACtF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AA8HD,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAsvCtD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,8BAA8B,EAAE,SAAS,0BAA0B,EAmB/E,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBpE,CAAA"}
@@ -48,6 +48,10 @@ const QUERY_JOBS_LIST = [
48
48
  { name: 'status', required: false },
49
49
  { name: 'since', required: false },
50
50
  ];
51
+ const QUERY_REPOS_GET_FILE = [
52
+ { name: 'path', required: true },
53
+ { name: 'ref', required: false },
54
+ ];
51
55
  const QUERY_REPOS_LIST_AVAILABLE = [
52
56
  { name: 'q', required: false },
53
57
  ];
@@ -166,7 +170,7 @@ export const CAT_FACTORY_TOOLS = [
166
170
  readOnly: false,
167
171
  description: 'Create a service\n\nCreate a board service, optionally backed by a repository from `GET /api/v1/repos`. The repository link is what makes the service runnable: execution resolves a task’s repository by walking up to its enclosing service frame, so a service with none holds tasks and can start none of them. A whole-repo repository that already backs a service in this account is MOUNTED rather than duplicated; a monorepo service must name its subdirectory. The board lays the service out itself: this surface publishes no coordinates. Requires an `admin` key.\n\nCalls `POST /api/v1/services` (operation `createPublicService`).',
168
172
  inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "repo": { "type": "object", "properties": { "directory": { "type": "string", "maxLength": 400 }, "monorepo": { "type": "boolean" }, "repoId": { "type": "number" } }, "required": ["repoId"] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 }, "type": { "type": "string", "enum": ["service", "frontend", "library", "document"] } }, "description": "The request body." } }, "additionalProperties": false },
169
- outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes). A newer deployment may report a variant not in this list." }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
173
+ outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes | custom). A newer deployment may report a variant not in this list." }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
170
174
  invoke: (client, args) => client.services.create(args.body),
171
175
  },
172
176
  {
@@ -188,7 +192,7 @@ export const CAT_FACTORY_TOOLS = [
188
192
  readOnly: true,
189
193
  description: 'List the workspace\'s services\n\nList the board service frames in the key’s workspace, so a caller can discover the serviceId to create/list tasks under.\n\nCalls `GET /api/v1/services` (operation `listPublicServices`).',
190
194
  inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
191
- outputSchema: { "type": "object", "properties": { "services": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes). A newer deployment may report a variant not in this list." }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } } } } },
195
+ outputSchema: { "type": "object", "properties": { "services": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes | custom). A newer deployment may report a variant not in this list." }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } } } } },
192
196
  invoke: (client, args) => client.services.list(),
193
197
  },
194
198
  {
@@ -198,8 +202,8 @@ export const CAT_FACTORY_TOOLS = [
198
202
  operationId: 'updatePublicService',
199
203
  readOnly: false,
200
204
  description: 'Patch a service, including where its per-run manifests live\n\nChange a service’s authored fields, and declare its `provisioning`: where the manifests for a per-run environment are read from. That second half is what a connected cluster alone cannot supply, because the platform keeps “which cluster” (one per workspace) apart from “which manifests” (one set per service). An omitted `provisioning` leaves the stored one alone rather than clearing it. Board coordinates are deliberately absent, as they are on service creation.\n\nCalls `PATCH /api/v1/services/{serviceId}` (operation `updatePublicService`).',
201
- inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "provisioning": { "anyOf": [{ "type": "object", "properties": { "manifestSource": { "anyOf": [{ "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "type": { "const": "colocated" } }, "required": ["path", "type"] }, { "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "ref": { "type": "string", "minLength": 1 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "repo": { "type": "string" }, "type": { "const": "separate" } }, "required": ["path", "repo", "type"] }], "description": "Discriminated by `type` (colocated | separate)." }, "type": { "const": "kubernetes" } }, "required": ["manifestSource", "type"] }], "description": "Discriminated by `type` (kubernetes)." }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId"] },
202
- outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes). A newer deployment may report a variant not in this list." }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
205
+ inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "provisioning": { "anyOf": [{ "type": "object", "properties": { "manifestSource": { "anyOf": [{ "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "type": { "const": "colocated" } }, "required": ["path", "type"] }, { "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "ref": { "type": "string", "minLength": 1 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "repo": { "type": "string" }, "type": { "const": "separate" } }, "required": ["path", "repo", "type"] }], "description": "Discriminated by `type` (colocated | separate)." }, "type": { "const": "kubernetes" } }, "required": ["manifestSource", "type"] }, { "type": "object", "properties": { "manifestId": { "type": "string", "minLength": 1, "maxLength": 64 }, "manifestPath": { "type": "string", "maxLength": 500 }, "type": { "const": "custom" } }, "required": ["manifestId", "type"] }], "description": "Discriminated by `type` (kubernetes | custom)." }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId"] },
206
+ outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes | custom). A newer deployment may report a variant not in this list." }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
203
207
  invoke: (client, args) => client.services.update(str(args, 'serviceId'), args.body),
204
208
  },
205
209
  {
@@ -246,6 +250,17 @@ export const CAT_FACTORY_TOOLS = [
246
250
  outputSchema: { "type": "object", "properties": { "createdAt": { "type": "number" }, "error": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "failureDetail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "failureHint": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "failureKind": { "anyOf": [{ "type": "string", "description": "One of: preflight, dispatch, environment, evicted, harness_shutdown, timeout, agent, job_failed, rejected, companion_rejected, stalled, state_unreadable, cancelled, unknown. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "jobId": { "type": "string" }, "progress": { "anyOf": [{ "type": "object", "properties": { "completed": { "type": "number" }, "inProgress": { "type": "number" }, "items": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "status": { "type": "string", "description": "One of: pending, in_progress, completed. A newer deployment may report a member not in this list." } } } }, "total": { "type": "number" } } }, { "type": "null" }] }, "repoName": { "type": "string" }, "repoOwner": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "repoUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: pending, running, succeeded, failed. A newer deployment may report a member not in this list." }, "updatedAt": { "type": "number" } } },
247
251
  invoke: (client, args) => client.repos.getBootstrap(str(args, 'jobId')),
248
252
  },
253
+ {
254
+ name: 'repos_get_file',
255
+ title: 'Read one file out of a linked repository',
256
+ group: 'repos',
257
+ operationId: 'getPublicRepoFile',
258
+ readOnly: true,
259
+ description: 'Read one file out of a linked repository\n\nRead a single file, decoded as UTF-8, from a repository this workspace has LINKED, at a branch, tag or commit sha (omit `ref` for the default branch; the response says which was used). It exists to answer what a run actually COMMITTED, which nothing else on this surface could: the repos reads list rows and reachability, the service-spec read serves only the `spec/` tree, and everything else was the agent’s own prose, so a caller wanting a real answer had to hold a second source-control credential of its own. `path` is a query parameter rather than the rest of the URL because a repo-relative path contains slashes and an OpenAPI path segment cannot. One file only: there is deliberately no directory listing. A repository this workspace has not adopted is a 404 with `details.reason: repo_not_linked`, a path the ref does not hold is a 404 with `file_not_found`, and a file past the size this read serves is a 422 with `file_too_large` plus its `size` and `limit`: refused rather than truncated, because a shortened answer reads exactly like a shorter file.\n\nCalls `GET /api/v1/repos/{owner}/{name}/contents` (operation `getPublicRepoFile`).',
260
+ inputSchema: { "type": "object", "properties": { "owner": { "type": "string", "description": "Path parameter `owner`." }, "name": { "type": "string", "description": "Path parameter `name`." }, "path": { "type": "string" }, "ref": { "type": "string" } }, "additionalProperties": false, "required": ["owner", "name", "path"] },
261
+ outputSchema: { "type": "object", "properties": { "content": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "path": { "type": "string" }, "ref": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "sha": { "type": "string" } } },
262
+ invoke: (client, args) => client.repos.getFile(str(args, 'owner'), str(args, 'name'), pick(args, QUERY_REPOS_GET_FILE)),
263
+ },
249
264
  {
250
265
  name: 'repos_link',
251
266
  title: 'Adopt an existing repository into this workspace',
@@ -287,7 +302,7 @@ export const CAT_FACTORY_TOOLS = [
287
302
  readOnly: false,
288
303
  description: 'Declare that a task waits for another\n\nRecord that this task cannot start until `dependsOnTaskId` is done. Both ends must be tasks in this workspace, and an edge that would close a cycle is refused. Idempotent: an edge that already exists is returned as-is rather than toggled off, so a provisioning integration re-running its own setup converges. Pair it with `autoStartDependents` on the BLOCKER (the task patch) to have the chain run itself.\n\nCalls `POST /api/v1/tasks/{taskId}/dependencies` (operation `addPublicTaskDependency`).',
289
304
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "dependsOnTaskId": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": ["dependsOnTaskId"], "description": "The request body." } }, "additionalProperties": false, "required": ["taskId", "body"] },
290
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
305
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
291
306
  invoke: (client, args) => client.tasks.addDependency(str(args, 'taskId'), args.body),
292
307
  },
293
308
  {
@@ -308,8 +323,8 @@ export const CAT_FACTORY_TOOLS = [
308
323
  operationId: 'createPublicTask',
309
324
  readOnly: false,
310
325
  description: 'Create a task under a service\n\nCreate a task inside a service frame the key’s workspace owns. The task starts in the `planned` state; start it with the start endpoint. Optionally file it FROM a tracker ticket, and/or attach the requirements documents it is to be built against (named in a connected document source, or uploaded inline): the only way to get spec-sized input onto a repository-touching run.\n\nCalls `POST /api/v1/services/{serviceId}/tasks` (operation `createPublicTask`).',
311
- inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "documents": { "type": "array", "items": { "anyOf": [{ "type": "object", "properties": { "kind": { "const": "source" }, "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "enum": ["confluence", "notion", "github", "figma", "zeplin", "linear"] } }, "required": ["kind", "ref", "source"] }, { "type": "object", "properties": { "content": { "type": "string", "minLength": 1, "maxLength": 100000 }, "kind": { "const": "upload" }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["content", "kind", "title"] }], "description": "Discriminated by `kind` (source | upload)." } }, "fields": { "type": "object", "additionalProperties": { "anyOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "boolean" }, { "type": "number" }] } }, "modelPresetId": { "type": "string", "minLength": 1, "maxLength": 120 }, "pipelineId": { "type": "string", "minLength": 1, "maxLength": 120 }, "riskPolicyId": { "type": "string", "minLength": 1, "maxLength": 120 }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph. Other values are accepted where the deployment defines them." }, "ticket": { "type": "object", "properties": { "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "description": "Usually one of: jira, github, linear, gitlab. Other values are accepted where the deployment defines them." } }, "required": ["ref", "source"] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["title"], "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId", "body"] },
312
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
326
+ inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "documents": { "type": "array", "items": { "anyOf": [{ "type": "object", "properties": { "kind": { "const": "source" }, "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "enum": ["confluence", "notion", "github", "figma", "zeplin", "linear"] } }, "required": ["kind", "ref", "source"] }, { "type": "object", "properties": { "content": { "type": "string", "minLength": 1, "maxLength": 100000 }, "kind": { "const": "upload" }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["content", "kind", "title"] }], "description": "Discriminated by `kind` (source | upload)." } }, "fields": { "type": "object", "additionalProperties": { "anyOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "boolean" }, { "type": "number" }] } }, "modelPresetId": { "type": "string", "minLength": 1, "maxLength": 120 }, "pipelineId": { "type": "string", "minLength": 1, "maxLength": 120 }, "riskPolicyId": { "type": "string", "minLength": 1, "maxLength": 120 }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media. Other values are accepted where the deployment defines them." }, "ticket": { "type": "object", "properties": { "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "description": "Usually one of: jira, github, linear, gitlab. Other values are accepted where the deployment defines them." } }, "required": ["ref", "source"] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["title"], "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId", "body"] },
327
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
313
328
  invoke: (client, args) => client.tasks.create(str(args, 'serviceId'), args.body),
314
329
  },
315
330
  {
@@ -341,7 +356,7 @@ export const CAT_FACTORY_TOOLS = [
341
356
  readOnly: true,
342
357
  description: 'Get a task\'s status\n\nRead a task’s current lifecycle status, run progress, run id, and PR URL (once one exists).\n\nCalls `GET /api/v1/tasks/{taskId}` (operation `getPublicTask`).',
343
358
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
344
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
359
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
345
360
  invoke: (client, args) => client.tasks.get(str(args, 'taskId')),
346
361
  },
347
362
  {
@@ -363,7 +378,7 @@ export const CAT_FACTORY_TOOLS = [
363
378
  readOnly: true,
364
379
  description: 'List a service\'s tasks\n\nList every task under a service (the whole subtree — tasks directly under the frame and under its modules).\n\nCalls `GET /api/v1/services/{serviceId}/tasks` (operation `listPublicServiceTasks`).',
365
380
  inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "limit": { "type": "integer" }, "cursor": { "type": "string" }, "status": { "type": "string", "enum": ["planned", "ready", "in_progress", "blocked", "pr_ready", "done"] } }, "additionalProperties": false, "required": ["serviceId"] },
366
- outputSchema: { "type": "object", "properties": { "nextCursor": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "tasks": { "type": "array", "items": { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } } } } },
381
+ outputSchema: { "type": "object", "properties": { "nextCursor": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "tasks": { "type": "array", "items": { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } } } } },
367
382
  invoke: (client, args) => client.tasks.listByService(str(args, 'serviceId'), pick(args, QUERY_TASKS_LIST_BY_SERVICE)),
368
383
  },
369
384
  {
@@ -385,7 +400,7 @@ export const CAT_FACTORY_TOOLS = [
385
400
  readOnly: false,
386
401
  description: 'Drop a dependency edge\n\nRemove the ordering between this task and `dependsOnTaskId`. Idempotent: an edge that is not there is a no-op.\n\nCalls `POST /api/v1/tasks/{taskId}/dependencies/remove` (operation `removePublicTaskDependency`).',
387
402
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "dependsOnTaskId": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": ["dependsOnTaskId"], "description": "The request body." } }, "additionalProperties": false, "required": ["taskId", "body"] },
388
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
403
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
389
404
  invoke: (client, args) => client.tasks.removeDependency(str(args, 'taskId'), args.body),
390
405
  },
391
406
  {
@@ -397,7 +412,7 @@ export const CAT_FACTORY_TOOLS = [
397
412
  hints: { "destructive": true, "idempotent": false },
398
413
  description: 'Retry a task\'s failed run\n\nRetry a task’s failed run. A task on an individual-usage model cannot be retried through the API (no headless personal-credential unlock).\n\nCalls `POST /api/v1/tasks/{taskId}/retry` (operation `retryPublicTask`).',
399
414
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
400
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
415
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
401
416
  invoke: (client, args) => client.tasks.retry(str(args, 'taskId')),
402
417
  },
403
418
  {
@@ -409,7 +424,7 @@ export const CAT_FACTORY_TOOLS = [
409
424
  hints: { "destructive": true, "idempotent": false },
410
425
  description: 'Start (run) a task\n\nStart a task’s pipeline. Uses the request’s pipelineId, else the task’s pinned pipeline. A pipeline that can park on a human decision requires a `decide`-scope key. A task on an individual-usage model cannot be started through the API (no headless personal-credential unlock).\n\nCalls `POST /api/v1/tasks/{taskId}/start` (operation `startPublicTask`).',
411
426
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "pipelineId": { "type": "string", "minLength": 1, "maxLength": 120 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["taskId"] },
412
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
427
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
413
428
  invoke: (client, args) => client.tasks.start(str(args, 'taskId'), args.body),
414
429
  },
415
430
  {
@@ -420,7 +435,7 @@ export const CAT_FACTORY_TOOLS = [
420
435
  readOnly: false,
421
436
  description: 'Stop a task\'s run\n\nStop a task’s in-flight run. Records a `cancelled` terminal state, leaving the run retryable.\n\nCalls `POST /api/v1/tasks/{taskId}/stop` (operation `stopPublicTask`).',
422
437
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
423
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
438
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
424
439
  invoke: (client, args) => client.tasks.stop(str(args, 'taskId')),
425
440
  },
426
441
  {
@@ -431,7 +446,7 @@ export const CAT_FACTORY_TOOLS = [
431
446
  readOnly: false,
432
447
  description: 'Edit a task\'s inputs\n\nEdit a task’s human-authored inputs before it runs: its title, its description, and `fields`, the per-case values for its own task type (checked against the descriptors `GET /api/v1/task-types` serves). All are optional. `fields` is MERGED over what the task already carries — a key you send is written, a key you omit keeps its stored value — because this API does not serve the bag back. This is what makes an input the pre-dispatch gate refused repairable: supply the value it named, then recheck the parked run.\n\nCalls `PATCH /api/v1/tasks/{taskId}` (operation `updatePublicTask`).',
433
448
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "description": { "type": "string", "maxLength": 2000 }, "fields": { "type": "object", "additionalProperties": { "anyOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "boolean" }, { "type": "number" }] } }, "modelPresetId": { "type": "string", "minLength": 1, "maxLength": 120 }, "riskPolicyId": { "type": "string", "minLength": 1, "maxLength": 120 }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["taskId"] },
434
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
449
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
435
450
  invoke: (client, args) => client.tasks.update(str(args, 'taskId'), args.body),
436
451
  },
437
452
  {
@@ -465,7 +480,7 @@ export const CAT_FACTORY_TOOLS = [
465
480
  hints: { "destructive": true, "idempotent": false },
466
481
  description: 'Act on a notification\n\nRun a notification’s typed side-effect and resolve it: merge the PR (merge_review / pipeline_complete) or retry the run (ci_failed / test_failed). Performs a real GitHub merge, so it requires an admin-scoped key. Only these automated-action types are actionable through the API — a notification that parks a run on an interactive human decision cannot be acted on headlessly (dismiss it instead). A card that would retry a run on an individual-usage model likewise cannot be acted on through the API. To record how much review a merged pull request needed, call `POST /api/v1/merge-records/{recordId}/effort` (a `write` key) before or after this; a `merge_tag_request` card carries its record id on the payload and is resolved by tagging that record and dismissing the card.\n\nCalls `POST /api/v1/notifications/{id}/act` (operation `actPublicNotification`).',
467
482
  inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Path parameter `id`." }, "body": { "type": "object", "properties": { "reviewEffort": { "anyOf": [{ "type": "string", "enum": ["none", "minor", "major"] }, { "type": "null" }] } }, "description": "The request body." } }, "additionalProperties": false, "required": ["id"] },
468
- outputSchema: { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "body": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "id": { "type": "string" }, "payload": { "anyOf": [{ "type": "object", "properties": { "assessment": { "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, "budgetAlerts": { "type": "array", "items": { "type": "object", "properties": { "projectedOverrun": { "type": "boolean" }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "tier": { "type": "string", "description": "One of: workspace, account. A newer deployment may report a member not in this list." } } } }, "budgetPeriodStart": { "type": "number" }, "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "driftAffected": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string", "description": "One of: key-mismatch, corrupt. A newer deployment may report a member not in this list." }, "sealedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "source": { "type": "string" } } } }, "findingCount": { "type": "number" }, "forkCount": { "type": "number" }, "initiativeReason": { "type": "string", "description": "One of: item_blocked, complete, checkpoint. A newer deployment may report a member not in this list." }, "mergeTrackRecordId": { "type": "string" }, "mergedRepos": { "type": "array", "items": { "type": "string" } }, "onCallAssessment": { "type": "object", "properties": { "culpritConfidence": { "type": "number" }, "evidence": { "type": "array", "items": { "type": "string" } }, "rationale": { "type": "string" }, "recommendation": { "type": "string", "description": "One of: revert, hold, monitor. A newer deployment may report a member not in this list." } } }, "pipelineName": { "type": "string" }, "platformAlertFailureKinds": { "type": "array", "items": { "type": "string" } }, "platformAlertTransition": { "type": "number" }, "platformAlerts": { "type": "array", "items": { "type": "string", "description": "One of: failure_rate_high, duration_p99_high, backlog_high, throughput_stalled, failure_kind_dominant, failure_kind_rate_high, sweep_degraded. A newer deployment may report a member not in this list." } }, "platformFailedTotal": { "type": "number" }, "platformFailingRuns": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "failureKind": { "type": "string" } } } }, "platformWindow": { "type": "string", "description": "One of: 1h, 24h, 7d. A newer deployment may report a member not in this list." }, "prUrl": { "type": "string" }, "releaseSignals": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: monitor, slo. A newer deployment may report a member not in this list." }, "name": { "type": "string" }, "state": { "type": "string", "description": "One of: ok, warn, alert, no_data. A newer deployment may report a member not in this list." } } } }, "revertUrl": { "type": "string" }, "sliceCount": { "type": "number" }, "targetUserId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "unmergedRepos": { "type": "array", "items": { "type": "string" } }, "unreachableAreas": { "type": "array", "items": { "type": "string", "description": "One of: ephemeralEnvironments, agentExecutor, binaryStorage. A newer deployment may report a member not in this list." } } } }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "severity": { "type": "string", "description": "One of: normal, urgent. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: open, acted, dismissed. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } } },
483
+ outputSchema: { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "body": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "id": { "type": "string" }, "payload": { "anyOf": [{ "type": "object", "properties": { "assessment": { "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, "budgetAlerts": { "type": "array", "items": { "type": "object", "properties": { "projectedOverrun": { "type": "boolean" }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "tier": { "type": "string", "description": "One of: workspace, account. A newer deployment may report a member not in this list." } } } }, "budgetPeriodStart": { "type": "number" }, "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "driftAffected": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string", "description": "One of: key-mismatch, corrupt. A newer deployment may report a member not in this list." }, "sealedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "source": { "type": "string" } } } }, "findingCount": { "type": "number" }, "forkCount": { "type": "number" }, "initiativeReason": { "type": "string", "description": "One of: item_blocked, complete, checkpoint. A newer deployment may report a member not in this list." }, "mergeTrackRecordId": { "type": "string" }, "mergedRepos": { "type": "array", "items": { "type": "string" } }, "onCallAssessment": { "type": "object", "properties": { "culpritConfidence": { "type": "number" }, "evidence": { "type": "array", "items": { "type": "string" } }, "rationale": { "type": "string" }, "recommendation": { "type": "string", "description": "One of: revert, hold, monitor. A newer deployment may report a member not in this list." } } }, "pipelineName": { "type": "string" }, "platformAlertFailureKinds": { "type": "array", "items": { "type": "string" } }, "platformAlertTransition": { "type": "number" }, "platformAlerts": { "type": "array", "items": { "type": "string", "description": "One of: failure_rate_high, duration_p99_high, backlog_high, throughput_stalled, failure_kind_dominant, failure_kind_rate_high, sweep_degraded. A newer deployment may report a member not in this list." } }, "platformFailedTotal": { "type": "number" }, "platformFailingRuns": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "failureKind": { "type": "string" } } } }, "platformWindow": { "type": "string", "description": "One of: 1h, 24h, 7d. A newer deployment may report a member not in this list." }, "prUrl": { "type": "string" }, "releaseSignals": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: monitor, slo. A newer deployment may report a member not in this list." }, "name": { "type": "string" }, "state": { "type": "string", "description": "One of: ok, warn, alert, no_data. A newer deployment may report a member not in this list." } } } }, "revertUrl": { "type": "string" }, "sliceCount": { "type": "number" }, "targetUserId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "unmergedRepos": { "type": "array", "items": { "type": "string" } }, "unreachableAreas": { "type": "array", "items": { "type": "string", "description": "One of: ephemeralEnvironments, agentExecutor, binaryStorage. A newer deployment may report a member not in this list." } } } }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "severity": { "type": "string", "description": "One of: normal, urgent. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: open, acted, dismissed. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } } },
469
484
  invoke: (client, args) => client.notifications.act(str(args, 'id'), args.body),
470
485
  },
471
486
  {
@@ -476,7 +491,7 @@ export const CAT_FACTORY_TOOLS = [
476
491
  readOnly: false,
477
492
  description: 'Dismiss a notification\n\nDismiss a notification without acting on it.\n\nCalls `POST /api/v1/notifications/{id}/dismiss` (operation `dismissPublicNotification`).',
478
493
  inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Path parameter `id`." } }, "additionalProperties": false, "required": ["id"] },
479
- outputSchema: { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "body": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "id": { "type": "string" }, "payload": { "anyOf": [{ "type": "object", "properties": { "assessment": { "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, "budgetAlerts": { "type": "array", "items": { "type": "object", "properties": { "projectedOverrun": { "type": "boolean" }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "tier": { "type": "string", "description": "One of: workspace, account. A newer deployment may report a member not in this list." } } } }, "budgetPeriodStart": { "type": "number" }, "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "driftAffected": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string", "description": "One of: key-mismatch, corrupt. A newer deployment may report a member not in this list." }, "sealedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "source": { "type": "string" } } } }, "findingCount": { "type": "number" }, "forkCount": { "type": "number" }, "initiativeReason": { "type": "string", "description": "One of: item_blocked, complete, checkpoint. A newer deployment may report a member not in this list." }, "mergeTrackRecordId": { "type": "string" }, "mergedRepos": { "type": "array", "items": { "type": "string" } }, "onCallAssessment": { "type": "object", "properties": { "culpritConfidence": { "type": "number" }, "evidence": { "type": "array", "items": { "type": "string" } }, "rationale": { "type": "string" }, "recommendation": { "type": "string", "description": "One of: revert, hold, monitor. A newer deployment may report a member not in this list." } } }, "pipelineName": { "type": "string" }, "platformAlertFailureKinds": { "type": "array", "items": { "type": "string" } }, "platformAlertTransition": { "type": "number" }, "platformAlerts": { "type": "array", "items": { "type": "string", "description": "One of: failure_rate_high, duration_p99_high, backlog_high, throughput_stalled, failure_kind_dominant, failure_kind_rate_high, sweep_degraded. A newer deployment may report a member not in this list." } }, "platformFailedTotal": { "type": "number" }, "platformFailingRuns": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "failureKind": { "type": "string" } } } }, "platformWindow": { "type": "string", "description": "One of: 1h, 24h, 7d. A newer deployment may report a member not in this list." }, "prUrl": { "type": "string" }, "releaseSignals": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: monitor, slo. A newer deployment may report a member not in this list." }, "name": { "type": "string" }, "state": { "type": "string", "description": "One of: ok, warn, alert, no_data. A newer deployment may report a member not in this list." } } } }, "revertUrl": { "type": "string" }, "sliceCount": { "type": "number" }, "targetUserId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "unmergedRepos": { "type": "array", "items": { "type": "string" } }, "unreachableAreas": { "type": "array", "items": { "type": "string", "description": "One of: ephemeralEnvironments, agentExecutor, binaryStorage. A newer deployment may report a member not in this list." } } } }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "severity": { "type": "string", "description": "One of: normal, urgent. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: open, acted, dismissed. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } } },
494
+ outputSchema: { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "body": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "id": { "type": "string" }, "payload": { "anyOf": [{ "type": "object", "properties": { "assessment": { "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, "budgetAlerts": { "type": "array", "items": { "type": "object", "properties": { "projectedOverrun": { "type": "boolean" }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "tier": { "type": "string", "description": "One of: workspace, account. A newer deployment may report a member not in this list." } } } }, "budgetPeriodStart": { "type": "number" }, "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "driftAffected": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string", "description": "One of: key-mismatch, corrupt. A newer deployment may report a member not in this list." }, "sealedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "source": { "type": "string" } } } }, "findingCount": { "type": "number" }, "forkCount": { "type": "number" }, "initiativeReason": { "type": "string", "description": "One of: item_blocked, complete, checkpoint. A newer deployment may report a member not in this list." }, "mergeTrackRecordId": { "type": "string" }, "mergedRepos": { "type": "array", "items": { "type": "string" } }, "onCallAssessment": { "type": "object", "properties": { "culpritConfidence": { "type": "number" }, "evidence": { "type": "array", "items": { "type": "string" } }, "rationale": { "type": "string" }, "recommendation": { "type": "string", "description": "One of: revert, hold, monitor. A newer deployment may report a member not in this list." } } }, "pipelineName": { "type": "string" }, "platformAlertFailureKinds": { "type": "array", "items": { "type": "string" } }, "platformAlertTransition": { "type": "number" }, "platformAlerts": { "type": "array", "items": { "type": "string", "description": "One of: failure_rate_high, duration_p99_high, backlog_high, throughput_stalled, failure_kind_dominant, failure_kind_rate_high, sweep_degraded. A newer deployment may report a member not in this list." } }, "platformFailedTotal": { "type": "number" }, "platformFailingRuns": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "failureKind": { "type": "string" } } } }, "platformWindow": { "type": "string", "description": "One of: 1h, 24h, 7d. A newer deployment may report a member not in this list." }, "prUrl": { "type": "string" }, "releaseSignals": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: monitor, slo. A newer deployment may report a member not in this list." }, "name": { "type": "string" }, "state": { "type": "string", "description": "One of: ok, warn, alert, no_data. A newer deployment may report a member not in this list." } } } }, "revertUrl": { "type": "string" }, "sliceCount": { "type": "number" }, "targetUserId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "unmergedRepos": { "type": "array", "items": { "type": "string" } }, "unreachableAreas": { "type": "array", "items": { "type": "string", "description": "One of: ephemeralEnvironments, agentExecutor, binaryStorage. A newer deployment may report a member not in this list." } } } }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "severity": { "type": "string", "description": "One of: normal, urgent. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: open, acted, dismissed. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } } },
480
495
  invoke: (client, args) => client.notifications.dismiss(str(args, 'id')),
481
496
  },
482
497
  {
@@ -487,7 +502,7 @@ export const CAT_FACTORY_TOOLS = [
487
502
  readOnly: true,
488
503
  description: 'List the workspace\'s open notifications\n\nList the open, human-actionable notifications in the key’s workspace (merge reviews, pipeline-complete confirmations, CI/test failures, and informational cards).\n\nCalls `GET /api/v1/notifications` (operation `listPublicNotifications`).',
489
504
  inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
490
- outputSchema: { "type": "object", "properties": { "notifications": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "body": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "id": { "type": "string" }, "payload": { "anyOf": [{ "type": "object", "properties": { "assessment": { "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, "budgetAlerts": { "type": "array", "items": { "type": "object", "properties": { "projectedOverrun": { "type": "boolean" }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "tier": { "type": "string", "description": "One of: workspace, account. A newer deployment may report a member not in this list." } } } }, "budgetPeriodStart": { "type": "number" }, "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "driftAffected": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string", "description": "One of: key-mismatch, corrupt. A newer deployment may report a member not in this list." }, "sealedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "source": { "type": "string" } } } }, "findingCount": { "type": "number" }, "forkCount": { "type": "number" }, "initiativeReason": { "type": "string", "description": "One of: item_blocked, complete, checkpoint. A newer deployment may report a member not in this list." }, "mergeTrackRecordId": { "type": "string" }, "mergedRepos": { "type": "array", "items": { "type": "string" } }, "onCallAssessment": { "type": "object", "properties": { "culpritConfidence": { "type": "number" }, "evidence": { "type": "array", "items": { "type": "string" } }, "rationale": { "type": "string" }, "recommendation": { "type": "string", "description": "One of: revert, hold, monitor. A newer deployment may report a member not in this list." } } }, "pipelineName": { "type": "string" }, "platformAlertFailureKinds": { "type": "array", "items": { "type": "string" } }, "platformAlertTransition": { "type": "number" }, "platformAlerts": { "type": "array", "items": { "type": "string", "description": "One of: failure_rate_high, duration_p99_high, backlog_high, throughput_stalled, failure_kind_dominant, failure_kind_rate_high, sweep_degraded. A newer deployment may report a member not in this list." } }, "platformFailedTotal": { "type": "number" }, "platformFailingRuns": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "failureKind": { "type": "string" } } } }, "platformWindow": { "type": "string", "description": "One of: 1h, 24h, 7d. A newer deployment may report a member not in this list." }, "prUrl": { "type": "string" }, "releaseSignals": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: monitor, slo. A newer deployment may report a member not in this list." }, "name": { "type": "string" }, "state": { "type": "string", "description": "One of: ok, warn, alert, no_data. A newer deployment may report a member not in this list." } } } }, "revertUrl": { "type": "string" }, "sliceCount": { "type": "number" }, "targetUserId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "unmergedRepos": { "type": "array", "items": { "type": "string" } }, "unreachableAreas": { "type": "array", "items": { "type": "string", "description": "One of: ephemeralEnvironments, agentExecutor, binaryStorage. A newer deployment may report a member not in this list." } } } }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "severity": { "type": "string", "description": "One of: normal, urgent. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: open, acted, dismissed. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } } } } } },
505
+ outputSchema: { "type": "object", "properties": { "notifications": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "body": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "id": { "type": "string" }, "payload": { "anyOf": [{ "type": "object", "properties": { "assessment": { "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, "budgetAlerts": { "type": "array", "items": { "type": "object", "properties": { "projectedOverrun": { "type": "boolean" }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "tier": { "type": "string", "description": "One of: workspace, account. A newer deployment may report a member not in this list." } } } }, "budgetPeriodStart": { "type": "number" }, "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "driftAffected": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string", "description": "One of: key-mismatch, corrupt. A newer deployment may report a member not in this list." }, "sealedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "source": { "type": "string" } } } }, "findingCount": { "type": "number" }, "forkCount": { "type": "number" }, "initiativeReason": { "type": "string", "description": "One of: item_blocked, complete, checkpoint. A newer deployment may report a member not in this list." }, "mergeTrackRecordId": { "type": "string" }, "mergedRepos": { "type": "array", "items": { "type": "string" } }, "onCallAssessment": { "type": "object", "properties": { "culpritConfidence": { "type": "number" }, "evidence": { "type": "array", "items": { "type": "string" } }, "rationale": { "type": "string" }, "recommendation": { "type": "string", "description": "One of: revert, hold, monitor. A newer deployment may report a member not in this list." } } }, "pipelineName": { "type": "string" }, "platformAlertFailureKinds": { "type": "array", "items": { "type": "string" } }, "platformAlertTransition": { "type": "number" }, "platformAlerts": { "type": "array", "items": { "type": "string", "description": "One of: failure_rate_high, duration_p99_high, backlog_high, throughput_stalled, failure_kind_dominant, failure_kind_rate_high, sweep_degraded. A newer deployment may report a member not in this list." } }, "platformFailedTotal": { "type": "number" }, "platformFailingRuns": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "failureKind": { "type": "string" } } } }, "platformWindow": { "type": "string", "description": "One of: 1h, 24h, 7d. A newer deployment may report a member not in this list." }, "prUrl": { "type": "string" }, "releaseSignals": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: monitor, slo. A newer deployment may report a member not in this list." }, "name": { "type": "string" }, "state": { "type": "string", "description": "One of: ok, warn, alert, no_data. A newer deployment may report a member not in this list." } } } }, "revertUrl": { "type": "string" }, "sliceCount": { "type": "number" }, "targetUserId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "unmergedRepos": { "type": "array", "items": { "type": "string" } }, "unreachableAreas": { "type": "array", "items": { "type": "string", "description": "One of: ephemeralEnvironments, agentExecutor, binaryStorage. A newer deployment may report a member not in this list." } } } }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "severity": { "type": "string", "description": "One of: normal, urgent. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: open, acted, dismissed. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } } } } } },
491
506
  invoke: (client, args) => client.notifications.list(),
492
507
  },
493
508
  {
@@ -501,6 +516,17 @@ export const CAT_FACTORY_TOOLS = [
501
516
  outputSchema: { "type": "object", "properties": { "apiServerUrl": { "type": "string" }, "engine": { "type": "string" }, "label": { "type": "string" }, "provisionType": { "type": "string" }, "secretKeys": { "type": "array", "items": { "type": "string" } } } },
502
517
  invoke: (client, args) => client.environments.connect(args.body),
503
518
  },
519
+ {
520
+ name: 'environments_list_connections',
521
+ title: 'List the environment connections this workspace holds',
522
+ group: 'environments',
523
+ operationId: 'listPublicEnvironmentConnections',
524
+ readOnly: true,
525
+ description: 'List the environment connections this workspace holds\n\nEvery registered environment handler, with the provision type it serves, the engine and backend kind behind it, its endpoint and the secret KEYS it holds, never their values. The read half of the connect call, and the half that was missing: a deployment that registers its handlers programmatically (the documented path for a multi-tenant deployment) had no way for a headless caller to confirm the registration landed, so “the backend accepts our credential” and “this workspace has a handler for that backend” collapsed into one unanswerable question. It reports every engine, including a handler for an environment backend the deployment registered in code, so `engine` and `backendKind` are open strings rather than a fixed set.\n\nCalls `GET /api/v1/environments/connections` (operation `listPublicEnvironmentConnections`).',
526
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
527
+ outputSchema: { "type": "object", "properties": { "connections": { "type": "array", "items": { "type": "object", "properties": { "acceptsManifestId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "backendKind": { "type": "string" }, "connectedAt": { "type": "number" }, "endpoint": { "type": "string" }, "engine": { "type": "string" }, "label": { "type": "string" }, "manifestId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provisionType": { "type": "string" }, "secretKeys": { "type": "array", "items": { "type": "string" } } } } } } },
528
+ invoke: (client, args) => client.environments.listConnections(),
529
+ },
504
530
  {
505
531
  name: 'environments_test_connection',
506
532
  title: 'Probe a candidate cluster connection without saving it',
@@ -608,7 +634,7 @@ export const CAT_FACTORY_TOOLS = [
608
634
  readOnly: true,
609
635
  description: 'Read the workspace\'s outbound webhook\n\nThe endpoint this workspace delivers notifications, run-lifecycle events and platform-health alerts to, or `{ "webhook": null }` when none is registered. The signing secret is never returned; `hasSecret` reports only whether one is set.\n\nCalls `GET /api/v1/notification-webhook` (operation `getPublicNotificationWebhook`).',
610
636
  inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
611
- outputSchema: { "type": "object", "properties": { "webhook": { "anyOf": [{ "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } }, { "type": "null" }] } } },
637
+ outputSchema: { "type": "object", "properties": { "webhook": { "anyOf": [{ "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } }, { "type": "null" }] } } },
612
638
  invoke: (client, args) => client.webhook.get(),
613
639
  },
614
640
  {
@@ -619,7 +645,7 @@ export const CAT_FACTORY_TOOLS = [
619
645
  readOnly: true,
620
646
  description: 'Read one named outbound webhook\n\nThe endpoint registered under this id, or `{ "webhook": null }` when there is none — the same shape the unnamed read answers, so an integration\'s startup self-check does not branch on a status code. The signing secret is never returned.\n\nCalls `GET /api/v1/notification-webhooks/{webhookId}` (operation `getPublicNamedNotificationWebhook`).',
621
647
  inputSchema: { "type": "object", "properties": { "webhookId": { "type": "string", "description": "Path parameter `webhookId`." } }, "additionalProperties": false, "required": ["webhookId"] },
622
- outputSchema: { "type": "object", "properties": { "webhook": { "anyOf": [{ "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } }, { "type": "null" }] } } },
648
+ outputSchema: { "type": "object", "properties": { "webhook": { "anyOf": [{ "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } }, { "type": "null" }] } } },
623
649
  invoke: (client, args) => client.webhook.getNamed(str(args, 'webhookId')),
624
650
  },
625
651
  {
@@ -630,7 +656,7 @@ export const CAT_FACTORY_TOOLS = [
630
656
  readOnly: true,
631
657
  description: 'List the workspace\'s outbound webhooks\n\nEvery endpoint this workspace delivers to, ordered by id. The endpoint the unnamed routes address appears here under the id `default`. Not paginated: the number of endpoints a workspace may register is capped, so the whole set fits in one response. No signing secret is returned for any of them.\n\nCalls `GET /api/v1/notification-webhooks` (operation `listPublicNotificationWebhooks`).',
632
658
  inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
633
- outputSchema: { "type": "object", "properties": { "webhooks": { "type": "array", "items": { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } } } } },
659
+ outputSchema: { "type": "object", "properties": { "webhooks": { "type": "array", "items": { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } } } } },
634
660
  invoke: (client, args) => client.webhook.list(),
635
661
  },
636
662
  {
@@ -641,8 +667,8 @@ export const CAT_FACTORY_TOOLS = [
641
667
  readOnly: false,
642
668
  hints: { "destructive": true, "idempotent": true },
643
669
  description: 'Register or update the outbound webhook\n\nRegister the HTTPS endpoint deliveries are POSTed to, or update the one already registered. Every omitted field keeps its stored value, so subscribing to run events is a one-field call that re-sends neither the URL nor the secret. `url` is required only on the first call, when there is nothing registered to keep; omitting it otherwise leaves the endpoint alone. Supplying `secret` rotates the signing secret; omitting it keeps the current one. The endpoint must be `https:` and publicly routable unless the deployment widened its allow-list.\n\nCalls `PUT /api/v1/notification-webhook` (operation `putPublicNotificationWebhook`).',
644
- inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "enum": ["platform_health.firing", "platform_health.resolved"] } }, "enabled": { "type": "boolean" }, "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "runEvents": { "type": "array", "items": { "type": "string", "enum": ["run.started", "run.completed", "run.failed"] } }, "secret": { "type": "string", "minLength": 16, "maxLength": 200 }, "types": { "type": "array", "items": { "type": "string", "enum": ["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"] } }, "url": { "type": "string", "maxLength": 2000 } }, "description": "The request body." } }, "additionalProperties": false },
645
- outputSchema: { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } },
670
+ inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "enum": ["platform_health.firing", "platform_health.resolved"] } }, "enabled": { "type": "boolean" }, "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "runEvents": { "type": "array", "items": { "type": "string", "enum": ["run.started", "run.completed", "run.failed"] } }, "secret": { "type": "string", "minLength": 16, "maxLength": 200 }, "types": { "type": "array", "items": { "type": "string", "enum": ["merge_review", "pipeline_complete", "ci_failed", "deploy_blocked", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"] } }, "url": { "type": "string", "maxLength": 2000 } }, "description": "The request body." } }, "additionalProperties": false },
671
+ outputSchema: { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } },
646
672
  invoke: (client, args) => client.webhook.set(args.body),
647
673
  },
648
674
  {
@@ -653,8 +679,8 @@ export const CAT_FACTORY_TOOLS = [
653
679
  readOnly: false,
654
680
  hints: { "destructive": true, "idempotent": true },
655
681
  description: 'Register or update one named outbound webhook\n\nRegister an endpoint under an id YOU choose (1-63 characters of lowercase letters, digits, `-` or `_`), or update the one already there. Idempotent by id, so an integration can enroll its own receiver on every cold start without tracking whether it has enrolled before, and without displacing anything else the workspace registered. Every field follows the same keep-on-omit rule as the unnamed route, `url` being required only when there is nothing under this id to keep, and a supplied `secret` rotating this endpoint\'s own signing secret. Refused with `reason: "invalid_webhook_id"` for an id that is not a slug, and `reason: "webhook_limit_reached"` (409) when registering a NEW id would exceed the per-workspace cap; editing an existing one is admitted either way.\n\nCalls `PUT /api/v1/notification-webhooks/{webhookId}` (operation `putPublicNamedNotificationWebhook`).',
656
- inputSchema: { "type": "object", "properties": { "webhookId": { "type": "string", "description": "Path parameter `webhookId`." }, "body": { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "enum": ["platform_health.firing", "platform_health.resolved"] } }, "enabled": { "type": "boolean" }, "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "runEvents": { "type": "array", "items": { "type": "string", "enum": ["run.started", "run.completed", "run.failed"] } }, "secret": { "type": "string", "minLength": 16, "maxLength": 200 }, "types": { "type": "array", "items": { "type": "string", "enum": ["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"] } }, "url": { "type": "string", "maxLength": 2000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["webhookId"] },
657
- outputSchema: { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } },
682
+ inputSchema: { "type": "object", "properties": { "webhookId": { "type": "string", "description": "Path parameter `webhookId`." }, "body": { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "enum": ["platform_health.firing", "platform_health.resolved"] } }, "enabled": { "type": "boolean" }, "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "runEvents": { "type": "array", "items": { "type": "string", "enum": ["run.started", "run.completed", "run.failed"] } }, "secret": { "type": "string", "minLength": 16, "maxLength": 200 }, "types": { "type": "array", "items": { "type": "string", "enum": ["merge_review", "pipeline_complete", "ci_failed", "deploy_blocked", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "budget_threshold", "key_drift", "merge_tag_request"] } }, "url": { "type": "string", "maxLength": 2000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["webhookId"] },
683
+ outputSchema: { "type": "object", "properties": { "alertEvents": { "type": "array", "items": { "type": "string", "description": "One of: platform_health.firing, platform_health.resolved. A newer deployment may report a member not in this list." } }, "enabled": { "type": "boolean" }, "hasSecret": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "runEvents": { "type": "array", "items": { "type": "string", "description": "One of: run.started, run.completed, run.failed. A newer deployment may report a member not in this list." } }, "types": { "type": "array", "items": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, deploy_blocked, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } }, "updatedAt": { "type": "number" }, "url": { "type": "string" } } },
658
684
  invoke: (client, args) => client.webhook.setNamed(str(args, 'webhookId'), args.body),
659
685
  },
660
686
  {
@@ -1281,7 +1307,7 @@ export const CAT_FACTORY_TOOLS = [
1281
1307
  readOnly: true,
1282
1308
  description: 'List a run\'s captured artifacts\n\nThe binary artifacts the run captured (UI screenshots) plus the reference images they were reviewed against: id, kind, view, content type, exact byte size and content hash. Unpaged: the capture path caps how many one run may store, so the response size is bounded before the request. Fetch the bytes with the blob endpoint.\n\nCalls `GET /api/v1/runs/{runId}/artifacts` (operation `listPublicRunArtifacts`).',
1283
1309
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
1284
- outputSchema: { "type": "object", "properties": { "artifacts": { "type": "array", "items": { "type": "object", "properties": { "artifactId": { "type": "string" }, "byteSize": { "type": "number" }, "contentType": { "type": "string" }, "createdAt": { "type": "number" }, "hash": { "type": "string" }, "kind": { "type": "string", "description": "One of: screenshot, reference. A newer deployment may report a member not in this list." }, "scope": { "type": "string", "description": "One of: run, task. A newer deployment may report a member not in this list." }, "view": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } } } },
1310
+ outputSchema: { "type": "object", "properties": { "artifacts": { "type": "array", "items": { "type": "object", "properties": { "artifactId": { "type": "string" }, "byteSize": { "type": "number" }, "contentType": { "type": "string" }, "createdAt": { "type": "number" }, "hash": { "type": "string" }, "kind": { "type": "string", "description": "One of: screenshot, reference, asset. A newer deployment may report a member not in this list." }, "scope": { "type": "string", "description": "One of: run, task. A newer deployment may report a member not in this list." }, "view": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } } } },
1285
1311
  invoke: (client, args) => client.evidence.listArtifacts(str(args, 'runId')),
1286
1312
  },
1287
1313
  {