@axonity-ai/mcp 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -6
- package/dist/tools/conventions.d.ts +1 -1
- package/dist/tools/conventions.js +24 -9
- package/dist/tools/conventions.js.map +1 -1
- package/dist/tools/runs.js +62 -17
- package/dist/tools/runs.js.map +1 -1
- package/dist/tools/validation.js +9 -0
- package/dist/tools/validation.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -524,8 +524,12 @@ you want: `read_run_value` for one large step value (by the digest in
|
|
|
524
524
|
the id in `agentInvocations`). Reading a whole run to find one message is the
|
|
525
525
|
habit these replace.
|
|
526
526
|
|
|
527
|
-
**A run can park rather than finish.**
|
|
528
|
-
|
|
527
|
+
**A run can park rather than finish.** Where you see it depends on what it
|
|
528
|
+
waits on: `list_todo_steps` has every step that waits on a person (a question, a
|
|
529
|
+
plan, a manual or decision step); `read_run_waiting_on` has a timer and an
|
|
530
|
+
answer or callback result on its way; a FOR EACH batch is on
|
|
531
|
+
`read_run_for_each_progress`; a conversation run waits in its chat.
|
|
532
|
+
`answer_run_question` answers an `ask_user` step and
|
|
529
533
|
`send_run_message` sends a turn to a conversation run. Both record the input as
|
|
530
534
|
a person's, so use them on runs you started. Deciding a **plan approval** and
|
|
531
535
|
restarting a stuck run are deliberately absent — the first is the human review
|
|
@@ -554,10 +558,17 @@ arguments) are in the transcript: `read_run`, then
|
|
|
554
558
|
token with the `author` scope, a follow-up the `operate` scope. The Builder chat
|
|
555
559
|
and its files stay out of reach.
|
|
556
560
|
|
|
557
|
-
**`list_todo_steps`** is the
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
+
**`list_todo_steps`** is every step in the tenant waiting on a person: an
|
|
562
|
+
unanswered question, a plan awaiting approval, a manual step or a decision step.
|
|
563
|
+
Each item belongs to one agent or none (`agentId`) — a question or plan to the
|
|
564
|
+
agent that asked, a manual or decision step to the workflow's owner — and
|
|
565
|
+
`agentId` on the call narrows the list to that agent's items. It is paged over
|
|
566
|
+
the waiting **runs**, so `items` can be longer than `pageSize` — one run may
|
|
567
|
+
park several steps — or shorter. Follow `nextCursor` to the end before
|
|
568
|
+
concluding anything about how much is waiting. `read_run_waiting_on` is a
|
|
569
|
+
different read: a run's pending wake-tasks (a timer; an answer or a callback's
|
|
570
|
+
result on its way), where an open question, a FOR EACH batch and a callback
|
|
571
|
+
still running never appear.
|
|
561
572
|
|
|
562
573
|
**What an agent wrote to itself.** `list_run_session_memory` lists the files an
|
|
563
574
|
agent left during a run (metadata only, up to 200 per run) and
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
*/
|
|
49
49
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
50
50
|
import type { AxonityClient } from "../client.js";
|
|
51
|
-
export declare const CONVENTIONS = "# Authoring conventions for Axonity entities\n\nRead this before creating or updating anything.\n\n## What this connector is for\n- AUTHORING: composing an entity from intent \u2014 drafting a tool, an agent, a\n workflow, and wiring them together so the result is CORRECT and COMPLETE\n (every required field set, every reference pointing at something real).\n- REPRODUCING a setup is just authoring it again, from scratch. To recreate an\n agent/workflow/tool, CREATE NEW entities and wire them by their NEW ids \u2014\n never reuse an id you read. There is no \"migration\" and no \"import an id\":\n this connector only ever acts in the ONE tenant its token points at (see\n Tenant), and ids are tenant-local, so an id from anywhere else points at\n nothing (or the wrong thing) here. Read the source for its SHAPE and intent \u2014\n names, field values, which tools an agent uses, which agents a workflow's\n steps run \u2014 then build fresh and capture the ids the create calls return.\n Recreating into a DIFFERENT tenant means running that build while the\n connector is configured with THAT tenant's token \u2014 a separate session. See\n \"Reproducing a setup\" below.\n\n## The authoring loop\n1. `read_*` the entity (and `read_*_published` if you need to see what is live).\n2. Edit the DRAFT: `update_*`, or workflow-edit tools for workflow structure.\n3. Validate before publish: `validate_workflow` / `analyze_workflow_reachable_outputs` / \n `validate_tool_code` / `format_tool_code`. These four save nothing, and a\n read-only token may call them \u2014 except `validate_workflow({ workflowId })`,\n which needs the `author` scope.\n4. Re-read and verify with a saved tool command: `execute_tool` /\n `execute_stored_connector`.\n5. Fix any issues and re-read again.\n6. For a code tool, PROVE it: `dry_run_tool` \u2014 see \"Proving a tool\" below. Skip\n this and `request_publish_tool` will sit blocked forever.\n7. `request_publish_*` \u2014 this only QUEUES a human approval. Publishing many\n entities at once (taking a tenant live) is `request_publish_bulk`, up to 200\n in one call; it is not transactional, so read the per-entry results.\n8. `list_publish_approvals` / `get_publish_approval` to see whether it was\n approved or rejected. Readiness there is recomputed as you read it\n (`readiness` now, `readinessAtRequest` then, `readinessChanged` if it\n moved), so a blocker you saw earlier may already be gone.\n\n9. If something went wrong:\n - Bad edit, entity still exists \u2192 `list_*_versions` then `restore_*_version`\n to roll the draft back to an earlier version.\n - Never published, want a clean slate \u2192 `discard_*_draft` resets the draft to\n the last published state (fails if it was never published \u2014 there's nothing\n to fall back to).\n - Deleted by mistake \u2192 `restore_*` (see \"Delete is recoverable\" below).\n\n## Proving a tool (the publish gate)\nBefore a code tool may be published, the platform requires that its stored code\nhas run cleanly once, at its current version.\n- `dry_run_tool(toolId)` is the run that counts. It executes the tool's OWN\n saved implementation; you supply only sample input. A clean pass clears the\n `dry_run_required` blocker.\n- `execute_tool` does NOT count, however green it comes back. It runs the\n functions YOU pass, which need not be what is stored \u2014 proving nothing about\n what would ship. Use it while drafting code you have not saved yet.\n- Editing the tool afterwards bumps its version and invalidates the proof, so\n dry-run AFTER your last edit.\n- Connectors, builtin-backed validators and platform-shipped tools have no code\n of their own to prove and will refuse (422/403). That is expected, not a\n failure to work around.\n\n## Drafts, not live\n- `create_*` and `update_*` produce a DRAFT. The live runtime is unaffected\n until a human publishes it in Axonity. `flow` has the same rule: runtime uses\n the published snapshot from `read_flow_published` until `request_publish_flow`\n is approved.\n- You cannot publish directly \u2014 the backend refuses a direct publish from a service\n token with a 403, so there is no tool for it and no way around it.\n- A read-only token can only read: any write returns 403. If you see that, ask\n your human for a write-scoped token rather than retrying.\n- `request_publish_*` does NOT publish \u2014 it creates a pending approval a human\n approves in Axonity. Use it when a draft is ready; then tell the user to\n approve it in their Axonity approvals inbox.\n\n## Optimistic locking (always read-then-write)\n- Before `update_*`, call `read_*` and use the `version` you get as\n `expectedVersion` \u2014 in the request BODY. If the update returns a 409\n conflict, someone else changed it \u2014 read again and re-apply your change onto\n the new version.\n- `delete_*` also takes `expectedVersion`, but as an argument on the tool call\n only \u2014 the connector maps it to whatever query-parameter spelling that\n entity's route actually expects (it differs per entity on the wire; you never\n need to know which).\n- `restore_*` and `restore_deleted_*_version` take NO version at all \u2014 a\n restore must never lose to a stale-version guard.\n\n## Errors: branch on the failure, not the words\n- Every error names what went wrong as plainly as the backend allows. For a 409\n specifically, two different problems share that status code and need\n different responses:\n - **Version conflict** \u2014 you had a stale read. Re-read, re-apply, retry.\n - **Reference conflict** \u2014 the entity is referenced by something published or\n live. Retrying will never help. Detach the reference or unpublish the\n referencing entity first.\n The error message tells you which one you hit \u2014 read it, don't assume 409\n always means \"retry.\"\n- A 403 on any write means the token is read-only, or (for a direct publish\n attempt, which no tool makes) that publishing must go through\n `request_publish_*`. Either way: stop, don't retry, tell your human.\n- A 401 means the service token is dead \u2014 missing, wrong, expired, or revoked.\n **The backend deliberately returns the identical message for all four\n causes** so it doesn't leak which applies; you have no way to tell them\n apart and no way to check a token's remaining lifetime in advance (every\n token now expires \u2014 7, 15, 30, 60 or 90 days, chosen when it was minted;\n there is no \"never\"). On any 401: stop, do not retry, and tell your human\n plainly that the configured token is no longer valid and a new one must be\n minted from Axonity \u2192 Settings \u2192 API tokens. Do not guess or imply the cause.\n\n## Field shape\n- All fields are camelCase JSON (e.g. `capabilityTier`, not `capability_tier`).\n ONE documented exception: validator specs \u2014 in an output_schema's\n `schemaBody` (`validators`, `preflight`), a step's\n `contract.output_validators` and a conversation step's\n `answerContract.validators` \u2014 use snake_case keys (`function`,\n `target`, `args`, `when_present`, `inputs`, `error_message`,\n `tool_name`, `validator_name`) \u2014 they are stored verbatim, so they are\n NOT camel-aliased. Send them in snake_case.\n What those keys MEAN, and how a validator is bound to what it judges, is the\n Validators section.\n- `update_*` is a partial change for agents/tools and a partial patch for\n workflows: send only the fields you are changing (plus `expectedVersion`).\n- The backend validates fields; a 422 error names the offending field and why\n (e.g. `body.capabilityTier: Input should be 'economy', 'standard', 'smart' or\n 'reasoning'`). Fix that field and retry \u2014 do not guess at the whole shape.\n- **create/update for tool and agent are STRICT** (`extra=\"forbid\"`): an\n undeclared OR MISSPELLED key is a 422 that names it, not a silent drop. So\n spelling matters and you get told when it is wrong \u2014 good. Other entities are\n more lenient and may drop an unknown key silently; never rely on that.\n- An agent has no tags: what reaches an agent's prompt is a LINK\n (`attach_policy_to_agent`), visible in a table a human can read and edit.\n A role-tag gate on a policy used to decide that invisibly and is refused\n outright now: sending\n `activation.tags` to `create_policy`/`update_policy` is a 422. The two\n surviving gates, `activation.tools` and `activation.delegation`, each say\n something a link cannot \u2014 \"only on turns where this agent holds this tool\",\n and \"only when (not) delegated\".\n\n## After you write, verify\n- A 200 means the request was accepted, NOT that it did what you meant. Re-read\n the entity after a mutation and diff it against your intent \u2014 a partial update\n only changes what you sent, and on the lenient (non-tool/agent) entities an\n unknown key can be dropped silently rather than rejected.\n- Re-reading the ENTITY is not enough for an `attach_*`: those links are stored\n outside the entity body and never appear in `read_agent`. Read them back with\n `list_agent_skills` / `list_agent_policies` / `list_agent_reference_docs`\n (see Wiring, mechanism B).\n- \"Complete\" is your job, not the backend's. A create succeeds with only the\n required fields set; it does not tell you the entity is USABLE. An agent with\n no `toolIds` runs with no tools; a connector tool with an empty\n `implementation` has no endpoint to call; a workflow with steps but no\n trigger never fires. After creating, check the entity has everything its\n purpose needs \u2014 see the per-entity and wiring sections.\n- To test a whole workflow end to end, `start_workflow_run` then read the result\n (`read_run` / `read_run_trace` / `read_run_cost`). Note it runs the PUBLISHED\n workflow and really executes (cost, connector side effects), so publish first,\n and only test-run when a human is expecting it.\n - Read `read_workflow_trigger_parameters` first and pass `triggerId`: a\n workflow can have several starts, each with different fields, and omitting\n it fires whichever comes first. Never send a parameter marked `pinned` \u2014\n the author owns that value and it is overwritten anyway.\n - **A run can park instead of finishing.** A step that asks a question waits\n for an answer, so \"it never came back\" usually means \"it is waiting on you\".\n `read_run_waiting_on` says what for; `answer_run_question` (or\n `send_run_message` on a conversation run) resumes it. Answer your own test\n runs; on a run a human is depending on, the answer is theirs to give.\n - A FOR EACH launch is not one result. `read_run_items_summary` is the\n roll-up (\"4,415 processed \u00B7 12 failed\") and `list_run_items` the rows \u2014\n with `outcome: \"failed\"`, because the failures are scattered and filtering\n page one finds none of them.\n- A LIST is not the whole list. `list_workflow_runs` returns a page \u2014\n `{ items, nextCursor, pageSize, hasMore }`, 20 by default \u2014 so counting or\n concluding from page one while `hasMore` is true is how you answer confidently\n and wrongly. Follow `nextCursor` until it is null. And that route lists\n LAUNCHES: a 4,415-item FOR EACH is ONE entry carrying `forEachProgress`, so\n rows are not runs. `list_runs` pages the same way, by `nextCursor` with\n `hasMore`. `list_publish_approvals` pages by `offset` and answers `total`\n and `hasMore`: raise `offset` by `limit` until `hasMore` is false.\n\n## Delete is recoverable \u2014 but not everything is\n- `delete_*` soft-deletes: the entity disappears from `list_*` but is not gone.\n `restore_*` brings it back; `list_deleted_*` shows what's waiting. This\n applies uniformly to every entity that has a `delete_*` and a\n `restore_*` tool.\n- The same applies one level down, to version HISTORY:\n `delete_*_version` removes one entry from history (the current draft and\n published version are protected and can't be targeted this way);\n `list_deleted_*_versions` / `restore_deleted_*_version` undo it. Deleted\n version numbers stay reserved rather than reused, so gaps in the numbering\n are normal, not a sign of corruption.\n- `restore_*` can itself 409 if a live entity now holds the same name/slot \u2014\n the error names the conflicting one.\n- Deleting is not archiving. Some entities also have a `status` that can be\n `archived` \u2014 kept, not offered \u2014 set with `update_*`: `agent`, `tool`,\n `skill`, `policy`, `reference_doc`, `output_schema`, `data_table`,\n `measure` and `application`. The values each takes are in\n `get_entity_authoring_contract`. Runs have an archive of their own\n (`archive_run` / `unarchive_run`, see below).\n\n## Per entity \u2014 what to create, and what \"complete\" means\n\n**The platform's live create contract wins.** `get_entity_authoring_contract`\nreads this deploy's own contract per entity \u2014 required fields, allowed values,\nand the rules a publication checks \u2014 generated from the code that enforces\nthem, with a `rulesVersion`. The notes below are kept by hand in this\nconnector: guidance on order and on what \"complete\" means, SUBORDINATE to that\ncontract. Where they disagree, the contract is right and this text is behind.\nOn a deploy that does not serve it yet the tool says so; then the platform's\nrefusal on save or publish (and `get_publish_release`'s readiness) is the\nauthority, not these notes.\n\nBuild in dependency order: a thing you will REFERENCE must exist before the\nthing that references it. So: tools and output-schemas first, then agents (which\nlist tool ids), then workflows (whose steps name agents and tools), then\ntriggers (which make a workflow fire). Skills/policies/reference-docs can be\nmade any time before you attach them.\n\n### tool (`create_tool`, strict body)\n- Required: `name`. Also: `description`, `type`, `inputSchema`,\n `outputSchema`, `implementation`, `authConfig`, `surfacing`.\n- `type`: `\"function\"` (default) | `\"connector\"` | `\"validator\"` |\n `\"evaluator\"` | `\"executor\"`. `surfacing`: `\"always\"` (in the agent's tool list) |\n `\"on_demand\"`.\n- `inputSchema` / `outputSchema` are JSON-Schema objects describing the tool's\n params and result. Set them \u2014 an agent binds to a tool by its declared I/O; a\n tool with no inputSchema is hard to call correctly.\n- `implementation` is what makes the tool DO something, and its shape depends on\n `type`:\n - **function** \u2014 carries the Python. Author and check the code with\n `validate_tool_code` and `format_tool_code`, and prove it runs with\n `execute_tool`, BEFORE `create_tool`. A function tool whose\n `implementation` is empty is an inert stub.\n - **connector** \u2014 carries the HTTP call: typically `connectorType`\n (\"rest\"/\"graphql\"), `baseUrl`, `method`, `path`, `headers`,\n `queryParams`, `body`, `responseMapping`, `pagination`. Prefer the\n `create_connector` tool, which sets `type:\"connector\"` for you. NEVER put\n a real credential in `authConfig` \u2014 placeholders only (\"{{ MY_SECRET }}\"\n or \"\"); a human fills the secret in Axonity. Test with\n `execute_stored_connector` (uses the real, server-side-decrypted secret;\n you see only the result).\n - **`implementation.effect` is required to PUBLISH**: `\"reads\"` (fetches,\n looks something up) or `\"acts\"` (sends, writes, starts something). A\n draft saves without it; the publish approval refuses it (\"Set the\n connector's side effects \u2026 before publishing\"). Set it at create time,\n so the human approving is not the first to find out.\n - **An answer that is a file**: `responseMapping: { \"type\": \"file\",\n \"filename\": \"{{filename}}\" }` keeps the bytes as a file of the run and\n returns its reference\n `{ fileId, filename, contentType, sizeBytes, sha256 }` \u2014 the shape an\n upload has, so Digitize documents reads it and a sub-workflow's file\n parameter takes it. `filename` is optional (the far end's\n `Content-Disposition` name, else `document`) and may use the inputs.\n No `responseTransform` with a file answer. Outside a run\n (`execute_stored_connector`) nothing is stored: you see name and size.\n - **`sha256` in a file reference** is the hex SHA-256 of the bytes,\n computed once when the file was stored. The same bytes have the same\n value under any name, so compare it to recognise a file that was already\n processed (deciding that is the workflow's logic, not the platform's).\n Only a reference in a declared file parameter (`file`, or a list of\n `file`) is checked against storage. Where one enters a run \u2014 a\n manual, API or MCP start, a sub-workflow call (with its copy under\n `item` in the child) \u2014 its `filename`, `contentType`,\n `sizeBytes` and `sha256` are settled from storage, whatever the\n caller wrote. A reference to a file the run may not read keeps what the\n caller wrote and carries no `sha256`; at a webhook, cron or\n conditional start that holds for each of them, since such a start links\n no file. A reference anywhere else (an `object` field, an undeclared\n key) is not checked and keeps any `sha256` the caller wrote. Digitize\n documents always answers the stored `sha256` per file it read. So\n compare only the value on a declared file parameter or on Digitize's\n entry, never one in another field or one an agent wrote out.\n - **executor** \u2014 runs a command on a registered executor (a program on\n the customer's side). The save refuses a tool that names no executor or a\n command that executor does not know; `list_executors` and\n `list_executor_commands` say what exists.\n - **validator / evaluator** \u2014 a constrained kind, and `implementation` takes\n ONE OF TWO shapes. Either `{\"builtin\": \"validators.<name>\"}`, naming a\n house predicate \u2014 look at the tenant's existing validator/evaluator tools\n (`list_tools`) for the keys in use rather than inventing one. Or authored\n Python, like a function tool, whose `run` returns a VERDICT: `True` /\n `False` / a fail-detail object. A `run` that returns a string, a number\n or nothing at all declares no verdict and is REFUSED on save, so that a\n misconfigured gate cannot silently pass everything at run time. Authored\n code takes the standard call \u2014 see Validators.\n- Complete check: the tool has the I/O schemas its callers need AND a non-empty\n implementation of the right shape for its type.\n- `toolboxId` files the tool in a toolbox on creation. Read `list_toolboxes`\n BEFORE you create: a tool made without one is ungrouped, which is valid and\n is also how nobody finds it. See Toolboxes below.\n\n### agent (`create_agent`, strict body)\n- Required: `name`. Enumerated fields, with their ONLY valid values:\n - `capabilityTier`: `economy` | `standard` (default) | `smart` | `reasoning`\n - `creativityTier`: `low` | `medium` (default) | `high`\n - `reasoningLevel`: `default` (sends nothing, the model decides) | `none` | `low` | `medium` | `high` | `extra_high`\n - `delegation`: `off` (default) | `on` (one task to one team member at a time) | `multi` (also one task to several at once)\n- `persona` (text): who the agent is, in its own words \u2014 the character text\n every prompt of this agent opens with. It is a field of the agent and\n publishes with it (axonity-flow#2176); there is no separate persona to\n create, version or publish. To remove it send `\"\"`: on an update `null`\n leaves it as it is.\n- `slug` (its handle, set once at creation; left out: taken from the name),\n `avatar`, `conversational` (bool: may people talk to it),\n `delegationBudgetEur` (what one delegation to it may cost; empty: no\n budget), `frameworkToolsOff` (framework tools taken away; `submit_output`\n cannot be), `clearance` (what it may read; set by an administrator).\n- Output: `outputSchemaIds` (the output schemas it answers in \u2014 library ids\n or names; a schema outside the list is refused) and `defaultOutputSchemaId`\n (the one used when a caller names none; left out: the first). The GATES on\n an output live in the output_schema (see Validators), not on the agent.\n- Wiring fields \u2014 see the Wiring section: `toolIds`, `systemToolIds`,\n `delegationTargetIds`.\n- Anything else is refused: the body is strict, so a field the platform\n retired (axonity-flow#2176) is a 422 that names it, not a silent drop.\n- Complete check: an agent with no `toolIds`/`systemToolIds` has no tools and\n can only reason/talk. If it is meant to DO something, give it the tools.\n\n### workflow (`create_workflow`, then edit the document)\n- `create_workflow` makes a STUB (name, description) with an empty document.\n You then build the graph with either\n - `apply_workflow_mutations` \u2014 a LIST of command mutations applied in order\n (preferred: the backend validates each and threads the version), or\n - `replace_workflow_document` \u2014 a full-document atomic PUT.\n- The document is a graph: `steps.all[]` (each `{ id, type, name, ... }`) and\n `steps.edges[]` (each `{ id, from, to, type? }`) plus `triggers`.\n- A step's GOAL is read from a different place per step type: an `agent`\n step's `contract.goal`, a `manual` or `automation` step's\n `config.goal`. Written in the other place it is stored and read by nobody,\n and the validator keeps reporting `step_no_goal`.\n- After every `apply_workflow_mutations` / `replace_workflow_document` the\n connector runs `validate_workflow` on the stored workflow and returns its\n verdict as `validation`. Report those issues as they are. Green there means\n every PLATFORM check passed \u2014 none of them asks whether the editor can draw\n the document, so open it in the editor before you call it done.\n- WHICH VALUES a step's `type` and a trigger's `typeId` may hold is answered\n by `get_workflow_authoring_spec`, read live from this deploy. This guide\n does not list them, on purpose: it used to name nine step types where seven\n validate, and a list nobody could read is a list that goes wrong. The spec\n also lists the types you may NOT author, each with the reason and how to\n express that intention instead \u2014 so reaching for one gets you an answer\n rather than a `step_invalid_type`.\n- Referential integrity is enforced: step and trigger ids must be unique, and\n every edge `from`/`to` must reference an id that exists in the document\n (`from` may be a trigger or step; `to` must be a step). A dangling edge is a\n hard error.\n- Complete check: run `validate_workflow` on the document \u2014 it returns\n `launchable` plus an `issues` list. A workflow is not done until it is\n launchable AND has a trigger (see Triggers).\n\n### persona\n- Not an entity: the agent's `persona` field (see agent). Set it with\n `create_agent` / `update_agent`, or `create_agent_persona` (agentId,\n expectedVersion, persona); read it with `read_agent` or\n `read_agent_persona`. Its history is the agent's versions, and it goes live\n with `request_publish_agent`.\n\n### output_schema\n- A reusable output contract, versioned and publishable. Referenced BY id from a\n tool's validators or an agent's `outputSchemaIds` \u2014 so create it first,\n then point things at the id the create call returns.\n- `schemaBody` is a JSON Schema document (`type`, `properties`,\n `required`) PLUS one key that is not JSON Schema: `validators`, the gates\n run against a submitted output. This is the place a validator can be STEERED\n at part of the output \u2014 see Validators.\n\n### skill / policy / reference_doc\n- Memory entities attached to agents (and skills also to workflows). Create them,\n then wire with the `attach_*` tools \u2014 see Wiring.\n- A reference doc has NO kind any more. What used to be a semantic note lives\n in the model itself: a word is a concept (`create_concept`), a table card\n is the table's description and grain, a source query is a query of its\n own (`create_query`, the table's `fillingQueryId`), an example question\n is a measure's `questions`. The\n platform refuses `semanticKind`, `semanticDetails`, `subjectTableId`\n and `subjectSourceId` on a reference doc, and says where each one went.\n Building the SEMANTIC MODEL? Read `axonity_semantic_conventions` first \u2014\n those rules are served by the platform; this guide does not restate them.\n\n### prompt_snippet\n- Reusable prompt fragments; a normal entity. Wire-level oddity:\n `list_deleted_prompt_snippets` returns the backend `items` envelope.\n\n### flow\n- A reusable workflow fragment in the authored-entity lifecycle. `create_flow` /\n `update_flow` write draft state; runtime uses `read_flow_published` until\n approval. `request_publish_flow` to publish, `discard_flow_draft` to reset.\n\n### data_table\n- An authored table of rows: the tenant's own reference data, designed and\n maintained by a person, read by agents and decisions. Same lifecycle as an\n output schema \u2014 draft, version, request publish. See \"Tables\" below, which is\n where the rules that are NOT the generic ones live.\n\n### company\n- The tenant's single company document (mission, value streams, org structure).\n A SINGLETON \u2014 one per tenant, no id, so there is no list/create/delete:\n `read_company`, `update_company` (a WHOLE-document save with\n `expectedVersion`, like `replace_workflow_document`), `list_company_versions`,\n `read_company_version`, `restore_company_version`, `read_company_published`.\n Publish it like anything else with `request_publish_company` \u2014 but because it\n is a singleton this takes NO id (the server resolves your tenant's one\n company). Direct company publish is closed to machine tokens, so the approval\n queue is the only path.\n\n## Validators \u2014 one shape, one call\nA validator is a GATE on a submitted output: it runs after an agent produces a\nresult and can refuse it. The backend's OpenAPI description of `schemaBody`\nis the source for the full contract, and the platform's live contract\n(`get_entity_authoring_contract`, output_schema) wins over this section where\nthis deploy serves it. What follows is the part you cannot author without,\nchecked against the platform and SUBORDINATE to both.\n\nSpecs carry the same keys wherever they are written:\n- an output_schema's `schemaBody` (`validators`, and `preflight` for the\n checks an agent may run itself before it submits) \u2014 the gate on one value;\n- a workflow step's `contract.output_validators` \u2014 run on the step's WHOLE\n submission, so a rule about how its outputs relate has something to look at;\n `validate_workflow` reports a named validator tool that does not exist;\n- a conversation step's `answerContract.validators`, beside its `schema` \u2014\n run on the answer the agent hands in; without a `schema` nothing runs, and\n `validate_workflow` does not report it.\nThe agent itself no longer carries specs (axonity-flow#2176): it names the\nschemas it answers in with `outputSchemaIds`, and a spec sent on the agent's\nstrict create/update body is a 422.\n\n- A spec names its check in ONE of two ways, and each brings its own binding:\n - `function` \u2014 a shipped predicate (e.g. `validators.min_length`), bound\n by `target` (the field it judges; omit it to judge the whole output) and\n `args`.\n - `tool` \u2014 a validator TOOL in this tenant's library, by name or id.\n Exactly one of the two. Naming both leaves it unsaid which one runs, naming\n neither leaves nothing to run, and a gate does not get to be ambiguous \u2014 both\n are refused. The binding keys do not mix either: `target`/`args` belong to\n the `function` form and are refused on a `tool` spec, because a key the\n runtime ignores is worse stored than rejected.\n- `error_message` is what the agent is told on refusal, and the one key both\n forms share. `{value}` in it is replaced by what the validator reported.\n- `when_present` runs the check only when the target field is actually in the\n payload. Off by default, deliberately: a blanket skip turns a mistyped\n `target` into a gate that passes everything. Set it where a field is\n genuinely optional.\n\n### The standard call\nEVERY authored validator is invoked the same way. The signature does not vary\nper tool, and that is the whole point: a screen cannot offer inputs it does not\nknow, and a spec served to an agent cannot describe a shape that differs per\ntool. Bespoke parameters push the contract into prose that goes stale.\n\n```\nrun(data, slots, binding)\n```\n\n- `data` \u2014 what the validator is pointed at, UNTOUCHED. The whole submitted\n output, or the field named by `field`.\n- `slots` \u2014 every declared session-memory reference found in `data`, with its\n text, indexed by the reference itself. The platform resolves them because code\n in the sandbox is never handed a lookup callable \u2014 a validator may be foreign\n code.\n- `binding` \u2014 what you declared, verbatim, so the validator knows which values\n in `data` are references to look up rather than text to read. Without it it\n would have to guess, and guessing is how a check reads a key as though it were\n the body.\n\nTwo keys on the spec steer that call: `field` names the part of the output to\nhand over (leave it out for the whole output), and `slots` lists the fields\nthat hold references.\n\n```json\n{ \"tool\": \"my.freshness.check\",\n \"field\": \"units\",\n \"slots\": [\"key\", \"source_key\"],\n \"error_message\": \"REJECTED: {value}\" }\n```\n\nBOTH ARE CHECKED WHEN YOU SAVE the output schema, and a refusal names the\nfields that do exist: a `field` that is not a property, or a `slots` name the\nrows do not carry. That check is there because either mistake fails SILENTLY at\nrun time \u2014 a name that is not there is never looked up, so the gate runs on\nunresolved values and nothing says so. (Rows whose schema declares no shape are\nleft alone: there is nothing to check against, and guessing would refuse correct\nconfigurations.)\n\nWHERE `field` AND `slots` ARE CHECKED: when you save an output_schema, in\nits `schemaBody`, which is stored verbatim.\n\n### The older, explicit binding\nA tool spec MAY declare `inputs` instead, and a spec with `inputs` does NOT\nget the standard call. That is the way for a validator tool backed by a shipped\npredicate, which receives `value` plus its own arguments \u2014 its `run` would\nnot accept `data`/`slots`/`binding`. Each entry is\n`{\"source\": \"field\"|\"const\", \"field\": <name>, \"as\": \"slot\"?}`; with\n`as: \"slot\"` the field's value is read as a reference and its TEXT is passed.\n`field` takes a path, so a binding can point INTO a list: `units[].key` is,\nfrom every row in `units`, the `key` field.\n\nWriting a NEW validator: take the standard call and leave `inputs` out.\n\n## Wiring \u2014 how the pieces connect\nThere are THREE mechanisms, and using the wrong one silently no-ops. Know which\neach link uses.\n\n**A) Set a field on the entity (via create/update)** \u2014 an id or id-array that\nlives in the entity body:\n- tool \u2192 agent: add the tool's id to the agent's `toolIds`. This is how an\n agent gets a (non-system) tool. There is no attach_tool_to_agent route.\n- system tool \u2192 agent: add the catalog id to `systemToolIds`. Get ids from\n `list_system_tools`. No grant/revoke tool \u2014 you set the array via\n `update_agent`. `toolIds` and `systemToolIds` are DIFFERENT lists; a\n system-tool id does not go in `toolIds`.\n- agent \u2192 agent (delegation): add the callee agent's id to the caller's\n `delegationTargetIds` (and set `delegation` to `on` or `multi`).\n- output_schema \u2192 agent: `outputSchemaIds` (a list), with\n `defaultOutputSchemaId` for the one used when a caller names none.\n- Changing any of these is read-then-write under optimistic locking: read the\n agent, edit the field \u2014 an id-array is a FULL replace, so include the ids you\n are keeping \u2014 then `update_agent` with `expectedVersion`.\n\n**B) Call an attach route (a link, not a field).** `attach_*`/`detach_*` POST/\nDELETE a link and do NOT touch the entity body:\n- skill \u2192 agent: `attach_skill_to_agent`; skill \u2192 workflow:\n `attach_skill_to_workflow`.\n- policy \u2192 agent: `attach_policy_to_agent`.\n- reference_doc \u2192 agent: `attach_reference_to_agent` (agents only \u2014 there is no\n workflow-scoped reference-doc route).\n- VERIFY every one of these with the read-back before `request_publish_*`:\n `list_agent_skills`, `list_agent_policies`, `list_agent_reference_docs`,\n and `list_workflow_skills` for the workflow-scoped variant. This is not\n optional politeness \u2014 because a link lives OUTSIDE the entity body,\n `read_agent` / `read_workflow` will not show it, so the read-back is the\n only way to tell an attach that landed from one that silently did nothing.\n (Mechanism A is different: those ids ARE in the body, so re-reading the agent\n proves them.)\n- The three agent read-backs also take `workflowId`. With it you get the\n COMPOSED runtime view \u2014 what this agent's prompt actually assembles inside\n that workflow, with a `linkSource` per row saying WHY each item is there (an\n explicit link, tenant-wide, or scoped to the workflow). Without it you see the\n agent on its own, which is not what a run assembles.\n\n**C) Reference an id INSIDE the workflow document** (this is how agents and tools\nget \"into\" a workflow \u2014 there is no attach route for it):\n- agent \u2192 workflow: an `agent` step names its agent in the step's\n `contract.owners[]` as `{ \"type\": \"agent\", \"id\": \"<agentId>\" }`.\n- tool \u2192 workflow: on an `agent` step, list tool ids under\n `contract.tools.toolIds[]` (and/or per plan-step `contract.activities[]`\n entries of `{ \"kind\": \"tool\", \"toolId\": \"<id>\" }`). On an `automation` step,\n set `config.automationType: \"tool\"` and `config.toolId`. A `connector` step\n references a connector tool the same way.\n- Every id you place in a document must be a REAL id in THIS tenant. The workflow\n validator flags a step whose owner agent or referenced tool no longer exists \u2014\n `validate_workflow` is how you catch a bad reference before publishing.\n- Prefer `apply_workflow_mutations` (e.g. `add_step`, `update_step`,\n `add_edge`) over hand-building this JSON: the backend fills defaults and\n validates each edit. Read the returned document to see the exact shape it\n produced, then adjust.\n\n### Which way you are asking\n- `list_workflow_components` \u2014 what does THIS workflow depend on. Two hops:\n what the document names, and what each agent then actually receives.\n- `list_workflows_using` / `list_dependent_agents` \u2014 who depends on THIS\n entity. Ask before you edit or delete anything shared.\n- A component's `reach` is how many workflows name it, this one included. Above\n 1, an edit reaches processes you did not open; `duplicate_workflow_component`\n gives this workflow its own copy and leaves the others on the original.\n\n## Prompt elements & placement (Memory V2)\nA prompt snippet is a LIBRARY item \u2014 creating it changes nothing on its own. It\nonly shapes a run once it is PLACED into a flow step's prompt stack. Placement is\nper flow step, in one of two channels, at an order:\n- `read_workflow_prompt_stacks(workflowId)` (or `read_flow_prompt_stacks(flowId)`)\n resolves a workflow/flow to its steps and each step's system/user stacks \u2014 this\n is how you DISCOVER the `flowStepId`s you place against. Start here.\n- `attach_prompt_snippet_to_flow_step(flowStepId, snippetId, target, displayOrder?)`\n \u2014 `target` is `\"system\"` (instructions the model is steered by) or `\"user\"`\n (content presented as the user turn).\n- `list_flow_step_prompts` shows a step's current system/user stacks (with each\n attachment's `linkId`); `update_flow_step_prompt(linkId, \u2026)` moves/reorders one;\n `reorder_flow_step_prompts(flowStepId, snippetIds)` sets the whole order;\n `detach_prompt_snippet_from_flow_step(linkId)` unlinks (the snippet survives).\n- A WILDCARD snippet applies to EVERY step (top of every stack), with no\n per-step link. `list_wildcard_prompts` shows them.\n\nWhich prompt element an instruction goes in \u2014 persona, policy, skill, reference\ndoc or a step's activities \u2014 and how large each may be, is not decided here: the\nplacement rules are served by the platform and appended to this guide, read live\nfrom this deploy each time you call it.\n\nAn agent has no long-term recall of its own runs: episodic memory went with\naxonity-flow#2176. Session/workflow memory are RUNTIME, not authored: they are\nwritten by a run, never set here. This connector does not expose them \u2014 the\nbackend serves them per run, but no tool wraps those reads yet, so do not\npromise a user you can show them.\n\n## Reproducing a setup (recreate, never copy ids)\nTo rebuild an agent/workflow/tool graph as NEW entities \u2014 in this tenant, or in\nanother tenant by pointing the connector at THAT tenant's token in a separate\nsession \u2014 author it fresh and wire by the NEW ids. An id from a read is\nmeaningful only in the tenant it came from; sending it back in a create/update\nelsewhere points at nothing. Do this instead:\n1. Read the source graph (in the session pointed at it) for its SHAPE: names,\n field values, which tools each agent lists, which agents/tools each workflow\n step references. START WITH `list_workflow_components`: it answers what the\n workflow is made of in one call \u2014 agents and flows, the workflows it calls,\n the tools those agents reach, the tables behind those tools, the knowledge\n attached \u2014 each row naming the STEPS that are the reason it is there. Walking\n that outward by hand is how a rebuild quietly loses a tool nobody noticed was\n attached. Then read each entity for its field values. For each source agent\n also read its LINKS \u2014 `list_agent_skills`, `list_agent_policies`,\n `list_agent_reference_docs` \u2014 they are not in the agent body, so a plain\n `read_agent` misses them and you would rebuild an agent that quietly lost\n its skills and guardrails.\n2. Create the leaf dependencies first (tools, output_schemas). Keep a map from\n each OLD id to the NEW id the create call returns.\n3. Create agents, translating every referenced id through your map:\n old toolId \u2192 new toolId in `toolIds`, etc. Never send an old id. The\n persona is a field of the agent: copy its `persona` text into the create.\n4. Create workflows; when you add agent/tool references into the document,\n translate through the map the same way.\n5. Attach skills/policies/reference-docs by the new ids, then read them back\n (`list_agent_*`) and diff against what you read in step 1.\n6. `validate_workflow` and re-read each entity to confirm every reference\n resolved, then `request_publish_*`.\nThe connector never carries a secret across: `authConfig` stays placeholders in\nthe new tenant too, and a human fills the real value there.\n\n## Structural workflow edits\n- **Start by reading the spec.** `get_workflow_authoring_spec` returns the\n lists this deploy generates from its own registries: the mutation commands\n (`operations`), the trigger types (`triggerTypes`), the step types\n (`stepTypes`, including the ones you may not author, with the reason), the\n schedule-rule shapes with a working example each (`scheduleRuleKinds`), the\n value vocabularies (`parameterTypes`, `outputKinds`, `schemaFieldKinds`),\n the decision evaluators (`decisionEvaluators`) and the column kinds of a\n table (`tableColumnKinds`). Neither\n this guide nor the tool descriptions restate any of those lists: a list kept\n in the connector is right only by maintenance, and it has been wrong twice\n already, both times in the direction that costs an agent a 422 on something it\n was told to use. Pass `types` for the live payload schema of a command you\n are about to write.\n- **The payload schemas describe themselves.** What may go inside\n `parameters`, `inputs`, `outputs` and `contract` is IN those schemas \u2014\n including the fact that a bound input DERIVES its contract from the output it\n reads. Ask the spec for the command's `types` rather than looking for prose\n about the shape here; there deliberately is none.\n- **One thing the schemas do not make obvious: which KEY carries the value's\n type, because it is not the same key everywhere.**\n - A TRIGGER PARAMETER and a WORKFLOW CONSTANT use `type`.\n - A step INPUT or OUTPUT uses `kind`.\n - Where a field carries a nested `schema` object, `schema.kind` is what\n wins.\n\n This asymmetry is real, not a typo to normalise: the shapes came from\n different surfaces, and normalising them would make one reader wrong. The\n VALUES differ too \u2014 `get_workflow_authoring_spec` returns one list per key\n (`parameterTypes`, `outputKinds`, `schemaFieldKinds`), and they are not\n interchangeable: only one knows `constant`, and they disagree on how to\n spell a yes/no. Read the list that matches the shape you are writing; this\n guide does not restate them, for the same reason it restates no other list.\n\n Writing `kind` on a trigger parameter is not a 422; it is a key nothing\n reads, so the value silently falls back to text and the workflow runs with\n the wrong thing. Check which of the three you are writing before you write it.\n- `rulesVersion` in that response is a content hash over the whole\n answer. While\n it is unchanged there is nothing to re-fetch; re-read the spec when it changes,\n or when a mutation fails with a 422 suggesting your idea of a command is stale.\n- `apply_workflow_mutations` takes a LIST of commands and applies them in order,\n threading the version for you \u2014 pass the version you read, not one per command.\n- It is NOT transactional. If command N fails, the ones before it stay applied;\n the error tells you how many landed and which index failed. Re-read and resume\n from that index rather than replaying the whole list.\n- `replace_workflow_document` stores the document's `name` and\n `description` \u2014 they sync onto the workflow's own columns, an omitted key\n leaves the stored value alone, and an explicit `\"\"` clears it. `stageId`,\n `capabilityId`, `valueStreamId` and `onFailure` are PATCH-only: changing\n one through this route is REFUSED with a 422 naming the field, and\n round-tripping it unchanged passes. Read, edit, write is therefore safe;\n re-linking a workflow to another stage or capability is its own call.\n- The response is a SUMMARY (version, appliedCount, launchable, validationIssues,\n stepCount, edgeCount), not the document. That is deliberate: a real workflow\n document overflows the response limit, and a successful call would come back\n looking like a failure \u2014 retrying that is how you end up with duplicate steps.\n Ask for the document with `returnDocument: true` or `read_workflow`.\n- Command payloads are STRICT and complete:\n - `add_step` builds a whole step in ONE call \u2014 `name` and `position` are\n required, and `id`, `type`, `config`, `contract`, `inputs` and\n `outputs` are accepted next to them. No follow-up `update_step` is needed\n just to fill the step in.\n - `add_trigger` does the same for a trigger: `parameters` and `outputs`\n go in that call. This is what makes a callable workflow declarable in one\n mutation, since a trigger's parameter list IS its signature.\n - `add_edge` takes the document's own `from`/`to` as well as\n `fromStepId`/`toStepId`, and keeps an `id` you supply.\n - An unknown or misspelled key is a 422 naming it, not a silent drop \u2014 so\n spelling matters and you are told when it is wrong.\n\n## Inputs and constants \u2014 the two lists that belong to the PROCESS\nA workflow declares two whole-list things of its own, both edited the same way\n(read the list, change it, write it back \u2014 there is no per-entry command,\nbecause the identity is the `name` and renaming is the common edit):\n- `set_workflow_inputs` \u2014 what the process NEEDS to start. Carried by every\n start, and the list a caller fills in whichever trigger fired. A start's own\n `parameters` are what that start declares on top; where a name is in both,\n the process-level one wins.\n- `set_workflow_constants` \u2014 what the AUTHOR pins, described below.\nRead both back with `read_workflow_trigger_parameters`, which answers\n`{ inputs, triggers, constants }`.\n\n## Constants \u2014 values the AUTHOR owns\nA constant is applied on EVERY run whichever trigger fired, and it OVERWRITES\nwhatever a caller sent. That is deliberate: a field the operator's form does not\nshow must not become an injection point for anyone who learns its name.\n- Set them with the `set_workflow_constants` command. It replaces the WHOLE\n list, the way `advanced_edit` replaces steps and edges \u2014 read the list, edit\n it, write it back. There is no per-constant command, because a constant's\n identity is its name and renaming is the common edit.\n- Every entry needs a `name`: it is what a step binds to and how the run\n payload keys it. A nameless entry is refused rather than stored, because at\n run time it would simply be skipped.\n- **A constant with no value blocks publishing.** `constant_without_value` is\n an error, not a warning, and it names the constant. It has to be: an entry\n with no value was never written into the run at all, so the workflow validated\n clean, published, and ran without it.\n- ABSENCE, not falsiness. `0`, `\"\"`, `false` and `[]` are values and pass.\n- The value lives in `defaultValue`. On a constant that is not a fallback \u2014\n it IS the value, written on every run. A constant carries no `required`\n (nobody is being asked to fill it in) and needs no flag saying it is one.\n- **A trigger parameter can be pinned the same way**, and the platform reads\n TWO spellings: `constant: true`, or the older `type: \"constant\"`. Both\n mean the author owns it and the caller must not send it, so treat a parameter\n carrying either as off-limits when you build `triggerInput`.\n `read_workflow_trigger_parameters` collapses both into `pinned`, on the\n workflow's constants and on each start's parameters \u2014 read that rather than\n checking the two spellings yourself.\n\n## Two platform invariants that look like bugs\nBoth are deliberate, both run after EVERY edit, and both now report themselves in\nthe mutation response under `systemAdjustments` \u2014 so you no longer have to diff\na document to find out what the platform did.\n- **A bound input's contract is derived, not authored.** An input that reads an\n upstream output takes its contract \u2014 description included \u2014 FROM that output.\n Write the text on the producing step's output; a downstream description changing\n when you edit an output is this rule at work, not the platform overwriting you.\n The inputs it re-derived come back in `rederivedInputs`.\n- **Every step reaches the END point.** The platform guarantees it and wires that\n edge itself; the edges it added or removed come back in `addedEdges` /\n `removedEdges`. An edge you did not ask for is this, not corruption.\n\n## Validating: two questions, two calls\n- `validate_workflow({ workflowId })` checks the workflow as SAVED against the\n tenant catalog \u2014 whether the agents, tools and flows the steps reference\n exist and are published \u2014 plus its own wiring (its triggers and the knowledge\n attached to it). This is the \"can this run?\" answer. It needs a token with\n the `author` scope.\n- `validate_workflow({ document })` judges the document against the same\n catalog, saves nothing, and a read-only token may call it. Without the\n workflow's id it skips the checks about that workflow's own wiring (its\n triggers and the knowledge attached to it), so validate by `workflowId` once\n it is saved. Either call answers `catalogChecked: false` when the catalog\n could not be built: then `launchable` means the graph is sound, not that it\n will run.\n- Pass exactly one. Before telling a human a workflow is ready, check\n `catalogChecked` \u2014 a green structural verdict is the easiest thing to\n over-read.\n- Read the `issues` rather than only `launchable`: the validator now reports\n a sub-process call with no target, one pointing at itself, one whose target\n is deleted or was never published or has no invocation trigger, a constant\n with no value, and a trigger drawn on the canvas that nothing is wired to.\n Some of those are warnings and still let a workflow publish \u2014 read the\n `severity`, and read the `code`, which is stable where the message is not.\n\n## Triggers\n- A published workflow still does nothing until it has a trigger. A trigger has\n TWO halves, and drawing one on the canvas is only the first.\n- **A schedule and a conditional start are reconciled for you.** Draw them in\n the document, publish, and the firing row is brought into line: created,\n updated, and removed when the element is gone. A deploy does the same and\n brings new ones in switched off.\n- **A webhook is NOT.** Its row must be created separately \u2014\n `create_webhook_trigger` \u2014 and publishing will not create one. A webhook\n drawn and published with no row is an endpoint that does not exist; the\n validator says so with `trigger_not_wired`, a WARNING, so the publish still\n goes through. Take the warning seriously: nothing else will tell you.\n- Trigger deletes are HARD deletes \u2014 no restore. Webhook tokens are shown once\n at create/rotate and are never retrievable; hand them straight to your human\n and never store one in an entity field.\n- **A schedule is a claim \u2014 check it.** `run_cron_schedule_now` fires one\n immediately without moving `nextFireAt`, so you can prove a schedule starts\n something instead of waiting until tomorrow to find out it does not. It runs\n for real, with real cost and side effects.\n- **To PAUSE a schedule, disarm it** (`set_cron_schedule_enabled`), never\n delete it. Deleting throws away the rules the author wrote and makes \"stop\n this for a week\" indistinguishable from \"we do not do this any more\".\n- `create_cron_schedule` takes EITHER `cronExpr` OR `rules`, and the\n trigger must exist in the PUBLISHED document. For the rule shapes, read\n `scheduleRuleKinds` from `get_workflow_authoring_spec` \u2014 do not invent one.\n- `list_all_cron_schedules` answers \"what runs tonight?\" across the tenant;\n `reconcile_cron_schedules` answers \"is that actually what runs?\". The second\n reports rather than tidying silently and never arms something switched off.\n- **A conditional start is authored in the workflow, on the trigger element.**\n Its `typeId` is `\"conditional-poll\"`, its `id` MUST be a UUID (the\n platform cannot make a row for any other id), and everything it does lives\n on its `config`: `conditionText`, `repeatIntervalMinutes`, and the\n CHECK \u2014 `checkKind` with that kind's settings. Write it with\n `apply_workflow_mutations` (`add_trigger`, or `update_trigger`, which\n REPLACES `config` whole \u2014 read it, change it, send all of it). Publishing\n copies it onto the row `list_conditional_triggers` shows.\n `create_conditional_trigger` is not the normal path, and the platform\n refuses a check sent to it or to `update_conditional_trigger`: \"A\n conditional start's check is set on the start in the workflow, and takes\n effect when the workflow is published.\"\n- **A conditional start without a CHECK starts the workflow every beat.** It\n wakes on its interval and, with no `checkKind`, runs regardless of whether\n there was anything to do \u2014 a mailbox on fifteen minutes then makes\n ninety-six empty runs a day. Read `checkKind` in\n `list_conditional_triggers` before assuming a start has one.\n- `checkKind: \"automatic\"` decides with no model, before a run exists. Its\n settings on `config` are `plan` (the steps of an automation step, each\n with a `toolId`), `outputs` (what the plan produces \u2014 not worked out by\n an agent) and `startsWhen` (rules `{ field, op, value }` of a decision's\n rule table, where `field` names one of those outputs). A look that cannot\n be made \u2014 a broken tool, a rule on an output nothing produces \u2014 is a fault,\n never a start.\n- `checkKind: \"agent\"` is for a condition that needs judgement: the beat\n becomes a run whose first step asks the agent named by `config.agentId`\n (else the workflow's owner); it stays out of the Runs list until the answer\n is yes. Settings: `agentId`, `toolIds`, `inputs`, `reasoningLevel`.\n- Do not pre-validate a check here. `validate_workflow` judges it\n (`conditional_check_invalid`) with the same function the dispatcher runs\n when the start fires, and the refusal says what to change.\n- **Removing `checkKind` does NOT take a check off.** A `config` without it\n is read as a start written before checks existed, and the row keeps the\n check it has. There is no way to return a start to \"every beat\" today; say\n so to your human rather than looking for a route to the row.\n- Publishing also switches every start of the workflow back ON. An\n `update_conditional_trigger({ enabled: false })` lasts until the next\n publish of that workflow.\n\n## Evaluating what you built\n- There is no findings endpoint and no evaluator entity. To judge a run, read it:\n `read_run` (its `validatorVerdicts` and `agentInvocations`) and\n `read_run_trace` (the step-by-step tool calls).\n- **Start with `read_run_outline`, not `read_run`.** The outline is the run's\n table of contents and carries no bodies, so it costs what the run's SHAPE\n costs rather than its content \u2014 a fan-out over four thousand items reads about\n as cheaply as one over four. Then open only what you need:\n `read_run_value` for one large step value (by the digest in `stepStates`),\n `read_run_invocation_messages` for one agent's transcript (by the id in\n `agentInvocations`). Reading a whole run to find one message is the habit\n this replaces.\n- `itemCap` on the outline bounds items listed per fan-out step; the remainder\n is counted in `counts.truncated`, never dropped in silence.\n- **What an agent wrote to itself is readable.** `list_run_session_memory`\n lists the files an agent left during a run (metadata only) and\n `read_run_session_memory_file` opens one. When the trace shows a decision but\n not what it was reading, this is usually where the reason is. Workflow-bound\n reference material is NOT here \u2014 that lives in `reference_docs`.\n- **`list_todo_steps`** is every step in the tenant waiting on a human, across\n all runs; `read_run_waiting_on` is the same question for one run you already\n have. It is PAGED over the waiting RUNS, so `items` can be longer than\n `pageSize` \u2014 one run may park several steps. Follow `nextCursor` until it\n is null before concluding anything about how much is waiting.\n- A run's archive is reversible (`archive_run` / `unarchive_run`);\n `bulk_delete_runs` is not.\n\n## Subworkflows \u2014 one workflow calling another\nBoth halves live in the workflow DOCUMENT, so both are ordinary\n`apply_workflow_mutations` work. There is no separate \"link\" route.\n- **To make a workflow callable**, it needs TWO things: a trigger with\n `typeId: \"subprocess-invocation\"` (`add_trigger`), which is what makes it\n callable at all, and a declared SIGNATURE.\n- **The signature belongs to the PROCESS, not to the trigger.** Declare it with\n `set_workflow_inputs` \u2014 one list, carried by every start, and the same list\n a caller of any kind fills in. A trigger's own `parameters` are what THAT\n start declares on top; `parameters` goes in the `add_trigger` call itself,\n so a start that does add fields needs no follow-up `update_trigger`.\n- Older documents declared everything on the invocation trigger instead, and\n that still works: both are read, and where a name appears in both the\n PROCESS-level one wins. When you are editing a workflow you did not author,\n read `read_workflow_trigger_parameters` and see which list actually holds\n its fields before adding to either.\n- `set_workflow_inputs` REPLACES the whole list, like\n `set_workflow_constants`: read, edit, write back. An entry with no `name`\n is refused rather than stored \u2014 the name is how a caller passes the value and\n how the run payload keys it, so a nameless one would be skipped silently at\n run time.\n- For what an input or a parameter may contain, ask\n `get_workflow_authoring_spec` for the payload schema of the command you are\n about to write, rather than a shape written down here.\n- **It must also be PUBLISHED.** The catalogue reads the published document, so\n a draft-only workflow comes back `callable: false` with \"Never published\".\n Authoring the caller first and publishing the callee later is a run-time\n failure waiting to happen.\n- **To call it**, add a step with `type: \"subprocess\"` and\n `config: { targetWorkflowId, ownerAgentId }` \u2014 both required, both workflow/\n agent ids. Bind the step's `inputs` by NAME to the callee's `parameters`;\n that is the whole mapping, there is no separate argument block.\n- `config.waitForCompletion` is **IGNORED** if you write it. Drawing a step\n after this one already means \"after\", so waiting is implied. The one thing the\n graph cannot say is fire-and-forget: `config.fireAndForget: true`, and then\n nothing downstream may depend on the result.\n- `config.errorStrategy` (\"fail\" | \"skip\") is only honoured when the step\n ITERATES (`config.iteration.enabled`). On a single call \"skip\" would report\n a failed child as success, so it is forced to fail-fast.\n- **A workflow cannot call itself** \u2014 every run would spawn a child that reaches\n the same step again. Pass `exclude: <the workflow you are editing>` to\n `list_callable_workflows` and it is kept out of the list.\n- **What comes back** is the callee's `outcomes`: its end steps, each with the\n fields bound into it. WHICH end was reached is itself part of the answer.\n- **`validate_workflow` checks this now.** A missing target, a workflow\n calling itself, a target that is deleted, never published, or has no\n invocation trigger \u2014 each has its own issue code, and the ones that resolve to\n nothing are errors that block publishing. Still run\n `list_callable_workflows` BEFORE you author the step: it is how you pick a\n target and see the interface you are binding to, where the validator only\n tells you afterwards that the one you picked was wrong.\n\n## Secrets\n- Never handle a real credential. A connector's `authConfig` takes placeholders\n only (\"{{ MY_SECRET }}\" or \"\"); a human fills the real value in Axonity. This\n is enforced \u2014 a write carrying something that looks like a real secret is\n rejected before it leaves this connector.\n- You CAN read the catalogue: `list_secrets` (id, name, authType) and\n `read_secret`. That is how you get the id for a connector's\n `authConfig.secretId` \u2014 do not ask a human to copy one out of the UI.\n- Before you wire a connector to a secret, check `valueKeys` on\n `read_secret`. An empty list means nobody has filled the secret in yet: the\n connector will author fine and fail at RUN time. Say so to your human, with the\n secret's name, rather than reporting the wiring as done.\n- You cannot create, change or delete a secret. That is a human act in Axonity \u2192\n Settings \u2192 Secrets, and the backend refuses it from this connector's token.\n- A secret's `metadata` (connection config, e.g. a session_cookie handshake)\n comes back with credential-shaped entries withheld, listed under\n `metadataRedacted`. If you need one of those values, a human reads it in\n Axonity \u2014 do not try another route to it.\n\n## Tables \u2014 the tenant's own reference data\nA table is an authored library element that HOLDS ROWS: the pricing bands, the\nregion-to-owner map, the list of accepted reason codes. A person designs the\ncolumns and maintains the content; agents and decisions read it.\n\n**When a table is the right element.** Reach for one when the CONTENT is the\npoint and it changes without the process changing.\n- Not an `output_schema`: that describes a SHAPE and holds no data. If you\n find yourself putting example values in a schema, you wanted a table.\n- Not a workflow constant: a constant belongs to ONE workflow and is edited in\n its document. A table is shared, and three workflows reading the same rows is\n the case it exists for.\n- Not a function tool with a list inside it: that makes changing a row an act of\n editing code, reviewing it and publishing a tool. A business user maintains a\n table; nobody should need you to change a postcode.\n\n**Who fills it \u2014 `filledBy`, one per table** (`author`, `workflow`,\n`query` or `source`).\n- `author` (the default) is reference data the AUTHOR maintains. A workflow\n reads it and cannot change it. `allowedOperations` must be empty: a\n permission nothing honours is refused, not stored.\n- `workflow` lets a workflow change the rows, limited to\n `allowedOperations` \u2014 any of `add` / `update` / `delete`. READING IS\n NEVER LISTED there: it is what a table is for and is always allowed.\n- `query` fills the rows from a named query (`fillingQueryId`, on its\n `rhythm` or with `refresh_data_table`).\n- `source` holds no rows here: they stay in a data source, and `external`\n says where. `create_data_table` describes each filler's fields.\n- You edit rows through `add_data_table_row` / `update_data_table_row` /\n `delete_data_table_row` whatever the table's mode says \u2014 those grants are\n about what a RUN may do, not about authoring.\n\n**Never put rows in `update_data_table`.** `rows` and `columns` are\nwhole-collection fields: sending one row REPLACES the table's content and\ndeletes everything else. The row tools address a single row by a match\n(`matchColumn`/`matchValue`) and cannot touch the rest \u2014 use them. Reach for\n`update_data_table({ fields: { rows } })` only when you genuinely mean to\nreplace the whole content, and never as a way to append.\n\n**The rule that bites hardest: derived tools follow the PUBLISHED table.** A\npublished table mints its own CRUD tools, so granting an agent access to one is\nordinary tool granting \u2014 take a `toolId` from `list_data_table_tools` and put\nit in the agent's `toolIds`. But those tools follow the table's PUBLISHED\nversion. An author who ticked \"may add rows\" and has not published has granted\nnothing, and the tool that would let a run act on it does not exist yet.\n`list_data_table_tools` reports `offered` (what the draft would yield),\n`toolId` (whether a row exists) and `isLive` (whether a run can reach it)\nseparately for exactly this reason. Read all three before concluding a grant\nlanded. Same rule as everywhere else here \u2014 a draft changes nothing until it is\npublished \u2014 and it is the first thing an agent gets wrong about tables.\n\n**Routing a decision on a table.** A decision can branch by looking a value up\nin one column and taking the branch named in another, with\n`builtin: \"evaluators.table_lookup\"`. The behaviour worth knowing, because no\ncatalogue states it: THE CELL'S VALUE IS THE BRANCH'S OUTCOME KEY \u2014 not a new\nfield, and not something you map afterwards. Every value in the result column\nmust be the outcome key of an outgoing branch, or publishing the workflow is\nrefused. The table must be PUBLISHED: a run reads the published snapshot, so a\ntable that is only saved routes nothing. For the argument names it reads, and\nfor every other selectable evaluator, read `decisionEvaluators` from\n`get_workflow_authoring_spec` \u2014 generated from the registry that dispatches\nthem, so it cannot advertise one the platform would not run.\n\n**Column kinds** come from the same place: `tableColumnKinds` in\n`get_workflow_authoring_spec`. It is a FOURTH vocabulary beside the three for\nparameters, outputs and schema fields, with its own spellings \u2014 do not carry a\nvalue across from one of the others, and do not guess. Every column needs a\n`description`: an agent reads it to know what the column is for, and a save\nwithout one is refused.\n\n**`list_data_tables` is PAGED**, like `list_measures`, `list_queries` and\n`list_applications` \u2014 a tenant's reference data has no ceiling. Page one is not the library. Follow\n`nextCursor` while `hasMore` is true, or better, narrow in the query:\n`name` is exact and unique per workspace, so \"does one called X already\nexist\" is a single call rather than a walk. The page carries `rowCount`, never\nthe rows; the rows come from `read_data_table`.\n\n## Toolboxes \u2014 where a tool is filed\n- A toolbox is a per-tenant grouping label over tools. Read `list_toolboxes`\n before `create_tool` and pass the box's id as `toolboxId`; a tool created\n without one is ungrouped. Move an existing tool with\n `assign_tool_toolbox` (`toolboxId: null` takes it out of its box).\n- `set_toolbox_tools` DECLARES the membership \u2014 it does not add to it. A tool\n in the box and absent from your list is evicted. To add one tool, read the\n box's contents first, or use `assign_tool_toolbox`, which cannot evict\n anything by accident. A tool is in at most one box.\n- A toolbox NEVER changes what an agent may call. An agent is linked to\n individual tools (`agent.toolIds`), never to a box; there is no route that\n grants a whole box, and \"give this agent the Carerix toolbox\" is a bulk write\n of individual links. What the box decides is how a tool is ADVERTISED: a boxed\n tool with `surfacing: \"inherit\"` is found via discover_tools instead of\n riding in every prompt. Read `effectiveSurfacing` on the tool to answer \"is\n it in the prompt?\"; `surfacing` is the raw stored choice.\n- Deleting a toolbox does NOT delete its tools \u2014 they survive, ungrouped. The\n box itself has no restore.\n- Platform-shipped tools cannot be moved. The `Axonity`, `Checks` and\n `Branching` boxes hold locked tools; the API refuses and NAMES the tool it\n refused. Read that name to your human instead of bisecting the selection.\n- `set_toolbox_auth` sets the credential a box's tools SHARE \u2014 ten Microsoft\n Mail tools, one mailbox, said once. A tool with its own auth keeps it; only a\n tool with none inherits. Same rule as anywhere else: point `secretId` at a\n stored secret, never a real value. Before you clear or replace it, or delete\n the box, call `list_toolbox_dependent_tools` \u2014 it names the tools that would\n start failing at run time with a bare 401.\n\n## Who may read what\nEvery policy, skill, reference doc and table carries a label: `level`\n(public, internal, confidential) and `audienceIds`, whom it is meant for. An\nagent and a workflow carry a `clearance`; so does your token, and you read\nwith it. Look audience ids up with `list_audiences` \u2014 never guess one, and\ncompare on id, never on name. `level: null` makes a thing readable by nobody.\nNarrowing a label is always allowed; widening it is a colleague's act, never\nyours.\n\n## Tenant\n- Your token fixes the tenant. You cannot act across tenants; never send a\n tenant id in a body.\n- `read_model_tier_map` says what `capabilityTier` actually RESOLVES TO on\n this tenant. The tier is the field you write; the model is what you are\n choosing. Read it before you pick one.\n- When a run does not start, look outward before blaming the workflow:\n `read_concurrency_status` (is the tenant at its cap?),\n `read_queue_overview` (is dispatch alive?), `list_task_queue` (did\n something fail in the layer beneath the run?). `read_for_each_rate` explains\n a fan-out that is pacing itself rather than stalling.\n- You can READ those and not change them. Caps, rate ceilings and the tier map\n are operator decisions \u2014 report what you found, and to whom, rather than\n looking for another route to it.\n- `read_deploy_contract` says what THIS deploy speaks: build, environment and\n the routes it mounts. Read it when a call fails in a way that suggests the\n backend is older or newer than you expect.\n- `list_users` is where an `ownerId` comes from. Look one up instead of\n asking a human to copy it out of the UI.\n- `list_audit_events({ actorKind: \"service_token\" })` reads back what external\n agents \u2014 including you \u2014 actually changed.\n";
|
|
51
|
+
export declare const CONVENTIONS = "# Authoring conventions for Axonity entities\n\nRead this before creating or updating anything.\n\n## What this connector is for\n- AUTHORING: composing an entity from intent \u2014 drafting a tool, an agent, a\n workflow, and wiring them together so the result is CORRECT and COMPLETE\n (every required field set, every reference pointing at something real).\n- REPRODUCING a setup is just authoring it again, from scratch. To recreate an\n agent/workflow/tool, CREATE NEW entities and wire them by their NEW ids \u2014\n never reuse an id you read. There is no \"migration\" and no \"import an id\":\n this connector only ever acts in the ONE tenant its token points at (see\n Tenant), and ids are tenant-local, so an id from anywhere else points at\n nothing (or the wrong thing) here. Read the source for its SHAPE and intent \u2014\n names, field values, which tools an agent uses, which agents a workflow's\n steps run \u2014 then build fresh and capture the ids the create calls return.\n Recreating into a DIFFERENT tenant means running that build while the\n connector is configured with THAT tenant's token \u2014 a separate session. See\n \"Reproducing a setup\" below.\n\n## The authoring loop\n1. `read_*` the entity (and `read_*_published` if you need to see what is live).\n2. Edit the DRAFT: `update_*`, or workflow-edit tools for workflow structure.\n3. Validate before publish: `validate_workflow` / `analyze_workflow_reachable_outputs` / \n `validate_tool_code` / `format_tool_code`. These four save nothing, and a\n read-only token may call them \u2014 except `validate_workflow({ workflowId })`,\n which needs the `author` scope.\n4. Re-read and verify with a saved tool command: `execute_tool` /\n `execute_stored_connector`.\n5. Fix any issues and re-read again.\n6. For a code tool, PROVE it: `dry_run_tool` \u2014 see \"Proving a tool\" below. Skip\n this and `request_publish_tool` will sit blocked forever.\n7. `request_publish_*` \u2014 this only QUEUES a human approval. Publishing many\n entities at once (taking a tenant live) is `request_publish_bulk`, up to 200\n in one call; it is not transactional, so read the per-entry results.\n8. `list_publish_approvals` / `get_publish_approval` to see whether it was\n approved or rejected. Readiness there is recomputed as you read it\n (`readiness` now, `readinessAtRequest` then, `readinessChanged` if it\n moved), so a blocker you saw earlier may already be gone.\n\n9. If something went wrong:\n - Bad edit, entity still exists \u2192 `list_*_versions` then `restore_*_version`\n to roll the draft back to an earlier version.\n - Never published, want a clean slate \u2192 `discard_*_draft` resets the draft to\n the last published state (fails if it was never published \u2014 there's nothing\n to fall back to).\n - Deleted by mistake \u2192 `restore_*` (see \"Delete is recoverable\" below).\n\n## Proving a tool (the publish gate)\nBefore a code tool may be published, the platform requires that its stored code\nhas run cleanly once, at its current version.\n- `dry_run_tool(toolId)` is the run that counts. It executes the tool's OWN\n saved implementation; you supply only sample input. A clean pass clears the\n `dry_run_required` blocker.\n- `execute_tool` does NOT count, however green it comes back. It runs the\n functions YOU pass, which need not be what is stored \u2014 proving nothing about\n what would ship. Use it while drafting code you have not saved yet.\n- Editing the tool afterwards bumps its version and invalidates the proof, so\n dry-run AFTER your last edit.\n- Connectors, builtin-backed validators and platform-shipped tools have no code\n of their own to prove and will refuse (422/403). That is expected, not a\n failure to work around.\n\n## Drafts, not live\n- `create_*` and `update_*` produce a DRAFT. The live runtime is unaffected\n until a human publishes it in Axonity. `flow` has the same rule: runtime uses\n the published snapshot from `read_flow_published` until `request_publish_flow`\n is approved.\n- You cannot publish directly \u2014 the backend refuses a direct publish from a service\n token with a 403, so there is no tool for it and no way around it.\n- A read-only token can only read: any write returns 403. If you see that, ask\n your human for a write-scoped token rather than retrying.\n- `request_publish_*` does NOT publish \u2014 it creates a pending approval a human\n approves in Axonity. Use it when a draft is ready; then tell the user to\n approve it in their Axonity approvals inbox.\n\n## Optimistic locking (always read-then-write)\n- Before `update_*`, call `read_*` and use the `version` you get as\n `expectedVersion` \u2014 in the request BODY. If the update returns a 409\n conflict, someone else changed it \u2014 read again and re-apply your change onto\n the new version.\n- `delete_*` also takes `expectedVersion`, but as an argument on the tool call\n only \u2014 the connector maps it to whatever query-parameter spelling that\n entity's route actually expects (it differs per entity on the wire; you never\n need to know which).\n- `restore_*` and `restore_deleted_*_version` take NO version at all \u2014 a\n restore must never lose to a stale-version guard.\n\n## Errors: branch on the failure, not the words\n- Every error names what went wrong as plainly as the backend allows. For a 409\n specifically, two different problems share that status code and need\n different responses:\n - **Version conflict** \u2014 you had a stale read. Re-read, re-apply, retry.\n - **Reference conflict** \u2014 the entity is referenced by something published or\n live. Retrying will never help. Detach the reference or unpublish the\n referencing entity first.\n The error message tells you which one you hit \u2014 read it, don't assume 409\n always means \"retry.\"\n- A 403 on any write means the token is read-only, or (for a direct publish\n attempt, which no tool makes) that publishing must go through\n `request_publish_*`. Either way: stop, don't retry, tell your human.\n- A 401 means the service token is dead \u2014 missing, wrong, expired, or revoked.\n **The backend deliberately returns the identical message for all four\n causes** so it doesn't leak which applies; you have no way to tell them\n apart and no way to check a token's remaining lifetime in advance (every\n token now expires \u2014 7, 15, 30, 60 or 90 days, chosen when it was minted;\n there is no \"never\"). On any 401: stop, do not retry, and tell your human\n plainly that the configured token is no longer valid and a new one must be\n minted from Axonity \u2192 Settings \u2192 API tokens. Do not guess or imply the cause.\n\n## Field shape\n- All fields are camelCase JSON (e.g. `capabilityTier`, not `capability_tier`).\n ONE documented exception: validator specs \u2014 in an output_schema's\n `schemaBody` (`validators`, `preflight`), a step's\n `contract.output_validators` and a conversation step's\n `answerContract.validators` \u2014 use snake_case keys (`function`,\n `target`, `args`, `when_present`, `inputs`, `error_message`,\n `tool_name`, `validator_name`) \u2014 they are stored verbatim, so they are\n NOT camel-aliased. Send them in snake_case.\n What those keys MEAN, and how a validator is bound to what it judges, is the\n Validators section.\n- `update_*` is a partial change for agents/tools and a partial patch for\n workflows: send only the fields you are changing (plus `expectedVersion`).\n- The backend validates fields; a 422 error names the offending field and why\n (e.g. `body.capabilityTier: Input should be 'economy', 'standard', 'smart' or\n 'reasoning'`). Fix that field and retry \u2014 do not guess at the whole shape.\n- **create/update for tool and agent are STRICT** (`extra=\"forbid\"`): an\n undeclared OR MISSPELLED key is a 422 that names it, not a silent drop. So\n spelling matters and you get told when it is wrong \u2014 good. Other entities are\n more lenient and may drop an unknown key silently; never rely on that.\n- An agent has no tags: what reaches an agent's prompt is a LINK\n (`attach_policy_to_agent`), visible in a table a human can read and edit.\n A role-tag gate on a policy used to decide that invisibly and is refused\n outright now: sending\n `activation.tags` to `create_policy`/`update_policy` is a 422. The two\n surviving gates, `activation.tools` and `activation.delegation`, each say\n something a link cannot \u2014 \"only on turns where this agent holds this tool\",\n and \"only when (not) delegated\".\n\n## After you write, verify\n- A 200 means the request was accepted, NOT that it did what you meant. Re-read\n the entity after a mutation and diff it against your intent \u2014 a partial update\n only changes what you sent, and on the lenient (non-tool/agent) entities an\n unknown key can be dropped silently rather than rejected.\n- Re-reading the ENTITY is not enough for an `attach_*`: those links are stored\n outside the entity body and never appear in `read_agent`. Read them back with\n `list_agent_skills` / `list_agent_policies` / `list_agent_reference_docs`\n (see Wiring, mechanism B).\n- \"Complete\" is your job, not the backend's. A create succeeds with only the\n required fields set; it does not tell you the entity is USABLE. An agent with\n no `toolIds` runs with no tools; a connector tool with an empty\n `implementation` has no endpoint to call; a workflow with steps but no\n trigger never fires. After creating, check the entity has everything its\n purpose needs \u2014 see the per-entity and wiring sections.\n- To test a whole workflow end to end, `start_workflow_run` then read the result\n (`read_run` / `read_run_trace` / `read_run_cost`). Note it runs the PUBLISHED\n workflow and really executes (cost, connector side effects), so publish first,\n and only test-run when a human is expecting it.\n - Read `read_workflow_trigger_parameters` first and pass `triggerId`: a\n workflow can have several starts, each with different fields, and omitting\n it fires whichever comes first. Never send a parameter marked `pinned` \u2014\n the author owns that value and it is overwritten anyway.\n - **A run can park instead of finishing.** A step that asks a question waits\n for an answer, so \"it never came back\" usually means \"it is waiting on you\".\n `list_todo_steps` has every step that waits on a person (a question, a\n plan, a manual or decision step); `read_run_waiting_on` has a timer and an\n answer or callback result on its way; a FOR EACH batch is on\n `read_run_for_each_progress`; a conversation run waits in its chat.\n `answer_run_question` (or `send_run_message` on a conversation run)\n resumes it. Answer your own test runs; on a run a human is depending on, the\n answer is theirs to give.\n - A FOR EACH launch is not one result. `read_run_items_summary` is the\n roll-up (\"4,415 processed \u00B7 12 failed\") and `list_run_items` the rows \u2014\n with `outcome: \"failed\"`, because the failures are scattered and filtering\n page one finds none of them.\n- A LIST is not the whole list. `list_workflow_runs` returns a page \u2014\n `{ items, nextCursor, pageSize, hasMore }`, 20 by default \u2014 so counting or\n concluding from page one while `hasMore` is true is how you answer confidently\n and wrongly. Follow `nextCursor` until it is null. And that route lists\n LAUNCHES: a 4,415-item FOR EACH is ONE entry carrying `forEachProgress`, so\n rows are not runs. `list_runs` pages the same way, by `nextCursor` with\n `hasMore`. `list_publish_approvals` pages by `offset` and answers `total`\n and `hasMore`: raise `offset` by `limit` until `hasMore` is false.\n\n## Delete is recoverable \u2014 but not everything is\n- `delete_*` soft-deletes: the entity disappears from `list_*` but is not gone.\n `restore_*` brings it back; `list_deleted_*` shows what's waiting. This\n applies uniformly to every entity that has a `delete_*` and a\n `restore_*` tool.\n- The same applies one level down, to version HISTORY:\n `delete_*_version` removes one entry from history (the current draft and\n published version are protected and can't be targeted this way);\n `list_deleted_*_versions` / `restore_deleted_*_version` undo it. Deleted\n version numbers stay reserved rather than reused, so gaps in the numbering\n are normal, not a sign of corruption.\n- `restore_*` can itself 409 if a live entity now holds the same name/slot \u2014\n the error names the conflicting one.\n- Deleting is not archiving. Some entities also have a `status` that can be\n `archived` \u2014 kept, not offered \u2014 set with `update_*`: `agent`, `tool`,\n `skill`, `policy`, `reference_doc`, `output_schema`, `data_table`,\n `measure`, `query` and `application`. The values each takes are in\n `get_entity_authoring_contract`. Runs have an archive of their own\n (`archive_run` / `unarchive_run`, see below).\n\n## Per entity \u2014 what to create, and what \"complete\" means\n\n**The platform's live create contract wins.** `get_entity_authoring_contract`\nreads this deploy's own contract per entity \u2014 required fields, allowed values,\nand the rules a publication checks \u2014 generated from the code that enforces\nthem, with a `rulesVersion`. The notes below are kept by hand in this\nconnector: guidance on order and on what \"complete\" means, SUBORDINATE to that\ncontract. Where they disagree, the contract is right and this text is behind.\nOn a deploy that does not serve it yet the tool says so; then the platform's\nrefusal on save or publish (and `get_publish_release`'s readiness) is the\nauthority, not these notes.\n\nBuild in dependency order: a thing you will REFERENCE must exist before the\nthing that references it. So: tools and output-schemas first, then agents (which\nlist tool ids), then workflows (whose steps name agents and tools), then\ntriggers (which make a workflow fire). Skills/policies/reference-docs can be\nmade any time before you attach them.\n\n### tool (`create_tool`, strict body)\n- Required: `name`. Also: `description`, `type`, `inputSchema`,\n `outputSchema`, `implementation`, `authConfig`, `surfacing`.\n- `type`: `\"function\"` (default) | `\"connector\"` | `\"validator\"` |\n `\"evaluator\"` | `\"executor\"`. `surfacing`: `\"always\"` (in the agent's tool list) |\n `\"on_demand\"`.\n- `inputSchema` / `outputSchema` are JSON-Schema objects describing the tool's\n params and result. Set them \u2014 an agent binds to a tool by its declared I/O; a\n tool with no inputSchema is hard to call correctly.\n- `implementation` is what makes the tool DO something, and its shape depends on\n `type`:\n - **function** \u2014 carries the Python. Author and check the code with\n `validate_tool_code` and `format_tool_code`, and prove it runs with\n `execute_tool`, BEFORE `create_tool`. A function tool whose\n `implementation` is empty is an inert stub.\n - **connector** \u2014 carries the HTTP call: typically `connectorType`\n (\"rest\"/\"graphql\"), `baseUrl`, `method`, `path`, `headers`,\n `queryParams`, `body`, `responseMapping`, `pagination`. Prefer the\n `create_connector` tool, which sets `type:\"connector\"` for you. NEVER put\n a real credential in `authConfig` \u2014 placeholders only (\"{{ MY_SECRET }}\"\n or \"\"); a human fills the secret in Axonity. Test with\n `execute_stored_connector` (uses the real, server-side-decrypted secret;\n you see only the result).\n - **`implementation.effect` is required to PUBLISH**: `\"reads\"` (fetches,\n looks something up) or `\"acts\"` (sends, writes, starts something). A\n draft saves without it; the publish approval refuses it (\"Set the\n connector's side effects \u2026 before publishing\"). Set it at create time,\n so the human approving is not the first to find out.\n - **An answer that is a file**: `responseMapping: { \"type\": \"file\",\n \"filename\": \"{{filename}}\" }` keeps the bytes as a file of the run and\n returns its reference\n `{ fileId, filename, contentType, sizeBytes, sha256 }` \u2014 the shape an\n upload has, so Digitize documents reads it and a sub-workflow's file\n parameter takes it. `filename` is optional (the far end's\n `Content-Disposition` name, else `document`) and may use the inputs.\n No `responseTransform` with a file answer. Outside a run\n (`execute_stored_connector`) nothing is stored: you see name and size.\n - **`sha256` in a file reference** is the hex SHA-256 of the bytes,\n computed once when the file was stored. The same bytes have the same\n value under any name, so compare it to recognise a file that was already\n processed (deciding that is the workflow's logic, not the platform's).\n Only a reference in a declared file parameter (`file`, or a list of\n `file`) is checked against storage. Where one enters a run \u2014 a\n manual, API or MCP start, a sub-workflow call (with its copy under\n `item` in the child) \u2014 its `filename`, `contentType`,\n `sizeBytes` and `sha256` are settled from storage, whatever the\n caller wrote. A reference to a file the run may not read keeps what the\n caller wrote and carries no `sha256`; at a webhook, cron or\n conditional start that holds for each of them, since such a start links\n no file. A reference anywhere else (an `object` field, an undeclared\n key) is not checked and keeps any `sha256` the caller wrote. Digitize\n documents always answers the stored `sha256` per file it read. So\n compare only the value on a declared file parameter or on Digitize's\n entry, never one in another field or one an agent wrote out.\n - **executor** \u2014 runs a command on a registered executor (a program on\n the customer's side). The save refuses a tool that names no executor or a\n command that executor does not know; `list_executors` and\n `list_executor_commands` say what exists.\n - **validator / evaluator** \u2014 a constrained kind, and `implementation` takes\n ONE OF TWO shapes. Either `{\"builtin\": \"validators.<name>\"}`, naming a\n house predicate \u2014 look at the tenant's existing validator/evaluator tools\n (`list_tools`) for the keys in use rather than inventing one. Or authored\n Python, like a function tool, whose `run` returns a VERDICT: `True` /\n `False` / a fail-detail object. A `run` that returns a string, a number\n or nothing at all declares no verdict and is REFUSED on save, so that a\n misconfigured gate cannot silently pass everything at run time. Authored\n code takes the standard call \u2014 see Validators.\n- Complete check: the tool has the I/O schemas its callers need AND a non-empty\n implementation of the right shape for its type.\n- `toolboxId` files the tool in a toolbox on creation. Read `list_toolboxes`\n BEFORE you create: a tool made without one is ungrouped, which is valid and\n is also how nobody finds it. See Toolboxes below.\n\n### agent (`create_agent`, strict body)\n- Required: `name`. Enumerated fields, with their ONLY valid values:\n - `capabilityTier`: `economy` | `standard` (default) | `smart` | `reasoning`\n - `creativityTier`: `low` | `medium` (default) | `high`\n - `reasoningLevel`: `default` (sends nothing, the model decides) | `none` | `low` | `medium` | `high` | `extra_high`\n - `delegation`: `off` (default) | `on` (one task to one team member at a time) | `multi` (also one task to several at once)\n- `persona` (text): who the agent is, in its own words \u2014 the character text\n every prompt of this agent opens with. It is a field of the agent and\n publishes with it (axonity-flow#2176); there is no separate persona to\n create, version or publish. To remove it send `\"\"`: on an update `null`\n leaves it as it is.\n- `slug` (its handle, set once at creation; left out: taken from the name),\n `avatar`, `conversational` (bool: may people talk to it),\n `delegationBudgetEur` (what one delegation to it may cost; empty: no\n budget), `frameworkToolsOff` (framework tools taken away; `submit_output`\n cannot be), `clearance` (what it may read; set by an administrator).\n- Output: `outputSchemaIds` (the output schemas it answers in \u2014 library ids\n or names; a schema outside the list is refused) and `defaultOutputSchemaId`\n (the one used when a caller names none; left out: the first). The GATES on\n an output live in the output_schema (see Validators), not on the agent.\n- Wiring fields \u2014 see the Wiring section: `toolIds`, `systemToolIds`,\n `delegationTargetIds`.\n- Anything else is refused: the body is strict, so a field the platform\n retired (axonity-flow#2176) is a 422 that names it, not a silent drop.\n- Complete check: an agent with no `toolIds`/`systemToolIds` has no tools and\n can only reason/talk. If it is meant to DO something, give it the tools.\n\n### workflow (`create_workflow`, then edit the document)\n- `create_workflow` makes a STUB (name, description) with an empty document.\n You then build the graph with either\n - `apply_workflow_mutations` \u2014 a LIST of command mutations applied in order\n (preferred: the backend validates each and threads the version), or\n - `replace_workflow_document` \u2014 a full-document atomic PUT.\n- The document is a graph: `steps.all[]` (each `{ id, type, name, ... }`) and\n `steps.edges[]` (each `{ id, from, to, type? }`) plus `triggers`.\n- A step's GOAL is read from a different place per step type: an `agent`\n step's `contract.goal`, a `manual` or `automation` step's\n `config.goal`. Written in the other place it is stored and read by nobody,\n and the validator keeps reporting `step_no_goal`.\n- After every `apply_workflow_mutations` / `replace_workflow_document` the\n connector runs `validate_workflow` on the stored workflow and returns its\n verdict as `validation`. Report those issues as they are. Green there means\n every PLATFORM check passed \u2014 none of them asks whether the editor can draw\n the document, so open it in the editor before you call it done.\n- WHICH VALUES a step's `type` and a trigger's `typeId` may hold is answered\n by `get_workflow_authoring_spec`, read live from this deploy. This guide\n does not list them, on purpose: it used to name nine step types where seven\n validate, and a list nobody could read is a list that goes wrong. The spec\n also lists the types you may NOT author, each with the reason and how to\n express that intention instead \u2014 so reaching for one gets you an answer\n rather than a `step_invalid_type`.\n- Referential integrity is enforced: step and trigger ids must be unique, and\n every edge `from`/`to` must reference an id that exists in the document\n (`from` may be a trigger or step; `to` must be a step). A dangling edge is a\n hard error.\n- Complete check: run `validate_workflow` on the document \u2014 it returns\n `launchable` plus an `issues` list. A workflow is not done until it is\n launchable AND has a trigger (see Triggers).\n\n### persona\n- Not an entity: the agent's `persona` field (see agent). Set it with\n `create_agent` / `update_agent`, or `create_agent_persona` (agentId,\n expectedVersion, persona); read it with `read_agent` or\n `read_agent_persona`. Its history is the agent's versions, and it goes live\n with `request_publish_agent`.\n\n### output_schema\n- A reusable output contract, versioned and publishable. Referenced BY id from a\n tool's validators or an agent's `outputSchemaIds` \u2014 so create it first,\n then point things at the id the create call returns.\n- `schemaBody` is a JSON Schema document (`type`, `properties`,\n `required`) PLUS one key that is not JSON Schema: `validators`, the gates\n run against a submitted output. This is the place a validator can be STEERED\n at part of the output \u2014 see Validators.\n\n### skill / policy / reference_doc\n- Memory entities attached to agents (and skills also to workflows). Create them,\n then wire with the `attach_*` tools \u2014 see Wiring.\n- A reference doc has NO kind any more. What used to be a semantic note lives\n in the model itself: a word is a concept (`create_concept`), a table card\n is the table's description and grain, a source query is a query of its\n own (`create_query`, the table's `fillingQueryId`), an example question\n is a measure's `questions`. The\n platform refuses `semanticKind`, `semanticDetails`, `subjectTableId`\n and `subjectSourceId` on a reference doc, and says where each one went.\n Building the SEMANTIC MODEL? Read `axonity_semantic_conventions` first \u2014\n those rules are served by the platform; this guide does not restate them.\n\n### prompt_snippet\n- Reusable prompt fragments; a normal entity. Wire-level oddity:\n `list_deleted_prompt_snippets` returns the backend `items` envelope.\n\n### flow\n- A reusable workflow fragment in the authored-entity lifecycle. `create_flow` /\n `update_flow` write draft state; runtime uses `read_flow_published` until\n approval. `request_publish_flow` to publish, `discard_flow_draft` to reset.\n\n### data_table\n- An authored table of rows: the tenant's own reference data, designed and\n maintained by a person, read by agents and decisions. Same lifecycle as an\n output schema \u2014 draft, version, request publish. See \"Tables\" below, which is\n where the rules that are NOT the generic ones live.\n\n### company\n- The tenant's single company document (mission, value streams, org structure).\n A SINGLETON \u2014 one per tenant, no id, so there is no list/create/delete:\n `read_company`, `update_company` (a WHOLE-document save with\n `expectedVersion`, like `replace_workflow_document`), `list_company_versions`,\n `read_company_version`, `restore_company_version`, `read_company_published`.\n Publish it like anything else with `request_publish_company` \u2014 but because it\n is a singleton this takes NO id (the server resolves your tenant's one\n company). Direct company publish is closed to machine tokens, so the approval\n queue is the only path.\n\n## Validators \u2014 one shape, one call\nA validator is a GATE on a submitted output: it runs after an agent produces a\nresult and can refuse it. The backend's OpenAPI description of `schemaBody`\nis the source for the full contract, and the platform's live contract\n(`get_entity_authoring_contract`, output_schema) wins over this section where\nthis deploy serves it. What follows is the part you cannot author without,\nchecked against the platform and SUBORDINATE to both.\n\nSpecs carry the same keys wherever they are written:\n- an output_schema's `schemaBody` (`validators`, and `preflight` for the\n checks an agent may run itself before it submits) \u2014 the gate on one value;\n- a workflow step's `contract.output_validators` \u2014 run on the step's WHOLE\n submission, so a rule about how its outputs relate has something to look at;\n `validate_workflow` reports a named validator tool that does not exist;\n- a conversation step's `answerContract.validators`, beside its `schema` \u2014\n run on the answer the agent hands in; without a `schema` nothing runs, and\n `validate_workflow` does not report it.\nThe agent itself no longer carries specs (axonity-flow#2176): it names the\nschemas it answers in with `outputSchemaIds`, and a spec sent on the agent's\nstrict create/update body is a 422.\n\n- A spec names its check in ONE of two ways, and each brings its own binding:\n - `function` \u2014 a shipped predicate (e.g. `validators.min_length`), bound\n by `target` (the field it judges; omit it to judge the whole output) and\n `args`.\n - `tool` \u2014 a validator TOOL in this tenant's library, by name or id.\n Exactly one of the two. Naming both leaves it unsaid which one runs, naming\n neither leaves nothing to run, and a gate does not get to be ambiguous \u2014 both\n are refused. The binding keys do not mix either: `target`/`args` belong to\n the `function` form and are refused on a `tool` spec, because a key the\n runtime ignores is worse stored than rejected.\n- `error_message` is what the agent is told on refusal, and the one key both\n forms share. `{value}` in it is replaced by what the validator reported.\n- `when_present` runs the check only when the target field is actually in the\n payload. Off by default, deliberately: a blanket skip turns a mistyped\n `target` into a gate that passes everything. Set it where a field is\n genuinely optional.\n\n### The standard call\nEVERY authored validator is invoked the same way. The signature does not vary\nper tool, and that is the whole point: a screen cannot offer inputs it does not\nknow, and a spec served to an agent cannot describe a shape that differs per\ntool. Bespoke parameters push the contract into prose that goes stale.\n\n```\nrun(data, slots, binding)\n```\n\n- `data` \u2014 what the validator is pointed at, UNTOUCHED. The whole submitted\n output, or the field named by `field`.\n- `slots` \u2014 every declared session-memory reference found in `data`, with its\n text, indexed by the reference itself. The platform resolves them because code\n in the sandbox is never handed a lookup callable \u2014 a validator may be foreign\n code.\n- `binding` \u2014 what you declared, verbatim, so the validator knows which values\n in `data` are references to look up rather than text to read. Without it it\n would have to guess, and guessing is how a check reads a key as though it were\n the body.\n\nTwo keys on the spec steer that call: `field` names the part of the output to\nhand over (leave it out for the whole output), and `slots` lists the fields\nthat hold references.\n\n```json\n{ \"tool\": \"my.freshness.check\",\n \"field\": \"units\",\n \"slots\": [\"key\", \"source_key\"],\n \"error_message\": \"REJECTED: {value}\" }\n```\n\nBOTH ARE CHECKED WHEN YOU SAVE the output schema, and a refusal names the\nfields that do exist: a `field` that is not a property, or a `slots` name the\nrows do not carry. That check is there because either mistake fails SILENTLY at\nrun time \u2014 a name that is not there is never looked up, so the gate runs on\nunresolved values and nothing says so. (Rows whose schema declares no shape are\nleft alone: there is nothing to check against, and guessing would refuse correct\nconfigurations.)\n\nWHERE `field` AND `slots` ARE CHECKED: when you save an output_schema, in\nits `schemaBody`, which is stored verbatim.\n\n### The older, explicit binding\nA tool spec MAY declare `inputs` instead, and a spec with `inputs` does NOT\nget the standard call. That is the way for a validator tool backed by a shipped\npredicate, which receives `value` plus its own arguments \u2014 its `run` would\nnot accept `data`/`slots`/`binding`. Each entry is\n`{\"source\": \"field\"|\"const\", \"field\": <name>, \"as\": \"slot\"?}`; with\n`as: \"slot\"` the field's value is read as a reference and its TEXT is passed.\n`field` takes a path, so a binding can point INTO a list: `units[].key` is,\nfrom every row in `units`, the `key` field.\n\nWriting a NEW validator: take the standard call and leave `inputs` out.\n\n## Wiring \u2014 how the pieces connect\nThere are THREE mechanisms, and using the wrong one silently no-ops. Know which\neach link uses.\n\n**A) Set a field on the entity (via create/update)** \u2014 an id or id-array that\nlives in the entity body:\n- tool \u2192 agent: add the tool's id to the agent's `toolIds`. This is how an\n agent gets a (non-system) tool. There is no attach_tool_to_agent route.\n- system tool \u2192 agent: add the catalog id to `systemToolIds`. Get ids from\n `list_system_tools`. No grant/revoke tool \u2014 you set the array via\n `update_agent`. `toolIds` and `systemToolIds` are DIFFERENT lists; a\n system-tool id does not go in `toolIds`.\n- agent \u2192 agent (delegation): add the callee agent's id to the caller's\n `delegationTargetIds` (and set `delegation` to `on` or `multi`).\n- output_schema \u2192 agent: `outputSchemaIds` (a list), with\n `defaultOutputSchemaId` for the one used when a caller names none.\n- Changing any of these is read-then-write under optimistic locking: read the\n agent, edit the field \u2014 an id-array is a FULL replace, so include the ids you\n are keeping \u2014 then `update_agent` with `expectedVersion`.\n\n**B) Call an attach route (a link, not a field).** `attach_*`/`detach_*` POST/\nDELETE a link and do NOT touch the entity body:\n- skill \u2192 agent: `attach_skill_to_agent`; skill \u2192 workflow:\n `attach_skill_to_workflow`.\n- policy \u2192 agent: `attach_policy_to_agent`.\n- reference_doc \u2192 agent: `attach_reference_to_agent` (agents only \u2014 there is no\n workflow-scoped reference-doc route).\n- VERIFY every one of these with the read-back before `request_publish_*`:\n `list_agent_skills`, `list_agent_policies`, `list_agent_reference_docs`,\n and `list_workflow_skills` for the workflow-scoped variant. This is not\n optional politeness \u2014 because a link lives OUTSIDE the entity body,\n `read_agent` / `read_workflow` will not show it, so the read-back is the\n only way to tell an attach that landed from one that silently did nothing.\n (Mechanism A is different: those ids ARE in the body, so re-reading the agent\n proves them.)\n- The three agent read-backs also take `workflowId`. With it you get the\n COMPOSED runtime view \u2014 what this agent's prompt actually assembles inside\n that workflow, with a `linkSource` per row saying WHY each item is there (an\n explicit link, tenant-wide, or scoped to the workflow). Without it you see the\n agent on its own, which is not what a run assembles.\n\n**C) Reference an id INSIDE the workflow document** (this is how agents and tools\nget \"into\" a workflow \u2014 there is no attach route for it):\n- agent \u2192 workflow: an `agent` step names its agent in the step's\n `contract.owners[]` as `{ \"type\": \"agent\", \"id\": \"<agentId>\" }`.\n- tool \u2192 workflow: on an `agent` step, list tool ids under\n `contract.tools.toolIds[]` (and/or per plan-step `contract.activities[]`\n entries of `{ \"kind\": \"tool\", \"toolId\": \"<id>\" }`). On an `automation` step,\n set `config.automationType: \"tool\"` and `config.toolId`. A `connector` step\n references a connector tool the same way.\n- Every id you place in a document must be a REAL id in THIS tenant. The workflow\n validator flags a step whose owner agent or referenced tool no longer exists \u2014\n `validate_workflow` is how you catch a bad reference before publishing.\n- Prefer `apply_workflow_mutations` (e.g. `add_step`, `update_step`,\n `add_edge`) over hand-building this JSON: the backend fills defaults and\n validates each edit. Read the returned document to see the exact shape it\n produced, then adjust.\n\n### Which way you are asking\n- `list_workflow_components` \u2014 what does THIS workflow depend on. Two hops:\n what the document names, and what each agent then actually receives.\n- `list_workflows_using` / `list_dependent_agents` \u2014 who depends on THIS\n entity. Ask before you edit or delete anything shared.\n- A component's `reach` is how many workflows name it, this one included. Above\n 1, an edit reaches processes you did not open; `duplicate_workflow_component`\n gives this workflow its own copy and leaves the others on the original.\n\n## Prompt elements & placement (Memory V2)\nA prompt snippet is a LIBRARY item \u2014 creating it changes nothing on its own. It\nonly shapes a run once it is PLACED into a flow step's prompt stack. Placement is\nper flow step, in one of two channels, at an order:\n- `read_workflow_prompt_stacks(workflowId)` (or `read_flow_prompt_stacks(flowId)`)\n resolves a workflow/flow to its steps and each step's system/user stacks \u2014 this\n is how you DISCOVER the `flowStepId`s you place against. Start here.\n- `attach_prompt_snippet_to_flow_step(flowStepId, snippetId, target, displayOrder?)`\n \u2014 `target` is `\"system\"` (instructions the model is steered by) or `\"user\"`\n (content presented as the user turn).\n- `list_flow_step_prompts` shows a step's current system/user stacks (with each\n attachment's `linkId`); `update_flow_step_prompt(linkId, \u2026)` moves/reorders one;\n `reorder_flow_step_prompts(flowStepId, snippetIds)` sets the whole order;\n `detach_prompt_snippet_from_flow_step(linkId)` unlinks (the snippet survives).\n- A WILDCARD snippet applies to EVERY step (top of every stack), with no\n per-step link. `list_wildcard_prompts` shows them.\n\nWhich prompt element an instruction goes in \u2014 persona, policy, skill, reference\ndoc or a step's activities \u2014 and how large each may be, is not decided here: the\nplacement rules are served by the platform and appended to this guide, read live\nfrom this deploy each time you call it.\n\nAn agent has no long-term recall of its own runs: episodic memory went with\naxonity-flow#2176. Session/workflow memory are RUNTIME, not authored: they are\nwritten by a run, never set here. This connector does not expose them \u2014 the\nbackend serves them per run, but no tool wraps those reads yet, so do not\npromise a user you can show them.\n\n## Reproducing a setup (recreate, never copy ids)\nTo rebuild an agent/workflow/tool graph as NEW entities \u2014 in this tenant, or in\nanother tenant by pointing the connector at THAT tenant's token in a separate\nsession \u2014 author it fresh and wire by the NEW ids. An id from a read is\nmeaningful only in the tenant it came from; sending it back in a create/update\nelsewhere points at nothing. Do this instead:\n1. Read the source graph (in the session pointed at it) for its SHAPE: names,\n field values, which tools each agent lists, which agents/tools each workflow\n step references. START WITH `list_workflow_components`: it answers what the\n workflow is made of in one call \u2014 agents and flows, the workflows it calls,\n the tools those agents reach, the tables behind those tools, the knowledge\n attached \u2014 each row naming the STEPS that are the reason it is there. Walking\n that outward by hand is how a rebuild quietly loses a tool nobody noticed was\n attached. Then read each entity for its field values. For each source agent\n also read its LINKS \u2014 `list_agent_skills`, `list_agent_policies`,\n `list_agent_reference_docs` \u2014 they are not in the agent body, so a plain\n `read_agent` misses them and you would rebuild an agent that quietly lost\n its skills and guardrails.\n2. Create the leaf dependencies first (tools, output_schemas). Keep a map from\n each OLD id to the NEW id the create call returns.\n3. Create agents, translating every referenced id through your map:\n old toolId \u2192 new toolId in `toolIds`, etc. Never send an old id. The\n persona is a field of the agent: copy its `persona` text into the create.\n4. Create workflows; when you add agent/tool references into the document,\n translate through the map the same way.\n5. Attach skills/policies/reference-docs by the new ids, then read them back\n (`list_agent_*`) and diff against what you read in step 1.\n6. `validate_workflow` and re-read each entity to confirm every reference\n resolved, then `request_publish_*`.\nThe connector never carries a secret across: `authConfig` stays placeholders in\nthe new tenant too, and a human fills the real value there.\n\n## Structural workflow edits\n- **Start by reading the spec.** `get_workflow_authoring_spec` returns the\n lists this deploy generates from its own registries: the mutation commands\n (`operations`), the trigger types (`triggerTypes`), the step types\n (`stepTypes`, including the ones you may not author, with the reason), the\n schedule-rule shapes with a working example each (`scheduleRuleKinds`), the\n value vocabularies (`parameterTypes`, `outputKinds`, `schemaFieldKinds`),\n the decision evaluators (`decisionEvaluators`) and the column kinds of a\n table (`tableColumnKinds`). Neither\n this guide nor the tool descriptions restate any of those lists: a list kept\n in the connector is right only by maintenance, and it has been wrong twice\n already, both times in the direction that costs an agent a 422 on something it\n was told to use. Pass `types` for the live payload schema of a command you\n are about to write.\n- **The payload schemas describe themselves.** What may go inside\n `parameters`, `inputs`, `outputs` and `contract` is IN those schemas \u2014\n including the fact that a bound input DERIVES its contract from the output it\n reads. Ask the spec for the command's `types` rather than looking for prose\n about the shape here; there deliberately is none.\n- **One thing the schemas do not make obvious: which KEY carries the value's\n type, because it is not the same key everywhere.**\n - A TRIGGER PARAMETER and a WORKFLOW CONSTANT use `type`.\n - A step INPUT or OUTPUT uses `kind`.\n - Where a field carries a nested `schema` object, `schema.kind` is what\n wins.\n\n This asymmetry is real, not a typo to normalise: the shapes came from\n different surfaces, and normalising them would make one reader wrong. The\n VALUES differ too \u2014 `get_workflow_authoring_spec` returns one list per key\n (`parameterTypes`, `outputKinds`, `schemaFieldKinds`), and they are not\n interchangeable: only one knows `constant`, and they disagree on how to\n spell a yes/no. Read the list that matches the shape you are writing; this\n guide does not restate them, for the same reason it restates no other list.\n\n Writing `kind` on a trigger parameter is not a 422; it is a key nothing\n reads, so the value silently falls back to text and the workflow runs with\n the wrong thing. Check which of the three you are writing before you write it.\n- `rulesVersion` in that response is a content hash over the whole\n answer. While\n it is unchanged there is nothing to re-fetch; re-read the spec when it changes,\n or when a mutation fails with a 422 suggesting your idea of a command is stale.\n- `apply_workflow_mutations` takes a LIST of commands and applies them in order,\n threading the version for you \u2014 pass the version you read, not one per command.\n- It is NOT transactional. If command N fails, the ones before it stay applied;\n the error tells you how many landed and which index failed. Re-read and resume\n from that index rather than replaying the whole list.\n- `replace_workflow_document` stores the document's `name` and\n `description` \u2014 they sync onto the workflow's own columns, an omitted key\n leaves the stored value alone, and an explicit `\"\"` clears it. `stageId`,\n `capabilityId`, `valueStreamId` and `onFailure` are PATCH-only: changing\n one through this route is REFUSED with a 422 naming the field, and\n round-tripping it unchanged passes. Read, edit, write is therefore safe;\n re-linking a workflow to another stage or capability is its own call.\n- The response is a SUMMARY (version, appliedCount, launchable, validationIssues,\n stepCount, edgeCount), not the document. That is deliberate: a real workflow\n document overflows the response limit, and a successful call would come back\n looking like a failure \u2014 retrying that is how you end up with duplicate steps.\n Ask for the document with `returnDocument: true` or `read_workflow`.\n- Command payloads are STRICT and complete:\n - `add_step` builds a whole step in ONE call \u2014 `name` and `position` are\n required, and `id`, `type`, `config`, `contract`, `inputs` and\n `outputs` are accepted next to them. No follow-up `update_step` is needed\n just to fill the step in.\n - `add_trigger` does the same for a trigger: `parameters` and `outputs`\n go in that call. This is what makes a callable workflow declarable in one\n mutation, since a trigger's parameter list IS its signature.\n - `add_edge` takes the document's own `from`/`to` as well as\n `fromStepId`/`toStepId`, and keeps an `id` you supply.\n - An unknown or misspelled key is a 422 naming it, not a silent drop \u2014 so\n spelling matters and you are told when it is wrong.\n\n## Inputs and constants \u2014 the two lists that belong to the PROCESS\nA workflow declares two whole-list things of its own, both edited the same way\n(read the list, change it, write it back \u2014 there is no per-entry command,\nbecause the identity is the `name` and renaming is the common edit):\n- `set_workflow_inputs` \u2014 what the process NEEDS to start. Carried by every\n start, and the list a caller fills in whichever trigger fired. A start's own\n `parameters` are what that start declares on top; where a name is in both,\n the process-level one wins.\n- `set_workflow_constants` \u2014 what the AUTHOR pins, described below.\nRead both back with `read_workflow_trigger_parameters`, which answers\n`{ inputs, triggers, constants }`.\n\n## Constants \u2014 values the AUTHOR owns\nA constant is applied on EVERY run whichever trigger fired, and it OVERWRITES\nwhatever a caller sent. That is deliberate: a field the operator's form does not\nshow must not become an injection point for anyone who learns its name.\n- Set them with the `set_workflow_constants` command. It replaces the WHOLE\n list, the way `advanced_edit` replaces steps and edges \u2014 read the list, edit\n it, write it back. There is no per-constant command, because a constant's\n identity is its name and renaming is the common edit.\n- Every entry needs a `name`: it is what a step binds to and how the run\n payload keys it. A nameless entry is refused rather than stored, because at\n run time it would simply be skipped.\n- **A constant with no value blocks publishing.** `constant_without_value` is\n an error, not a warning, and it names the constant. It has to be: an entry\n with no value was never written into the run at all, so the workflow validated\n clean, published, and ran without it.\n- ABSENCE, not falsiness. `0`, `\"\"`, `false` and `[]` are values and pass.\n- The value lives in `defaultValue`. On a constant that is not a fallback \u2014\n it IS the value, written on every run. A constant carries no `required`\n (nobody is being asked to fill it in) and needs no flag saying it is one.\n- **A trigger parameter can be pinned the same way**, and the platform reads\n TWO spellings: `constant: true`, or the older `type: \"constant\"`. Both\n mean the author owns it and the caller must not send it, so treat a parameter\n carrying either as off-limits when you build `triggerInput`.\n `read_workflow_trigger_parameters` collapses both into `pinned`, on the\n workflow's constants and on each start's parameters \u2014 read that rather than\n checking the two spellings yourself.\n\n## Two platform invariants that look like bugs\nBoth are deliberate, both run after EVERY edit, and both now report themselves in\nthe mutation response under `systemAdjustments` \u2014 so you no longer have to diff\na document to find out what the platform did.\n- **A bound input's contract is derived, not authored.** An input that reads an\n upstream output takes its contract \u2014 description included \u2014 FROM that output.\n Write the text on the producing step's output; a downstream description changing\n when you edit an output is this rule at work, not the platform overwriting you.\n The inputs it re-derived come back in `rederivedInputs`.\n- **Every step reaches the END point.** The platform guarantees it and wires that\n edge itself; the edges it added or removed come back in `addedEdges` /\n `removedEdges`. An edge you did not ask for is this, not corruption.\n\n## Validating: two questions, two calls\n- `validate_workflow({ workflowId })` checks the workflow as SAVED against the\n tenant catalog \u2014 whether the agents, tools and flows the steps reference\n exist and are published \u2014 plus its own wiring (its triggers and the knowledge\n attached to it). This is the \"can this run?\" answer. It needs a token with\n the `author` scope.\n- `validate_workflow({ document })` judges the document against the same\n catalog, saves nothing, and a read-only token may call it. Without the\n workflow's id it skips the checks about that workflow's own wiring (its\n triggers and the knowledge attached to it), so validate by `workflowId` once\n it is saved. Either call answers `catalogChecked: false` when the catalog\n could not be built: then `launchable` means the graph is sound, not that it\n will run.\n- Pass exactly one. Before telling a human a workflow is ready, check\n `catalogChecked` \u2014 a green structural verdict is the easiest thing to\n over-read.\n- Read the `issues` rather than only `launchable`: the validator now reports\n a sub-process call with no target, one pointing at itself, one whose target\n is deleted or was never published or has no invocation trigger, a constant\n with no value, and a trigger drawn on the canvas that nothing is wired to.\n Some of those are warnings and still let a workflow publish \u2014 read the\n `severity`, and read the `code`, which is stable where the message is not.\n\n## Triggers\n- A published workflow still does nothing until it has a trigger. A trigger has\n TWO halves, and drawing one on the canvas is only the first.\n- **A schedule and a conditional start are reconciled for you.** Draw them in\n the document, publish, and the firing row is brought into line: created,\n updated, and removed when the element is gone. A deploy does the same and\n brings new ones in switched off.\n- **A webhook is NOT.** Its row must be created separately \u2014\n `create_webhook_trigger` \u2014 and publishing will not create one. A webhook\n drawn and published with no row is an endpoint that does not exist; the\n validator says so with `trigger_not_wired`, a WARNING, so the publish still\n goes through. Take the warning seriously: nothing else will tell you.\n- Trigger deletes are HARD deletes \u2014 no restore. Webhook tokens are shown once\n at create/rotate and are never retrievable; hand them straight to your human\n and never store one in an entity field.\n- **A schedule is a claim \u2014 check it.** `run_cron_schedule_now` fires one\n immediately without moving `nextFireAt`, so you can prove a schedule starts\n something instead of waiting until tomorrow to find out it does not. It runs\n for real, with real cost and side effects.\n- **To PAUSE a schedule, disarm it** (`set_cron_schedule_enabled`), never\n delete it. Deleting throws away the rules the author wrote and makes \"stop\n this for a week\" indistinguishable from \"we do not do this any more\".\n- `create_cron_schedule` takes EITHER `cronExpr` OR `rules`, and the\n trigger must exist in the PUBLISHED document. For the rule shapes, read\n `scheduleRuleKinds` from `get_workflow_authoring_spec` \u2014 do not invent one.\n- `list_all_cron_schedules` answers \"what runs tonight?\" across the tenant;\n `reconcile_cron_schedules` answers \"is that actually what runs?\". The second\n reports rather than tidying silently and never arms something switched off.\n- **A conditional start is authored in the workflow, on the trigger element.**\n Its `typeId` is `\"conditional-poll\"`, its `id` MUST be a UUID (the\n platform cannot make a row for any other id), and everything it does lives\n on its `config`: `conditionText`, `repeatIntervalMinutes`, and the\n CHECK \u2014 `checkKind` with that kind's settings. Write it with\n `apply_workflow_mutations` (`add_trigger`, or `update_trigger`, which\n REPLACES `config` whole \u2014 read it, change it, send all of it). Publishing\n copies it onto the row `list_conditional_triggers` shows.\n `create_conditional_trigger` is not the normal path, and the platform\n refuses a check sent to it or to `update_conditional_trigger`: \"A\n conditional start's check is set on the start in the workflow, and takes\n effect when the workflow is published.\"\n- **A conditional start without a CHECK starts the workflow every beat.** It\n wakes on its interval and, with no `checkKind`, runs regardless of whether\n there was anything to do \u2014 a mailbox on fifteen minutes then makes\n ninety-six empty runs a day. Read `checkKind` in\n `list_conditional_triggers` before assuming a start has one.\n- `checkKind: \"automatic\"` decides with no model, before a run exists. Its\n settings on `config` are `plan` (the steps of an automation step, each\n with a `toolId`), `outputs` (what the plan produces \u2014 not worked out by\n an agent) and `startsWhen` (rules `{ field, op, value }` of a decision's\n rule table, where `field` names one of those outputs). A look that cannot\n be made \u2014 a broken tool, a rule on an output nothing produces \u2014 is a fault,\n never a start.\n- `checkKind: \"agent\"` is for a condition that needs judgement: the beat\n becomes a run whose first step asks the agent named by `config.agentId`\n (else the workflow's owner); it stays out of the Runs list until the answer\n is yes. Settings: `agentId`, `toolIds`, `inputs`, `reasoningLevel`.\n- Do not pre-validate a check here. `validate_workflow` judges it\n (`conditional_check_invalid`) with the same function the dispatcher runs\n when the start fires, and the refusal says what to change.\n- **Removing `checkKind` does NOT take a check off.** A `config` without it\n is read as a start written before checks existed, and the row keeps the\n check it has. There is no way to return a start to \"every beat\" today; say\n so to your human rather than looking for a route to the row.\n- Publishing also switches every start of the workflow back ON. An\n `update_conditional_trigger({ enabled: false })` lasts until the next\n publish of that workflow.\n\n## Evaluating what you built\n- There is no findings endpoint and no evaluator entity. To judge a run, read it:\n `read_run` (its `validatorVerdicts` and `agentInvocations`) and\n `read_run_trace` (the step-by-step tool calls).\n- **Start with `read_run_outline`, not `read_run`.** The outline is the run's\n table of contents and carries no bodies, so it costs what the run's SHAPE\n costs rather than its content \u2014 a fan-out over four thousand items reads about\n as cheaply as one over four. Then open only what you need:\n `read_run_value` for one large step value (by the digest in `stepStates`),\n `read_run_invocation_messages` for one agent's transcript (by the id in\n `agentInvocations`). Reading a whole run to find one message is the habit\n this replaces.\n- `itemCap` on the outline bounds items listed per fan-out step; the remainder\n is counted in `counts.truncated`, never dropped in silence.\n- **What an agent wrote to itself is readable.** `list_run_session_memory`\n lists the files an agent left during a run (metadata only) and\n `read_run_session_memory_file` opens one. When the trace shows a decision but\n not what it was reading, this is usually where the reason is. Workflow-bound\n reference material is NOT here \u2014 that lives in `reference_docs`.\n- **`list_todo_steps`** is every step in the tenant waiting on a person, across\n all runs: an unanswered question (`ask_user`), a plan awaiting approval, a\n manual step or a decision step. Not on it: archived runs, conversations, a\n debug pause (`phase_control`) and a question already answered. Each item\n belongs to one agent or none (`agentId`): a question or a plan to the agent\n that asked, a manual or decision step to the workflow's owner, none for the\n platform's old budget question and for hidden platform workflows. Pass\n `agentId` for one agent's items; without it the list shows every item.\n `groupKey` is equal for questions with the same workflow, step and text, so\n they can be shown once; each is still answered on its own run.\n- `list_todo_steps` is PAGED over the waiting RUNS, so `items` can be\n longer than `pageSize` \u2014 one run may park several steps \u2014 or shorter.\n Follow `nextCursor` until it is null before concluding anything about how\n much is waiting. `read_run_waiting_on` is a different read: the pending\n wake-tasks of one run (a timer; an answer or a callback's result on its way);\n an open question, a FOR EACH batch and a callback still running have none.\n- A run's archive is reversible (`archive_run` / `unarchive_run`);\n `bulk_delete_runs` is not.\n\n## Subworkflows \u2014 one workflow calling another\nBoth halves live in the workflow DOCUMENT, so both are ordinary\n`apply_workflow_mutations` work. There is no separate \"link\" route.\n- **To make a workflow callable**, it needs TWO things: a trigger with\n `typeId: \"subprocess-invocation\"` (`add_trigger`), which is what makes it\n callable at all, and a declared SIGNATURE.\n- **The signature belongs to the PROCESS, not to the trigger.** Declare it with\n `set_workflow_inputs` \u2014 one list, carried by every start, and the same list\n a caller of any kind fills in. A trigger's own `parameters` are what THAT\n start declares on top; `parameters` goes in the `add_trigger` call itself,\n so a start that does add fields needs no follow-up `update_trigger`.\n- Older documents declared everything on the invocation trigger instead, and\n that still works: both are read, and where a name appears in both the\n PROCESS-level one wins. When you are editing a workflow you did not author,\n read `read_workflow_trigger_parameters` and see which list actually holds\n its fields before adding to either.\n- `set_workflow_inputs` REPLACES the whole list, like\n `set_workflow_constants`: read, edit, write back. An entry with no `name`\n is refused rather than stored \u2014 the name is how a caller passes the value and\n how the run payload keys it, so a nameless one would be skipped silently at\n run time.\n- For what an input or a parameter may contain, ask\n `get_workflow_authoring_spec` for the payload schema of the command you are\n about to write, rather than a shape written down here.\n- **It must also be PUBLISHED.** The catalogue reads the published document, so\n a draft-only workflow comes back `callable: false` with \"Never published\".\n Authoring the caller first and publishing the callee later is a run-time\n failure waiting to happen.\n- **To call it**, add a step with `type: \"subprocess\"` and\n `config: { targetWorkflowId, ownerAgentId }` \u2014 both required, both workflow/\n agent ids. Bind the step's `inputs` by NAME to the callee's `parameters`;\n that is the whole mapping, there is no separate argument block.\n- `config.waitForCompletion` is **IGNORED** if you write it. Drawing a step\n after this one already means \"after\", so waiting is implied. The one thing the\n graph cannot say is fire-and-forget: `config.fireAndForget: true`, and then\n nothing downstream may depend on the result.\n- `config.errorStrategy` (\"fail\" | \"skip\") is only honoured when the step\n ITERATES (`config.iteration.enabled`). On a single call \"skip\" would report\n a failed child as success, so it is forced to fail-fast.\n- **A workflow cannot call itself** \u2014 every run would spawn a child that reaches\n the same step again. Pass `exclude: <the workflow you are editing>` to\n `list_callable_workflows` and it is kept out of the list.\n- **What comes back** is the callee's `outcomes`: its end steps, each with the\n fields bound into it. WHICH end was reached is itself part of the answer.\n- **`validate_workflow` checks this now.** A missing target, a workflow\n calling itself, a target that is deleted, never published, or has no\n invocation trigger \u2014 each has its own issue code, and the ones that resolve to\n nothing are errors that block publishing. Still run\n `list_callable_workflows` BEFORE you author the step: it is how you pick a\n target and see the interface you are binding to, where the validator only\n tells you afterwards that the one you picked was wrong.\n\n## Secrets\n- Never handle a real credential. A connector's `authConfig` takes placeholders\n only (\"{{ MY_SECRET }}\" or \"\"); a human fills the real value in Axonity. This\n is enforced \u2014 a write carrying something that looks like a real secret is\n rejected before it leaves this connector.\n- You CAN read the catalogue: `list_secrets` (id, name, authType) and\n `read_secret`. That is how you get the id for a connector's\n `authConfig.secretId` \u2014 do not ask a human to copy one out of the UI.\n- Before you wire a connector to a secret, check `valueKeys` on\n `read_secret`. An empty list means nobody has filled the secret in yet: the\n connector will author fine and fail at RUN time. Say so to your human, with the\n secret's name, rather than reporting the wiring as done.\n- You cannot create, change or delete a secret. That is a human act in Axonity \u2192\n Settings \u2192 Secrets, and the backend refuses it from this connector's token.\n- A secret's `metadata` (connection config, e.g. a session_cookie handshake)\n comes back with credential-shaped entries withheld, listed under\n `metadataRedacted`. If you need one of those values, a human reads it in\n Axonity \u2014 do not try another route to it.\n\n## Tables \u2014 the tenant's own reference data\nA table is an authored library element that HOLDS ROWS: the pricing bands, the\nregion-to-owner map, the list of accepted reason codes. A person designs the\ncolumns and maintains the content; agents and decisions read it.\n\n**When a table is the right element.** Reach for one when the CONTENT is the\npoint and it changes without the process changing.\n- Not an `output_schema`: that describes a SHAPE and holds no data. If you\n find yourself putting example values in a schema, you wanted a table.\n- Not a workflow constant: a constant belongs to ONE workflow and is edited in\n its document. A table is shared, and three workflows reading the same rows is\n the case it exists for.\n- Not a function tool with a list inside it: that makes changing a row an act of\n editing code, reviewing it and publishing a tool. A business user maintains a\n table; nobody should need you to change a postcode.\n\n**Who fills it \u2014 `filledBy`, one per table** (`author`, `workflow`,\n`query` or `source`).\n- `author` (the default) is reference data the AUTHOR maintains. A workflow\n reads it and cannot change it. `allowedOperations` must be empty: a\n permission nothing honours is refused, not stored.\n- `workflow` lets a workflow change the rows, limited to\n `allowedOperations` \u2014 any of `add` / `update` / `delete`. READING IS\n NEVER LISTED there: it is what a table is for and is always allowed.\n- `query` fills the rows from a named query (`fillingQueryId`, on its\n `rhythm` or with `refresh_data_table`).\n- `source` holds no rows here: they stay in a data source, and `external`\n says where. `create_data_table` describes each filler's fields.\n- You edit rows through `add_data_table_row` / `update_data_table_row` /\n `delete_data_table_row` whatever the table's mode says \u2014 those grants are\n about what a RUN may do, not about authoring.\n\n**Never put rows in `update_data_table`.** `rows` and `columns` are\nwhole-collection fields: sending one row REPLACES the table's content and\ndeletes everything else. The row tools address a single row by a match\n(`matchColumn`/`matchValue`) and cannot touch the rest \u2014 use them. Reach for\n`update_data_table({ fields: { rows } })` only when you genuinely mean to\nreplace the whole content, and never as a way to append.\n\n**The rule that bites hardest: derived tools follow the PUBLISHED table.** A\npublished table mints its own CRUD tools, so granting an agent access to one is\nordinary tool granting \u2014 take a `toolId` from `list_data_table_tools` and put\nit in the agent's `toolIds`. But those tools follow the table's PUBLISHED\nversion. An author who ticked \"may add rows\" and has not published has granted\nnothing, and the tool that would let a run act on it does not exist yet.\n`list_data_table_tools` reports `offered` (what the draft would yield),\n`toolId` (whether a row exists) and `isLive` (whether a run can reach it)\nseparately for exactly this reason. Read all three before concluding a grant\nlanded. Same rule as everywhere else here \u2014 a draft changes nothing until it is\npublished \u2014 and it is the first thing an agent gets wrong about tables.\n\n**Routing a decision on a table.** A decision can branch by looking a value up\nin one column and taking the branch named in another, with\n`builtin: \"evaluators.table_lookup\"`. The behaviour worth knowing, because no\ncatalogue states it: THE CELL'S VALUE IS THE BRANCH'S OUTCOME KEY \u2014 not a new\nfield, and not something you map afterwards. Every value in the result column\nmust be the outcome key of an outgoing branch, or publishing the workflow is\nrefused. The table must be PUBLISHED: a run reads the published snapshot, so a\ntable that is only saved routes nothing. For the argument names it reads, and\nfor every other selectable evaluator, read `decisionEvaluators` from\n`get_workflow_authoring_spec` \u2014 generated from the registry that dispatches\nthem, so it cannot advertise one the platform would not run.\n\n**Column kinds** come from the same place: `tableColumnKinds` in\n`get_workflow_authoring_spec`. It is a FOURTH vocabulary beside the three for\nparameters, outputs and schema fields, with its own spellings \u2014 do not carry a\nvalue across from one of the others, and do not guess. Every column needs a\n`description`: an agent reads it to know what the column is for, and a save\nwithout one is refused.\n\n**`list_data_tables` is PAGED**, like `list_measures`, `list_queries` and\n`list_applications` \u2014 a tenant's reference data has no ceiling. Page one is not the library. Follow\n`nextCursor` while `hasMore` is true, or better, narrow in the query:\n`name` is exact and unique per workspace, so \"does one called X already\nexist\" is a single call rather than a walk. The page carries `rowCount`, never\nthe rows; the rows come from `read_data_table`.\n\n## Toolboxes \u2014 where a tool is filed\n- A toolbox is a per-tenant grouping label over tools. Read `list_toolboxes`\n before `create_tool` and pass the box's id as `toolboxId`; a tool created\n without one is ungrouped. Move an existing tool with\n `assign_tool_toolbox` (`toolboxId: null` takes it out of its box).\n- `set_toolbox_tools` DECLARES the membership \u2014 it does not add to it. A tool\n in the box and absent from your list is evicted. To add one tool, read the\n box's contents first, or use `assign_tool_toolbox`, which cannot evict\n anything by accident. A tool is in at most one box.\n- A toolbox NEVER changes what an agent may call. An agent is linked to\n individual tools (`agent.toolIds`), never to a box; there is no route that\n grants a whole box, and \"give this agent the Carerix toolbox\" is a bulk write\n of individual links. What the box decides is how a tool is ADVERTISED: a boxed\n tool with `surfacing: \"inherit\"` is found via discover_tools instead of\n riding in every prompt. Read `effectiveSurfacing` on the tool to answer \"is\n it in the prompt?\"; `surfacing` is the raw stored choice.\n- Deleting a toolbox does NOT delete its tools \u2014 they survive, ungrouped. The\n box itself has no restore.\n- Platform-shipped tools cannot be moved. The `Axonity`, `Checks` and\n `Branching` boxes hold locked tools; the API refuses and NAMES the tool it\n refused. Read that name to your human instead of bisecting the selection.\n- `set_toolbox_auth` sets the credential a box's tools SHARE \u2014 ten Microsoft\n Mail tools, one mailbox, said once. A tool with its own auth keeps it; only a\n tool with none inherits. Same rule as anywhere else: point `secretId` at a\n stored secret, never a real value. Before you clear or replace it, or delete\n the box, call `list_toolbox_dependent_tools` \u2014 it names the tools that would\n start failing at run time with a bare 401.\n\n## Who may read what\nEvery policy, skill, reference doc and table carries a label: `level`\n(public, internal, confidential) and `audienceIds`, whom it is meant for. An\nagent and a workflow carry a `clearance`; so does your token, and you read\nwith it. Look audience ids up with `list_audiences` \u2014 never guess one, and\ncompare on id, never on name. `level: null` makes a thing readable by nobody.\nNarrowing a label is always allowed; widening it is a colleague's act, never\nyours.\n\n## Tenant\n- Your token fixes the tenant. You cannot act across tenants; never send a\n tenant id in a body.\n- `read_model_tier_map` says what `capabilityTier` actually RESOLVES TO on\n this tenant. The tier is the field you write; the model is what you are\n choosing. Read it before you pick one.\n- When a run does not start, look outward before blaming the workflow:\n `read_concurrency_status` (is the tenant at its cap?),\n `read_queue_overview` (is dispatch alive?), `list_task_queue` (did\n something fail in the layer beneath the run?). `read_for_each_rate` explains\n a fan-out that is pacing itself rather than stalling.\n- You can READ those and not change them. Caps, rate ceilings and the tier map\n are operator decisions \u2014 report what you found, and to whom, rather than\n looking for another route to it.\n- `read_deploy_contract` says what THIS deploy speaks: build, environment and\n the routes it mounts. Read it when a call fails in a way that suggests the\n backend is older or newer than you expect.\n- `list_users` is where an `ownerId` comes from. Look one up instead of\n asking a human to copy it out of the UI.\n- `list_audit_events({ actorKind: \"service_token\" })` reads back what external\n agents \u2014 including you \u2014 actually changed.\n";
|
|
52
52
|
/** Where this deploy serves its prompt-element placement rules. */
|
|
53
53
|
export declare const PLACEMENT_ROUTE = "/api/v1/authoring/prompt-placement";
|
|
54
54
|
/** Where this deploy serves its rules for writing the semantic layer. */
|
|
@@ -210,9 +210,13 @@ has run cleanly once, at its current version.
|
|
|
210
210
|
the author owns that value and it is overwritten anyway.
|
|
211
211
|
- **A run can park instead of finishing.** A step that asks a question waits
|
|
212
212
|
for an answer, so "it never came back" usually means "it is waiting on you".
|
|
213
|
-
\`
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
\`list_todo_steps\` has every step that waits on a person (a question, a
|
|
214
|
+
plan, a manual or decision step); \`read_run_waiting_on\` has a timer and an
|
|
215
|
+
answer or callback result on its way; a FOR EACH batch is on
|
|
216
|
+
\`read_run_for_each_progress\`; a conversation run waits in its chat.
|
|
217
|
+
\`answer_run_question\` (or \`send_run_message\` on a conversation run)
|
|
218
|
+
resumes it. Answer your own test runs; on a run a human is depending on, the
|
|
219
|
+
answer is theirs to give.
|
|
216
220
|
- A FOR EACH launch is not one result. \`read_run_items_summary\` is the
|
|
217
221
|
roll-up ("4,415 processed · 12 failed") and \`list_run_items\` the rows —
|
|
218
222
|
with \`outcome: "failed"\`, because the failures are scattered and filtering
|
|
@@ -242,7 +246,7 @@ has run cleanly once, at its current version.
|
|
|
242
246
|
- Deleting is not archiving. Some entities also have a \`status\` that can be
|
|
243
247
|
\`archived\` — kept, not offered — set with \`update_*\`: \`agent\`, \`tool\`,
|
|
244
248
|
\`skill\`, \`policy\`, \`reference_doc\`, \`output_schema\`, \`data_table\`,
|
|
245
|
-
\`measure\` and \`application\`. The values each takes are in
|
|
249
|
+
\`measure\`, \`query\` and \`application\`. The values each takes are in
|
|
246
250
|
\`get_entity_authoring_contract\`. Runs have an archive of their own
|
|
247
251
|
(\`archive_run\` / \`unarchive_run\`, see below).
|
|
248
252
|
|
|
@@ -903,11 +907,22 @@ a document to find out what the platform did.
|
|
|
903
907
|
\`read_run_session_memory_file\` opens one. When the trace shows a decision but
|
|
904
908
|
not what it was reading, this is usually where the reason is. Workflow-bound
|
|
905
909
|
reference material is NOT here — that lives in \`reference_docs\`.
|
|
906
|
-
- **\`list_todo_steps\`** is every step in the tenant waiting on a
|
|
907
|
-
all runs
|
|
908
|
-
|
|
909
|
-
\`
|
|
910
|
-
|
|
910
|
+
- **\`list_todo_steps\`** is every step in the tenant waiting on a person, across
|
|
911
|
+
all runs: an unanswered question (\`ask_user\`), a plan awaiting approval, a
|
|
912
|
+
manual step or a decision step. Not on it: archived runs, conversations, a
|
|
913
|
+
debug pause (\`phase_control\`) and a question already answered. Each item
|
|
914
|
+
belongs to one agent or none (\`agentId\`): a question or a plan to the agent
|
|
915
|
+
that asked, a manual or decision step to the workflow's owner, none for the
|
|
916
|
+
platform's old budget question and for hidden platform workflows. Pass
|
|
917
|
+
\`agentId\` for one agent's items; without it the list shows every item.
|
|
918
|
+
\`groupKey\` is equal for questions with the same workflow, step and text, so
|
|
919
|
+
they can be shown once; each is still answered on its own run.
|
|
920
|
+
- \`list_todo_steps\` is PAGED over the waiting RUNS, so \`items\` can be
|
|
921
|
+
longer than \`pageSize\` — one run may park several steps — or shorter.
|
|
922
|
+
Follow \`nextCursor\` until it is null before concluding anything about how
|
|
923
|
+
much is waiting. \`read_run_waiting_on\` is a different read: the pending
|
|
924
|
+
wake-tasks of one run (a timer; an answer or a callback's result on its way);
|
|
925
|
+
an open question, a FOR EACH batch and a callback still running have none.
|
|
911
926
|
- A run's archive is reversible (\`archive_run\` / \`unarchive_run\`);
|
|
912
927
|
\`bulk_delete_runs\` is not.
|
|
913
928
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/tools/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAMH,MAAM,CAAC,MAAM,WAAW,GAAG
|
|
1
|
+
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/tools/conventions.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/runs.js
CHANGED
|
@@ -51,8 +51,9 @@ export function registerRunTools(server, client) {
|
|
|
51
51
|
"triggerId that does not exist is a 422 listing the ones that do, never a " +
|
|
52
52
|
"quiet fallback to a different start. " +
|
|
53
53
|
"\n\nA run may PARK on a step that asks a question instead of finishing. " +
|
|
54
|
-
"
|
|
55
|
-
"send_run_message are how it moves
|
|
54
|
+
"list_todo_steps lists the step it waits on (each item carries its runId " +
|
|
55
|
+
"and stepId); answer_run_question and send_run_message are how it moves " +
|
|
56
|
+
"again. " +
|
|
56
57
|
"\n\nA chat with the Dashboard Analyst is not a workflow run: start one " +
|
|
57
58
|
"with start_conversation.", {
|
|
58
59
|
workflowId: z.string().describe("The workflow's id."),
|
|
@@ -236,9 +237,34 @@ export function registerRunTools(server, client) {
|
|
|
236
237
|
}, async ({ runId, includeSnapshot }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}`, {
|
|
237
238
|
includeSnapshot: includeSnapshot === true,
|
|
238
239
|
}))));
|
|
239
|
-
server.tool("list_todo_steps", "The steps across the TENANT that are waiting on a
|
|
240
|
-
"
|
|
241
|
-
"
|
|
240
|
+
server.tool("list_todo_steps", "The steps across the TENANT that are waiting on a person — one item per " +
|
|
241
|
+
"step. This is the list you read to answer 'is anything stuck on me?' " +
|
|
242
|
+
"without knowing which run to look at. " +
|
|
243
|
+
"\n\nWHAT IS AN ITEM: a step of a run that is `waiting` or " +
|
|
244
|
+
"`input_required`, not archived and not a conversation, that waits for " +
|
|
245
|
+
"one of four things (`todoType`): `ask_user` — an agent asked a question " +
|
|
246
|
+
"that is not answered; `plan_approval` — a plan waits for a decision; " +
|
|
247
|
+
"`manual_step` or `decision` — the step type says a person does it. NOT " +
|
|
248
|
+
"items: a debug pause (`phase_control`) or any other step without one of " +
|
|
249
|
+
"those reasons, and a question already answered whose run has not " +
|
|
250
|
+
"resumed yet (the answer is on its way). A conversation waits for its " +
|
|
251
|
+
"person in the chat, not here. " +
|
|
252
|
+
"\n\nWHOSE IT IS: each item belongs to one agent or to none (`agentId`). " +
|
|
253
|
+
"A question or a plan belongs to the agent that asked (the agent of the " +
|
|
254
|
+
"step's latest orchestrator call; with none on record, the workflow's " +
|
|
255
|
+
"owner). A manual step or a decision belongs to the workflow's owner " +
|
|
256
|
+
"(none when the workflow has no live owner or is deleted). None for the " +
|
|
257
|
+
"budget question the platform itself asked under the old budget rule " +
|
|
258
|
+
"(marked `budget_pause` in the question's state), and for every step of " +
|
|
259
|
+
"a run the run history hides (a hidden platform workflow). Pass " +
|
|
260
|
+
"`agentId` for that agent's items only — the items its \"Needs you\" " +
|
|
261
|
+
"counts; an agent of another workspace has none. Without it the list " +
|
|
262
|
+
"shows every item, those on no agent included. " +
|
|
263
|
+
"\n\nEach item also carries `askedAt` (when the agent asked; null for an " +
|
|
264
|
+
"item that is not a question) and `groupKey`: equal for literally equal " +
|
|
265
|
+
"questions — same workflow, same step, question text equal character " +
|
|
266
|
+
"for character — so they can be shown once. Each is still answered on " +
|
|
267
|
+
"its own run. Null for an item without a question. " +
|
|
242
268
|
"\n\nTHE RESPONSE IS ONE PAGE, NOT THE FULL LIST: " +
|
|
243
269
|
"{ items, nextCursor, pageSize, hasMore }. While hasMore is true you have " +
|
|
244
270
|
"NOT seen every waiting step — pass the response's nextCursor back as " +
|
|
@@ -247,9 +273,13 @@ export function registerRunTools(server, client) {
|
|
|
247
273
|
"one run can carry several waiting steps, so `items` may be LONGER than " +
|
|
248
274
|
"pageSize. That is not a bug and not an overflow — pageSize bounds what " +
|
|
249
275
|
"was read, not what came back. A fan-out can park thousands of items on " +
|
|
250
|
-
"one manual step at once, which is why this list is paged at all. " +
|
|
251
|
-
"
|
|
252
|
-
"
|
|
276
|
+
"one manual step at once, which is why this list is paged at all. Without " +
|
|
277
|
+
"agentId a run read may hold no item, so a page can also be shorter than " +
|
|
278
|
+
"pageSize, even empty, while hasMore is true; with agentId only the runs " +
|
|
279
|
+
"holding an item of that agent are walked. " +
|
|
280
|
+
"\n\nread_run_waiting_on is a different read: the pending wake-tasks of " +
|
|
281
|
+
"one run you already have (a timer; an answer, a chat message or a " +
|
|
282
|
+
"callback's result on its way). An open question has no wake-task.", {
|
|
253
283
|
limit: z
|
|
254
284
|
.number()
|
|
255
285
|
.int()
|
|
@@ -260,7 +290,12 @@ export function registerRunTools(server, client) {
|
|
|
260
290
|
.optional()
|
|
261
291
|
.describe("Opaque continuation cursor from the previous response's nextCursor. " +
|
|
262
292
|
"Omit for the first page. Do not parse or construct one."),
|
|
263
|
-
|
|
293
|
+
agentId: z
|
|
294
|
+
.string()
|
|
295
|
+
.optional()
|
|
296
|
+
.describe("An agent's id (a UUID): only the items that belong to that agent. " +
|
|
297
|
+
"Omit for every item in the tenant."),
|
|
298
|
+
}, async ({ limit, cursor, agentId }) => guard(async () => jsonResult(await client.get("/api/v1/runs/todo", { limit, cursor, agentId }))));
|
|
264
299
|
server.tool("list_run_session_memory", "List the files an agent wrote to SESSION MEMORY during a run — title, " +
|
|
265
300
|
"kind, tags, size and timestamp for each. Bodies are not included; fetch " +
|
|
266
301
|
"one with read_run_session_memory_file. " +
|
|
@@ -372,11 +407,21 @@ export function registerRunTools(server, client) {
|
|
|
372
407
|
// ---- Why a run is parked, and what it did ------------------------------
|
|
373
408
|
server.tool("read_run_waiting_on", "Why a run is PARKED. A run in `waiting` or `input_required` is not stuck " +
|
|
374
409
|
"and not slow — it is holding for something, and this lists every pending " +
|
|
375
|
-
"wake-task targeting it: a
|
|
376
|
-
"
|
|
410
|
+
"wake-task targeting it: a timer, or an answer, a chat message or a " +
|
|
411
|
+
"callback's result on its way (a callback row appears only once the work " +
|
|
412
|
+
"behind it has finished). Read this before concluding a test run failed. " +
|
|
413
|
+
"\n\nA step that waits on a PERSON — an open question, a plan, a manual or " +
|
|
414
|
+
"a decision step — has NO wake-task and is not here: a question's wake-task " +
|
|
415
|
+
"is planted only once someone answers it. Those steps are on " +
|
|
416
|
+
"list_todo_steps (with their runId and stepId), and in read_run as a step " +
|
|
417
|
+
"whose status is `waiting_for_input` and whose `waitReason` says why. " +
|
|
418
|
+
"\n\nA run waiting on a FOR EACH batch, or on a callback whose work is " +
|
|
419
|
+
"still running, has no wake-task here either: the batch waits as a marker " +
|
|
420
|
+
"on its step (watch it with read_run_for_each_progress), and the running " +
|
|
421
|
+
"work is a task in list_run_tasks. " +
|
|
377
422
|
"\n\nAn EMPTY list is a real answer, not an error: the run may have every " +
|
|
378
|
-
"wake already resolved and be about to resume
|
|
379
|
-
"
|
|
423
|
+
"wake already resolved and be about to resume, or it waits on something " +
|
|
424
|
+
"with no wake-task — a person, a FOR EACH batch, a callback still running.", {
|
|
380
425
|
runId: z.string().describe("The run's id."),
|
|
381
426
|
limit: z.number().int().optional().describe("How many to return. Default 50."),
|
|
382
427
|
}, async ({ runId, limit }) => guard(async () => jsonResult(await client.get(`/api/v1/runs/${runId}/waiting-on`, { limit }))));
|
|
@@ -429,13 +474,13 @@ export function registerRunTools(server, client) {
|
|
|
429
474
|
server.tool("answer_run_question", "Answer an `ask_user` step a run is parked on, so the run resumes. This is " +
|
|
430
475
|
"what makes \"start a run and see what it does\" finishable: without it a " +
|
|
431
476
|
"workflow that asks anything waits forever and a test never returns a " +
|
|
432
|
-
"verdict. Find the parked step with
|
|
477
|
+
"verdict. Find the parked step with list_todo_steps or read_run. " +
|
|
433
478
|
"\n\nThe answer is recorded as the ANSWER A PERSON WOULD HAVE GIVEN and " +
|
|
434
479
|
"the run proceeds on it. On a run a human is depending on, that is their " +
|
|
435
480
|
"decision to make, not yours — answer your own test runs, and ask before " +
|
|
436
481
|
"answering someone else's. Returns the run's updated detail.", {
|
|
437
482
|
runId: z.string().describe("The run's id."),
|
|
438
|
-
stepId: z.string().describe("The suspended step's id, from
|
|
483
|
+
stepId: z.string().describe("The suspended step's id, from list_todo_steps or read_run."),
|
|
439
484
|
answer: z.string().describe("The answer text the step is waiting for."),
|
|
440
485
|
}, async ({ runId, stepId, answer }) => guard(async () => jsonResult(await client.post(`/api/v1/runs/${runId}/steps/${stepId}/answer`, { answer }))));
|
|
441
486
|
server.tool("complete_run_step", "Complete a MANUAL or DECISION step a run is parked on, so the run " +
|
|
@@ -450,12 +495,12 @@ export function registerRunTools(server, client) {
|
|
|
450
495
|
"it. Only do this when a person has told you the work is done, or on a " +
|
|
451
496
|
"test run of your own where nothing real depended on the step. Never to " +
|
|
452
497
|
"get a stuck run moving. " +
|
|
453
|
-
"\n\nFind the parked step with
|
|
498
|
+
"\n\nFind the parked step with list_todo_steps or read_run. Returns the run's " +
|
|
454
499
|
"updated detail. Deciding a PLAN APPROVAL is a different thing again and " +
|
|
455
500
|
"is deliberately not available here — that step exists to get a human's " +
|
|
456
501
|
"review, and an agent approving it would often be approving its own plan.", {
|
|
457
502
|
runId: z.string().describe("The run's id."),
|
|
458
|
-
stepId: z.string().describe("The parked step's id, from
|
|
503
|
+
stepId: z.string().describe("The parked step's id, from list_todo_steps or read_run."),
|
|
459
504
|
selectedBranch: z
|
|
460
505
|
.string()
|
|
461
506
|
.optional()
|
package/dist/tools/runs.js.map
CHANGED
|
@@ -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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"}
|
package/dist/tools/validation.js
CHANGED
|
@@ -194,6 +194,11 @@ export function registerApprovalTools(server, client) {
|
|
|
194
194
|
"`blockers` that NAME the member in the way. If it is not ready, fix the " +
|
|
195
195
|
"member the blocker names and request again — nothing was recorded as " +
|
|
196
196
|
"approved. " +
|
|
197
|
+
"\n\nThe answer is read with your token's clearance: a member above it is " +
|
|
198
|
+
"left out, with the blockers that name it, and a blocker that names " +
|
|
199
|
+
"something you may not read shows only its code. `ready` and the counts " +
|
|
200
|
+
"stay the whole release's — so `ready: false` with no blocker you can see " +
|
|
201
|
+
"means the part in the way is one you may not read. " +
|
|
197
202
|
"\n\nA tenant-wide policy or reference doc is deliberately NOT in a " +
|
|
198
203
|
"release: it applies to every agent regardless of this workflow, so it is " +
|
|
199
204
|
"part of the environment and is published on its own. " +
|
|
@@ -246,6 +251,10 @@ export function registerApprovalTools(server, client) {
|
|
|
246
251
|
"its readiness RECOMPUTED as you read — so a blocker you saw when you " +
|
|
247
252
|
"requested it may already be gone. This is how you follow up on a " +
|
|
248
253
|
"request_publish_release rather than re-listing the queue. " +
|
|
254
|
+
"\n\nRead with your token's clearance: a member above it is left out, with " +
|
|
255
|
+
"the blockers that name it, and so is a skill, policy or reference doc " +
|
|
256
|
+
"joining or leaving an agent. `ready` and the counts stay the whole " +
|
|
257
|
+
"release's. " +
|
|
249
258
|
"\n\nApproving publishes every member in dependency order, all-or-nothing, " +
|
|
250
259
|
"and only a human can do it in Axonity.", {
|
|
251
260
|
releaseId: z
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axonity-ai/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
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": {
|