@cat-factory/mcp-server 0.1.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.
@@ -0,0 +1,425 @@
1
+ // GENERATED by `pnpm gen:sdk` from docs/openapi.json — DO NOT EDIT BY HAND.
2
+ // Regenerate after any change to the `/api/v1` contracts; `pnpm check:sdk` fails CI on drift.
3
+ /** Read a required string argument, failing with the parameter's own name. */
4
+ function str(args, name) {
5
+ const value = args[name];
6
+ if (typeof value !== 'string' || value.length === 0) {
7
+ throw new TypeError(`${name} is required and must be a non-empty string`);
8
+ }
9
+ return value;
10
+ }
11
+ /**
12
+ * The subset of `args` that belongs in the query string.
13
+ *
14
+ * Picked by NAME rather than by taking everything left over: the input schema lifts path and query
15
+ * parameters to the same level, so "whatever is not a path parameter" would forward a model's
16
+ * typo as a query parameter the deployment then ignores, and the caller would see a filter that
17
+ * silently did nothing.
18
+ */
19
+ function pick(args, names) {
20
+ const out = {};
21
+ for (const name of names) {
22
+ if (args[name] !== undefined)
23
+ out[name] = args[name];
24
+ }
25
+ return out;
26
+ }
27
+ const QUERY_JOBS_LIST = ['limit', 'cursor', 'status', 'since'];
28
+ const QUERY_TASKS_LIST_BY_SERVICE = ['limit', 'cursor', 'status'];
29
+ const QUERY_DEBUG_GET_AGENT_CONTEXT = ['bodyChars', 'bodyOffset'];
30
+ const QUERY_DEBUG_GET_LLM_CALL = ['bodyChars', 'bodyOffset', 'view'];
31
+ const QUERY_DEBUG_LIST_AGENT_CONTEXT = ['stepIndex', 'limit', 'cursor'];
32
+ const QUERY_DEBUG_LIST_LLM_CALLS = ['agentKind', 'phase', 'outcome', 'contains', 'order', 'limit', 'cursor', 'bodyChars'];
33
+ const QUERY_DEBUG_LIST_LOGS = ['limit', 'cursor'];
34
+ const QUERY_DEBUG_LIST_RUNS = ['status', 'since', 'limit', 'cursor'];
35
+ const QUERY_DEBUG_LIST_SEARCH_QUERIES = ['limit', 'cursor'];
36
+ /** Every `/api/v1` operation this facade exposes as a tool, in resource-group order. */
37
+ export const CAT_FACTORY_TOOLS = [
38
+ {
39
+ name: 'jobs_cancel',
40
+ title: 'Cancel a job',
41
+ group: 'jobs',
42
+ operationId: 'cancelPublicJob',
43
+ readOnly: false,
44
+ description: 'Cancel a job\n\nStop a headless job run, freeing its concurrency slot. Idempotent — an already-finished job is returned as-is. Use this to abandon a run parked on a decision you do not intend to answer.\n\nCalls `POST /api/v1/jobs/{id}/cancel` (operation `cancelPublicJob`).',
45
+ inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Path parameter `id`." } }, "additionalProperties": false, "required": ["id"] },
46
+ invoke: (client, args) => client.jobs.cancel(str(args, 'id')),
47
+ },
48
+ {
49
+ name: 'jobs_create',
50
+ title: 'Start a headless job',
51
+ group: 'jobs',
52
+ operationId: 'createPublicJob',
53
+ readOnly: false,
54
+ description: 'Start a headless job\n\nStart a public, inline pipeline headlessly against a supplied brief. Returns a job id to poll or stream. Nothing is pushed to GitHub.\n\nCalls `POST /api/v1/jobs` (operation `createPublicJob`).',
55
+ inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "input": { "type": "string", "minLength": 1, "maxLength": 50000 }, "pipelineId": { "type": "string", "minLength": 1 }, "title": { "type": "string", "maxLength": 200 } }, "required": ["input", "pipelineId"], "description": "The request body." } }, "additionalProperties": false, "required": ["body"] },
56
+ invoke: (client, args) => client.jobs.create(args.body),
57
+ },
58
+ {
59
+ name: 'jobs_get',
60
+ title: 'Get a job',
61
+ group: 'jobs',
62
+ operationId: 'getPublicJob',
63
+ readOnly: true,
64
+ description: 'Get a job\n\nPoll a headless job started through this surface: its status and, once finished, its result.\n\nCalls `GET /api/v1/jobs/{id}` (operation `getPublicJob`).',
65
+ inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Path parameter `id`." } }, "additionalProperties": false, "required": ["id"] },
66
+ invoke: (client, args) => client.jobs.get(str(args, 'id')),
67
+ },
68
+ {
69
+ name: 'jobs_list',
70
+ title: 'List the workspace\'s jobs',
71
+ group: 'jobs',
72
+ operationId: 'listPublicJobs',
73
+ readOnly: true,
74
+ description: 'List the workspace\'s jobs\n\nList the headless runs THIS surface created, newest first and keyset-paginated. Scoped to internal-anchored runs exactly like the single-job read, so an external key can never enumerate the workspace’s ordinary board runs.\n\nCalls `GET /api/v1/jobs` (operation `listPublicJobs`).',
75
+ inputSchema: { "type": "object", "properties": { "limit": { "type": "integer" }, "cursor": { "type": "string" }, "status": { "type": "string", "enum": ["running", "succeeded", "failed"] }, "since": { "type": "integer" } }, "additionalProperties": false },
76
+ invoke: (client, args) => client.jobs.list(pick(args, QUERY_JOBS_LIST)),
77
+ },
78
+ {
79
+ name: 'services_list',
80
+ title: 'List the workspace\'s services',
81
+ group: 'services',
82
+ operationId: 'listPublicServices',
83
+ readOnly: true,
84
+ 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`).',
85
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
86
+ invoke: (client, args) => client.services.list(),
87
+ },
88
+ {
89
+ name: 'tasks_create',
90
+ title: 'Create a task under a service',
91
+ group: 'tasks',
92
+ operationId: 'createPublicTask',
93
+ readOnly: false,
94
+ 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.\n\nCalls `POST /api/v1/services/{serviceId}/tasks` (operation `createPublicTask`).',
95
+ inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "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. 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"] },
96
+ invoke: (client, args) => client.tasks.create(str(args, 'serviceId'), args.body),
97
+ },
98
+ {
99
+ name: 'tasks_delete',
100
+ title: 'Delete a task',
101
+ group: 'tasks',
102
+ operationId: 'deletePublicTask',
103
+ readOnly: false,
104
+ description: 'Delete a task\n\nDelete a task and its run history. Destructive, so it sits at the top of the scope ladder: requires an `admin`-scoped key.\n\nCalls `DELETE /api/v1/tasks/{taskId}` (operation `deletePublicTask`).',
105
+ inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
106
+ invoke: (client, args) => client.tasks.delete(str(args, 'taskId')),
107
+ },
108
+ {
109
+ name: 'tasks_get',
110
+ title: 'Get a task\'s status',
111
+ group: 'tasks',
112
+ operationId: 'getPublicTask',
113
+ readOnly: true,
114
+ 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`).',
115
+ inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
116
+ invoke: (client, args) => client.tasks.get(str(args, 'taskId')),
117
+ },
118
+ {
119
+ name: 'tasks_get_run',
120
+ title: 'Get a task\'s run (rich projection)',
121
+ group: 'tasks',
122
+ operationId: 'getPublicRun',
123
+ readOnly: true,
124
+ description: 'Get a task\'s run (rich projection)\n\nRead a task’s run in detail: per-step status/progress/subtasks, the failure kind and message, and the PR (url + branch).\n\nCalls `GET /api/v1/tasks/{taskId}/run` (operation `getPublicRun`).',
125
+ inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
126
+ invoke: (client, args) => client.tasks.getRun(str(args, 'taskId')),
127
+ },
128
+ {
129
+ name: 'tasks_list_by_service',
130
+ title: 'List a service\'s tasks',
131
+ group: 'tasks',
132
+ operationId: 'listPublicServiceTasks',
133
+ readOnly: true,
134
+ 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`).',
135
+ 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"] },
136
+ invoke: (client, args) => client.tasks.listByService(str(args, 'serviceId'), pick(args, QUERY_TASKS_LIST_BY_SERVICE)),
137
+ },
138
+ {
139
+ name: 'tasks_retry',
140
+ title: 'Retry a task\'s failed run',
141
+ group: 'tasks',
142
+ operationId: 'retryPublicTask',
143
+ readOnly: false,
144
+ 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`).',
145
+ inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
146
+ invoke: (client, args) => client.tasks.retry(str(args, 'taskId')),
147
+ },
148
+ {
149
+ name: 'tasks_start',
150
+ title: 'Start (run) a task',
151
+ group: 'tasks',
152
+ operationId: 'startPublicTask',
153
+ readOnly: false,
154
+ 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`).',
155
+ 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", "body"] },
156
+ invoke: (client, args) => client.tasks.start(str(args, 'taskId'), args.body),
157
+ },
158
+ {
159
+ name: 'tasks_stop',
160
+ title: 'Stop a task\'s run',
161
+ group: 'tasks',
162
+ operationId: 'stopPublicTask',
163
+ readOnly: false,
164
+ 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`).',
165
+ inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
166
+ invoke: (client, args) => client.tasks.stop(str(args, 'taskId')),
167
+ },
168
+ {
169
+ name: 'tasks_update',
170
+ title: 'Edit a task\'s title/description',
171
+ group: 'tasks',
172
+ operationId: 'updatePublicTask',
173
+ readOnly: false,
174
+ description: 'Edit a task\'s title/description\n\nEdit a task’s human-authored fields (title/description) before it runs. Both fields are optional.\n\nCalls `PATCH /api/v1/tasks/{taskId}` (operation `updatePublicTask`).',
175
+ inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["taskId", "body"] },
176
+ invoke: (client, args) => client.tasks.update(str(args, 'taskId'), args.body),
177
+ },
178
+ {
179
+ name: 'pipelines_list',
180
+ title: 'List the workspace\'s pipelines',
181
+ group: 'pipelines',
182
+ operationId: 'listPublicPipelines',
183
+ readOnly: true,
184
+ description: 'List the workspace\'s pipelines\n\nList the pipelines in the key’s workspace — id/name/steps plus whether each is public and safe to run headlessly — so a caller can pick a pipelineId to start a task with.\n\nCalls `GET /api/v1/pipelines` (operation `listPublicPipelines`).',
185
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
186
+ invoke: (client, args) => client.pipelines.list(),
187
+ },
188
+ {
189
+ name: 'notifications_act',
190
+ title: 'Act on a notification',
191
+ group: 'notifications',
192
+ operationId: 'actPublicNotification',
193
+ readOnly: false,
194
+ 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.\n\nCalls `POST /api/v1/notifications/{id}/act` (operation `actPublicNotification`).',
195
+ inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Path parameter `id`." } }, "additionalProperties": false, "required": ["id"] },
196
+ invoke: (client, args) => client.notifications.act(str(args, 'id')),
197
+ },
198
+ {
199
+ name: 'notifications_dismiss',
200
+ title: 'Dismiss a notification',
201
+ group: 'notifications',
202
+ operationId: 'dismissPublicNotification',
203
+ readOnly: false,
204
+ description: 'Dismiss a notification\n\nDismiss a notification without acting on it.\n\nCalls `POST /api/v1/notifications/{id}/dismiss` (operation `dismissPublicNotification`).',
205
+ inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Path parameter `id`." } }, "additionalProperties": false, "required": ["id"] },
206
+ invoke: (client, args) => client.notifications.dismiss(str(args, 'id')),
207
+ },
208
+ {
209
+ name: 'notifications_list',
210
+ title: 'List the workspace\'s open notifications',
211
+ group: 'notifications',
212
+ operationId: 'listPublicNotifications',
213
+ readOnly: true,
214
+ 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`).',
215
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
216
+ invoke: (client, args) => client.notifications.list(),
217
+ },
218
+ {
219
+ name: 'usage_get',
220
+ title: 'Read the workspace\'s usage for the current period',
221
+ group: 'usage',
222
+ operationId: 'getPublicUsage',
223
+ readOnly: true,
224
+ description: 'Read the workspace\'s usage for the current period\n\nRead this billing period’s METERED spend against the workspace budget (including whether it is exceeded, which pauses runs) plus the per-(billing, vendor, provider, model) token breakdown behind it. Costs on `subscription` rows are illustrative — a flat-rate plan bills nothing per token — so branch on `billing` before summing. Workspace-scoped: the account- and user-tier budgets are not reachable through this surface.\n\nCalls `GET /api/v1/usage` (operation `getPublicUsage`).',
225
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
226
+ invoke: (client, args) => client.usage.get(),
227
+ },
228
+ {
229
+ name: 'decisions_choose_fork',
230
+ title: 'Choose an implementation approach',
231
+ group: 'decisions',
232
+ operationId: 'choosePublicRunFork',
233
+ readOnly: false,
234
+ description: 'Choose an implementation approach\n\nPick one of the proposed implementation forks (by id) or submit your own approach. The Coder then runs with the choice folded in as a binding directive. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/fork/choose` (operation `choosePublicRunFork`).',
235
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "custom": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "forkId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
236
+ invoke: (client, args) => client.decisions.chooseFork(str(args, 'runId'), args.body),
237
+ },
238
+ {
239
+ name: 'decisions_incorporate',
240
+ title: 'Incorporate the answers',
241
+ group: 'decisions',
242
+ operationId: 'incorporatePublicRunRequirements',
243
+ readOnly: false,
244
+ description: 'Incorporate the answers\n\nFold the recorded answers into one standardized requirements document. Asynchronous — the run re-reviews in the background, so the response shows the review `incorporating`. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/incorporate` (operation `incorporatePublicRunRequirements`).',
245
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "feedback": { "type": "string", "maxLength": 4000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
246
+ invoke: (client, args) => client.decisions.incorporate(str(args, 'runId'), args.body),
247
+ },
248
+ {
249
+ name: 'decisions_list',
250
+ title: 'List a run\'s parked decisions',
251
+ group: 'decisions',
252
+ operationId: 'listPublicRunDecisions',
253
+ readOnly: true,
254
+ description: 'List a run\'s parked decisions\n\nRead what a run is currently asking a human: requirement-review findings (with the stable item ids a reply addresses) and any implementation-fork choice. `parked` is true while the run is blocked awaiting one of them.\n\nCalls `GET /api/v1/runs/{runId}/decisions` (operation `listPublicRunDecisions`).',
255
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
256
+ invoke: (client, args) => client.decisions.list(str(args, 'runId')),
257
+ },
258
+ {
259
+ name: 'decisions_proceed',
260
+ title: 'Proceed with the current requirements',
261
+ group: 'decisions',
262
+ operationId: 'proceedPublicRunRequirements',
263
+ readOnly: false,
264
+ description: 'Proceed with the current requirements\n\nSettle the requirements phase and advance the parked run (used when nothing is outstanding). Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/proceed` (operation `proceedPublicRunRequirements`).',
265
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
266
+ invoke: (client, args) => client.decisions.proceed(str(args, 'runId')),
267
+ },
268
+ {
269
+ name: 'decisions_reply_to_finding',
270
+ title: 'Answer a review finding',
271
+ group: 'decisions',
272
+ operationId: 'replyPublicRunFinding',
273
+ readOnly: false,
274
+ description: 'Answer a review finding\n\nRecord an answer to one reviewer finding. Returns the run\'s updated decision list. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/findings/{itemId}/reply` (operation `replyPublicRunFinding`).',
275
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "reply": { "type": "string", "minLength": 1, "maxLength": 4000 } }, "required": ["reply"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "itemId", "body"] },
276
+ invoke: (client, args) => client.decisions.replyToFinding(str(args, 'runId'), str(args, 'itemId'), args.body),
277
+ },
278
+ {
279
+ name: 'decisions_re_review',
280
+ title: 'Re-review the incorporated document',
281
+ group: 'decisions',
282
+ operationId: 'reReviewPublicRunRequirements',
283
+ readOnly: false,
284
+ description: 'Re-review the incorporated document\n\nRun one more reviewer pass over the incorporated document. On convergence the parked run advances. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/re-review` (operation `reReviewPublicRunRequirements`).',
285
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
286
+ invoke: (client, args) => client.decisions.reReview(str(args, 'runId')),
287
+ },
288
+ {
289
+ name: 'decisions_resolve_exceeded',
290
+ title: 'Resolve a review at its iteration cap',
291
+ group: 'decisions',
292
+ operationId: 'resolvePublicRunRequirementsExceeded',
293
+ readOnly: false,
294
+ description: 'Resolve a review at its iteration cap\n\nPick how a review that exhausted its reviewer-pass budget proceeds: one more round, proceed with the last incorporated document, or stop and reset the task. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/resolve-exceeded` (operation `resolvePublicRunRequirementsExceeded`).',
295
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["extra-round", "proceed", "stop-reset"] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
296
+ invoke: (client, args) => client.decisions.resolveExceeded(str(args, 'runId'), args.body),
297
+ },
298
+ {
299
+ name: 'decisions_resolve_judge',
300
+ title: 'Resolve a parked judge verdict',
301
+ group: 'decisions',
302
+ operationId: 'resolvePublicRunJudge',
303
+ readOnly: false,
304
+ description: 'Resolve a parked judge verdict\n\nSettle a run parked on a judge verdict: proceed anyway, bounce the producing step for rework, or stop the run. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/judge/resolve` (operation `resolvePublicRunJudge`).',
305
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["proceed", "bounce", "stop"] }, "feedback": { "anyOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
306
+ invoke: (client, args) => client.decisions.resolveJudge(str(args, 'runId'), args.body),
307
+ },
308
+ {
309
+ name: 'decisions_set_finding_status',
310
+ title: 'Dismiss or reopen a finding',
311
+ group: 'decisions',
312
+ operationId: 'setPublicRunFindingStatus',
313
+ readOnly: false,
314
+ description: 'Dismiss or reopen a finding\n\nDismiss a finding as not applicable, or reopen one dismissed by mistake. Requires a `decide`-scope key.\n\nCalls `PATCH /api/v1/runs/{runId}/decisions/requirements/findings/{itemId}` (operation `setPublicRunFindingStatus`).',
315
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "status": { "type": "string", "enum": ["dismissed", "open"] } }, "required": ["status"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "itemId", "body"] },
316
+ invoke: (client, args) => client.decisions.setFindingStatus(str(args, 'runId'), str(args, 'itemId'), args.body),
317
+ },
318
+ {
319
+ name: 'debug_get_agent_context',
320
+ title: 'Get one agent-context snapshot',
321
+ group: 'debug',
322
+ operationId: 'getDebugAgentContext',
323
+ readOnly: true,
324
+ description: 'Get one agent-context snapshot\n\nThe complete context one dispatch was PROVIDED: system and user prompts, the folded standards fragments, and the injected `.cat-context/*` files an agent reads through tools (which therefore appear in no proxy telemetry). Windowed by `bodyOffset`/`bodyChars`.\n\nCalls `GET /api/v1/debug/agent-context/{snapshotId}` (operation `getDebugAgentContext`).',
325
+ inputSchema: { "type": "object", "properties": { "snapshotId": { "type": "string", "description": "Path parameter `snapshotId`." }, "bodyChars": { "type": "integer" }, "bodyOffset": { "type": "integer" } }, "additionalProperties": false, "required": ["snapshotId"] },
326
+ invoke: (client, args) => client.debug.getAgentContext(str(args, 'snapshotId'), pick(args, QUERY_DEBUG_GET_AGENT_CONTEXT)),
327
+ },
328
+ {
329
+ name: 'debug_get_llm_call',
330
+ title: 'Get one LLM call',
331
+ group: 'debug',
332
+ operationId: 'getDebugLlmCall',
333
+ readOnly: true,
334
+ description: 'Get one LLM call\n\nOne recorded model call with its budgeted prompt delta, response and reasoning. `bodyOffset`/`bodyChars` window the bodies, so an arbitrarily long transcript is readable in bounded pages.\n\nCalls `GET /api/v1/debug/llm-calls/{callId}` (operation `getDebugLlmCall`).',
335
+ inputSchema: { "type": "object", "properties": { "callId": { "type": "string", "description": "Path parameter `callId`." }, "bodyChars": { "type": "integer" }, "bodyOffset": { "type": "integer" }, "view": { "type": "string", "enum": ["raw", "messages"] } }, "additionalProperties": false, "required": ["callId"] },
336
+ invoke: (client, args) => client.debug.getLlmCall(str(args, 'callId'), pick(args, QUERY_DEBUG_GET_LLM_CALL)),
337
+ },
338
+ {
339
+ name: 'debug_get_run',
340
+ title: 'Get a run\'s diagnostic map',
341
+ group: 'debug',
342
+ operationId: 'getDebugRun',
343
+ readOnly: true,
344
+ description: 'Get a run\'s diagnostic map\n\nOne run’s diagnostic overview: its steps, which telemetry sinks this deployment retains (and how much each holds), the LLM cost/latency rollups, and the derived signals worth looking at first.\n\nCalls `GET /api/v1/debug/runs/{runId}` (operation `getDebugRun`).',
345
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
346
+ invoke: (client, args) => client.debug.getRun(str(args, 'runId')),
347
+ },
348
+ {
349
+ name: 'debug_list_agent_context',
350
+ title: 'List a run\'s agent-context dispatches',
351
+ group: 'debug',
352
+ operationId: 'listDebugAgentContext',
353
+ readOnly: true,
354
+ description: 'List a run\'s agent-context dispatches\n\nEvery dispatch whose provided context was captured, with SIZES only (no bodies) so the list stays bounded. Read one in full through the snapshot endpoint.\n\nCalls `GET /api/v1/debug/runs/{runId}/agent-context` (operation `listDebugAgentContext`).',
355
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stepIndex": { "type": "integer" }, "limit": { "type": "integer" }, "cursor": { "type": "string" } }, "additionalProperties": false, "required": ["runId"] },
356
+ invoke: (client, args) => client.debug.listAgentContext(str(args, 'runId'), pick(args, QUERY_DEBUG_LIST_AGENT_CONTEXT)),
357
+ },
358
+ {
359
+ name: 'debug_list_llm_calls',
360
+ title: 'List a run\'s LLM calls',
361
+ group: 'debug',
362
+ operationId: 'listDebugLlmCalls',
363
+ readOnly: true,
364
+ description: 'List a run\'s LLM calls\n\nThe model calls a run made, keyset-paginated and filterable by agent kind, phase, outcome or a substring of the bodies. Bodies are returned only when `bodyChars` asks for them.\n\nCalls `GET /api/v1/debug/runs/{runId}/llm-calls` (operation `listDebugLlmCalls`).',
365
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "agentKind": { "type": "string" }, "phase": { "type": "string" }, "outcome": { "type": "string", "enum": ["ok", "warning", "error"] }, "contains": { "type": "string" }, "order": { "type": "string", "enum": ["newest", "oldest"] }, "limit": { "type": "integer" }, "cursor": { "type": "string" }, "bodyChars": { "type": "integer" } }, "additionalProperties": false, "required": ["runId"] },
366
+ invoke: (client, args) => client.debug.listLlmCalls(str(args, 'runId'), pick(args, QUERY_DEBUG_LIST_LLM_CALLS)),
367
+ },
368
+ {
369
+ name: 'debug_list_logs',
370
+ title: 'List a run\'s infrastructure log',
371
+ group: 'debug',
372
+ operationId: 'listDebugLogs',
373
+ readOnly: true,
374
+ description: 'List a run\'s infrastructure log\n\nThe run’s provisioning event log — how its environment, runner pool and containers came up, or why they did not.\n\nCalls `GET /api/v1/debug/runs/{runId}/logs` (operation `listDebugLogs`).',
375
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "limit": { "type": "integer" }, "cursor": { "type": "string" } }, "additionalProperties": false, "required": ["runId"] },
376
+ invoke: (client, args) => client.debug.listLogs(str(args, 'runId'), pick(args, QUERY_DEBUG_LIST_LOGS)),
377
+ },
378
+ {
379
+ name: 'debug_list_runs',
380
+ title: 'List the workspace\'s runs',
381
+ group: 'debug',
382
+ operationId: 'listDebugRuns',
383
+ readOnly: true,
384
+ description: 'List the workspace\'s runs\n\nThe triage entry point: the workspace’s runs, newest first and keyset-paginated, with an optional status and `since` filter.\n\nCalls `GET /api/v1/debug/runs` (operation `listDebugRuns`).',
385
+ inputSchema: { "type": "object", "properties": { "status": { "type": "string", "enum": ["running", "blocked", "paused", "done", "failed"] }, "since": { "type": "integer" }, "limit": { "type": "integer" }, "cursor": { "type": "string" } }, "additionalProperties": false },
386
+ invoke: (client, args) => client.debug.listRuns(pick(args, QUERY_DEBUG_LIST_RUNS)),
387
+ },
388
+ {
389
+ name: 'debug_list_search_queries',
390
+ title: 'List a run\'s web searches',
391
+ group: 'debug',
392
+ operationId: 'listDebugSearchQueries',
393
+ readOnly: true,
394
+ description: 'List a run\'s web searches\n\nThe web searches the run’s agents actually performed, keyset-paginated. Retained only when the deployment records agent context.\n\nCalls `GET /api/v1/debug/runs/{runId}/search-queries` (operation `listDebugSearchQueries`).',
395
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "limit": { "type": "integer" }, "cursor": { "type": "string" } }, "additionalProperties": false, "required": ["runId"] },
396
+ invoke: (client, args) => client.debug.listSearchQueries(str(args, 'runId'), pick(args, QUERY_DEBUG_LIST_SEARCH_QUERIES)),
397
+ },
398
+ ];
399
+ /** The operations this facade does not expose, each with its reason. */
400
+ export const CAT_FACTORY_OMITTED_OPERATIONS = [
401
+ {
402
+ operationId: 'streamPublicJobEvents',
403
+ route: 'GET /api/v1/jobs/{id}/events',
404
+ sdkCall: 'client.jobs.stream()',
405
+ reason: 'A tool call returns one result, so it has no channel to stream an open-ended event feed over. Poll `jobs_get` instead, or consume the SSE endpoint through an SDK.',
406
+ },
407
+ {
408
+ operationId: 'streamPublicTaskRun',
409
+ route: 'GET /api/v1/tasks/{taskId}/events',
410
+ sdkCall: 'client.tasks.stream()',
411
+ reason: 'A tool call returns one result, so it has no channel to stream a run over. Poll `tasks_get_run` instead (a parked run waits for a human indefinitely, so a bounded "wait for the run to finish" tool would be a timeout dressed up as an answer), or consume the SSE endpoint through an SDK.',
412
+ },
413
+ ];
414
+ /** One line per resource group, for the server's instructions. */
415
+ export const CAT_FACTORY_TOOL_GROUPS = {
416
+ 'jobs': 'Headless jobs (a public, inline pipeline run against a brief): start, poll or stream one.',
417
+ 'services': 'The workspace\'s board services — the frames tasks are created under.',
418
+ 'tasks': 'A board task\'s whole lifecycle: create, edit, start, stop, retry, watch, delete.',
419
+ 'pipelines': 'The pipelines a task can be started with, and whether each is headless-startable.',
420
+ 'notifications': 'The workspace\'s human-actionable inbox: list, act on, or dismiss a run tail.',
421
+ 'usage': 'The billing period\'s metered budget position and the per-model breakdown behind it.',
422
+ 'decisions': 'A parked run\'s human decisions — requirement findings, forks and judge verdicts.',
423
+ 'debug': 'A run\'s recorded telemetry: LLM calls, the context each agent was given, infra logs.',
424
+ };
425
+ //# sourceMappingURL=tools.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.generated.js","sourceRoot":"","sources":["../src/tools.generated.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@cat-factory/mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "Model Context Protocol server for the cat-factory public API (/api/v1): a thin facade that exposes the published operations as MCP tools, generated from the same OpenAPI spec the SDKs are, over the hand-written @cat-factory/sdk transport.",
5
+ "keywords": [
6
+ "cat-factory",
7
+ "mcp",
8
+ "model-context-protocol",
9
+ "openapi"
10
+ ],
11
+ "license": "MIT",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/kibertoad/cat-factory.git",
15
+ "directory": "sdk/mcp"
16
+ },
17
+ "bin": {
18
+ "cat-factory-mcp": "./dist/bin.js"
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "type": "module",
24
+ "main": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./package.json": "./package.json"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "dependencies": {
37
+ "@modelcontextprotocol/sdk": "^1.30.0",
38
+ "@cat-factory/sdk": "0.5.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^26.1.2",
42
+ "typescript": "7.0.2",
43
+ "vitest": "^4.1.10"
44
+ },
45
+ "engines": {
46
+ "node": ">=20"
47
+ },
48
+ "scripts": {
49
+ "build": "tsc -b tsconfig.build.json",
50
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.dev.json --noEmit",
51
+ "test": "vitest",
52
+ "test:run": "vitest run"
53
+ }
54
+ }