@axonity-ai/mcp 0.3.2 → 0.3.4

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/README.md CHANGED
@@ -220,3 +220,31 @@ npm run typecheck
220
220
  npm test
221
221
  npm run build # emits dist/
222
222
  ```
223
+
224
+ ## Releasing
225
+
226
+ Publishing runs from a maintainer's machine, not from CI. npm restricts tokens
227
+ that bypass 2FA for direct publishing, so a stored `NPM_TOKEN` cannot ship this
228
+ package; `npm login` is the supported path.
229
+
230
+ Run `npm login` in a real terminal — it prints a URL and waits for you to finish
231
+ in the browser, so it needs a session that stays attached (an editor's 2-minute
232
+ command timeout will kill it mid-flow).
233
+
234
+ ```bash
235
+ npm login # browser flow; must complete in an attached terminal
236
+ npm whoami # confirm the account
237
+
238
+ git checkout main && git pull
239
+ npm version <x.y.z> -m "%s" # commits + tags, so the tag matches the tarball
240
+ git push origin main --follow-tags
241
+ npm publish # prepublishOnly builds dist/ fresh
242
+ npm view @axonity-ai/mcp version # confirm
243
+ ```
244
+
245
+ Then cut a GitHub release for the tag. That triggers `Verify release`, which
246
+ rebuilds and packs the tagged commit without publishing — it catches a tag that
247
+ was cut from a state CI cannot install.
248
+
249
+ Keep npm 11 locally: Node 20 bundles npm 10, whose resolver writes an
250
+ incompatible lockfile tree. CI pins npm 11 for the same reason.
@@ -381,6 +381,45 @@ the new tenant too, and a human fills the real value there.
381
381
  - It is NOT transactional. If command N fails, the ones before it stay applied;
382
382
  the error tells you how many landed and which index failed. Re-read and resume
383
383
  from that index rather than replaying the whole list.
384
+ - The response is a SUMMARY (version, appliedCount, launchable, validationIssues,
385
+ stepCount, edgeCount), not the document. That is deliberate: a real workflow
386
+ document overflows the response limit, and a successful call would come back
387
+ looking like a failure — retrying that is how you end up with duplicate steps.
388
+ Ask for the document with \`returnDocument: true\` or \`read_workflow\`.
389
+ - Command payloads are STRICT and complete:
390
+ - \`add_step\` builds a whole step in ONE call — \`name\` and \`position\` are
391
+ required, and \`id\`, \`type\`, \`config\`, \`contract\`, \`inputs\` and
392
+ \`outputs\` are accepted next to them. No follow-up \`update_step\` is needed
393
+ just to fill the step in.
394
+ - \`add_edge\` takes the document's own \`from\`/\`to\` as well as
395
+ \`fromStepId\`/\`toStepId\`, and keeps an \`id\` you supply.
396
+ - An unknown or misspelled key is a 422 naming it, not a silent drop — so
397
+ spelling matters and you are told when it is wrong.
398
+
399
+ ## Two platform invariants that look like bugs
400
+ Both are deliberate, both run after EVERY edit, and both now report themselves in
401
+ the mutation response under \`systemAdjustments\` — so you no longer have to diff
402
+ a document to find out what the platform did.
403
+ - **A bound input's contract is derived, not authored.** An input that reads an
404
+ upstream output takes its contract — description included — FROM that output.
405
+ Write the text on the producing step's output; a downstream description changing
406
+ when you edit an output is this rule at work, not the platform overwriting you.
407
+ The inputs it re-derived come back in \`rederivedInputs\`.
408
+ - **Every step reaches the END point.** The platform guarantees it and wires that
409
+ edge itself; the edges it added or removed come back in \`addedEdges\` /
410
+ \`removedEdges\`. An edge you did not ask for is this, not corruption.
411
+
412
+ ## Validating: two questions, two calls
413
+ - \`validate_workflow({ workflowId })\` checks the STORED workflow against the
414
+ tenant catalog — it confirms the agents, tools and flows the steps reference
415
+ actually exist. This is the "can this run?" answer, and it comes back with
416
+ \`catalogChecked: true\`.
417
+ - \`validate_workflow({ document })\` is stateless and read-only-token safe, but
418
+ without a catalog it can only judge STRUCTURE: \`launchable\` there means the
419
+ graph is sound, not that it will run. It says so with \`catalogChecked: false\`.
420
+ - Pass exactly one. Before telling a human a workflow is ready, check
421
+ \`catalogChecked\` — a green structural verdict is the easiest thing to
422
+ over-read.
384
423
 
385
424
  ## Triggers
386
425
  - A published workflow still does nothing until it has a trigger. Add one with
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/tools/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyYnB,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,2EAA2E;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,4EAA4E;QAC5E,uEAAuE;QACvE,kBAAkB,EACpB,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAC1E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/tools/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgbnB,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,2EAA2E;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,4EAA4E;QAC5E,uEAAuE;QACvE,kBAAkB,EACpB,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAC1E,CAAC;AACJ,CAAC"}
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import { z } from "zod";
13
13
  import { assertPlaceholderCredentials } from "./credentials.js";
14
- import { guard, jsonResult } from "./result.js";
14
+ import { detachResult, guard, jsonResult } from "./result.js";
15
15
  export function registerPersonaTools(server, client) {
16
16
  server.tool("read_agent_persona", "Read an agent's persona (voice/character). A persona is 1:1 with an agent — " +
17
17
  "there is no standalone persona list.", { agentId: z.string().describe("The agent's id.") }, async ({ agentId }) => guard(async () => jsonResult(await client.get(`/api/v1/agents/${agentId}/persona`))));
@@ -73,15 +73,14 @@ export function registerAttachTools(server, client) {
73
73
  : ""), shape, async (args) => guard(async () => jsonResult(await client.post(path(args[firstArg], args[secondArg])))));
74
74
  server.tool(`detach_${subject}_from_${target}`, `Unscope a ${subject.replace("_", " ")} from a ${target}. This only ` +
75
75
  `removes the link — the ${subject.replace("_", " ")} itself is not deleted ` +
76
- `and stays available to attach elsewhere.` +
77
- (readBack ? ` Confirm what is left with \`${readBack}\`.` : ""), shape, async (args) => guard(async () => {
78
- await client.del(path(args[firstArg], args[secondArg]));
79
- return jsonResult({
80
- detached: true,
81
- [firstArg]: args[firstArg],
82
- [secondArg]: args[secondArg],
83
- });
84
- }));
76
+ `and stays available to attach elsewhere. The response is the SERVER'S ` +
77
+ `answer, not a success claim by this connector: a detach that had nothing ` +
78
+ `to remove reports that instead of failing, so read the body rather than ` +
79
+ `assuming the link is gone.` +
80
+ (readBack ? ` Confirm what is left with \`${readBack}\`.` : ""), shape, async (args) => guard(async () => detachResult(await client.del(path(args[firstArg], args[secondArg])), {
81
+ readBack,
82
+ request: { [firstArg]: args[firstArg], [secondArg]: args[secondArg] },
83
+ })));
85
84
  };
86
85
  link("skill", "agent", (agentId, skillId) => `/api/v1/agents/${agentId}/skills-v2/${skillId}`, "agentId", "skillId", "list_agent_skills");
87
86
  // No read-back for the workflow-scoped variant: the backend has no
@@ -1 +1 @@
1
- {"version":3,"file":"extras.js","sourceRoot":"","sources":["../../src/tools/extras.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,8EAA8E;QAC5E,sCAAsC,EACxC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EACnD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CACpB,KAAK,CAAC,KAAK,IAAI,EAAE,CACf,UAAU,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,OAAO,UAAU,CAAC,CAAC,CAClE,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,0EAA0E,EAC1E;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/C,MAAM,EAAE,CAAC;aACN,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACnB,QAAQ,CAAC,6DAA6D,CAAC;KAC3E,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAC5B,KAAK,CAAC,KAAK,IAAI,EAAE,CACf,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,OAAO,UAAU,EAAE,MAAM,CAAC,CAAC,CAC3E,CACJ,CAAC;IAEF,yEAAyE;IACzE,+EAA+E;IAC/E,6EAA6E;IAC7E,4EAA4E;IAC5E,6DAA6D;AAC/D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,yEAAyE;QACvE,iFAAiF,EACnF;QACE,MAAM,EAAE,CAAC;aACN,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACnB,QAAQ,CAAC,mEAAmE,CAAC;KACjF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACnB,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,UAAU,CACf,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,+EAA+E;QAC7E,gDAAgD,EAClD;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACnD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC/E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACxE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,CACxC,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,UAAU,CACf,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,EAAE;YACtC,eAAe;YACf,IAAI,EAAE,WAAW;YACjB,GAAG,MAAM;SACV,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,MAAqB;IAErB;;;;OAIG;IACH,MAAM,IAAI,GAAG,CACX,OAAe,EACf,MAAc,EACd,IAAsC,EACtC,QAAgB,EAChB,SAAiB;IACjB;;;;OAIG;IACH,QAAiB,EACjB,EAAE;QACF,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAElE,MAAM,CAAC,IAAI,CACT,UAAU,OAAO,OAAO,MAAM,EAAE,EAChC,WAAW,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,MAAM,WAAW,MAAM,WAAW;YAC7E,CAAC,QAAQ;gBACP,CAAC,CAAC,4BAA4B,QAAQ,6BAA6B,MAAM,KAAK;oBAC5E,6DAA6D,MAAM,QAAQ;oBAC3E,cAAc;gBAChB,CAAC,CAAC,EAAE,CAAC,EACT,KAAK,EACL,KAAK,EAAE,IAA4B,EAAE,EAAE,CACrC,KAAK,CAAC,KAAK,IAAI,EAAE,CACf,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CACrE,CACJ,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,UAAU,OAAO,SAAS,MAAM,EAAE,EAClC,aAAa,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,MAAM,cAAc;YACnE,0BAA0B,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,yBAAyB;YAC5E,0CAA0C;YAC1C,CAAC,QAAQ,CAAC,CAAC,CAAC,gCAAgC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EACjE,KAAK,EACL,KAAK,EAAE,IAA4B,EAAE,EAAE,CACrC,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACxD,OAAO,UAAU,CAAC;gBAChB,QAAQ,EAAE,IAAI;gBACd,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAC1B,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC,CAAC,CACL,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CACF,OAAO,EACP,OAAO,EACP,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,kBAAkB,OAAO,cAAc,OAAO,EAAE,EACtE,SAAS,EACT,SAAS,EACT,mBAAmB,CACpB,CAAC;IACF,mEAAmE;IACnE,kEAAkE;IAClE,IAAI,CACF,OAAO,EACP,UAAU,EACV,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,qBAAqB,UAAU,cAAc,OAAO,EAAE,EAC/E,YAAY,EACZ,SAAS,CACV,CAAC;IACF,IAAI,CACF,QAAQ,EACR,OAAO,EACP,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,kBAAkB,OAAO,aAAa,QAAQ,EAAE,EACvE,SAAS,EACT,UAAU,EACV,qBAAqB,CACtB,CAAC;IACF,qEAAqE;IACrE,uEAAuE;IACvE,IAAI,CACF,WAAW,EACX,OAAO,EACP,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,OAAO,mBAAmB,KAAK,EAAE,EACvE,SAAS,EACT,OAAO,EACP,2BAA2B,CAC5B,CAAC;IAEF;;;;;OAKG;IACH,MAAM,SAAS,GAAG,CAChB,OAAe,EACf,MAAc,EACd,IAAiC,EACjC,EAAE;QACF,MAAM,CAAC,IAAI,CACT,cAAc,MAAM,EAAE,EACtB,YAAY,OAAO,oDAAoD;YACrE,UAAU,OAAO,yDAAyD;YAC1E,wDAAwD,EAC1D,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EACnD,KAAK,EAAE,EAAE,OAAO,EAAuB,EAAE,EAAE,CACzC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACjE,CAAC;IACJ,CAAC,CAAC;IAEF,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACvE,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACzE,SAAS,CACP,eAAe,EACf,gBAAgB,EAChB,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,4EAA4E;QAC1E,2EAA2E;QAC3E,sCAAsC,EACxC,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CACpF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,uEAAuE;QACrE,oEAAoE;QACpE,uEAAuE;QACvE,qEAAqE;QACrE,oEAAoE,EACtE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EACjD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACnB,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,QAAQ,CAAC,CAAC,CAAC,CACpF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,0DAA0D,EAC1D,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,EAC9D,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACtB,KAAK,CAAC,KAAK,IAAI,EAAE,CACf,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,2BAA2B,SAAS,QAAQ,CAAC,CAAC,CAC5E,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"extras.js","sourceRoot":"","sources":["../../src/tools/extras.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * module is only the linking layer that the generic registrar can't express.
12
12
  */
13
13
  import { z } from "zod";
14
- import { guard, jsonResult } from "./result.js";
14
+ import { detachResult, guard, jsonResult } from "./result.js";
15
15
  /** The two prompt channels a snippet can be placed in. */
16
16
  const TARGET = z
17
17
  .enum(["system", "user"])
@@ -79,10 +79,13 @@ export function registerPromptPlacementTools(server, client) {
79
79
  }))));
80
80
  server.tool("detach_prompt_snippet_from_flow_step", "Remove a prompt snippet from a flow step's stack. This only unlinks it — the " +
81
81
  "snippet itself is not deleted and stays available to place elsewhere. " +
82
- "Identify the link by its linkId (from list_flow_step_prompts).", { linkId: z.string().describe("The attachment's link id (not the snippet id).") }, async ({ linkId }) => guard(async () => {
83
- await client.del(`/api/v1/flow-step-prompts/${linkId}`);
84
- return jsonResult({ detached: true, linkId });
85
- }));
82
+ "Identify the link by its linkId (from list_flow_step_prompts). This route " +
83
+ "answers 204 with no body, so the result confirms the call was accepted and " +
84
+ "nothing more — read the stack back with list_flow_step_prompts to see what " +
85
+ "is actually attached.", { linkId: z.string().describe("The attachment's link id (not the snippet id).") }, async ({ linkId }) => guard(async () => detachResult(await client.del(`/api/v1/flow-step-prompts/${linkId}`), {
86
+ readBack: "list_flow_step_prompts",
87
+ request: { linkId },
88
+ })));
86
89
  server.tool("read_workflow_prompt_stacks", "Resolve a workflow to its flow steps and each step's prompt stack in one " +
87
90
  "read: per step you get its flowStepId, name, and its system/user prompt " +
88
91
  "snippets (with link ids and order). This is how you discover the " +
@@ -1 +1 @@
1
- {"version":3,"file":"promptPlacement.js","sourceRoot":"","sources":["../../src/tools/promptPlacement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promptPlacement.js","sourceRoot":"","sources":["../../src/tools/promptPlacement.ts"],"names":[],"mappings":"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"}
@@ -17,5 +17,29 @@ export declare function errorResult(err: unknown): {
17
17
  }[];
18
18
  isError: boolean;
19
19
  };
20
+ /**
21
+ * The result of a detach call — the SERVER's answer, never a local assertion.
22
+ *
23
+ * These tools used to return a hand-made `{ detached: true }` and throw the
24
+ * response away. That is how 27 consecutive detach commands all reported
25
+ * success against links that did not exist: the documents applied tenant-wide,
26
+ * nothing was ever detached, and the client said otherwise every time (#24).
27
+ *
28
+ * Most detach routes do answer — `SkillLinkResponse` carries `linked`, the
29
+ * policy and reference-doc routes have bodies of their own — so forwarding is
30
+ * enough to make "removed something" distinguishable from "removed nothing".
31
+ * Where a route is 204 by design (`DELETE /flow-step-prompts/{id}`) there is
32
+ * nothing to forward, and the honest answer is to say the call completed and
33
+ * name the read-back, not to invent a verdict.
34
+ */
35
+ export declare function detachResult(body: unknown, options?: {
36
+ readBack?: string;
37
+ request?: Record<string, string>;
38
+ }): {
39
+ content: {
40
+ type: "text";
41
+ text: string;
42
+ }[];
43
+ };
20
44
  /** Wrap a handler so any thrown error becomes a clean tool error. */
21
45
  export declare function guard(fn: () => Promise<ReturnType<typeof jsonResult>>): Promise<ReturnType<typeof jsonResult> | ReturnType<typeof errorResult>>;
@@ -18,6 +18,33 @@ export function errorResult(err) {
18
18
  : String(err);
19
19
  return { content: [{ type: "text", text: message }], isError: true };
20
20
  }
21
+ /**
22
+ * The result of a detach call — the SERVER's answer, never a local assertion.
23
+ *
24
+ * These tools used to return a hand-made `{ detached: true }` and throw the
25
+ * response away. That is how 27 consecutive detach commands all reported
26
+ * success against links that did not exist: the documents applied tenant-wide,
27
+ * nothing was ever detached, and the client said otherwise every time (#24).
28
+ *
29
+ * Most detach routes do answer — `SkillLinkResponse` carries `linked`, the
30
+ * policy and reference-doc routes have bodies of their own — so forwarding is
31
+ * enough to make "removed something" distinguishable from "removed nothing".
32
+ * Where a route is 204 by design (`DELETE /flow-step-prompts/{id}`) there is
33
+ * nothing to forward, and the honest answer is to say the call completed and
34
+ * name the read-back, not to invent a verdict.
35
+ */
36
+ export function detachResult(body, options = {}) {
37
+ const empty = body === undefined || body === null || body === "";
38
+ if (!empty)
39
+ return jsonResult(body);
40
+ return jsonResult({
41
+ completed: true,
42
+ ...(options.request ? { request: options.request } : {}),
43
+ note: "The server accepted this and returned no content. That is NOT a " +
44
+ "confirmation that a link existed or that anything was removed" +
45
+ (options.readBack ? ` — check with ${options.readBack}.` : "."),
46
+ });
47
+ }
21
48
  /** Wrap a handler so any thrown error becomes a clean tool error. */
22
49
  export async function guard(fn) {
23
50
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/tools/result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,OAAO,GACX,GAAG,YAAY,eAAe;QAC5B,CAAC,CAAC,GAAG,CAAC,OAAO;QACb,CAAC,CAAC,GAAG,YAAY,KAAK;YACpB,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAgD;IAEhD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/tools/result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,OAAO,GACX,GAAG,YAAY,eAAe;QAC5B,CAAC,CAAC,GAAG,CAAC,OAAO;QACb,CAAC,CAAC,GAAG,YAAY,KAAK;YACpB,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAa,EACb,UAAmE,EAAE;IAErE,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAEpC,OAAO,UAAU,CAAC;QAChB,SAAS,EAAE,IAAI;QACf,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI,EACF,kEAAkE;YAClE,+DAA+D;YAC/D,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;KAClE,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAgD;IAEhD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -9,17 +9,44 @@
9
9
  import { z } from "zod";
10
10
  import { guard, jsonResult } from "./result.js";
11
11
  export function registerValidationTools(server, client) {
12
- server.tool("validate_workflow", "Check a workflow document for structural and schema problems. Returns " +
13
- "`launchable` plus an `issues` list (each with code, message, severity, " +
14
- "stepIds, edgeIds). STATELESS: it validates the document you pass, does " +
15
- "not read or write the stored workflow, so read-only service tokens can call it. " +
16
- "It does NOT verify that referenced agents or tools exist. Call it after " +
17
- "apply_workflow_mutations " +
18
- "and before request_publish_workflow.", {
12
+ server.tool("validate_workflow", "Check a workflow for problems. Returns `launchable`, `catalogChecked`, and an " +
13
+ "`issues` list (each with code, message, severity, stepIds, edgeIds). " +
14
+ "\n\nPass EXACTLY ONE of workflowId or document — they answer different " +
15
+ "questions:" +
16
+ "\n- workflowId → validates the STORED workflow against this tenant's " +
17
+ "catalog. This is the real 'can this run?': it confirms the agents, tools " +
18
+ "and flows the steps reference actually exist. Answers catalogChecked: true." +
19
+ "\n- document → validates the document you pass, STATELESSLY. No database, " +
20
+ "so read-only service tokens can call it, but with no catalog the " +
21
+ "cross-entity checks cannot run: `launchable` here means 'structurally " +
22
+ "sound', NOT 'this will run'. Answers catalogChecked: false. Use it for a " +
23
+ "draft you have not saved, or for fast feedback while editing." +
24
+ "\n\nA green verdict is what a reader remembers, so check `catalogChecked` " +
25
+ "before telling anyone a workflow is ready. Call this after " +
26
+ "apply_workflow_mutations and before request_publish_workflow.", {
27
+ workflowId: z
28
+ .string()
29
+ .optional()
30
+ .describe("Validate this STORED workflow against the tenant catalog. Omit if you " +
31
+ "are passing a document."),
19
32
  document: z
20
33
  .record(z.unknown())
21
- .describe("The workflow document to validate (as returned by read_workflow)."),
22
- }, async ({ document }) => guard(async () => jsonResult(await client.post("/api/v1/workflows/validate", { document }))));
34
+ .optional()
35
+ .describe("Validate this document statelessly (as returned by read_workflow). " +
36
+ "Omit if you are passing a workflowId."),
37
+ }, async ({ workflowId, document }) => guard(async () => {
38
+ // Refuse the ambiguous call rather than silently preferring one: the two
39
+ // routes answer different questions, and guessing would hand back a
40
+ // verdict for something the caller did not ask about.
41
+ if ((workflowId === undefined) === (document === undefined)) {
42
+ throw new Error("Pass exactly one of workflowId or document. workflowId validates the " +
43
+ "stored workflow against the tenant catalog (the 'can this run?' " +
44
+ "answer); document validates an unsaved document structurally.");
45
+ }
46
+ return jsonResult(workflowId === undefined
47
+ ? await client.post("/api/v1/workflows/validate", { document })
48
+ : await client.post(`/api/v1/workflows/${workflowId}/validate`));
49
+ }));
23
50
  server.tool("analyze_workflow_reachable_outputs", "List the outputs a given step can read — i.e. what upstream steps make " +
24
51
  "available to it. Use it to bind a step's inputs to real upstream outputs " +
25
52
  "instead of guessing field names. Stateless, and safe for read-only service tokens.", {
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,31 @@
19
19
  */
20
20
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
21
21
  import type { AxonityClient } from "../client.js";
22
+ /** The response shape of a single mutation call. */
23
+ interface MutationResponse {
24
+ version: number;
25
+ document?: unknown;
26
+ launchable?: boolean;
27
+ validationIssues?: unknown[];
28
+ /**
29
+ * What the platform changed on its own in this call: the end-step edges it
30
+ * wired, and the bound inputs whose contract it re-derived. Ids and names
31
+ * only, by design, so it rides safely on the summary — and it is the whole
32
+ * point of forwarding it: an author who found edges they never asked for
33
+ * previously had to diff the entire document to see them.
34
+ */
35
+ systemAdjustments?: {
36
+ addedEdges?: unknown[];
37
+ removedEdges?: unknown[];
38
+ rederivedInputs?: unknown[];
39
+ };
40
+ }
41
+ /**
42
+ * Project a mutation response into the compact summary a caller acts on:
43
+ * the new version, what landed, the launchable verdict, validation issues, and
44
+ * cheap orientation counts taken from the document before it is dropped.
45
+ */
46
+ export declare function summarizeMutation(response: MutationResponse, appliedCount: number, returnDocument: boolean): Record<string, unknown>;
22
47
  /**
23
48
  * Split one command into the `{ type, payload }` pair the backend expects.
24
49
  *
@@ -31,3 +56,4 @@ export declare function toMutationBody(mutation: Record<string, unknown>, index:
31
56
  payload: Record<string, unknown>;
32
57
  };
33
58
  export declare function registerWorkflowMutations(server: McpServer, client: AxonityClient): void;
59
+ export {};
@@ -24,6 +24,83 @@ import { guard, jsonResult } from "./result.js";
24
24
  const CONFIRM = z
25
25
  .literal(true)
26
26
  .describe("Must be true. Acknowledges you understand this is destructive.");
27
+ /** True when the platform reported doing something of its own accord. */
28
+ function hasAdjustments(a) {
29
+ if (!a)
30
+ return false;
31
+ return Boolean(a.addedEdges?.length || a.removedEdges?.length || a.rederivedInputs?.length);
32
+ }
33
+ /**
34
+ * Why the document is not forwarded by default (#21).
35
+ *
36
+ * The backend answers every mutation with the WHOLE document. A real workflow
37
+ * runs past 100k characters, which overflows the client's response limit — so a
38
+ * change that SUCCEEDED came back as an error. Believing that error and retrying
39
+ * applies the change twice (with `add_step`, a duplicate step). It also made the
40
+ * deliberate non-transactional semantics far worse than they need to be: an
41
+ * unreadable failure on a partially-applied sequence.
42
+ *
43
+ * So the client projects the response down to what a caller acts on, and hands
44
+ * over the document only when asked. Two caps keep even the summary bounded:
45
+ * `validationIssues` is caller-controlled in size, and an API error message can
46
+ * carry the server's body (see `withDetail` in errors.ts) — which is another way
47
+ * a document can reach the response.
48
+ */
49
+ const MAX_VALIDATION_ISSUES = 25;
50
+ const MAX_REASON_CHARS = 1500;
51
+ /** Shorten a string, saying so rather than truncating silently. */
52
+ function cap(text, limit) {
53
+ if (text.length <= limit)
54
+ return text;
55
+ return `${text.slice(0, limit)}… [truncated ${text.length - limit} of ${text.length} characters]`;
56
+ }
57
+ /** Count array members at a path in the document, when it looks as expected. */
58
+ function countAt(document, key) {
59
+ const steps = document?.steps;
60
+ const value = steps?.[key];
61
+ return Array.isArray(value) ? value.length : undefined;
62
+ }
63
+ /**
64
+ * Project a mutation response into the compact summary a caller acts on:
65
+ * the new version, what landed, the launchable verdict, validation issues, and
66
+ * cheap orientation counts taken from the document before it is dropped.
67
+ */
68
+ export function summarizeMutation(response, appliedCount, returnDocument) {
69
+ const issues = Array.isArray(response.validationIssues) ? response.validationIssues : [];
70
+ const kept = issues.slice(0, MAX_VALIDATION_ISSUES);
71
+ const stepCount = countAt(response.document, "all");
72
+ const edgeCount = countAt(response.document, "edges");
73
+ return {
74
+ version: response.version,
75
+ appliedCount,
76
+ ...(response.launchable === undefined ? {} : { launchable: response.launchable }),
77
+ ...(stepCount === undefined ? {} : { stepCount }),
78
+ ...(edgeCount === undefined ? {} : { edgeCount }),
79
+ // Only when something actually happened — an empty object on every response
80
+ // trains a reader to skip the field.
81
+ ...(hasAdjustments(response.systemAdjustments)
82
+ ? { systemAdjustments: response.systemAdjustments }
83
+ : {}),
84
+ validationIssues: kept,
85
+ ...(issues.length > kept.length
86
+ ? {
87
+ validationIssuesTruncated: issues.length - kept.length,
88
+ validationIssuesTotal: issues.length,
89
+ }
90
+ : {}),
91
+ // Absent by default — say where it is rather than leaving the caller guessing.
92
+ ...(returnDocument
93
+ ? { document: response.document }
94
+ : { documentOmitted: "Summary only. Pass returnDocument: true, or call read_workflow." }),
95
+ };
96
+ }
97
+ /** The `returnDocument` opt-in, shared by both document-returning tools. */
98
+ const RETURN_DOCUMENT = z
99
+ .boolean()
100
+ .optional()
101
+ .describe("Include the full workflow document in the response. Defaults to false — a " +
102
+ "real document can exceed the response limit and turn a successful call " +
103
+ "into an error. Prefer read_workflow when you need it.");
27
104
  /**
28
105
  * Split one command into the `{ type, payload }` pair the backend expects.
29
106
  *
@@ -46,9 +123,12 @@ export function toMutationBody(mutation, index) {
46
123
  }
47
124
  /** Compose the error for a mutation that failed part-way through a sequence. */
48
125
  function sequenceError(index, total, type, version, cause) {
49
- const reason = cause instanceof AxonityApiError || cause instanceof Error
126
+ // An AxonityApiError message can carry the server's response body, and that
127
+ // body is often the whole document — the very thing this tool refuses to
128
+ // forward. Cap it so a mid-sequence failure stays readable (#21).
129
+ const reason = cap(cause instanceof AxonityApiError || cause instanceof Error
50
130
  ? cause.message
51
- : String(cause);
131
+ : String(cause), MAX_REASON_CHARS);
52
132
  const applied = index;
53
133
  const summary = JSON.stringify({ appliedCount: applied, failedIndex: index, failedType: type, currentVersion: version }, null, 2);
54
134
  return new Error(`Mutation ${index + 1} of ${total} (\`${type}\`) failed: ${reason}\n\n` +
@@ -62,15 +142,40 @@ export function registerWorkflowMutations(server, client) {
62
142
  "connect edges, set conditions). Read the workflow first for its version. " +
63
143
  "Commands are applied IN ORDER, one backend call each, with the version " +
64
144
  "threaded automatically — pass the version you read, not one per command. " +
65
- "Returns the new authoritative document, version, and validation state. " +
66
- "Not transactional: if command N fails, commands before it stay applied and " +
67
- "the error reports how many landed. On a 409 conflict, re-read and retry. " +
68
- 'Each command is `{ "type": "add_step", "payload": { … } }`; the flat form ' +
69
- '`{ "type": "add_step", … }` is accepted too. Valid types: update_workflow, ' +
70
- "add_trigger, update_trigger, remove_trigger, update_trigger_operator, " +
71
- "group_triggers, ungroup_triggers, move_trigger, add_step, add_loop, " +
72
- "update_step, remove_step, move_step, add_edge, update_edge, remove_edge, " +
73
- "convert_to_loop, setup_loop_decision, advanced_edit.", {
145
+ "\n\nRESPONSE IS A SUMMARY, not the document: version, appliedCount, " +
146
+ "launchable, validationIssues, stepCount, edgeCount. A real workflow " +
147
+ "document can exceed the response limit, which would turn a call that " +
148
+ "SUCCEEDED into an error you must not retry. Pass returnDocument: true, or " +
149
+ "call read_workflow, when you need the document itself. " +
150
+ "\n\nNot transactional: if command N fails, commands before it stay applied " +
151
+ "and the error reports how many landed and which index failed — resume from " +
152
+ "there, do NOT replay the list. On a 409 conflict, re-read and retry. " +
153
+ '\n\nEach command is `{ "type": "add_step", "payload": { … } }`; the flat ' +
154
+ 'form `{ "type": "add_step", … }` is accepted too. Valid types: ' +
155
+ "update_workflow, add_trigger, update_trigger, remove_trigger, " +
156
+ "update_trigger_operator, group_triggers, ungroup_triggers, move_trigger, " +
157
+ "add_step, add_loop, update_step, remove_step, move_step, add_edge, " +
158
+ "update_edge, remove_edge, add_decision_condition, convert_to_loop, " +
159
+ "setup_loop_decision, advanced_edit, attach_output_schema, " +
160
+ "detach_output_schema." +
161
+ "\n\nPAYLOAD CONTRACT:" +
162
+ "\n- add_step builds a COMPLETE step in ONE call: { name, position: " +
163
+ "{after|before: <stepId>, …} } are required, and id, type, typeId, config, " +
164
+ "contract, inputs, outputs and edgeType are all accepted alongside them. No " +
165
+ "follow-up update_step is needed merely to fill the step in." +
166
+ "\n- add_edge accepts the document's own from/to as well as " +
167
+ "fromStepId/toStepId, and HONOURS an id you supply rather than replacing it, " +
168
+ "so ids stay diffable against an environment you are reproducing." +
169
+ "\n- Payloads are STRICT: an unknown or misspelled key is a 422 that names " +
170
+ "it, never a silent drop. Read the error instead of assuming a value landed." +
171
+ "\n\nTWO INVARIANTS RUN AFTER EVERY EDIT, and the response reports what they " +
172
+ "did in `systemAdjustments` (addedEdges / removedEdges / rederivedInputs):" +
173
+ "\n- Every step is guaranteed to reach the END point; the platform wires that " +
174
+ "edge itself. An edge you did not ask for is this, and it is listed." +
175
+ "\n- A bound input's contract, its description included, is DERIVED from the " +
176
+ "output it reads and cannot be authored on its own. Set the text on the " +
177
+ "PRODUCING step's output; a downstream description changing by itself is this " +
178
+ "rule at work, and the inputs it re-derived are listed.", {
74
179
  id: z.string().describe("The workflow's id."),
75
180
  expectedVersion: z
76
181
  .number()
@@ -83,7 +188,8 @@ export function registerWorkflowMutations(server, client) {
83
188
  .describe("Mutation commands to apply in order, each a JSON object with a " +
84
189
  "`type` and its arguments (camelCase), either nested under " +
85
190
  "`payload` or inline."),
86
- }, async ({ id, expectedVersion, mutations }) => guard(async () => {
191
+ returnDocument: RETURN_DOCUMENT,
192
+ }, async ({ id, expectedVersion, mutations, returnDocument }) => guard(async () => {
87
193
  // Reject the whole batch on a malformed command before applying any of
88
194
  // it — a shape error is the agent's mistake, not a partial failure.
89
195
  const bodies = mutations.map((m, i) => toMutationBody(m, i));
@@ -98,13 +204,16 @@ export function registerWorkflowMutations(server, client) {
98
204
  }
99
205
  version = last.version;
100
206
  }
101
- return jsonResult({ ...last, appliedCount: bodies.length });
207
+ return jsonResult(summarizeMutation(last ?? { version }, bodies.length, returnDocument === true));
102
208
  }));
103
- server.tool("replace_workflow_document", "Replace the ENTIRE workflow document in one atomic call. Read the workflow first to " +
104
- "get the current version, then call this again only after rereading on a stale " +
105
- "`409`.\n" +
106
- "Unlike `apply_workflow_mutations`, this is a single PUT request and treats the " +
107
- "payload as the complete editable document.", {
209
+ server.tool("replace_workflow_document", "Replace the ENTIRE workflow document in one atomic call. Read the workflow " +
210
+ "first to get the current version, then call this again only after rereading " +
211
+ "on a stale `409`. Unlike `apply_workflow_mutations`, this is a single PUT " +
212
+ "and treats the payload as the complete editable document — prefer the " +
213
+ "mutation commands, which the backend validates and normalises per edit. " +
214
+ "\n\nThe response is the same SUMMARY (version, launchable, " +
215
+ "validationIssues, stepCount, edgeCount), not the stored document; pass " +
216
+ "returnDocument: true or call read_workflow for that.", {
108
217
  id: z.string().describe("The workflow's id."),
109
218
  expectedVersion: z
110
219
  .number()
@@ -113,10 +222,13 @@ export function registerWorkflowMutations(server, client) {
113
222
  document: z
114
223
  .record(z.unknown())
115
224
  .describe("The complete workflow document object to persist."),
116
- }, async ({ id, expectedVersion, document }) => guard(async () => jsonResult(await client.put(`/api/v1/workflows/${id}`, {
117
- expectedVersion,
118
- document,
119
- }))));
225
+ returnDocument: RETURN_DOCUMENT,
226
+ }, async ({ id, expectedVersion, document, returnDocument }) => guard(async () => {
227
+ const response = await client.put(`/api/v1/workflows/${id}`, { expectedVersion, document });
228
+ // One document written, so appliedCount is 1 — the same shape as a
229
+ // single-command sequence, which is what a caller compares against.
230
+ return jsonResult(summarizeMutation(response, 1, returnDocument === true));
231
+ }));
120
232
  server.tool("read_workflow_trigger_parameters", "Read the input parameters a workflow's triggers expect — what a caller must " +
121
233
  "supply to start it. Use this before authoring a webhook/cron/conditional " +
122
234
  "trigger, or before start_workflow_run, so the trigger input matches. Read-only.", { workflowId: z.string().describe("The workflow's id.") }, async ({ workflowId }) => guard(async () => jsonResult(await client.get(`/api/v1/workflows/${workflowId}/trigger-parameters`))));
@@ -1 +1 @@
1
- {"version":3,"file":"workflowMutations.js","sourceRoot":"","sources":["../../src/tools/workflowMutations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflowMutations.js","sourceRoot":"","sources":["../../src/tools/workflowMutations.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axonity-ai/mcp",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Model Context Protocol server for Axonity Flow — lets an external agent (e.g. Claude Code) read, draft, and update workflows, agents and tools in an Axonity tenant.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -20,7 +20,8 @@
20
20
  ],
21
21
  "type": "module",
22
22
  "bin": {
23
- "axonity-mcp": "dist/index.js"
23
+ "axonity-mcp": "dist/index.js",
24
+ "mcp": "dist/index.js"
24
25
  },
25
26
  "files": [
26
27
  "dist"