@axonity-ai/mcp 0.7.0 → 0.8.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,28 @@
1
+ /**
2
+ * What this deploy is, who is in it, and what it is busy with (axonity-mcp#59).
3
+ *
4
+ * Read-only, all of it. These are the questions an agent asks ABOUT the system
5
+ * rather than about a thing it is authoring, and every one of them was
6
+ * previously answered by asking a human to look at a screen.
7
+ *
8
+ * Three earn their place on their own:
9
+ *
10
+ * - `read_deploy_contract` — the connector already reads `GET /contract` once
11
+ * at startup (#48) to decide whether the backend has the routes it needs.
12
+ * An agent could not ask the same question mid-task. "Does this deploy have
13
+ * X?" is the question this whole repository keeps turning out to be about.
14
+ * - `list_users` — an `ownerId` is a field on half the memory entities, and
15
+ * the only way to get one was to have a human copy it out of the UI. That
16
+ * is exactly the gap `list_secrets` closed for `secretId` (#39).
17
+ * - `list_audit_events` — it takes `actorKind=service_token`, so an agent can
18
+ * read back WHAT IT ITSELF DID, narrowed to one credential. Nothing else on
19
+ * the surface offers that.
20
+ *
21
+ * The WRITES on these families are deliberately absent and recorded in
22
+ * `test/exclusions.test.ts`: purging, replaying, dismissing and releasing queue
23
+ * work are operator acts on the workspace, and notifications are addressed to a
24
+ * person — marking one read is speaking as them.
25
+ */
26
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
27
+ import type { AxonityClient } from "../client.js";
28
+ export declare function registerOperationsTools(server: McpServer, client: AxonityClient): void;
@@ -0,0 +1,160 @@
1
+ /**
2
+ * What this deploy is, who is in it, and what it is busy with (axonity-mcp#59).
3
+ *
4
+ * Read-only, all of it. These are the questions an agent asks ABOUT the system
5
+ * rather than about a thing it is authoring, and every one of them was
6
+ * previously answered by asking a human to look at a screen.
7
+ *
8
+ * Three earn their place on their own:
9
+ *
10
+ * - `read_deploy_contract` — the connector already reads `GET /contract` once
11
+ * at startup (#48) to decide whether the backend has the routes it needs.
12
+ * An agent could not ask the same question mid-task. "Does this deploy have
13
+ * X?" is the question this whole repository keeps turning out to be about.
14
+ * - `list_users` — an `ownerId` is a field on half the memory entities, and
15
+ * the only way to get one was to have a human copy it out of the UI. That
16
+ * is exactly the gap `list_secrets` closed for `secretId` (#39).
17
+ * - `list_audit_events` — it takes `actorKind=service_token`, so an agent can
18
+ * read back WHAT IT ITSELF DID, narrowed to one credential. Nothing else on
19
+ * the surface offers that.
20
+ *
21
+ * The WRITES on these families are deliberately absent and recorded in
22
+ * `test/exclusions.test.ts`: purging, replaying, dismissing and releasing queue
23
+ * work are operator acts on the workspace, and notifications are addressed to a
24
+ * person — marking one read is speaking as them.
25
+ */
26
+ import { z } from "zod";
27
+ import { guard, jsonResult } from "./result.js";
28
+ /** Filters `GET /task-queue` and its export share, spelled as the routes take them. */
29
+ const TASK_FILTERS = {
30
+ state: z.string().optional().describe("Task state to filter on. Omit for all."),
31
+ owner: z.string().optional().describe("Owner id to filter on."),
32
+ workflow: z.string().optional().describe("Workflow id to filter on."),
33
+ batch: z.string().optional().describe("Batch id to filter on."),
34
+ includeDismissed: z
35
+ .boolean()
36
+ .optional()
37
+ .describe("Include dismissed tasks. Defaults to false."),
38
+ };
39
+ export function registerOperationsTools(server, client) {
40
+ server.tool("read_deploy_contract", "What THIS Axonity deploy speaks: its build version, environment, the " +
41
+ "routes it actually mounts, and a hash over them. " +
42
+ "\n\nRead it when a call fails in a way that smells like the backend is " +
43
+ "older or newer than you expect, or before you rely on something recent. " +
44
+ "It is derived from the running app, so it cannot drift from what is " +
45
+ "really there — unlike any list a connector keeps. " +
46
+ "\n\nTenant-agnostic: it describes the deploy, not your data.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/contract"))));
47
+ server.tool("list_users", "List the users in your tenant (alphabetically). This is where an " +
48
+ "`ownerId` comes from — the field on a policy, reference doc or prompt " +
49
+ "snippet that says whose it is. Look it up here rather than asking a " +
50
+ "human to copy one out of the UI. Read-only; this connector cannot " +
51
+ "create, change or remove a user.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/users"))));
52
+ server.tool("list_audit_events", "The tenant's audit trail, newest first — who changed what, and when. " +
53
+ "\n\nPASS actorKind: \"service_token\" TO SEE WHAT EXTERNAL AGENTS DID, " +
54
+ "and serviceTokenId to narrow that to one credential. That is how you " +
55
+ "read back your OWN footprint: what this connector changed in a session, " +
56
+ "without reconstructing it from memory. " +
57
+ "\n\nTHE RESPONSE IS ONE PAGE, NOT THE FULL TRAIL: " +
58
+ "{ items, nextCursor, pageSize, hasMore }. While hasMore is true you have " +
59
+ "not seen every event — pass the response's nextCursor back as cursor and " +
60
+ "repeat until nextCursor is null. Never build a cursor; echo back the one " +
61
+ "you were given.", {
62
+ actorKind: z
63
+ .string()
64
+ .optional()
65
+ .describe('Who acted, e.g. "service_token" for external agents. Omit for everyone.'),
66
+ serviceTokenId: z
67
+ .string()
68
+ .optional()
69
+ .describe("Narrow to one credential's actions."),
70
+ entityType: z.string().optional().describe("Only events about this entity type."),
71
+ limit: z.number().int().optional().describe("Page size."),
72
+ cursor: z
73
+ .string()
74
+ .optional()
75
+ .describe("Opaque continuation cursor from the previous response's nextCursor. " +
76
+ "Omit for the first page."),
77
+ }, async ({ actorKind, serviceTokenId, entityType, limit, cursor }) => guard(async () => jsonResult(await client.get("/api/v1/audit-events", {
78
+ actorKind,
79
+ serviceTokenId,
80
+ entityType,
81
+ limit,
82
+ cursor,
83
+ }))));
84
+ server.tool("read_queue_overview", "The health header for this tenant's queues: how much work is waiting, how " +
85
+ "old the oldest item is, and whether dispatch is alive. One call rather " +
86
+ "than three. " +
87
+ "\n\nRead it when a run you started is not moving — the answer is usually " +
88
+ "here rather than in the run. Note the `dispatch` block's numbers are " +
89
+ "administrator-only and may come back withheld for this token; the rest " +
90
+ "is tenant-scoped and yours.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/queues/overview"))));
91
+ server.tool("list_in_flight_runs", "The tenant's runs that are still going, OLDEST FIRST — the opposite order " +
92
+ "to list_runs, because the oldest in-flight run is the one that is stuck. " +
93
+ "\n\nEvery non-terminal run, EXCEPT archived runs, per-item `for_each` " +
94
+ "sub-runs and Builder conversation runs. So this is 'what is the system " +
95
+ "working on', not 'every row that exists' — for that, list_runs.", {
96
+ status: z
97
+ .array(z.string())
98
+ .optional()
99
+ .describe('Statuses to include, e.g. ["running", "waiting"]. Omit for all.'),
100
+ workflow: z.string().optional().describe("Only runs of this workflow."),
101
+ limit: z.number().int().optional().describe("Defaults to 25, max 100."),
102
+ offset: z.number().int().optional().describe("Defaults to 0."),
103
+ }, async ({ status, workflow, limit, offset }) => guard(async () => jsonResult(await client.get("/api/v1/queues/runs", { status, workflow, limit, offset }))));
104
+ server.tool("read_task_queue_summary", "Per-state counts of the tenant's background task queue — the cheap read " +
105
+ "that says whether anything is piling up. Start here; reach for " +
106
+ "list_task_queue only once a count looks wrong.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/task-queue/dashboard-summary"))));
107
+ server.tool("list_task_queue", "The tenant's background task queue, filtered. This is where a failed " +
108
+ "delivery, a dead-lettered wake-up or a stalled batch shows up — the " +
109
+ "layer beneath a run, which read_run cannot see. " +
110
+ "\n\nDismissed tasks are hidden unless includeDismissed is true. " +
111
+ "\n\nThis connector can READ the queue but not act on it: purging, " +
112
+ "replaying, dismissing and releasing are operator acts on the workspace " +
113
+ "and are recorded as out of scope in test/exclusions.test.ts. Report what " +
114
+ "you find to your human rather than looking for another way in.", {
115
+ ...TASK_FILTERS,
116
+ limit: z.number().int().optional().describe("Page size."),
117
+ offset: z.number().int().optional().describe("Offset into the list."),
118
+ }, async ({ state, owner, workflow, batch, includeDismissed, limit, offset }) => guard(async () => jsonResult(await client.get("/api/v1/task-queue", {
119
+ state,
120
+ owner,
121
+ workflow,
122
+ batch,
123
+ include_dismissed: includeDismissed,
124
+ limit,
125
+ offset,
126
+ }))));
127
+ server.tool("read_task_queue_item", "One background task in full — its state, its payload and why it is where " +
128
+ "it is. The detail behind a row from list_task_queue.", { taskId: z.string().describe("The task's id, from list_task_queue.") }, async ({ taskId }) => guard(async () => jsonResult(await client.get(`/api/v1/task-queue/${taskId}`))));
129
+ server.tool("export_task_queue", "The same rows list_task_queue returns, as one JSON export, for when you " +
130
+ "want to reason over a whole filtered set at once rather than page " +
131
+ "through it. " +
132
+ "\n\nIt is CAPPED at the backend's export limit and does not paginate: a " +
133
+ "filter that matches more rows than the cap returns the cap, and there is " +
134
+ "no continuation. Narrow with the filters instead of hoping — a truncated " +
135
+ "export looks exactly like a complete one.", TASK_FILTERS, async ({ state, owner, workflow, batch, includeDismissed }) => guard(async () => jsonResult(await client.get("/api/v1/task-queue/export", {
136
+ state,
137
+ owner,
138
+ workflow,
139
+ batch,
140
+ include_dismissed: includeDismissed,
141
+ }))));
142
+ // ---- Tenant settings, read-only ---------------------------------------
143
+ server.tool("read_model_tier_map", "What this tenant's capability tiers actually RESOLVE TO — which model " +
144
+ "backs `economy`, `standard`, `smart` and `reasoning`. " +
145
+ "\n\nRead it before you set an agent's `capabilityTier`: the tier is the " +
146
+ "field you write, but the model is what you are choosing, and the mapping " +
147
+ "is per-tenant with a global fallback. Writing the map is an operator act " +
148
+ "and is not available here.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/tenant-settings/model-tier-map"))));
149
+ server.tool("read_concurrency_status", "How many runs are going right now against this tenant's cap — the live " +
150
+ "answer to 'is my run queued because the tenant is full?'. Read this " +
151
+ "before concluding a workflow is broken.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/tenant-settings/concurrency-status"))));
152
+ server.tool("read_concurrent_run_cap", "The tenant's effective ceiling on runs going at once. The cap alone; " +
153
+ "read_concurrency_status pairs it with what is actually running. Changing " +
154
+ "it is an operator act and is not available here.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/tenant-settings/concurrent-run-cap"))));
155
+ server.tool("read_for_each_rate", "The tenant's default ceiling on how many FOR EACH items may start per " +
156
+ "minute. This is why a fan-out over thousands of rows paces itself rather " +
157
+ "than stalling — read it before you call a slow batch a bug. Changing it " +
158
+ "is an operator act and is not available here.", {}, async () => guard(async () => jsonResult(await client.get("/api/v1/tenant-settings/for-each-rate"))));
159
+ }
160
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/tools/operations.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,26 @@
9
9
  * Runs are also the only thing in the product with a real archive state —
10
10
  * entities have soft-delete, runs have archive/unarchive.
11
11
  *
12
+ * READING A RUN NEED NOT COST THE WHOLE RUN (axonity-mcp#57). `read_run`
13
+ * returns the document; `read_run_outline` returns its table of contents, whose
14
+ * size follows the run's SHAPE rather than its content because it carries no
15
+ * bodies. The two reads that serve those bodies on open — `read_run_value` and
16
+ * `read_run_invocation_messages` — are the only reason the outline can stay
17
+ * small, so they belong with it rather than as conveniences.
18
+ *
12
19
  * A RUN THAT ASKS A QUESTION CAN BE ANSWERED (#45 M9). `axonity_conventions`
13
20
  * tells an agent to `start_workflow_run` to test a workflow end to end. A run
14
21
  * that reaches an `ask_user` step parks there and waits — so, without a way to
15
22
  * answer, the guide prescribed a loop the connector could not finish. The two
16
23
  * tools that unpark a run supply the INPUT it is waiting for, which is not the
17
24
  * same act as deciding a review:
18
- * - `answer_run_question` / `send_run_message` are here.
25
+ * - `answer_run_question` / `send_run_message` are here, and since #59 so is
26
+ * `complete_run_step` — one route over two acts. Choosing a DECISION step's
27
+ * branch is routing; completing a MANUAL step asserts that human work
28
+ * happened, which the platform then treats as fact. The tool says so and
29
+ * takes a `confirm`, because leaving it out left the guide prescribing an
30
+ * end-to-end test that hits a wall at the first manual step — the same
31
+ * defect `answer_run_question` was added to fix.
19
32
  * - `POST /runs/{id}/steps/{id}/plan-approval` is NOT, and
20
33
  * `POST /runs/{id}/restart` cannot be. Both are recorded, with the reason,
21
34
  * in `test/exclusions.test.ts` — as a decision rather than an omission.
@@ -9,13 +9,26 @@
9
9
  * Runs are also the only thing in the product with a real archive state —
10
10
  * entities have soft-delete, runs have archive/unarchive.
11
11
  *
12
+ * READING A RUN NEED NOT COST THE WHOLE RUN (axonity-mcp#57). `read_run`
13
+ * returns the document; `read_run_outline` returns its table of contents, whose
14
+ * size follows the run's SHAPE rather than its content because it carries no
15
+ * bodies. The two reads that serve those bodies on open — `read_run_value` and
16
+ * `read_run_invocation_messages` — are the only reason the outline can stay
17
+ * small, so they belong with it rather than as conveniences.
18
+ *
12
19
  * A RUN THAT ASKS A QUESTION CAN BE ANSWERED (#45 M9). `axonity_conventions`
13
20
  * tells an agent to `start_workflow_run` to test a workflow end to end. A run
14
21
  * that reaches an `ask_user` step parks there and waits — so, without a way to
15
22
  * answer, the guide prescribed a loop the connector could not finish. The two
16
23
  * tools that unpark a run supply the INPUT it is waiting for, which is not the
17
24
  * same act as deciding a review:
18
- * - `answer_run_question` / `send_run_message` are here.
25
+ * - `answer_run_question` / `send_run_message` are here, and since #59 so is
26
+ * `complete_run_step` — one route over two acts. Choosing a DECISION step's
27
+ * branch is routing; completing a MANUAL step asserts that human work
28
+ * happened, which the platform then treats as fact. The tool says so and
29
+ * takes a `confirm`, because leaving it out left the guide prescribing an
30
+ * end-to-end test that hits a wall at the first manual step — the same
31
+ * defect `answer_run_question` was added to fix.
19
32
  * - `POST /runs/{id}/steps/{id}/plan-approval` is NOT, and
20
33
  * `POST /runs/{id}/restart` cannot be. Both are recorded, with the reason,
21
34
  * in `test/exclusions.test.ts` — as a decision rather than an omission.
@@ -32,9 +45,9 @@ export function registerRunTools(server, client) {
32
45
  "side effects. It does not run your unpublished draft. After starting, " +
33
46
  "follow it with read_run / read_run_trace / read_run_cost. " +
34
47
  "\n\nA workflow can have MORE THAN ONE start (a button and a schedule, " +
35
- "say), and each start declares its own fields. Read " +
36
- "read_workflow_trigger_parameters first, then name the one you mean with " +
37
- "triggerId and build triggerInput from THAT start's parameters — a " +
48
+ "say). Read read_workflow_trigger_parameters first, then name the one you " +
49
+ "mean with triggerId and build triggerInput from the process's `inputs` " +
50
+ "PLUS whatever that start declares on top in its own `parameters` — a " +
38
51
  "triggerId that does not exist is a 422 listing the ones that do, never a " +
39
52
  "quiet fallback to a different start. " +
40
53
  "\n\nA run may PARK on a step that asks a question instead of finishing. " +
@@ -197,6 +210,89 @@ export function registerRunTools(server, client) {
197
210
  }, async ({ runId, includeSnapshot }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}`, {
198
211
  includeSnapshot: includeSnapshot === true,
199
212
  }))));
213
+ server.tool("list_todo_steps", "The steps across the TENANT that are waiting on a human — every parked " +
214
+ "run, whatever it is parked on. This is the list you read to answer 'is " +
215
+ "anything stuck on me?' without knowing which run to look at. " +
216
+ "\n\nTHE RESPONSE IS ONE PAGE, NOT THE FULL LIST: " +
217
+ "{ items, nextCursor, pageSize, hasMore }. While hasMore is true you have " +
218
+ "NOT seen every waiting step — pass the response's nextCursor back as " +
219
+ "cursor and repeat until nextCursor is null. " +
220
+ "\n\nNote what the page bounds: the cursor walks the waiting RUNS, and " +
221
+ "one run can carry several waiting steps, so `items` may be LONGER than " +
222
+ "pageSize. That is not a bug and not an overflow — pageSize bounds what " +
223
+ "was read, not what came back. A fan-out can park thousands of items on " +
224
+ "one manual step at once, which is why this list is paged at all. " +
225
+ "\n\nread_run_waiting_on answers the same question for a run you already " +
226
+ "have in your hand.", {
227
+ limit: z
228
+ .number()
229
+ .int()
230
+ .optional()
231
+ .describe("Page size, over the waiting runs. Omit for the route's default."),
232
+ cursor: z
233
+ .string()
234
+ .optional()
235
+ .describe("Opaque continuation cursor from the previous response's nextCursor. " +
236
+ "Omit for the first page. Do not parse or construct one."),
237
+ }, async ({ limit, cursor }) => guard(async () => jsonResult(await client.get("/api/v1/runs/todo", { limit, cursor }))));
238
+ server.tool("list_run_session_memory", "List the files an agent wrote to SESSION MEMORY during a run — title, " +
239
+ "kind, tags, size and timestamp for each. Bodies are not included; fetch " +
240
+ "one with read_run_session_memory_file. " +
241
+ "\n\nThis is what an agent left itself between steps, and it is often the " +
242
+ "answer to 'why did it decide that?' when the trace shows the decision " +
243
+ "but not what it was reading. " +
244
+ "\n\nAn empty list is an answer: this run wrote nothing to session memory.", { runId: z.string().describe("The run's id.") }, async ({ runId }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}/session-memory`))));
245
+ server.tool("read_run_session_memory_file", "Read ONE session-memory file's text, by the id from " +
246
+ "list_run_session_memory. The listing carries metadata and this carries " +
247
+ "the body — up to 200 files per run, so fetching all of them to read one " +
248
+ "is the mistake the split exists to prevent. " +
249
+ "\n\nThe file id is scoped to THIS run's session folder: one borrowed " +
250
+ "from another run is a 404, not someone else's file.", {
251
+ runId: z.string().describe("The run's id."),
252
+ fileId: z.string().describe("The file's id, from list_run_session_memory."),
253
+ }, async ({ runId, fileId }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}/session-memory/${fileId}`))));
254
+ server.tool("read_run_outline", "A run's TABLE OF CONTENTS — everything that happened, at the depth it " +
255
+ "happened: the run, its steps, and the items a fan-out step handed out. " +
256
+ "Flat rows with parent pointers; nest them yourself. " +
257
+ "\n\nREAD THIS FIRST when you want to know the shape of a run. It carries " +
258
+ "no bodies, so its size follows the run's SHAPE rather than its content — " +
259
+ "a launch over four thousand items costs about what one over four costs, " +
260
+ "where read_run pays for the whole document. Then fetch only what you " +
261
+ "actually want to look at: read_run_value for a step value, " +
262
+ "read_run_invocation_messages for one agent's transcript. " +
263
+ "\n\n`itemCap` bounds how many items are LISTED per fan-out step. The rest " +
264
+ "are counted in that step's `counts.truncated` and live on the paged " +
265
+ "item-results surface — nothing is dropped in silence.", {
266
+ runId: z.string().describe("The run's id."),
267
+ itemCap: z
268
+ .number()
269
+ .int()
270
+ .optional()
271
+ .describe("Max items listed per fan-out step. Anything beyond it is counted in " +
272
+ "`counts.truncated`, not hidden."),
273
+ }, async ({ runId, itemCap }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}/outline`, { item_cap: itemCap }))));
274
+ server.tool("read_run_value", "Fetch ONE large step value by its digest — the body behind a marker in " +
275
+ "read_run's `stepStates`. A run detail carries handles rather than " +
276
+ "megabytes; this is how you open one of them, when you have decided you " +
277
+ "need it. " +
278
+ "\n\nThe digest is scoped to THIS run: one you saw in another run is not " +
279
+ "readable here, and asking gives a 404 rather than someone else's value.", {
280
+ runId: z.string().describe("The run's id."),
281
+ digest: z
282
+ .string()
283
+ .describe("The value's digest, from the marker in read_run's `stepStates`."),
284
+ }, async ({ runId, digest }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}/values/${digest}`))));
285
+ server.tool("read_run_invocation_messages", "Read ONE agent invocation's transcript — the conversation behind a row in " +
286
+ "read_run's `agentInvocations`, which lists each invocation with its " +
287
+ "metadata and a `messageCount` but not its messages. " +
288
+ "\n\nThis is the read for 'what did this agent actually say?'. Fetch the " +
289
+ "one invocation you are asking about: a run's transcripts together are " +
290
+ "routinely larger than everything else in it combined.", {
291
+ runId: z.string().describe("The run's id."),
292
+ invocationId: z
293
+ .string()
294
+ .describe("The invocation's id, from read_run's `agentInvocations`."),
295
+ }, async ({ runId, invocationId }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}/invocations/${invocationId}/messages`))));
200
296
  server.tool("read_run_trace", "Read a run's chronological tool-call trace — each entry has the step, the " +
201
297
  "tool, its arguments, its output, and any error. This is what you read to " +
202
298
  "work out WHY a run behaved as it did.", { runId: z.string().describe("The run's id.") }, async ({ runId }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}/trace`))));
@@ -270,6 +366,45 @@ export function registerRunTools(server, client) {
270
366
  stepId: z.string().describe("The suspended step's id, from read_run_waiting_on."),
271
367
  answer: z.string().describe("The answer text the step is waiting for."),
272
368
  }, async ({ runId, stepId, answer }) => guard(async () => jsonResult(await client.post(`/api/v1/runs/${runId}/steps/${stepId}/answer`, { answer }))));
369
+ server.tool("complete_run_step", "Complete a MANUAL or DECISION step a run is parked on, so the run " +
370
+ "resumes. Along with answer_run_question, this is what makes \"start a " +
371
+ "run and see what it does\" finishable — a workflow with a manual step " +
372
+ "otherwise waits forever and a test never returns a verdict. " +
373
+ "\n\nONE ROUTE, TWO VERY DIFFERENT ACTS. Know which you are doing: " +
374
+ "\n- On a DECISION step you are CHOOSING A BRANCH. Pass `selectedBranch`. " +
375
+ "That is a routing choice, the same kind of act as answering a question. " +
376
+ "\n- On a MANUAL step you are ASSERTING THAT HUMAN WORK HAPPENED. The " +
377
+ "platform then treats that as fact and everything downstream proceeds on " +
378
+ "it. Only do this when a person has told you the work is done, or on a " +
379
+ "test run of your own where nothing real depended on the step. Never to " +
380
+ "get a stuck run moving. " +
381
+ "\n\nFind the parked step with read_run_waiting_on. Returns the run's " +
382
+ "updated detail. Deciding a PLAN APPROVAL is a different thing again and " +
383
+ "is deliberately not available here — that step exists to get a human's " +
384
+ "review, and an agent approving it would often be approving its own plan.", {
385
+ runId: z.string().describe("The run's id."),
386
+ stepId: z.string().describe("The parked step's id, from read_run_waiting_on."),
387
+ selectedBranch: z
388
+ .string()
389
+ .optional()
390
+ .describe("For a DECISION step: which branch to take."),
391
+ output: z
392
+ .record(z.unknown())
393
+ .optional()
394
+ .describe("For a MANUAL step: the result the step should carry forward."),
395
+ structuredOutputs: z
396
+ .record(z.unknown())
397
+ .optional()
398
+ .describe("Values for the step's declared output schema, when it has one."),
399
+ confirm: z
400
+ .literal(true)
401
+ .describe("Must be true. Acknowledges that on a manual step you are asserting " +
402
+ "human work was done."),
403
+ }, async ({ runId, stepId, selectedBranch, output, structuredOutputs }) => guard(async () => jsonResult(await client.post(`/api/v1/runs/${runId}/steps/${stepId}/complete`, {
404
+ ...(selectedBranch !== undefined ? { selectedBranch } : {}),
405
+ ...(output !== undefined ? { output } : {}),
406
+ ...(structuredOutputs !== undefined ? { structuredOutputs } : {}),
407
+ }))));
273
408
  server.tool("send_run_message", "Send a user turn to a CONVERSATION run that is waiting on one. The server " +
274
409
  "resolves which step is parked, so unlike answer_run_question this takes " +
275
410
  "no stepId. Same caution: the turn is recorded as a person's, so use it " +
@@ -1 +1 @@
1
- {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/tools/runs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/tools/runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Toolboxes — the grouping label a tenant's tools live in (axonity-mcp#54,
3
+ * backend axonity-flow#1012 / epic #1006).
4
+ *
5
+ * Until this module the connector could not see a toolbox at all, and that was
6
+ * not a missing convenience: `create_tool` silently produced an ORPHAN. On the
7
+ * dev tenant 76 tools collapse into eight boxes and one loose tool, so a tool
8
+ * outside every box is not "unfiled", it is the one nobody finds.
9
+ *
10
+ * Three things the schema cannot say, and an agent gets wrong without them:
11
+ *
12
+ * 1. **`set_toolbox_tools` DECLARES the membership.** It is a PUT, not an
13
+ * append: a tool in the box and absent from the list is evicted. Adding one
14
+ * tool means reading the box first — or using `assign_tool_toolbox`, which
15
+ * moves exactly one and takes `null` to ungroup.
16
+ * 2. **A toolbox never changes what an agent MAY call.** An agent is linked to
17
+ * individual tools (`agent.toolIds`), never to a box. The box decides how a
18
+ * tool is ADVERTISED: a boxed tool with `surfacing: "inherit"` is found via
19
+ * `discover_tools` instead of riding in every prompt. "Assign the whole
20
+ * toolbox to this agent" is a bulk write of individual links, and there is
21
+ * no route that does it.
22
+ * 3. **Deleting a toolbox does not delete its tools.** They survive, ungrouped.
23
+ *
24
+ * `set_toolbox_auth` is the one write here that touches a credential, and it
25
+ * runs the same guard as `create_connector`: placeholders or a `secretId`, never
26
+ * a value. A shared credential is the reason the box exists for a family like
27
+ * Microsoft Mail — ten tools, one mailbox, said once — which also makes it the
28
+ * one write whose blast radius is wider than the row it edits.
29
+ */
30
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
31
+ import type { AxonityClient } from "../client.js";
32
+ export declare function registerToolboxTools(server: McpServer, client: AxonityClient): void;