← Back to all apps

Stable Baseline

Productivityby Orixian Solutions Pty Ltd
Launched Apr 27, 2026 on ChatGPT

Stable Baseline is an end-to-end, agent-managed workspace for documentation, diagramming, whiteboarding, planning, and a shared knowledge graph (your team's brain). From ChatGPT you can author and edit living documents in Markdown with 40+ types of embedded diagrams (flowcharts, BPMN, sequence, mind maps, Gantt, and more); generate pixel-perfect diagrams and whiteboards and get them back as PNG, JPEG, or SVG; design a whole whiteboard from a single prompt; generate infographics on the fly from plain language; plan work with phases, tasks, dependencies, and timelines; log risks and improvements; and build a self-learning Knowledge Graph that shares context across all of it. It works at any level, from an individual organising personal notes to an enterprise managing organisation-wide context, through 180+ tools across 19 categories spanning documents, diagrams, infographics, whiteboards, plans, tasks, improvements, knowledge graph, members, and teams.

168ChatGPT Tools
Orixian Solutions Pty LtdDeveloper
ProductivityCategory

Available Tools

Accept Task Dependency Review

acceptTaskDependencyReview
Full Description

Per-item: apply a successor's suggested_start_date/suggested_end_date to its real dates and clear needs_dependency_review. For a whole-plan cascade use applyTaskDependencyCascade.

Parameters (1 required)
Required
improvementIdstring

The successor item whose suggestion to apply.

Add Improvement Activity

addImprovementActivity
Full Description

Add a comment or activity entry to an improvement.

Parameters (1 required, 6 optional)
Required
improvementIdstring
Optional
activityTypestring

Type: comment, agent_update, field_change. Default: comment.

commentstring

Comment text.

fieldNamestring

For field_change: field name.

metadataobject

Additional context.

newValuestring

For field_change: new value.

oldValuestring

For field_change: previous value.

Add Improvement Evidence

addImprovementEvidence
Full Description

Add evidence to an improvement. Types: document_section, diagram_node, incident_note, feedback, free_text.

Parameters (2 required, 5 optional)
Required
improvementIdstring
summarystring

Summary of the evidence.

Optional
evidenceTypestring

Evidence type. Default: free_text.

positionnumber

Order in evidence list.

rawContentstring

Full original text.

refIdstring

Reference ID (document, diagram, etc.).

refUrlstring

Reference URL.

Add Plan Activity

addPlanActivity
Full Description

Add a comment or activity entry to a plan.

Parameters (1 required, 6 optional)
Required
planIdstring
Optional
activityTypestring

Type: comment, agent_update, field_change. Default: comment.

commentstring

Comment text.

fieldNamestring

For field_change: field name.

metadataobject

Additional context.

newValuestring

For field_change: new value.

oldValuestring

For field_change: previous value.

Add Team Member

addTeamMember
Full Description

Add a user to a team as a regular member. Idempotent — returns already_member=true if already on the team. User must be an active organisation member.

Parameters (2 required)
Required
team_idstring
user_idstring

Add Whiteboard Elements

addWhiteboardElements
Full Description

Author shapes onto a whiteboard from high-level specs (you do NOT need the full Excalidraw element schema). Appends to the canvas. PLACEMENT ON AN EXISTING BOARD (critical): NEVER guess x/y onto a board that already has content — guessed coordinates land ON TOP of existing shapes and create an unreadable pile. Either (a) OMIT x/y entirely and the server auto-places the new elements together in clear space BELOW the current content, or (b) FIRST call getWhiteboard({ includeElements:true }) to see where existing shapes already are and choose a genuinely EMPTY region. Pass explicit x/y only for a deliberate layout in space you have confirmed is empty. PREFER THE RICHEST FORM THAT FITS, not plain rectangles: for a sticky/post-it note use { type:'sticky', text, backgroundColor } (a first-class note with an auto-fitting bound label — there is NO sticky-note stencil; OMIT x/y and it is auto-placed in clear space below existing content, so it doesn't land on top of the current drawing); for kanban/scrum/story boards, flowcharts, UML/ER, BPMN, org charts, wireframes/mockups, charts or people use a LIBRARY STENCIL in ONE call — { type:'stencil', stencil:'<name e.g. decision>', x, y } fuzzy-matches by name with no prior listWhiteboardStencils call (pass width/height to SCALE the whole stencil and text to fill its single label); for cloud/software-architecture use ICONS — { type:'image', iconPath:'dev/docker.svg', x, y } (paths from listArchitectureIcons); reserve raw rectangles/ellipses for when no standard form fits. Expressive enough to reproduce real Excalidraw templates (sticky-note brainstorm grids, sketchy mind maps, flowcharts). Each spec: { type: 'rectangle'|'ellipse'|'diamond'|'sticky'|'text'|'arrow'|'line'|'freedraw'|'frame'|'image'|'stencil', id?, x, y, width, height, text? (STRONGLY PREFER setting a shape's label via its own text — it becomes a centered, auto-WRAPPED bound label fitted to the shape; do NOT drop a separate type:'text' element on top of a shape as its label. Standalone type:'text' is for free-floating titles/notes and now also wraps to its width; Yes/No label on an arrow — emojis are fine, e.g. 'Risks ⚠️'), fontSize?, fontFamily? (1=hand-drawn default, 2=normal, 3=code), textAlign?, backgroundColor? (name 'blue'/'green'/'yellow'/'pink'/'violet'/'orange'/'teal'/… or hex), strokeColor?, fillStyle? ('solid'|'hachure'|'cross-hatch'), strokeStyle? ('solid'|'dashed'|'dotted' — use 'dashed' for grid/category borders), strokeWidth? (1 thin/2 bold/4 extra), roughness? (0 clean, 1 default, 2 very sketchy/hand-drawn — use 2 for organic mind maps), roundness? (number type or null for sharp), opacity?, name? (frame title), frameId? (put a shape inside a frame), start?:{id}, end?:{id} (connect arrows/lines to shapes by id — connectors AUTO-CLIP to the shape edges, never overrun to the centre, AUTO-ROUTE around any shapes in between so a decision's No/loop-back branch never cuts straight through the boxes between source and target, and bound text auto-wraps + centres), routing? ('straight' default | 'elbow' for clean right-angle flowchart/org-chart connectors | 'curved'), startArrowhead?/endArrowhead? (arrowheads are SOLID filled triangles by default — just OMIT them. Pass null for a plain mind-map spoke with no head. Do NOT pass 'arrow': that is Excalidraw's open 'V' and is auto-upgraded to a solid triangle anyway), points? ([[0,0],[dx,dy]] relative, only for manual geometry — almost never needed; binding by id is better), props? (escape hatch: any other Excalidraw field) }. ARCHITECTURE ICONS: to place a software-architecture icon (AWS/Azure/GCP/Docker/Kubernetes/databases/etc.), first call listArchitectureIcons to find one, then add a spec { type:'image', iconPath:'<relative_url e.g. dev/docker.svg>', x, y, width:96, height:96, text?:'<caption shown below>' } — the icon is stored as a URL reference (never base64). Use imageUrl instead of iconPath for any other public image. Combine icons with labelled boxes + elbow arrows for clean architecture diagrams. LIBRARY STENCILS: for hand-drawn, on-brand elements (scrum/kanban columns, flowchart symbols, UML/ER, BPMN, org-chart nodes, wireframe widgets, stick figures), FIRST call listWhiteboardStencils to find one, then add { type:'stencil', stencilKey:'<key from listWhiteboardStencils>', x, y } (or { type:'stencil', stencil:'<name e.g. decision>', pack?:'<pack>', x, y } to fuzzy-match by name). A stencil is a mini-whiteboard (a collection of elements) of kind 'symbol' or 'template' (listWhiteboardStencils returns the kind + its embedded labels). For a SYMBOL (one atomic labelled node — flowchart box, BPMN task, org node), pass id + text + width/height: the label auto-fits its single slot and arrows bind to it via start/end {id}. For a TEMPLATE (a multi-component layout — Alerts, Forms, Tables, Charts), place it WHOLE (no single text); the result returns its children (id + text + colour + position) so you retext, recolour, or DELETE specific parts by id via updateWhiteboardScene (cluster children by y to act on a whole row/variant). STRONGLY prefer stencils over plain rectangles for wireframes/mockups, kanban/scrum boards, UML/BPMN, org charts; for dense flowcharts, plain shapes with bound text + elbow arrows are equally reliable. (For a plain sticky/post-it note use type:'sticky', NOT a stencil — there is no sticky-note stencil.) FRAMES: a frame is a NON-DESTRUCTIVE, ANY-SIZE container. To enclose shapes that ALREADY exist, add ONE type:'frame' sized to cover them (Excalidraw auto-captures elements inside a frame's bounds) or set those shapes' frameId — never recreate or delete-and-redraw content just to frame it. If a frame doesn't fully cover its content, just RESIZE the frame (patch its width/height). Deleting a frame (deleteIds:[frameId]) leaves all its contents intact on the canvas — it only removes the frame border + title. PRESENTATION/SLIDES: when the user wants a presentation or slide deck, create type:'frame' slides sized width:1280,height:720 (16:9), laid out LEFT-TO-RIGHT at the same y (x: 0, then 1440, 2880, 4320, …), each with a name (the slide title). Put every slide's shapes/text/images INSIDE its frame by setting their frameId to that frame's id (give the frame an id and reference it). Slides play in order (left-to-right, then top-to-bottom) in the board's Present mode and export to PPTX, so one frame = one slide. FLOWCHART recipe: rectangles (roundness null for sharp process boxes), diamonds for decisions, arrows with routing:'elbow' and Yes/No as the arrow's text. Use type 'sticky' for sticky/post-it notes (a solid-fill note with an auto-fitting bound label — set text + backgroundColor); type 'line' with no arrowheads + roughness:2 for sketchy mind-map spokes. FREEHAND DOODLES: to actually draw/doodle/sketch freehand, use { type:'freedraw', points } where points is a RELATIVE [[x,y],…] path of the stroke (e.g. a squiggle, circling or annotating something, a hand-drawn star/heart/smiley/arrow, an organic blob) — it renders as one smooth freehand stroke. x/y is the origin; omit x/y to auto-place. Chain several freedraw specs for a multi-stroke doodle. NOTE: freehand is always SOLID (Excalidraw ignores strokeStyle on freedraw) — colour, strokeWidth and opacity DO apply; a freedraw with strokeStyle:'dashed' or 'dotted' is automatically rendered as a smooth dashed/dotted line so the dashes actually show. Give shapes ids and reference them from connectors. Connectors may also bind to shapes ALREADY on the board by their id (get them via getWhiteboard includeElements:true) — you do NOT need to resend existing shapes; the server reads the live scene to bind the arrow and route it around the other boxes. Great for brainstorms, mind maps, flowcharts, org charts, SWOT, retros. PROCESS: for any non-trivial board call getWhiteboardGuide FIRST to plan it; then after adding, ALWAYS call getWhiteboardImage to SEE the result and check layout, labels, spacing, overlaps and how shapes connect — if anything looks off, fix it with updateWhiteboardScene (patch by id) and render again, iterating until it looks right. RESULT: returns added (count), placement (bounding box {x,y,width,height} of what you just added) and autoPlaced (true when you omitted x/y so it was placed in clear space below existing content) — use placement/autoPlaced to tell the user WHERE the new elements landed, never invent a location.

Parameters (2 required)
Required
documentIdstring
shapesarray

Non-empty array of shape specs to append. Prefer stencils / sticky notes / architecture icons over raw rectangles wherever a standard form fits (see the `type` enum below and the tool description).

Add Workspace Member

addWorkspaceMember
Full Description

Add an existing organisation member to a workspace with a workspace-level role. Idempotent — returns the existing membership if already a member. Caller must be a workspace owner or admin.

Parameters (3 required)
Required
user_idstring

Must already be an active organisation member.

workspace_idstring
workspace_rolestring
Options:owneradmineditorviewer

Apply Kg Scope Change

applyKgScopeChange
Full Description

Apply a previously previewed KG scope change. Atomically writes kg_scope rows and dispatches a re-ingest batch (batch_id = token). Idempotent. Rate limit 5/h.

Parameters (1 required)
Required
confirmation_tokenstring

Apply Task Dependency Cascade

applyTaskDependencyCascade
Full Description

Auto-schedule every item in a plan so all FS/SS/FF task-dependencies are respected (topological pass, durations preserved). Returns the before/after diff and logs a comment on every item that moves. Use forwardOnly: true to only shift items currently in violation (never pull already-valid items earlier). Use pinnedItemIds to keep specific items at their current dates. Pairs with previewTaskDependencyCascade (same inputs, dry-run).

Parameters (1 required, 2 optional)
Required
planIdstring

Plan to reschedule.

Optional
forwardOnlyboolean

When true, only shift items currently in violation — never pull already-valid items to an earlier slot. Default false for backwards compat with the manual Auto-schedule button.

pinnedItemIdsarray

Item IDs to keep at their current dates (typical: the item you just updated).

Cancel All Kg In Scope

cancelAllKgInScope
Full Description

Emergency stop for KG ingestion: cancels queued/running build runs, queued/running rebuild batches, demotes still-eager unfinished chunks. Optionally narrowed to one project. Requires can_manage_kg + (project write if project_id supplied). Rate limit 5/min.

Parameters (1 required, 1 optional)
Required
organisation_idstring
Optional
project_idstring

Cancel Invitation

cancelInvitation
Full Description

Cancel a pending invitation by id. Sets status='revoked'. Server resolves the organisation_id from the invitation row; the credential must match that org AND hold can_manage_members. Idempotent. Rate limit 30/min. Use when the user asks to cancel, revoke, or undo a pending invitation — for example to correct a typo'd email address before re-inviting.

Parameters (1 required)
Required
invitation_idstring

Invitation UUID. Server resolves the organisation from this row.

Cancel Kg Build Batch

cancelKgBuildBatch
Full Description

Cancel a single KG rebuild batch. Queued runs flip to 'cancelled' immediately; running runs finish naturally. Requires can_manage_kg. Rate limit 5/min.

Parameters (1 required)
Required
batch_idstring

Create Document

createDocument
Full Description

Create a document from CDMD markdown. Call getCdmdLanguageGuide first if unfamiliar with syntax. Do not include DIAGRAM/IMAGE markers — insert them after with dedicated tools. Supports @-mentioning people: embed <!-- REFERENCE: {"type":"user","id":"<user_uuid>","label":"Name"} --> to notify a teammate. Use listAssignablePrincipals to look up the user_id from a name; mentions of users outside the project are silently dropped.

Parameters (2 required, 4 optional)
Required
cdmdstring
projectIdstring
Optional
changeSummarystring

Version history summary.

folderIdstring
positionnumber

Sort position within the parent folder (or project root if no folderId). When omitted, the document is appended at the end.

titlestring

Create Document From Upload

createDocumentFromUpload
Full Description

Step 2 of file ingest. After the file is uploaded via the PUT URL from createDocumentIngestSession, call this to start the async conversion. Returns { jobId, documentId } immediately — the document is created as a draft and progressively populated as the worker processes the file. Poll getDocumentIngestJob({ jobId }) to track progress. Idempotent: calling twice with the same sessionId returns the same job/document.

Parameters (2 required, 3 optional)
Required
projectIdstring

Must match the project the session was created for.

sessionIdstring

From createDocumentIngestSession.

Optional
changeSummarystring

Optional changelog message for the version snapshot taken when the ingest finalises.

folderIdstring

Optional folder. Must belong to projectId.

titlestring

Optional document title. Defaults to the upload's filename without extension.

Create Document Ingest Session

createDocumentIngestSession
Full Description

Step 1 of file ingest. Mint a single-use PUT upload URL for a large file (PDF, DOCX, plain text, or markdown — up to 150 MB). Returns { sessionId, uploadUrl, expiresAt, maxBytes }. Upload the raw bytes to uploadUrl with PUT, then call createDocumentFromUpload({ sessionId, projectId }) to start the conversion. The file is auto-deleted once the document is created.

Parameters (3 required, 2 optional)
Required
fileNamestring

Original filename, e.g. report.pdf.

mimeTypestring

One of: application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document (DOCX), text/plain, text/markdown.

projectIdstring

Target project for the resulting document.

Optional
folderIdstring

Optional folder to drop the document into. Must belong to projectId.

sizeBytesnumber

Optional file size hint in bytes. Rejected up-front if it exceeds 150 MB.

Create Folder

createFolder
Full Description

Create a folder in a project. Supports nesting via parentId.

Parameters (2 required, 2 optional)
Required
namestring
projectIdstring
Optional
parentIdstring
positionnumber

Create Image Upload Session

createImageUploadSession
Full Description

Create a PUT upload URL for a document image (max 10MB). Use the returned assetUrl with insertImageInDocument.

Parameters (3 required, 1 optional)
Required
documentIdstring
fileNamestring

Original filename (e.g. screenshot.png).

mimeTypestring

Image MIME type (e.g. image/png).

Optional
sha256string

Optional SHA-256 hex digest.

Create Improvement

createImprovement
Full Description

Create an improvement item in a project. Requires projectId and title. Auto-assigns friendly ID.

Parameters (2 required, 36 optional)
Required
projectIdstring
titlestring
Optional
acceptance_criteriaarray

Acceptance criteria — ordered list of pass/fail statements that define "done" for this item. Each row is `{ id, text }` with server-stamped `updated_at / updated_by / updated_by_credential_name`. REPLACES the whole array on update. Echo back existing `id`s on rows you keep so attribution stamps survive. Bare strings are accepted for convenience (e.g. `["row 1", "row 2"]`) and auto-converted to `{ id, text }`.

agent_briefstring
agent_complexitystring

low, medium, high, very_high.

agent_confidencenumber

0.00 to 1.00.

agent_missing_infoarray
agent_readyboolean
agent_recommended_actionstring
business_impactstring
category_idstring

Category ID.

checklistarray

Tick-box checklist shown above acceptance_criteria. The full array REPLACES the stored list on update, and array order = display order — to edit, fetch via getTask/getImprovement, modify, and send back the whole list. Operations: mark done with `completed: true`; un-mark with `completed: false`; add rows by appending `{ text }` (id is auto-minted); remove by omitting; reorder by rearranging. Echo back each existing `id` you keep so per-row attribution (who added/completed it, when) survives.

constraintsarray
descriptionstring
desired_outcomestring
end_datestring

YYYY-MM-DD.

impacted_componentsarray
impacted_diagramsarray

Array of {id, name}.

impacted_documentsarray

Array of {id, title}.

is_taskboolean

Mark as task. Default: false. Prefer setting type='task' instead — is_task is kept in sync from the type enum by a DB trigger, and rows with type='task' get the TAS- friendly_id prefix while all others get IMP-.

linked_document_idsarray

Document IDs to link. Titles resolved automatically.

non_goalsarray
owner_idstring

User UUID to assign as the owner. MUTUALLY EXCLUSIVE with owner_team_id — set one or the other, never both. Use listAssignablePrincipals(projectId, kind='user', q='…') to look up valid user UUIDs.

owner_team_idstring

Team UUID to assign as the owner (assigns the whole team rather than an individual). MUTUALLY EXCLUSIVE with owner_id. Use listTeams(workspaceId) or listAssignablePrincipals(projectId, kind='team') to look up valid team UUIDs.

percent_completenumber

Progress percentage (0-100). Null means not tracked.

phase_idstring

Assign to a phase.

plan_idstring

Link to a plan.

prioritystring

Priority. Default: medium.

problem_statementstring
sourcestring

Source (e.g. human_manual, agent_review).

start_datestring

YYYY-MM-DD.

statusstring

Initial status. Default: captured.

target_datestring

YYYY-MM-DD.

typestring

Type. Default: enhancement. Valid values: feature, bug, tech_debt, architecture_gap, documentation_gap, risk, enhancement, task. Setting type='task' makes the row a task (TAS- prefix); any other type makes it a non-task improvement (IMP- prefix).

urgencystring

e.g. this_week, this_month, this_quarter.

user_impactstring
wbs_codestring

Work breakdown structure code.

why_nowstring

Create Improvement Category

createImprovementCategory
Full Description

Create an improvement category or sub-category. Max two levels.

Parameters (2 required, 6 optional)
Required
namestring
projectIdstring
Optional
colorstring

Color code.

descriptionstring
iconstring

Lucide icon name.

parentIdstring

Parent category ID for sub-categories.

slugstring

URL-friendly slug. Auto-generated if omitted.

sortOrdernumber

Sort order. Default: 0.

Create Organisation

createOrganisation
Full Description

Create a new organisation owned by the calling credential's user. Auth: server-side eligibility gate via can_user_create_organization (free-tier users may only have one org). Per-credential rate limit 3/day. Slug auto-generated. The new org is OUTSIDE the credential's current scope (credentials are bound to one org); to use the new org from MCP, mint a fresh credential.

Parameters (1 required, 1 optional)
Required
namestring

Display name.

Optional
descriptionstring

Optional free-text description.

Create Plan

createPlan
Full Description

Create a plan in a project. Requires projectId and title.

Parameters (2 required, 9 optional)
Required
projectIdstring
titlestring
Optional
colorstring

Color code.

descriptionstring
end_datestring

YYYY-MM-DD.

iconstring

Lucide icon name.

linked_document_idsarray

Document IDs to link.

linked_documentsarray

Array of {id, title}.

prioritystring

Priority. Default: medium.

start_datestring

YYYY-MM-DD.

statusstring

Status. Default: draft.

Create Plan Phase

createPlanPhase
Full Description

Create a phase in a plan. Position and wbs_code are auto-computed.

Parameters (2 required, 8 optional)
Required
namestring
planIdstring
Optional
colorstring

Phase color. Must be one of: #3b82f6 (Blue), #f59e0b (Amber), #8b5cf6 (Purple), #ec4899 (Pink), #06b6d4 (Cyan), #14b8a6 (Teal), #6366f1 (Indigo), #6b7280 (Gray). Red and green are reserved for blocked / done item statuses.

Options:#3b82f6#f59e0b#8b5cf6#ec4899#06b6d4#14b8a6#6366f1#6b7280
descriptionstring
end_datestring

YYYY-MM-DD.

positionnumber

Position. Auto-computed if omitted.

prioritystring

Priority. Default: medium.

start_datestring

YYYY-MM-DD.

statusstring

Status: not_started, in_progress, completed, on_hold, cancelled. Default: not_started.

wbs_codestring

WBS code. Auto-computed if omitted.

Create Project

createProject
Full Description

Create a new project inside a workspace. Mirrors the UI Create Project dialog. Auth: write on workspace + credential's can_lifecycle capability. Validates name (1..200) and description (0..2000); icon defaults to '📁' if omitted. Server-side limit gate via can_create_project_in_workspace. Rate limit 30/min.

Parameters (2 required, 2 optional)
Required
namestring

Project name.

workspace_idstring

Workspace UUID to create the project in.

Optional
descriptionstring

Optional description.

iconstring

Optional emoji icon. Defaults to '📁' to match the UI.

Create Task

createTask
Full Description

Create a task in a plan. Requires planId and title.

Parameters (2 required, 15 optional)
Required
planIdstring
titlestring
Optional
acceptance_criteriaarray

Acceptance criteria — ordered list of pass/fail statements that define "done" for this item. Each row is `{ id, text }` with server-stamped `updated_at / updated_by / updated_by_credential_name`. REPLACES the whole array on update. Echo back existing `id`s on rows you keep so attribution stamps survive. Bare strings are accepted for convenience (e.g. `["row 1", "row 2"]`) and auto-converted to `{ id, text }`.

checklistarray

Tick-box checklist shown above acceptance_criteria. The full array REPLACES the stored list on update, and array order = display order — to edit, fetch via getTask/getImprovement, modify, and send back the whole list. Operations: mark done with `completed: true`; un-mark with `completed: false`; add rows by appending `{ text }` (id is auto-minted); remove by omitting; reorder by rearranging. Echo back each existing `id` you keep so per-row attribution (who added/completed it, when) survives.

descriptionstring
end_datestring

YYYY-MM-DD.

owner_idstring

User UUID to assign as owner. MUTUALLY EXCLUSIVE with owner_team_id. Use listAssignablePrincipals(projectId, kind='user') to look up valid UUIDs.

owner_team_idstring

Team UUID to assign as owner (assigns the whole team). MUTUALLY EXCLUSIVE with owner_id. Use listTeams or listAssignablePrincipals(kind='team') to look up valid UUIDs.

percent_completenumber

Progress percentage (0-100). Null means not tracked.

phaseIdstring

Phase to assign to.

positionnumber
prioritystring

Priority. Default: medium.

start_datestring

YYYY-MM-DD.

statusstring

Initial status. Default: captured.

target_datestring

YYYY-MM-DD.

typestring

Type. Default: task. Tasks created in plans are typed 'task' (friendly_id prefix TAS-). Override only if you want the row to appear as a non-task improvement (IMP- prefix).

wbs_codestring

Create Task Dependency

createTaskDependency
Full Description

Create an FS/SS/FF scheduling edge with lag/lead between two items in the same plan (rendered as a Gantt arrow). FS = Finish-to-Start, SS = Start-to-Start, FF = Finish-to-Finish. lagDays: positive = lag, negative = lead/overlap. Rejects self-loops, duplicate (pred+succ+type) edges, cross-plan edges, and cycles.

Parameters (3 required, 1 optional)
Required
dependencyTypestring

FS = Finish-to-Start, SS = Start-to-Start, FF = Finish-to-Finish.

Options:FSSSFF
predecessorIdstring

ID of the upstream item (the driver).

successorIdstring

ID of the downstream item (the dependent).

Optional
lagDaysinteger

Lag (positive) or lead (negative) in days. Default 0.

Create Team

createTeam
Full Description

Create a new team inside an organisation. Caller is added as the team's lead. Subject to plan team limit. Rate limit 30/min.

Parameters (2 required, 2 optional)
Required
namestring
organisation_idstring
Optional
colorstring

Optional 6-digit hex colour. Defaults to #6366f1.

descriptionstring

Create Vega Data Upload Session

createVegaDataUploadSession
Full Description

Create a PUT upload URL for a Vega/Vega-Lite data file. Use returned assetUrl in your Vega spec.

Parameters (2 required, 1 optional)
Required
documentIdstring
fileNamestring

Original filename (e.g. sales-data.csv). Extension auto-detects content type.

Optional
contentTypestring

MIME type override. Auto-detected from extension if omitted.

Create Whiteboard

createWhiteboard
Full Description

Create a whiteboard — an infinite Excalidraw canvas. A whiteboard is a hidden document (it won't appear in listDocuments) that hosts a single freeform canvas, and opens in the immersive whiteboard editor in the app. Returns documentId + diagramId. Author shapes afterwards with addWhiteboardElements (high-level specs) or updateWhiteboardScene. For anything beyond a blank board, call getWhiteboardGuide first to plan the layout (stencils vs architecture icons vs code/BPMN diagrams vs plain shapes), and render with getWhiteboardImage to verify as you go.

Parameters (2 required, 1 optional)
Required
projectIdstring
titlestring

REQUIRED. A clear, descriptive board name (e.g. 'Q3 GTM plan'). Programmatic boards must be titled — blank/'Untitled' titles are rejected.

Optional
folderIdstring

Optional folder to file the whiteboard under.

Create Workspace

createWorkspace
Full Description

Create a new workspace inside the organisation. Auth: ceiling — credential must hold can_lifecycle AND user must be org owner/admin. Rate limit 30/min. Slug auto-generated. Caller becomes workspace owner. Plan limits surface as WORKSPACE_LIMIT_REACHED errors.

Parameters (2 required)
Required
namestring
organisation_idstring

Organisation UUID. Must equal the credential's organisation.

Data To Table

dataToTable
Full Description

Render tabular data as an aligned grid of labelled cells on a whiteboard, deterministically. Pass rows (an array of arrays) OR data (an array of objects), with optional headers; the server lays out evenly-spaced cells so you do NOT place each cell by hand. Use this to turn data, CSV, or JSON into a readable table on the board. Returns a compact summary. Auto-places below existing content unless x/y are given.

Parameters (1 required, 7 optional)
Required
documentIdstring

The whiteboard's documentId.

Optional
cellHeightnumber

Cell height in px, 28-200 (default 40).

cellWidthnumber

Cell width in px, 60-400 (default 160).

dataarray

Alternative to rows: an array of objects; columns come from headers, or the first object's keys.

headersarray

Optional column headers (rendered as a styled header row). For data, also selects and orders the columns.

rowsarray

Rows as arrays of cell strings. If headers is omitted, the first row is treated as the header row.

xnumber

Top-left x on the canvas. Omit to auto-place below existing content.

ynumber

Top-left y on the canvas. Omit to auto-place.

Delete Diagram In Document

deleteDiagramInDocument
Full Description

Delete a diagram from a document.

Parameters (1 required)
Required
diagramIdstring

Diagram ID from DIAGRAM_OMITTED markers.

Delete Document

deleteDocument
Full Description

Delete a document.

Parameters (1 required)
Required
documentIdstring

Delete Folder

deleteFolder
Full Description

Delete a folder recursively, including all nested folders and documents.

Parameters (1 required)
Required
folderIdstring

Delete Image In Document

deleteImageInDocument
Full Description

Delete an image from a document and storage.

Parameters (1 required)
Required
imageIdstring

Image ID from IMAGE_OMITTED markers.

Delete Improvement

deleteImprovement
Full Description

Delete an improvement and all associated evidence and activity.

Parameters (1 required)
Required
improvementIdstring

Delete Improvement Category

deleteImprovementCategory
Full Description

Delete an improvement category. Cannot delete system categories.

Parameters (1 required)
Required
categoryIdstring

Delete Improvement Comment

deleteImprovementComment
Full Description

Delete a comment from an improvement.

Parameters (1 required)
Required
activityIdstring

Activity ID from getImprovement activity array.

Delete Plan

deletePlan
Full Description

Delete a plan, all its phases, and all tasks/improvements within it. This is a destructive operation that cannot be undone.

Parameters (1 required)
Required
planIdstring

Delete Plan Comment

deletePlanComment
Full Description

Delete a comment from a plan.

Parameters (1 required)
Required
activityIdstring

Activity ID from getPlan activity array.

Delete Plan Phase

deletePlanPhase
Full Description

Delete a plan phase and all tasks/improvements within it. This is a destructive operation that cannot be undone.

Parameters (1 required)
Required
phaseIdstring

Delete Resource Permission

deleteResourcePermission
Full Description

Delete a resource_permissions row. Refuses if the row is the LAST admin grant on the resource. Rate limit 30/min. Use when the user asks to revoke access, remove access, take away access, unshare, or delete a permission grant on a specific resource.

Parameters (1 required)
Required
permission_idstring

UUID of the resource_permissions row to delete

Delete Task Dependency

deleteTaskDependency
Full Description

Remove a task-dependency edge. Neither item's dates are changed.

Parameters (1 required)
Required
dependencyIdstring

Delete Team

deleteTeam
Full Description

Delete a team. Cascades: team members and team-granted resource permissions are removed automatically. Destructive; rate limit 5/min.

Parameters (1 required)
Required
team_idstring

Delete Vega Data File

deleteVegaDataFile
Full Description

Delete a data file attachment from a document.

Parameters (2 required)
Required
attachmentIdstring

Attachment ID to delete.

documentIdstring

Delete Whiteboard

deleteWhiteboard
Full Description

Delete a whiteboard (the host document and its canvas).

Parameters (1 required)
Required
documentIdstring

Design Whiteboard

designWhiteboard
Full Description

Design a complete, visually polished whiteboard from a natural-language goal using the PREMIUM multi-agent pipeline (the same one the in-app assistant uses): it browses the stencil/icon library, composes the board, renders it, critiques the rendered image, and refines — far better than hand-placing shapes. COST + APPROVAL: this costs 50 credits per board and requires the user's explicit approval. Call it FIRST without confirm to get the exact cost + the workspace credit balance; show that to the user and only call again with confirm: true once they agree. If they decline (or lack credits), build the board directly with the standard whiteboard tools (addWhiteboardElements / insertWhiteboardDiagram / listWhiteboardStencils) at no extra charge. It runs in the BACKGROUND and returns immediately with a sessionId; the board fills in over 1-3 minutes. The 50 credits are refunded automatically if the design fails on our side.

Parameters (1 required, 4 optional)
Required
goalstring

The board to build, in plain language.

Optional
confirmboolean

Set true ONLY after the user has approved the 50-credit cost. Leave unset/false on the first call to receive the cost quote + balance.

documentIdstring

Optional. An existing whiteboard to design into. If omitted, a new whiteboard is created in projectId.

projectIdstring

The project to create the whiteboard in, when no documentId is given.

titlestring

Optional board title. If omitted, a clear title is derived from the goal (the board is never left 'Untitled'). When designing into an existing 'Untitled' board, the derived/explicit title replaces the placeholder.

Dismiss Task Dependency Review

dismissTaskDependencyReview
Full Description

Per-item: clear needs_dependency_review without changing dates — keeps the edge, ignores the suggestion. Use when the successor should stay put despite the predecessor shifting.

Parameters (1 required)
Required
improvementIdstring

Duplicate Whiteboard Elements

duplicateWhiteboardElements
Full Description

Copy-paste existing whiteboard elements — the MCP equivalent of selecting a group and pressing Ctrl/Cmd+D. Clones the given elements (plus their group peers + bound text/labels) with FRESH ids, offsets the copy by dx/dy, and by default groups it into ONE new unit so it moves together. Use it to build something once (a labelled stencil frame, a kanban card, a UML class) then stamp out consistent repeats fast — then retext/recolour each copy by its new id (via the returned idMap) with updateWhiteboardScene. Pass groupId to copy a whole group as a unit (e.g. a placed stencil's groupId from its placement result) and/or ids for specific elements. Internal references (group membership, bound text containerId, arrow start/end bindings) are remapped within the copied set; a binding to an element you did NOT copy is dropped. Returns { duplicated, idMap (old id → new id), groupId (the copy's new unit group), elementCount }. Render with getWhiteboardImage afterwards to verify.

Parameters (1 required, 6 optional)
Required
documentIdstring

The whiteboard's documentId.

Optional
dxnumber

Horizontal offset for the copy (default 40). Use the element width + a gap to place copies side by side.

dynumber

Vertical offset for the copy (default 40).

groupboolean

Group the copy into one new unit so it moves/duplicates together (default true).

groupIdstring

Copy EVERY element in this group as one unit — e.g. a placed stencil's `groupId` returned by addWhiteboardElements.

idsarray

Element ids to copy. Each id's full group + any bound text are auto-included. Use this and/or groupId.

includeGroupPeersboolean

Auto-include the full group of any id you pass (default true).

Edit Document

editDocument
Full Description

Edit a document with line-based patches. Call getDocument first for line numbers and versionTimestamp. Call getCdmdLanguageGuide if unfamiliar with CDMD syntax. Do not edit DIAGRAM/IMAGE markers manually — use dedicated diagram/image tools. To @-mention a person in your patch, insert <!-- REFERENCE: {"type":"user","id":"<user_uuid>","label":"Name"} -->; look up the user_id via listAssignablePrincipals. Mentioned users are notified automatically.

Parameters (2 required, 5 optional)
Required
documentIdstring
versionTimestampnumber

Version timestamp from getDocument() for optimistic locking.

Optional
changeSummarystring

Version history summary.

folderIdstring

Move to this folder.

patchesarray

Line-based patches. Can be empty if only updating title, folderId, or position.

positionnumber

Sort position within the parent folder. Use to reposition a single document. For batch sibling reorder, use reorderDocuments.

titlestring

New title.

Find And Replace Text In Document

findAndReplaceTextInDocument
Full Description

Find and replace text in a document. Searches for all occurrences and replaces them. Case-sensitive by default. Diagrams/images are automatically protected — only document text is affected. Note: when the replace value contains a <!-- REFERENCE: {...} --> marker (e.g. inserting a user mention), it round-trips losslessly through the editor and triggers notifications if it adds a new user mention.

Parameters (3 required, 2 optional)
Required
documentIdstring
findstring

Text to search for.

replacestring

Replacement text. Empty string to delete occurrences.

Optional
caseSensitiveboolean

Case-sensitive matching. Default: true.

changeSummarystring

Version history summary.

Get Cdmd Language Guide

getCdmdLanguageGuide
Full Description

Get the CDMD markdown language specification. Call before createDocument if unfamiliar with syntax.

Get Current Plan Entitlements

getCurrentPlanEntitlements
Full Description

Read the plan entitlements (limits + capability flags) that apply to the caller's organisation. Returns { tier, display_name, limits, features }. The Enterprise row is filtered for non-admin callers by the underlying view. Read-only.

Parameters (1 required)
Required
organisation_idstring

Organisation UUID. Must equal the credential's organisation.

Get Current User

getCurrentUser
Full Description

Return the calling user's identity (user_id, display_name, full_name, email, avatar_url). Use this when the user says 'me' / 'mine' / 'I' so you can resolve to their UUID before passing it to tools like updateImprovement(owner_id=…) or filtering by owner. Read-only.

Get Diagram Image

getDiagramImage
Full Description

Render a diagram that ALREADY exists in a document to an IMAGE (svg/png/jpeg @1x/2x/3x) and return it — a temporary signed URL (expires in 1 hour) plus, for png/jpeg, the image inline so you can see it. Pass the diagramId (from getDocument's DIAGRAM markers or getDiagramInDocument). Reuses the diagram's cached server render when available (pixel-identical to the editor). Use renderDiagram instead to generate from raw DSL without an existing diagram.

Parameters (1 required, 3 optional)
Required
diagramIdstring

The diagram's id (from getDocument markers / getDiagramInDocument).

Optional
backgroundstring

Background for png/jpeg, e.g. '#ffffff' or 'transparent' (png only).

formatstring

png (default) or jpeg = raster; svg = vector.

Options:pngjpegsvg
scalenumber

Raster resolution multiplier 1x/2x/3x (default 2). Ignored for svg.

Options:123

Get Diagram In Document

getDiagramInDocument
Full Description

Get a diagram's full details including raw DSL source code. Use diagramId from DIAGRAM_OMITTED markers in getDocument output. Returns diagramCode, type, name, nlDescription, and versionTimestamp.

Parameters (1 required, 1 optional)
Required
diagramIdstring

Diagram ID from DIAGRAM_OMITTED markers.

Optional
fieldsarray

Field projection. Valid fields: diagramId, documentId, type, name, diagramCode, nlDescription, colorPlan, renderStatus, renderError, createdAt, updatedAt, versionTimestamp.

Get Diagram Type Guide

getDiagramTypeGuide
Full Description

Get DSL writing instructions for a diagram type. Call before writing diagramCode.

Parameters (1 required, 1 optional)
Required
typestring
Optional
fieldsarray

Field projection. Valid fields: type, label, description, whenToUse, dslLanguage, dslInstructions, exampleDsl, enabled, sortOrder, updatedAt.

Get Document

getDocument
Full Description

Read a document's content with line numbers. Returns numbered lines for use with editDocument. Diagrams/images appear as OMITTED markers with metadata (type, diagramId, nlDescription) — use getDiagramInDocument(diagramId) for full DSL code, or dedicated diagram/image tools to manage them.

Parameters (1 required, 4 optional)
Required
documentIdstring

The document ID to read.

Optional
contentFieldsarray

Content field projection. Valid fields: offset, limit, totalLines, nextOffset, metadata, text.

fieldsarray

Field projection. Valid fields: id, title, friendlyId, friendlyIdNumber, projectId, folderId, createdAt, updatedAt, versionTimestamp.

limitnumber

Max lines to return. Default: 200.

offsetnumber

Lines to skip from start. Default: 0.

Get Document Ingest Job

getDocumentIngestJob
Full Description

Read the current status of an ingest job. Returns { status, stage, processedImages, totalImages, documentId, error?, lastHeartbeatAt }. Stages: pending → downloaded → extracted → draft_saved → images_processing → finalized → cleaned_up. Status: queued, running, succeeded, failed, cancelled. The associated document_id is populated immediately and progressively filled in as images are processed.

Parameters (1 required)
Required
jobIdstring

Get Effective Permission

getEffectivePermission
Full Description

Compute a user's effective permission level on a resource (taking team grants, inheritance, and 3-state overrides into account) and the source. Asking about another user requires can_manage_perms on the org. Use when the user asks 'can X access this', 'what level of access does X have', 'why can X see this', or to debug an unexpected permission outcome.

Parameters (3 required)
Required
resource_idstring
resource_typestring
Options:workspaceprojectfolderdocumentimprovementplan
user_idstring

UUID of the user to check

Get Folder Hierarchy

getFolderHierarchy
Full Description

Get the folder and document tree starting from a specific folder. Alias for getProjectHierarchy with folderId.

Parameters (1 required, 6 optional)
Required
folderIdstring

The folder ID to start from.

Optional
dateFieldstring

Date field to filter. Default: updated_at.

fromDatestring

ISO 8601 date filter (from).

includeDocumentsboolean

Include documents. Default: true.

maxDepthnumber

Max nesting depth. Default: 10, max: 20.

querystring

Filter by name/title (case-insensitive).

toDatestring

ISO 8601 date filter (to).

Get Image In Document

getImageInDocument
Full Description

Get image details including a fresh signed URL (expires after 1 hour). Use storagePath from IMAGE_OMITTED markers in getDocument output.

Parameters (2 required)
Required
documentIdstring
storagePathstring

Storage path from IMAGE_OMITTED marker.

Get Improvement

getImprovement
Full Description

Get full details for an improvement item including evidence, activity log, compliance context, and the checklist array (each item: id, text, due_date, completed_at, plus server-stamped attribution). Returns versionTimestamp — pass it to updateImprovement for optimistic locking. (For tasks specifically, use getTask + updateTask which are symmetric aliases.)

Parameters (1 required)
Required
improvementIdstring

Get Kg Scope Tree

getKgScopeTree
Full Description

List every kg_scope row for the caller's organisation, optionally narrowed to a workspace or project subtree. Each row carries scope_type, scope_id, state (on|off|inherit), settings, and is augmented with scope_name + parent_id for tree rendering. Capped at 500 rows.

Parameters (1 required, 2 optional)
Required
organisation_idstring

Must match the credential's org

Optional
project_idstring

Optional — narrow the result to this project's subtree

workspace_idstring

Optional — narrow the result to this workspace's subtree

Get Member

getMember
Full Description

Fetch a single organisation member by user_id, enriched with profile (email + display name). Auth: org id must match the credential's organisation.

Parameters (2 required)
Required
organisation_idstring

Organisation UUID. Must match the credential's organisation.

user_idstring

User UUID of the member to fetch.

Get Organisation

getOrganisation
Full Description

Read a single organisation by id. Returns id, name, slug, description, settings (jsonb), created_at, member_count (active members) and plan_tier (subscription_tier). The organisation must match the calling credential's organisation. Read-only.

Parameters (1 required)
Required
organisation_idstring

Organisation UUID. Must equal the credential's organisation.

Get Org Settings

getOrgSettings
Full Description

Read an organisation's settings JSON and the derived enabled-features map (plans, documents, improvements, compliance, knowledge_graph — all booleans). The organisation must match the calling credential's organisation. Read-only.

Parameters (1 required)
Required
organisation_idstring

Organisation UUID. Must equal the credential's organisation.

Get Plan

getPlan
Full Description

Get full plan details including phases, items, and activity. Returns versionTimestamp — pass it to updatePlan for optimistic locking. Items include percent_complete for progress tracking.

Parameters (1 required)
Required
planIdstring

Get Plan Hierarchy

getPlanHierarchy
Full Description

Get the complete plan hierarchy (phases, tasks, improvements) in one call. Recommended first call for plan navigation.

Parameters (1 required)
Required
planIdstring

Get Plan Phase

getPlanPhase
Full Description

Get a plan phase by ID with full details. Returns versionTimestamp — pass it to updatePlanPhase for optimistic locking.

Parameters (1 required)
Required
phaseIdstring

Get Project

getProject
Full Description

Read a single project by id. Auth via the standard project-access ladder. Returns the full v_projects row (id, workspace_id, name, description, icon, created_by/at, updated_by/at). Read-only.

Parameters (1 required)
Required
project_idstring

Project UUID.

Get Project Hierarchy

getProjectHierarchy
Full Description

Get the complete folder and document tree for a project in one call. Recommended first call for navigation.

Parameters (0 required, 8 optional)
Optional
dateFieldstring

Date field to filter. Default: updated_at.

folderIdstring

Start from this folder instead of project root.

fromDatestring

ISO 8601 date filter (from).

includeDocumentsboolean

Include documents. Default: true.

maxDepthnumber

Max nesting depth. Default: 10, max: 20.

projectIdstring

Project ID. Required if folderId not provided.

querystring

Filter by name/title (case-insensitive).

toDatestring

ISO 8601 date filter (to).

Get Task

getTask
Full Description

Get a task by ID with full details, evidence, activity, and the checklist array (each item: id, text, due_date, completed_at, plus server-stamped attribution). Returns versionTimestamp; pass it to updateTask to modify. Includes percent_complete for progress tracking.

Parameters (1 required)
Required
taskIdstring

Get Team

getTeam
Full Description

Get a single team by ID with profile-enriched member list (display_name, email, avatar_url, role, joined_at). Set includeMembers=false to skip the member fan-out and just return team metadata. Read-only.

Parameters (1 required, 1 optional)
Required
teamIdstring

Team UUID.

Optional
includeMembersboolean

Include the team's members enriched with user profile info. Default true.

Get User Preferences

getUserPreferences
Full Description

Read the calling user's preferences. Self-only — no params required. Returns { notifications, grids } where notifications is the single notification-preferences row and grids is an array of per-grid view rows. Read-only.

Get Whiteboard

getWhiteboard
Full Description

Read a whiteboard: its metadata plus a summary of the canvas (element count, element types, and text labels on the board). Pass includeElements=true to also return the full Excalidraw scene ({elements, appState, files}) — needed if you intend to modify it and send it back via updateWhiteboardScene. FOR BEST RESULTS, also call getWhiteboardImage to render the board to an image and actually SEE it: the visual layout (positions, spacing, overlaps, colours, how shapes connect) is far easier to understand from the rendered picture than from the element list, so view it first to truly understand the board and to propose or verify edits accurately.

Parameters (1 required, 1 optional)
Required
documentIdstring
Optional
includeElementsboolean

When true, returns the full Excalidraw scene so it can be modified and written back.

Get Whiteboard Guide

getWhiteboardGuide
Full Description

Get the Stable Baseline whiteboarding guide (Markdown): when to use stencils vs architecture icons vs code/BPMN diagrams vs plain shapes vs real images vs frames/presentations, how to lay out and verify a board, and how to edit a large board safely (patch by id, never replace). Call before authoring a non-trivial whiteboard.

Get Whiteboard Image

getWhiteboardImage
Full Description

Render a whiteboard to an IMAGE so you can SEE it and confirm your edits look right, then iterate — like taking a screenshot. Returns the rendered board as a viewable PNG (default) attached to the result. Pass elementIds to render only specific shapes (e.g. to inspect one section/slide), format:'svg' for vector markup instead of a raster, or background to set the canvas colour. Call this after addWhiteboardElements/updateWhiteboardScene to check layout, overlaps, labels and alignment before continuing.

Parameters (1 required, 3 optional)
Required
documentIdstring

The whiteboard's documentId.

Optional
backgroundstring

Canvas background colour (default white), e.g. '#ffffff' or 'transparent'.

elementIdsarray

Render only these element ids (plus their bound labels + group peers) instead of the whole board.

formatstring

png (default — a viewable raster) or svg (vector markup).

Options:pngsvg

Get Workspace

getWorkspace
Full Description

Read a single workspace by id. Auth via the standard workspace-access ladder (credential org match + workspace scope + per-resource read permission). Returns the full v_workspaces row. Read-only.

Parameters (1 required)
Required
workspace_idstring

Workspace UUID.

Grant Team Workspace Access

grantTeamWorkspaceAccess
Full Description

Grant a team read/write/admin access to a workspace. Idempotent. Team and workspace must be in the same organisation.

Parameters (3 required)
Required
permission_levelstring
Options:readwriteadmin
team_idstring
workspace_idstring

Insert Diagram In Document

insertDiagramInDocument
Full Description

Insert a new diagram into a document. Call listDiagramTypes to find your type, then getDiagramTypeGuide for DSL syntax before writing diagramCode. Always set prompt + nlDescription to describe what the diagram shows (they are its saved description) and keep them accurate. After inserting, VERIFY the render — set returnImage:true (or call getDiagramImage) to actually SEE it — and if it is wrong or ugly, correct it with updateDiagramInDocument (provide the full updated diagramCode).

Parameters (9 required, 5 optional)
Required
afterLinenumber

Insert after this line number (1-based).

alignstring

Alignment.

Options:leftcenterright
captionstring

Caption below the diagram.

diagramCodestring

Diagram DSL code. Call getDiagramTypeGuide for syntax. EXCEPTION — for type 'infographic', put a plain-English DESCRIPTION of the infographic here (NOT code); the system designs the AntV spec and renders it.

documentIdstring
documentVersionTimestampnumber

Version timestamp from getDocument() for optimistic locking.

nlDescriptionstring

Extended description of the diagram (2-4 sentences).

promptstring

Short description of what the diagram shows (1-2 sentences).

typestring

Diagram type (e.g. mermaid, plantuml, bpmn, d2). Call listDiagramTypes for all types.

Optional
colorPlanobject

BPMN only. Color plan: { byElementId: { ElementId: SwatchName } }.

imageBackgroundstring

Background for the returned png/jpeg (e.g. '#ffffff' or 'transparent').

imageFormatstring

Image format when returnImage:true (default png).

Options:pngjpegsvg
imageScalenumber

Raster resolution 1x/2x/3x when returnImage:true (default 2).

Options:123
returnImageboolean

If true, also render the inserted diagram and return it as an image inline (one-call insert-and-get-image). Defaults false.

Insert Image In Document

insertImageInDocument
Full Description

Insert an image into a document (max 10MB). Provide imageBase64, imageBinary, or imageUrl. For large files, call createImageUploadSession first then use the returned assetUrl.

Parameters (4 required, 9 optional)
Required
captionstring

Caption below the image.

documentIdstring
documentVersionTimestampnumber

Version timestamp from getDocument() for optimistic locking.

nlDescriptionstring

Description of image content for semantic search.

Optional
afterLinenumber

Insert after this line (0 = beginning, omit = end).

alignstring

Alignment. Default: center.

Options:leftcenterright
altstring

Alt text. Defaults to caption.

fileNamestring

Original filename.

heightnumber

Height in pixels.

imageBase64string

Base64-encoded image data. Mutually exclusive with imageBinary/imageUrl.

imageBinaryarray

Raw binary as byte array. Mutually exclusive with imageBase64/imageUrl.

imageUrlstring

URL to fetch image from, or assetUrl from createImageUploadSession.

widthnumber

Width in pixels.

Insert Whiteboard Diagram

insertWhiteboardDiagram
Full Description

Insert a real DIAGRAM (BPMN, Diagrams-as-Code / any DSL: mermaid, d2, plantuml, graphviz, …) into a whiteboard as an editable SB diagram element. Provide documentId, diagramType (call listDiagramTypes / getDiagramTypeGuide), and source (the DSL). The diagram is rendered to an image stored like a pasted image, and its editable source is kept in a sidecar so it stays a live, re-openable diagram on the board (double-click on the canvas opens the BPMN / code / AI editor). Options: caption (label beneath it), width/height to size it, and x/y or align ('left'|'center'|'right') to place it (defaults to the right of existing content). After inserting, call getWhiteboardImage to see it and verify it rendered correctly (fix the source and re-insert if it is wrong). For a plain picture (not a diagram) use insertWhiteboardImage; to generate a diagram image WITHOUT inserting use renderDiagram.

Parameters (3 required, 6 optional)
Required
diagramTypestring

Diagram language, e.g. 'bpmn', 'mermaid', 'd2', 'plantuml', 'graphviz'. See listDiagramTypes.

documentIdstring

The whiteboard's documentId.

sourcestring

The diagram DSL / code. For type 'infographic', provide a plain-English description instead (the system designs the AntV infographic spec).

Optional
alignstring

Horizontal alignment relative to existing content (placed below it). Ignored if x/y given.

Options:leftcenterright
captionstring

Optional caption shown beneath the diagram.

heightnumber

Display height in px (defaults from width + aspect).

widthnumber

Display width in px (aspect ratio preserved). Defaults to a capped natural size.

xnumber

Top-left x on the canvas. Omit to auto-place.

ynumber

Top-left y on the canvas. Omit to auto-place.

Insert Whiteboard Image

insertWhiteboardImage
Full Description

Insert a real IMAGE (photo, screenshot, logo, picture) into a whiteboard — the storage-backed equivalent of insertImageInDocument. Provide the image as imageUrl (fetched and re-hosted), imageBase64, or imageBinary; for large files call createImageUploadSession(documentId) first then pass the returned assetUrl as imageUrl. The bytes are stored in the document-images bucket and the scene only holds a reference (never base64), exactly like pasted images. Options: caption (a text label placed + grouped beneath the image), width/height in px to RESIZE (if only one is given the other follows a 4:3 ratio; ~360px wide if neither), and placement via x/y (top-left) OR align ('left'|'center'|'right', positioned just below existing content) — omit both to auto-place to the right of the current content. After inserting, call getWhiteboardImage to verify. To move or resize the image later, patch its element via updateWhiteboardScene (mode:'patch' with {id, x, y, width, height}). For curated software-architecture ICONS (AWS/Docker/etc.) use addWhiteboardElements with an {type:'image', iconPath} spec instead.

Parameters (1 required, 10 optional)
Required
documentIdstring

The whiteboard's documentId.

Optional
alignstring

Horizontal alignment relative to existing content (placed below it). Ignored if x/y are provided.

Options:leftcenterright
captionstring

Optional caption shown as a text label grouped beneath the image.

fileNamestring

Optional original filename (for storage + type hinting).

heightnumber

Display height in px. Derived from width at 4:3 if omitted.

imageBase64string

Base64-encoded image bytes (a data: URL prefix is allowed). Best for small images.

imageBinaryarray

Raw image bytes as an array of 0-255 values (alternative to imageBase64).

imageUrlstring

URL to fetch the image from, or an assetUrl returned by createImageUploadSession.

widthnumber

Display width in px (resize). Defaults to ~360.

xnumber

Top-left x on the canvas. Omit to auto-place.

ynumber

Top-left y on the canvas. Omit to auto-place.

Invite Member

inviteMember
Full Description

Invite a person by email to the credential's organisation. Auth: org id must match the credential AND credential must hold can_manage_members. Rate limit 10/h. Returns invitation_id, expiry, and a seat-billing-impact summary. Email-existence is opaque: the response shape never reveals whether the email is already a member, already invited, or new. Use when the user asks to invite a teammate, friend, colleague, or new user to their organisation, or to onboard someone.

Parameters (3 required, 1 optional)
Required
emailstring

Email address. Lowercased and trimmed. Max 320 chars.

organisation_idstring

Organisation UUID. Must match the credential's organisation.

organization_rolestring

Role to grant on accept. 'owner' is never assignable via MCP.

Options:memberadmin
Optional
messagestring

Optional personal message attached to the invitation email.

Kg Backlinks

kg_backlinks
Full Description

Linked-mentions rail: every edge whose dst matches the named entity.

Parameters (1 required)
Required
namestring

Kg Evaluate Retrieval

kg_evaluate_retrieval
Full Description

Phase 5 / E3 — Provenance-aware assessor for a set of chunk_ids returned by kg_search. Returns per-chunk bucket (authored-grounded | extracted-high-conf | extracted-low-conf | no-support), overall distribution, dominant_bucket, and recommend_refusal. Pure metadata read - no LLM cost. Used by the agent's response policy to decide whether to answer confidently, caveat, or refuse.

Parameters (1 required)
Required
chunkIdsarray

Array of kg_chunks.id values to assess.

Kg Get Entity

kg_get_entity
Full Description

Fetch a KG entity by id or name, with 1-hop neighbours.

Parameters (0 required, 2 optional)
Optional
entityIdstring
namestring

Kg Get Wiki Page

kg_get_wiki_page
Full Description

Fetch a community wiki page (LLM-curated CDMD).

Parameters (0 required, 2 optional)
Optional
communityIdstring
slugstring

Kg List Communities

kg_list_communities
Full Description

List Louvain communities for an org (optionally scoped by project).

Parameters (0 required, 2 optional)
Optional
levelnumber
Default: 0
projectIdstring

Kg Related Documents

kg_related_documents
Full Description

Find other sources that share entities with the given source.

Parameters (2 required, 1 optional)
Required
sourceIdstring
sourceTypestring
Options:documentdiagramimprovementplantask
Optional
limitnumber
Default: 10

Kg Scope Status

kg_scope_status
Full Description

Check whether Knowledge Graph is in-scope for a given target.

Parameters (0 required, 4 optional)
Optional
documentIdstring
folderIdstring
projectIdstring
workspaceIdstring

Kg Search

kg_search
Full Description

Unified Knowledge Graph retrieval. PICK THE MODE THAT FITS THE QUERY:

• mode='local' (default) — for SPECIFIC factual questions ("what does §15 say about deposits?", "who is the Chief Counsel?"). FTS+vector RRF over individual document chunks. Returns precise excerpts with citations.

• mode='global' — for THEMATIC / OVERVIEW / SUMMARY questions ("what are the main themes", "give me an overview of the project", "what topics does this cover"). Returns Louvain community summaries + curated wiki pages — far better than 'local' for big-picture queries because community summaries already aggregate across many chunks. ALWAYS PREFER over 'local' when the user asks for themes / summary / overview / topic landscape.

• mode='graph' — for RELATIONSHIP questions ("what's connected to entity X?", "who cites Section 5?"). 1-hop entity-neighbourhood walk. Pass query OR srcEntityId.

• mode='path' — for CONNECTION questions ("how does X relate to Y?"). Shortest path between two entities. Pass srcEntityId AND dstEntityId.

• mode='ppr' — for MULTI-HOP discovery ("what's relevant to X, even indirectly?"). Personalised PageRank over AUTHORED-vs-EXTRACTED weighted edges, seeded by query-similar entities. Best when 'local' returns too few results and the answer requires walking through several entity hops.

Quick decision tree:

  • User asks for an overview/summary/themes → 'global'
  • User asks a specific question with a clear answer → 'local'
  • User asks 'how is X connected to Y' → 'path' (with both entity IDs)
  • User asks 'what's near entity X' → 'graph' (with srcEntityId)
  • 'local' returned nothing useful and the question is broad → retry with 'ppr'
Parameters (0 required, 8 optional)
Optional
depthnumber

Hop depth for graph/path modes.

Default: 2
dstEntityIdstring

Required for mode='path'. Target entity to find a path TO.

limitnumber
Default: 20
modestring

Retrieval strategy. See tool description for when to use each — strongly prefer 'global' for thematic/overview questions.

Options:localglobalgraphpathppr
Default: local
projectIdstring
querystring

Natural-language query. Required for local/global/ppr; optional for graph (use srcEntityId instead).

srcEntityIdstring

Required for mode='path'. Optional source entity for mode='graph'.

workspaceIdstring

Kg Suggest Sample Questions

kg_suggest_sample_questions
Full Description

3 template + 3 LLM-generated sample questions for the knowledge-graph playground.

Parameters (0 required, 1 optional)
Optional
projectIdstring

List Architecture Icons

listArchitectureIcons
Full Description

SOFTWARE & CLOUD architecture icons ONLY (AWS, Azure, GCP, Docker, Kubernetes, databases, message queues, dev tools, etc.). This catalog has NO general/nature/science/people/business icons — so for any NON-technical topic (e.g. photosynthesis, biology, history, marketing), do NOT use this tool; instead put a relevant emoji directly in the element's label (e.g. ☀️ Sunlight, 💧 Water, 🌿 Leaf). It returns nothing for off-domain queries by design — never force an unrelated tech logo onto a non-tech concept. Each result has an iconPath (e.g. 'dev/docker.svg'). TWO ways to use it: (1) on a WHITEBOARD, drop it via addWhiteboardElements({ type:'image', iconPath:'dev/docker.svg', x, y, width:96, height:96, text:'Docker' }); (2) in a D2 systems-architecture diagram, use the iconPath as-is in D2 code (e.g. icon: dev/docker.svg).

Parameters (0 required, 5 optional)
Optional
categorystring

Filter by category (e.g. AWS, Azure, GCP, dev, essentials).

fieldsarray

Field projection. Valid fields: id, iconPath, iconName, category, subcategory, vendor, description, searchTerms, tags, useCases, aliases, isFeatured, displayOrder.

limitnumber
offsetnumber
querystring

Search by name, category, vendor, or description.

List Assignable Principals

listAssignablePrincipals
Full Description

Server-side searchable, paginated list of USERS and TEAMS that can be assigned as the owner of an improvement/task in a project — and the canonical source for resolving a person's user_id when @-mentioning them in a document. Returns two arrays — users (with user_id, display_name, email, avatar_url, has_explicit_permission) and teams (with team_id, name, member_count, has_explicit_permission). Sources: project-level grants + workspace members + organization members + members of teams granted access. Use BEFORE: (1) updateImprovement/updateTask when you need an owner_id (kind='user') or owner_team_id (kind='team'); (2) inserting a <!-- REFERENCE: {"type":"user","id":"…","label":"…"} --> mention in document content via createDocument / editDocument / findAndReplaceTextInDocument. Supports q for ILIKE search on names/emails (users) or team names. Pass kind='user' or kind='team' to scope to a single section, or 'all' (default) for both. Pagination via limit (1-100, default 20) + offset.

Parameters (1 required, 5 optional)
Required
projectIdstring

Project to scope assignees to. Required.

Optional
kindstring

Filter to one principal kind. Default 'all' returns users first then teams.

Options:alluserteam
limitnumber

Max results per page (1-100, default 20).

offsetnumber

Pagination offset.

qstring

Optional ILIKE search filter — matched against display_name + email (users) and team name (teams).

workspaceIdstring

Workspace UUID. Optional but recommended — when present, the result includes ALL org members; when omitted, only direct project grants + team-expanded users are returned.

List Diagram Types

listDiagramTypes
Full Description

List supported diagram types. Use the returned type field when calling insertDiagramInDocument.

Parameters (0 required, 5 optional)
Optional
enabledOnlyboolean
fieldsarray

Field projection. Valid fields: type, label, description, whenToUse, dslLanguage, dslInstructions, exampleDsl, enabled, availableOnFree, sortOrder, updatedAt.

limitnumber
offsetnumber
querystring

List Documents

listDocuments
Full Description

List documents in a project, workspace, or folder. Supports query search and date filtering.

Parameters (0 required, 10 optional)
Optional
dateFieldstring

Date field to filter. Default: updated_at.

fieldsarray

Field projection. Valid fields: id, title, friendlyId, friendlyIdNumber, projectId, folderId, createdAt, updatedAt, href.

folderIdstring
fromDatestring

ISO 8601 date filter (from).

limitnumber
offsetnumber
projectIdstring
querystring
toDatestring

ISO 8601 date filter (to).

workspaceIdstring

List Document Versions

listDocumentVersions
Full Description

List version history for a document. Returns timestamps, creator, change summary, and content.

Parameters (1 required, 7 optional)
Required
documentIdstring
Optional
fieldsarray

Field projection. Valid fields: id, documentId, versionNumber, title, contentMarkdown, changeSummary, createdBy, createdAt.

fromDatestring

ISO 8601 date filter (from).

limitnumber

Max versions. Default: 50, max: 200.

offsetnumber

Pagination offset.

sortAscendingboolean

Sort oldest first. Default: false.

toDatestring

ISO 8601 date filter (to).

versionNumbernumber

Filter to a specific version.

List Folders

listFolders
Full Description

List folders in a project. Use parentId for nested folders. For full tree, use getProjectHierarchy instead.

Parameters (1 required, 8 optional)
Required
projectIdstring
Optional
dateFieldstring

Date field to filter. Default: updated_at.

fieldsarray

Field projection. Valid fields: id, projectId, parentId, name, position, createdAt, updatedAt.

fromDatestring

ISO 8601 date filter (from).

limitnumber
offsetnumber
parentIdstring
querystring
toDatestring

ISO 8601 date filter (to).

List Improvement Categories

listImprovementCategories
Full Description

List improvement categories for a project. Returns tree and flat list.

Parameters (1 required)
Required
projectIdstring

List Improvements

listImprovements
Full Description

List improvements in a project. Supports filtering by status, type, priority, and query.

Parameters (1 required, 15 optional)
Required
projectIdstring
Optional
agentReadyboolean

Filter by agent readiness.

categoryIdstring

Filter by category ID.

complianceOnlyboolean

Only compliance-linked improvements.

fieldsarray

Field projection. Valid fields: id, friendly_id, friendlyId, title, type, status, priority, source, category_id, categoryId, created_at, createdAt, updated_at, updatedAt, href.

frameworkKeystring

Filter by framework (e.g. soc2, iso27001).

limitnumber

Max results (1-100, default 50).

offsetnumber

Pagination offset.

prioritystring

Filter: low, medium, high, critical.

querystring

Search title, friendly_id, problem_statement.

scanRunIdstring

Filter by compliance scan run.

sortAscendingboolean

Sort ascending. Default: true.

sortFieldstring

Sort field. Default: position.

sourcestring

Filter: agent_review, human_manual, doc_comment, feedback, incident, etc.

statusstring

Filter: captured, triaging, shaped, approved, ready_for_agent, in_progress, ready_for_review, in_review, blocked, done, rejected, deferred.

typestring

Filter: feature, bug, tech_debt, architecture_gap, documentation_gap, risk, enhancement, task. Tasks (is_task=true) always have type='task'.

List Invitations

listInvitations
Full Description

List organisation invitations. Auth: org id must match the credential's organisation AND the credential must hold the can_manage_members capability. Status defaults to 'pending'. Pass 'all' to disable filtering.

Parameters (1 required, 3 optional)
Required
organisation_idstring

Organisation UUID. Must match the credential's organisation.

Optional
limitnumber
Default: 50
offsetnumber
Default: 0
statusstring
Options:pendingacceptedexpireddeclinedrevokedall
Default: pending

List Members

listMembers
Full Description

List members of an organisation, enriched with email + display name. Auth: org id must match the credential's organisation. Returns paginated list, default limit 50 / max 200.

Parameters (1 required, 3 optional)
Required
organisation_idstring

Organisation UUID. Must match the credential's organisation.

Optional
include_invitedboolean

When true, include rows that haven't joined yet (joined_at IS NULL).

Default: False
limitnumber
Default: 50
offsetnumber
Default: 0

List Organisations

listOrganisations
Full Description

List organisations you have access to. Supports query filtering by name/slug.

Parameters (0 required, 4 optional)
Optional
fieldsarray

Field projection. Valid fields: id, name, slug, subscription_tier, created_at.

limitnumber
offsetnumber
querystring

List Plan Phases

listPlanPhases
Full Description

List phases for a plan ordered by position.

Parameters (1 required)
Required
planIdstring

List Plans

listPlans
Full Description

List plans in a project. Supports filtering by status, priority, and query.

Parameters (1 required, 8 optional)
Required
projectIdstring
Optional
fieldsarray

Field projection. Valid fields: id, friendly_id, friendlyId, title, description, status, priority, icon, color, start_date, startDate, end_date, endDate, created_at, createdAt, updated_at, updatedAt, href.

limitnumber

Max results (1-100, default 50).

offsetnumber

Pagination offset.

prioritystring

Filter: low, medium, high, critical.

querystring

Search title, friendly_id, description.

sortAscendingboolean

Sort ascending. Default: false.

sortFieldstring

Sort field. Default: created_at.

statusstring

Filter: draft, planning, active, on_hold, completed, cancelled.

List Projects

listProjects
Full Description

List projects in a workspace. Supports query filtering by project name.

Parameters (1 required, 7 optional)
Required
workspaceIdstring
Optional
dateFieldstring

Date field to filter. Default: updated_at.

fieldsarray

Field projection. Valid fields: id, name, description, workspace_id, created_at, updated_at.

fromDatestring

ISO 8601 date filter (from).

limitnumber
offsetnumber
querystring
toDatestring

ISO 8601 date filter (to).

List Resource Permissions

listResourcePermissions
Full Description

List explicit permission grants on a resource (workspace/project/folder/document/improvement/plan), including principal type (user|team), level (none|read|write|admin), and 3-state overrides for documents/improvements/plans. Read-only. Use when the user asks 'who can see this', 'who has access', 'what permissions are set on this', or to audit existing access on a resource.

Parameters (2 required)
Required
resource_idstring

UUID of the resource

resource_typestring
Options:workspaceprojectfolderdocumentimprovementplan

List Task Dependencies

listTaskDependencies
Full Description

List FS/SS/FF task-dependency edges in a plan (the Gantt arrows). Scope by planId, projectId, or itemId. direction: 'predecessors' | 'successors' | 'both' (default, only with itemId).

Parameters (0 required, 4 optional)
Optional
directionstring

Only meaningful with itemId. Default: both.

Options:predecessorssuccessorsboth
itemIdstring

Limit to one item's edges.

planIdstring

Limit to one plan.

projectIdstring

Limit to one project (all plans).

List Tasks

listTasks
Full Description

List tasks in a plan. Supports filtering by status, priority, phaseId, and query.

Parameters (1 required, 8 optional)
Required
planIdstring
Optional
limitnumber

Max results (1-100, default 50).

offsetnumber

Pagination offset.

phaseIdstring

Filter by phase.

prioritystring

Filter by priority.

querystring

Search title and friendly_id.

sortAscendingboolean

Sort ascending. Default: true.

sortFieldstring

Sort field. Default: position.

statusstring

Filter by status.

List Teams

listTeams
Full Description

List teams in an organization, with optional search filter and an includeMembers flag that fans out to v_team_members in a single round-trip. Supply EITHER organizationId OR workspaceId (the workspace's parent org is resolved automatically). Use this when the user asks about teams generically (e.g. 'show me my teams') or before assigning a team via updateImprovement(owner_team_id=…). Read-only.

Parameters (0 required, 6 optional)
Optional
includeMembersboolean

When true, each team gets a `members` array (user_id, role, joined_at). Capped at 500 total members across the page. Default false.

limitnumber

Max teams per page (1-200, default 50).

offsetnumber

Pagination offset.

organizationIdstring

Organization UUID. Either this OR workspaceId is required.

qstring

Optional ILIKE search on team name/slug.

workspaceIdstring

Workspace UUID. The parent organization is resolved from v_workspaces.

List Whiteboards

listWhiteboards
Full Description

List the whiteboards in a project (hidden whiteboard-kind documents). Returns documentId, diagramId, title and timestamps for each.

Parameters (1 required)
Required
projectIdstring

List Whiteboard Stencils

listWhiteboardStencils
Full Description

Search the built-in library of structural whiteboard stencils — ready-made hand-drawn graphics: flowchart/UML/ER/BPMN symbols, scrum columns, org-chart nodes, gantt, lo-fi/UX wireframe widgets (buttons, forms, tables, alerts, navs), charts, device frames, stick figures. A stencil is a MINI-WHITEBOARD (a collection of elements), NOT a single shape. Each result returns: key, title (a real human name e.g. 'Alerts', not an index), kind ('symbol' | 'template'), labels (the TEXT it actually contains — its real content, e.g. an Alerts template's variant messages), size ({w,h} px), summary, pack, category; plus the full pack/category lists. The two kinds are used DIFFERENTLY: • SYMBOL = one atomic labelled node (flowchart Process/Decision, BPMN task, org node). Place + label + connect: addWhiteboardElements({type:'stencil', stencilKey, id:'n1', text:'Review', width, height}) — the text auto-fits its single slot and an arrow's start/end {id:'n1'} binds to it like any shape. A few symbols are text-less FRAMES (e.g. a UML class box = rectangle + divider line): place create-only, then use the placement result's children (shapes + x/y/w/h) and groupId to add type:'text' specs INTO the regions — pass that groupId so the text is one unit with the frame. • TEMPLATE = a multi-component layout (Alerts, Forms, Tables, Charts, device frames). Place the WHOLE thing: addWhiteboardElements({type:'stencil', stencilKey, x, y, width?, height?}); the placement RESULT returns stencils[].children (each child's id + text + colour + position x/y/w/h, so you can group children into rows/sections) so you then keep / retext / recolour / DELETE specific parts via updateWhiteboardScene (e.g. delete the info + error rows to keep only the green success alert). Do NOT pass a single text to a template — read its labels to see its parts, then edit them by id. To make several similar items, build one then duplicateWhiteboardElements({groupId, dx}) to stamp consistent copies (like copy-paste in the UI). SEARCH TIPS: prefer BROAD single words ('decision','alert','form','phone','process'); content words match the embedded labels too (searching 'success' finds the Alerts template). If nothing exact matches, results auto-broaden (broadened:true); pass pack/category to browse. For cloud/architecture ICONS (AWS/Azure/GCP/Docker/Kubernetes/databases) use listArchitectureIcons; for a sticky/post-it use addWhiteboardElements({type:'sticky'}), not a stencil.

Parameters (0 required, 4 optional)
Optional
categorystring

Filter by category: 'Notes & Planning', 'Diagramming', 'UI & Wireframing', 'Data & Charts', 'People & Fun'.

limitnumber

Max results (default 60, max 200).

packstring

Restrict to one pack, e.g. 'Flowchart', 'BPMN', 'UML & ER', 'Scrum Board', 'Lo-Fi Wireframes', 'Org Chart'.

querystring

Free-text search across name + pack + category (e.g. 'decision', 'database table', 'phone frame', 'actor', 'kanban column').

List Workspaces

listWorkspaces
Full Description

List workspaces you have access to. Supports query filtering by name/slug.

Parameters (0 required, 7 optional)
Optional
dateFieldstring

Date field to filter. Default: updated_at.

fieldsarray

Field projection. Valid fields: id, name, slug, organization_id, created_at, updated_at.

fromDatestring

ISO 8601 date filter (from).

limitnumber
offsetnumber
querystring
toDatestring

ISO 8601 date filter (to).

Poll Signup Status

pollSignupStatus
Full Description

Poll the status of a signup begun via startSignup. Anonymous-callable. Possible status values: pending (user has not yet authorized — keep polling), authorized (success — response includes api_key, organization_id, user_id, user_email; the api_key is returned ONCE), consumed (already returned the api_key on a previous poll — stop polling), denied (user clicked Deny), expired (10-minute TTL exceeded — call startSignup again), not_found (invalid device_code), slow_down (you're polling faster than the interval — back off).

Parameters (1 required)
Required
device_codestring

The device_code returned from startSignup.

Preview Kg Rebuild

previewKgRebuild
Full Description

Preview the cost / coverage / ETA of a full KG rebuild for the org (optionally narrowed to a workspace or project). Returns confirmation_token (10-min TTL). Rate limit 20/h.

Parameters (1 required, 3 optional)
Required
organisation_idstring
Optional
forceboolean
project_idstring
workspace_idstring

Preview Kg Scope Change

previewKgScopeChange
Full Description

Preview the credit cost, source counts, and ETA of including or excluding KG scope rows. Returns confirmation_token (10-min TTL) plus delta of newly-in-scope vs newly-out-of-scope sources. Rate limit 20/h.

Parameters (2 required)
Required
changesarray
organisation_idstring

Preview Task Dependency Cascade

previewTaskDependencyCascade
Full Description

Dry-run of applyTaskDependencyCascade — returns the diff without writing. Empty items array means the plan is already consistent. Accepts the same pinnedItemIds and forwardOnly params.

Parameters (1 required, 2 optional)
Required
planIdstring

Plan to evaluate.

Optional
forwardOnlyboolean
pinnedItemIdsarray

Rebuild Platform Catalog Embeddings

rebuildPlatformCatalogEmbeddings
Full Description

Internal maintenance (requires write). Syncs gte-small (384-dim) vector embeddings for the MCP tool, whiteboard stencil, and architecture icon catalogs into platform_catalog_embeddings, so searchTools, listWhiteboardStencils, and listArchitectureIcons can do semantic search. Incremental: scans every catalog, diffs by content hash, and re-embeds ONLY changed rows (cheap no-op when nothing changed). This normally runs automatically every hour (the platform-catalog-sync cron), so manual calls are rarely needed — use it to force an immediate sync after changing tools/stencils/icons. Embeds up to ~120 changed rows per call; if more changed, call again until allDone is true. Not part of normal authoring flows.

Parameters (0 required, 1 optional)
Optional
typesarray

Which catalogs to sync. Defaults to all three (tool, stencil, icon).

Remove Member

removeMember
Full Description

Hard-remove a member from an organisation, cascading to workspace and team memberships and resource permissions. Refuses self-removal and last-owner removal. Stripe seat downgrade is NOT performed here — pair with a Phase 6 billing tool. Rate limit 5/min. Use when the user asks to remove, kick out, fire, offboard, or fully terminate a member's access to the organisation.

Parameters (2 required)
Required
organisation_idstring
user_idstring

Remove Team Member

removeTeamMember
Full Description

Remove a user from a team. Idempotent — returns removed=false if not on the team.

Parameters (2 required)
Required
team_idstring
user_idstring

Remove Workspace Member

removeWorkspaceMember
Full Description

Remove a member from a workspace. Caller must be a workspace owner or admin. Refuses to remove the last remaining workspace owner.

Parameters (2 required)
Required
user_idstring
workspace_idstring

Render Diagram

renderDiagram
Full Description

Generate a diagram from its DSL/code and get the IMAGE back — WITHOUT inserting it into any document or whiteboard. For acting as a pure diagram generator. Provide diagramType (e.g. 'mermaid', 'd2', 'plantuml', 'graphviz', 'bpmn', 'vegalite'; call listDiagramTypes for the full set) and source (the diagram code). Choose format 'png' (default), 'jpeg', or 'svg'; for raster choose scale 1/2/3 for 1x/2x/3x; optional background (png only). Returns a TEMPORARY signed imageUrl that expires in 1 hour (then auto-deleted), and for png/jpeg the image inline so you can see it. To render a diagram that already lives in a document/whiteboard use getDiagramImage; to persist a new one use insertDiagramInDocument or insertWhiteboardDiagram.

Parameters (2 required, 3 optional)
Required
diagramTypestring

Diagram language, e.g. 'mermaid', 'd2', 'plantuml', 'graphviz', 'bpmn', 'vegalite'. See listDiagramTypes.

sourcestring

The diagram DSL / code to render. For type 'infographic', provide a plain-English description instead (the system designs the AntV infographic spec).

Optional
backgroundstring

Background for png/jpeg, e.g. '#ffffff' or 'transparent' (png only).

formatstring

png (default) or jpeg = raster; svg = vector.

Options:pngjpegsvg
scalenumber

Raster resolution multiplier 1x/2x/3x (default 2). Ignored for svg.

Options:123

Reorder Documents

reorderDocuments
Full Description

Batch-reorder documents within a folder (or project root) by setting sibling positions. Pass [{documentId, position}, ...] where position is a non-negative integer; usually you renumber siblings sequentially as 0, 1, 2…. Position-only update — does not bump version or create a snapshot. To MOVE a document to a different folder, use editDocument({folderId, position}) instead.

Parameters (1 required)
Required
itemsarray

List of document position updates. All documents must belong to the same project.

Reorder Folders

reorderFolders
Full Description

Batch-reorder folders within a parent (or project root) by setting sibling positions. Pass [{folderId, position}, ...] where position is a non-negative integer; usually you renumber siblings sequentially as 0, 1, 2…. To MOVE a folder to a different parent and set its position there, use updateFolder({parentId, position}) instead.

Parameters (1 required)
Required
itemsarray

List of folder position updates. All folders must belong to the same project.

Reorder Improvement Categories

reorderImprovementCategories
Full Description

Reorder improvement categories by setting sort_order values.

Parameters (1 required)
Required
itemsarray

Array of {categoryId, sortOrder}.

Reorder Plan Phases

reorderPlanPhases
Full Description

Reorder plan phases by setting position values. WBS codes are recalculated.

Parameters (1 required)
Required
itemsarray

Array of {phaseId, position}.

Resend Invitation

resendInvitation
Full Description

Resend a pending invitation: extends expires_at by 7 days and re-triggers the invitation email. Server resolves the organisation_id from the invitation row. Rate limit 6/h per invitation_id. Use when the user asks to resend, re-send, or re-trigger an invitation email — typically because the recipient lost it or the original expired.

Parameters (1 required)
Required
invitation_idstring

Invitation UUID. Must currently be in 'pending' status.

Reset Document In Brain

resetDocumentInBrain
Full Description

Wipe + re-ingest a single document in the KG. Drops chunks/mentions/entities, clears pending lazy-extraction, and enqueues a fresh extract pass. Requires can_manage_kg + document write. Rate limit 30/min.

Parameters (1 required)
Required
document_idstring

Revoke Team Workspace Access

revokeTeamWorkspaceAccess
Full Description

Revoke a team's workspace access. Idempotent — returns revoked=false if no grant exists.

Parameters (2 required)
Required
team_idstring
workspace_idstring

Search Improvements

searchImprovements
Full Description

Search improvements using hybrid text + semantic search. Returns ranked results.

Parameters (1 required, 3 optional)
Required
querystring

Search query.

Optional
limitnumber

Max results (default 20, max 50).

projectIdstring

Limit to a project.

workspaceIdstring

Limit to a workspace.

Search Infographic Templates

searchInfographicTemplates
Full Description

Semantic search over the 276 AntV Infographic templates — call this FIRST when building an infographic diagram so you pick the right structure for the content. Describe the intent (e.g. 'compare two options', 'show a process timeline', 'pyramid of priorities', 'org hierarchy', 'flow between systems', 'parts of a whole'); results are vector-ranked. Each result has key (use as line 1 infographic <key>), name, family (list|sequence|compare|relation|chart|hierarchy|quadrant), and description. The result's usage explains the family→data-field mapping for writing the DSL.

Parameters (1 required, 1 optional)
Required
querystring

What the infographic should show (intent/topic), e.g. 'compare pros and cons', 'launch roadmap timeline', 'market share pie'.

Optional
limitnumber

Max templates to return (default 12).

Search Tools

searchTools
Full Description

Search available tools by keyword or category. Returns matching tool names and descriptions.

Parameters (0 required, 2 optional)
Optional
categorystring

Category filter.

Options:navigationfoldersdocumentsdiagramsimagesdataimprovementsplansknowledge_graphorganizationmembersteamspermissionsbillingkg_adminsettingssignup
querystring

Natural language description of what you want to do.

Set Kg Document Scope

setKgDocumentScope
Full Description

Toggle KG-scope override for a single document (on/off/inherit). Documents default to inheriting their folder/project gate. Requires can_manage_kg + document write. Rate limit 30/min.

Parameters (2 required)
Required
document_idstring
statestring
Options:onoffinherit

Set Kg Folder Scope

setKgFolderScope
Full Description

Toggle KG-scope override for a folder (on/off/inherit). Folders default to inheriting their project's scope. Requires can_manage_kg + folder write. Rate limit 30/min.

Parameters (2 required)
Required
folder_idstring
statestring
Options:onoffinherit

Set Kg Project Visibility

setKgProjectVisibility
Full Description

Set the KG visibility mode for a project: 'strict' (multi-source rows hidden unless user can read every source), 'permissive' (one source suffices), or 'open' (any org member). Controls WHO can see the project's KG rows. Requires can_manage_kg + project write. Rate limit 30/min.

Parameters (2 required)
Required
modestring
Options:strictpermissiveopen
project_idstring

Set Kg Workspace Scope

setKgWorkspaceScope
Full Description

Toggle whether a workspace is in the Knowledge Graph (on/off/inherit). 'on' enables the workspace as a gate for indexing its projects; 'off' excludes everything under it; 'inherit' removes the explicit override. No re-ingest happens here. Requires can_manage_kg + workspace write. Rate limit 30/min.

Parameters (2 required)
Required
statestring
Options:onoffinherit
workspace_idstring

Set Member Active

setMemberActive
Full Description

Soft-deactivate or reactivate an organisation member. Refuses self-deactivation, last-admin/owner deactivation, and deactivation of an owner. Rate limit 30/min. Use when the user asks to deactivate, suspend, freeze, reactivate, or unfreeze a member without fully removing them.

Parameters (3 required)
Required
is_activeboolean
organisation_idstring
user_idstring

Set Plan Item Parent

setPlanItemParent
Full Description

Set or clear the WBS parent-child nesting of a task/improvement (outline hierarchy, no scheduling effect). Same plan and phase required. Max depth: 5.

Parameters (1 required, 1 optional)
Required
itemIdstring

Item ID to re-parent.

Optional
parentIdstring

New parent ID. Null to un-indent.

Set Resource Permission Override

setResourcePermissionOverride
Full Description

Set a single 3-state override on a permission row: null=inherit, true=allow, false=deny. Per-axis (read/write/delete) and per-kind (documents/improvements/plans), matching the OverrideAccessSection UI. Rate limit 30/min.

Parameters (4 required)
Required
axisstring
Options:readwritedelete
override_kindstring
Options:documentsimprovementsplans
permission_idstring
valueboolean/null

true=allow, false=deny, null=inherit

Start Signup

startSignup
Full Description

Begin an agent-driven sign-up to Stable Baseline. Anonymous-callable. Returns a verification_url and a 6-character user_code that the agent must show to the user. The user opens the URL in their browser, signs in or signs up if necessary, enters the code, and clicks Authorize. The agent meanwhile polls pollSignupStatus({device_code}) every poll_interval_seconds until the status changes to authorized, at which point it receives an api_key it can use for subsequent MCP calls. The whole flow has a 10-minute TTL.

Parameters (0 required, 3 optional)
Optional
agent_labelstring

Self-identification of the calling agent (e.g. 'Claude Desktop', 'Cursor', 'Custom CLI'). Shown to the user on the confirmation page so they know what they're authorizing.

desired_org_namestring

Optional hint for the org name to suggest if the user has no organisation yet. Ignored for users who already have an org.

intentstring

Reason for the signup. Currently only 'mcp_setup' is supported.

Options:mcp_setup

Trace Image

traceImage
Full Description

Turn a raster image into hand-drawn freedraw strokes on a whiteboard, deterministically. Pass an image (imageUrl OR imageBase64) plus a style; the server fetches and vectorises it server-side and draws the strokes, so you do NOT emit any coordinates yourself (LLMs are poor at that and it wastes tokens). Use this for requests like 'sketch this image onto the board', portraits, or turning a logo into line art. style: 'sketch' (~3 colors, clean line art; default), 'color' (~8 colors), 'poster' (~12 colors). Returns a compact summary (stroke count), never the raw coordinates. Auto-places to the right of existing content unless x/y are given.

Parameters (1 required, 9 optional)
Required
documentIdstring

The whiteboard's documentId.

Optional
imageBase64string

Base64-encoded image bytes (a data: URL prefix is allowed). Use instead of imageUrl.

imageUrlstring

URL to fetch the image from (http/https; private and metadata hosts are blocked).

maxColorsnumber

Palette size 2-16 (defaults by style: sketch 3, color 8, poster 12).

maxStrokesnumber

Cap on the number of strokes, 20-1200 (default 600). Lower = simpler and faster.

mimeTypestring

Optional image MIME type hint (e.g. 'image/png'); auto-detected otherwise.

stylestring

Vectorisation style. 'sketch' = clean line art (default), 'color' = more colors, 'poster' = posterised.

Options:sketchcolorposter
widthnumber

Target display width in px (default 520); the drawing scales to fit, aspect preserved.

xnumber

Top-left x on the canvas. Omit to auto-place to the right of existing content.

ynumber

Top-left y on the canvas. Omit to auto-place.

Trigger Kg Rebuild

triggerKgRebuild
Full Description

Apply a previously previewed KG rebuild. Dispatches the build batch via kg-rebuild and returns batch_id. Rate limit 5/h.

Parameters (1 required)
Required
confirmation_tokenstring

Update Diagram In Document

updateDiagramInDocument
Full Description

Update a diagram's code, description, or properties. Call getDiagramTypeGuide for DSL syntax. Requires documentVersionTimestamp from getDocument. IMPORTANT: To change what the diagram visually shows, you MUST provide diagramCode with the full updated DSL source. The prompt and nlDescription fields are metadata only and do NOT change the rendered diagram. After updating, re-render with getDiagramImage to confirm it now looks right (iterate if not), and keep prompt/nlDescription in step with what the diagram now shows.

Parameters (2 required, 6 optional)
Required
diagramIdstring

Diagram ID from DIAGRAM_OMITTED markers.

documentVersionTimestampnumber

Version timestamp from getDocument() for optimistic locking.

Optional
alignstring

Alignment.

Options:leftcenterright
captionstring

New caption.

colorPlanobject

BPMN only. Updated color plan. Set to null to remove.

diagramCodestring

New diagram DSL source code. REQUIRED to change what the diagram visually renders. Call getDiagramTypeGuide for syntax. Must provide the COMPLETE updated DSL, not just the changed parts.

nlDescriptionstring

New extended description (metadata only — does NOT change the rendered diagram).

promptstring

New short description (metadata only — does NOT change the rendered diagram).

Update Folder

updateFolder
Full Description

Update a folder (rename/move/reorder). Supports nesting changes via parentId.

Parameters (1 required, 3 optional)
Required
folderIdstring
Optional
namestring
parentIdstring
positionnumber

Update Image In Document

updateImageInDocument
Full Description

Update image metadata (alt, caption, dimensions, alignment). Requires documentVersionTimestamp from getDocument for optimistic locking.

Parameters (2 required, 6 optional)
Required
documentVersionTimestampnumber

Version timestamp from getDocument() for optimistic locking.

imageIdstring

Image ID from IMAGE_OMITTED markers.

Optional
alignstring

Alignment.

Options:leftcenterright
altstring

New alt text.

captionstring

New caption.

heightnumber

Height in pixels.

nlDescriptionstring

New image description.

widthnumber

Width in pixels.

Update Improvement

updateImprovement
Full Description

Update an improvement (or a task — tasks share this row, but prefer the symmetric updateTask alias when working from getTask). Supports the full field set including checklist (tick-boxes with due dates + completion attribution) and acceptance_criteria (objects with per-row updated_by/at attribution). Requires versionTimestamp from getImprovement for optimistic locking. Status transitions: blocked needs blocked_comment, rejected needs rejection_comment, done needs completion_comment. Assignment: pass owner_id=<uuid> to assign to a user, owner_team_id=<uuid> to assign to a team (mutually exclusive — a DB CHECK constraint enforces this). To unassign, pass owner_id=null AND owner_team_id=null. To switch from a user owner to a team owner, send owner_id=null, owner_team_id=<uuid> in the SAME call (sending only one side leaves the stale value and triggers the XOR check). Use listAssignablePrincipals or listTeams to discover valid IDs.

Parameters (2 required, 48 optional)
Required
improvementIdstring
versionTimestampnumber

Version timestamp from getImprovement() for optimistic locking.

Optional
acceptance_criteriaarray

Acceptance criteria — ordered list of pass/fail statements that define "done" for this item. Each row is `{ id, text }` with server-stamped `updated_at / updated_by / updated_by_credential_name`. REPLACES the whole array on update. Echo back existing `id`s on rows you keep so attribution stamps survive. Bare strings are accepted for convenience (e.g. `["row 1", "row 2"]`) and auto-converted to `{ id, text }`.

agent_briefstring
agent_complexitystring
agent_confidencenumber
agent_missing_infoarray
agent_readyboolean
agent_recommended_actionstring
blocked_commentstring

Required when status=blocked.

business_impactstring
category_idstring

Category ID. Null to unassign.

checklistarray

Tick-box checklist shown above acceptance_criteria. The full array REPLACES the stored list on update, and array order = display order — to edit, fetch via getTask/getImprovement, modify, and send back the whole list. Operations: mark done with `completed: true`; un-mark with `completed: false`; add rows by appending `{ text }` (id is auto-minted); remove by omitting; reorder by rearranging. Echo back each existing `id` you keep so per-row attribution (who added/completed it, when) survives.

completion_commentstring

Required when status=done.

constraintsarray
descriptionstring
desired_outcomestring
docs_updatedboolean
end_datestring

YYYY-MM-DD.

follow_up_neededboolean
impacted_componentsarray
impacted_diagramsarray
impacted_documentsarray
impacted_repositoriesarray
is_taskboolean

Mark as task. Prefer setting type='task' instead — is_task is kept in sync from the type enum by a DB trigger.

linked_document_idsarray

Document IDs to link.

metadataobject
non_goalsarray
owner_idstring/null

User UUID to assign as owner, or null to unassign. MUTUALLY EXCLUSIVE with owner_team_id — when switching from a user to a team owner, send `owner_id: null` in the same call as `owner_team_id`. Use listAssignablePrincipals(projectId, kind='user', q='…') to look up valid UUIDs.

owner_team_idstring/null

Team UUID to assign as owner, or null to unassign. MUTUALLY EXCLUSIVE with owner_id — when switching from a team to a user owner, send `owner_team_id: null` in the same call as `owner_id`. Use listTeams or listAssignablePrincipals(kind='team') to look up valid UUIDs.

percent_completenumber

Progress percentage (0-100). Null to clear.

phase_idstring

Assign to phase. Null to unassign.

plan_idstring

Link to plan. Null to unlink.

positionnumber
prioritystring
problem_statementstring
rejection_commentstring

Required when status=rejected.

relationshipsobject

Free-form JSON for logical links: blocks, blocked_by, duplicates, supersedes, relates_to (arrays of item IDs).

reopened_commentstring

Required when reopening from blocked/rejected/done/deferred.

resolution_pr_urlstring
resolution_summarystring
start_datestring

YYYY-MM-DD.

statusstring
target_datestring
titlestring
typestring
urgencystring
user_impactstring
wbs_codestring
why_nowstring

Update Improvement Category

updateImprovementCategory
Full Description

Update an improvement category. Cannot modify system categories.

Parameters (1 required, 6 optional)
Required
categoryIdstring
Optional
colorstring
descriptionstring
iconstring
namestring
slugstring
sortOrdernumber

Update Improvement Comment

updateImprovementComment
Full Description

Update a comment on an improvement. Requires the comment's updated_at as versionTimestamp.

Parameters (3 required)
Required
activityIdstring

Activity ID from getImprovement activity array.

commentstring

New comment text.

versionTimestampnumber

Comment's updated_at as Unix ms for optimistic locking.

Update Member Role

updateMemberRole
Full Description

Update an organisation member's role (admin or member). Owners cannot be changed via this tool. Refuses self-promotion. Rate limit 30/min. Use when the user asks to promote someone to admin, demote an admin to member, or change a teammate's role.

Parameters (3 required)
Required
organisation_idstring

Organisation UUID. Must match the credential's organisation.

organization_rolestring
Options:memberadmin
user_idstring

Target user UUID.

Update Organisation

updateOrganisation
Full Description

Update an organisation's name and/or description. Auth: ceiling — credential must hold can_admin_org capability AND user must be org owner/admin. Rate limit 30/min. At least one of name/description required. Returns updated row.

Parameters (1 required, 2 optional)
Required
organisation_idstring

Organisation UUID. Must equal the credential's organisation.

Optional
descriptionstring/null
namestring

Update Org Feature Flags

updateOrgFeatureFlags
Full Description

Toggle feature flags on settings.enabledFeatures (plans, improvements, compliance, knowledge_graph, documents). Auth: can_admin_org + org admin. Rate limit 30/min. Plan-tier gated: enabling knowledge_graph requires Pro/Enterprise.

Parameters (1 required, 5 optional)
Required
organisation_idstring
Optional
complianceboolean
documentsboolean
improvementsboolean
knowledge_graphboolean
plansboolean

Update Org Settings

updateOrgSettings
Full Description

Update an organisation's settings JSONB via deep merge. Auth: ceiling — credential must hold can_admin_org AND user must be org owner/admin. Rate limit 30/min. Patches that touch enabledFeatures are rejected — use updateOrgFeatureFlags instead.

Parameters (2 required)
Required
organisation_idstring
settingsobject

JSONB patch — top-level keys deep-merged with existing settings; null removes a key. enabledFeatures is rejected.

Update Plan

updatePlan
Full Description

Update a plan. Requires versionTimestamp from getPlan.

Parameters (2 required, 11 optional)
Required
planIdstring
versionTimestampnumber

Version timestamp from getPlan() for optimistic locking.

Optional
colorstring
descriptionstring
end_datestring

YYYY-MM-DD.

iconstring
linked_document_idsarray

Document IDs to link.

linked_documentsarray
metadataobject
prioritystring

Priority: low, medium, high, critical.

start_datestring

YYYY-MM-DD.

statusstring

Status: draft, planning, active, on_hold, completed, cancelled.

titlestring

Update Plan Comment

updatePlanComment
Full Description

Update a comment on a plan. Requires the comment's updated_at as versionTimestamp.

Parameters (3 required)
Required
activityIdstring

Activity ID from getPlan activity array.

commentstring

New comment text.

versionTimestampnumber

Comment's updated_at as Unix ms for optimistic locking.

Update Plan Phase

updatePlanPhase
Full Description

Update a plan phase. Requires versionTimestamp from getPlanPhase (not getPlan).

Parameters (2 required, 9 optional)
Required
phaseIdstring
versionTimestampnumber

Version timestamp from getPlanPhase() for optimistic locking.

Optional
colorstring/null

Phase color. Must be one of: #3b82f6 (Blue), #f59e0b (Amber), #8b5cf6 (Purple), #ec4899 (Pink), #06b6d4 (Cyan), #14b8a6 (Teal), #6366f1 (Indigo), #6b7280 (Gray). Red and green are reserved for blocked / done item statuses. Pass null to clear.

Options:#3b82f6#f59e0b#8b5cf6#ec4899#06b6d4#14b8a6#6366f1#6b7280
descriptionstring
end_datestring
namestring
positionnumber
prioritystring

Priority: low, medium, high, critical.

start_datestring
statusstring

Status: not_started, in_progress, completed, on_hold, cancelled.

wbs_codestring

Update Profile

updateProfile
Full Description

Update a user's profile name and/or display email. Self-updates do not require organisation_id; updates to other users require organisation_id and the can_manage_members capability. Self login-email changes must be done via the UI (verification round-trip).

Parameters (1 required, 3 optional)
Required
user_idstring
Optional
emailstring
namestring
organisation_idstring

Required when editing another user.

Update Project

updateProject
Full Description

Update a project's name, description, and/or icon. Mirrors the UI Project General Settings page. Auth: admin on the project (cascades from workspace owner/admin and org admin). Partial updates; at least one of name/description/icon must be supplied. Rate limit 60/min.

Parameters (1 required, 3 optional)
Required
project_idstring

Project UUID.

Optional
descriptionstring/null

Pass null to clear.

iconstring/null

Pass null to clear.

namestring

Update Resource Permission

updateResourcePermission
Full Description

Update the access level on an existing permission row. Override flags are NOT touched — use setResourcePermissionOverride for those. Refuses self-escalation. Rate limit 30/min.

Parameters (2 required)
Required
levelstring
Options:nonereadwriteadmin
permission_idstring

UUID of the resource_permissions row

Update Task

updateTask
Full Description

Update a task. Tasks share a row with improvements (improvement_items with is_task=true), so this is a thin alias over updateImprovement — every field on updateImprovement is supported, including checklist, acceptance_criteria, status transitions (blocked/rejected/done need their respective comments), dates, owner, percent_complete, etc. Requires versionTimestamp from getTask for optimistic locking. To edit checklist items: call getTask, modify the checklist array (preserving each row's id to keep its attribution stamps), and pass the full array back here — array order is the sort order. Assignment: pass owner_id=<uuid> to assign to a user, owner_team_id=<uuid> to assign to a team (mutually exclusive — the DB enforces with a CHECK constraint). To unassign, pass owner_id=null AND owner_team_id=null. To switch owner kind, send the new value AND null the old one in the SAME call.

Parameters (2 required, 46 optional)
Required
taskIdstring
versionTimestampnumber

Version timestamp from getTask() for optimistic locking.

Optional
acceptance_criteriaarray

Acceptance criteria — ordered list of pass/fail statements that define "done" for this item. Each row is `{ id, text }` with server-stamped `updated_at / updated_by / updated_by_credential_name`. REPLACES the whole array on update. Echo back existing `id`s on rows you keep so attribution stamps survive. Bare strings are accepted for convenience (e.g. `["row 1", "row 2"]`) and auto-converted to `{ id, text }`.

agent_briefstring
agent_complexitystring
agent_confidencenumber
agent_missing_infoarray
agent_readyboolean
agent_recommended_actionstring
blocked_commentstring

Required when status=blocked.

business_impactstring
checklistarray

Tick-box checklist shown above acceptance_criteria. The full array REPLACES the stored list on update, and array order = display order — to edit, fetch via getTask/getImprovement, modify, and send back the whole list. Operations: mark done with `completed: true`; un-mark with `completed: false`; add rows by appending `{ text }` (id is auto-minted); remove by omitting; reorder by rearranging. Echo back each existing `id` you keep so per-row attribution (who added/completed it, when) survives.

completion_commentstring

Required when status=done.

constraintsarray
descriptionstring
desired_outcomestring
docs_updatedboolean
end_datestring

YYYY-MM-DD.

follow_up_neededboolean
impacted_componentsarray
impacted_diagramsarray
impacted_documentsarray
impacted_repositoriesarray
linked_document_idsarray

Document IDs to link.

metadataobject
non_goalsarray
owner_idstring/null

User UUID to assign as owner, or null to unassign. MUTUALLY EXCLUSIVE with owner_team_id — when switching from a user to a team owner, send `owner_id: null` in the same call as `owner_team_id`. Use listAssignablePrincipals(projectId, kind='user', q='…') to look up valid UUIDs.

owner_team_idstring/null

Team UUID to assign as owner, or null to unassign. MUTUALLY EXCLUSIVE with owner_id — when switching from a team to a user owner, send `owner_team_id: null` in the same call as `owner_id`. Use listTeams or listAssignablePrincipals(kind='team') to look up valid UUIDs.

percent_completenumber

Progress percentage (0-100). Null to clear.

phase_idstring

Assign to phase. Null to unassign.

plan_idstring

Link to plan. Null to unlink.

positionnumber
prioritystring
problem_statementstring
rejection_commentstring

Required when status=rejected.

relationshipsobject

Free-form JSON for logical links: blocks, blocked_by, duplicates, supersedes, relates_to (arrays of item IDs).

reopened_commentstring

Required when reopening from a closed status.

resolution_pr_urlstring
resolution_summarystring
start_datestring

YYYY-MM-DD.

statusstring
target_datestring

YYYY-MM-DD.

titlestring
typestring
urgencystring
user_impactstring
wbs_codestring
why_nowstring

Update Task Dependency

updateTaskDependency
Full Description

Change the type (FS/SS/FF) or lag/lead of an existing task-dependency. Doesn't move dates directly; flags the successor with needs_dependency_review=true and fills suggested_start_date/suggested_end_date if the change implies a different schedule.

Parameters (1 required, 2 optional)
Required
dependencyIdstring
Optional
dependencyTypestring
Options:FSSSFF
lagDaysinteger

Positive = lag, negative = lead.

Update Team

updateTeam
Full Description

Update a team's name, description, and/or colour. At least one field required. Slug is intentionally not editable. Rate limit 60/min.

Parameters (1 required, 3 optional)
Required
team_idstring
Optional
colorstring
descriptionstring/null
namestring

Update Team Workspace Access

updateTeamWorkspaceAccess
Full Description

Update an existing team's workspace access level. Refuses if no grant exists — call grantTeamWorkspaceAccess first. No-op when level matches.

Parameters (3 required)
Required
permission_levelstring
Options:readwriteadmin
team_idstring
workspace_idstring

Update User Preferences

updateUserPreferences
Full Description

Update the calling user's preferences. Self-only. Rate limit 60/min. Partial: only fields supplied are updated. notifications upserts a single row; grids upserts per-row keyed by (user_id, project_id, grid_key, view_name).

Parameters (0 required, 2 optional)
Optional
gridsarray
notificationsobject

Update Whiteboard Scene

updateWhiteboardScene
Full Description

Edit elements on a whiteboard's canvas WITHOUT dropping the rest of the scene. A board may hold many diagrams/elements, so prefer surgical edits: mode='patch' (DEFAULT) shallow-merges each incoming object into the existing element with the same id (send just {id, backgroundColor:'blue'} to recolour one box, or {id, x, y} to move one) and appends any elements whose id is new/absent — everything else is left untouched. deleteIds removes specific elements by id. mode='append' only adds. mode='replace' overwrites the ENTIRE scene — to rebuild or edit only PART of a board, still use 'patch', because replace DELETES every element you don't resend (of ANY type). As a safeguard, a replace that would drop ANY existing element not in your payload is REJECTED unless you pass confirmReplace:true (or include those ids); diagrams/images/frames are flagged specially since they're inserted separately and costliest to lose. To author NEW shapes/connectors from a high-level spec, prefer addWhiteboardElements — and prefer library stencils / sticky notes / architecture icons over plain rectangles wherever a standard form fits (sticky notes, kanban/scrum, flowcharts, UML/ER, BPMN, org charts, wireframes). Optional appState/files are merged in. PROCESS: for a non-trivial edit call getWhiteboardGuide FIRST; after editing, ALWAYS call getWhiteboardImage to confirm the board still looks right (layout, labels, overlaps), and patch again if it doesn't.

Parameters (1 required, 7 optional)
Required
documentIdstring
Optional
appStateobject

Optional Excalidraw appState fields to merge (e.g. viewBackgroundColor).

confirmReplaceboolean

Safety acknowledgement for mode 'replace' ONLY. A replace that would DELETE ANY existing element not present in your `elements` is rejected unless this is true. Leave it unset and use mode:'patch' to edit part of a board (it merges by id and keeps the rest); set true only when you truly intend to overwrite the WHOLE scene.

deleteIdsarray

Element ids to remove from the scene.

elementsarray

Elements to write. For mode 'patch', each may be a partial { id, ...changedFields } merged into the matching element by id; full Excalidraw elements for 'replace'/'append' (or new ids in 'patch').

filesobject

Optional Excalidraw BinaryFiles map (for embedded images), merged in.

modestring

How to apply your `elements`. patch (DEFAULT — use this for ANY partial edit): merges each item into the element with the same id and leaves everything else untouched, like find-and-replace by id; new ids are added. append: only adds your items, changes nothing else. replace: OVERWRITES THE WHOLE CANVAS — every existing element you don't resend is DELETED — so use it ONLY to set an entire board at once. To change or rebuild just a SECTION, use patch (+ deleteIds to remove specific ids), NEVER replace. A replace that would drop any existing element is rejected unless confirmReplace:true.

Options:patchappendreplace
versionTimestampnumber

Optional optimistic-locking token from getWhiteboard. Only used for mode 'replace': if the board changed since you read it, the replace is rejected so you don't overwrite a collaborator's newer edits — re-read with getWhiteboard and retry. Not needed for patch/append, which automatically merge onto the latest scene.

Update Workspace

updateWorkspace
Full Description

Update a workspace's name. Auth: standard workspace-write ladder + user must be workspace owner or admin. Slug is intentionally not editable (URL-embedded). Rate limit 60/min.

Parameters (2 required)
Required
namestring
workspace_idstring

Workspace UUID.

Update Workspace Member

updateWorkspaceMember
Full Description

Change an existing workspace member's role. Caller must be a workspace owner or admin. Cannot self-demote from owner/admin to editor/viewer — transfer the role first.

Parameters (3 required)
Required
user_idstring
workspace_idstring
workspace_rolestring
Options:owneradmineditorviewer

Upsert Resource Permission

upsertResourcePermission
Full Description

Insert or update a resource_permissions row for a user OR team on a workspace/project/folder/document/improvement/plan. Refuses self-escalation. Rate limit 30/min. Use when the user asks to give access to, share with, grant access, add a permission, make accessible, or invite someone to a specific workspace/project/folder/document — i.e. resource-level access (not org-level membership; that's inviteMember).

Parameters (5 required)
Required
levelstring
Options:nonereadwriteadmin
principal_idstring

UUID of the user or team

principal_typestring
Options:userteam
resource_idstring

UUID of the resource

resource_typestring
Options:workspaceprojectfolderdocumentimprovementplan