@stablebaseline/sdk 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/openapi.json CHANGED
@@ -606,7 +606,7 @@
606
606
  "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.",
607
607
  "operationId": "searchInfographicTemplates",
608
608
  "tags": [
609
- "uncategorized"
609
+ "diagrams"
610
610
  ],
611
611
  "requestBody": {
612
612
  "required": false,
@@ -3876,11 +3876,11 @@
3876
3876
  }
3877
3877
  }
3878
3878
  },
3879
- "/tools/designWhiteboard": {
3879
+ "/tools/autoDesignWhiteboard": {
3880
3880
  "post": {
3881
- "summary": "designWhiteboard",
3882
- "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. Optional `designProfile: 'branded-executive'` instead builds an ON-BRAND, fully-editable McKinsey-style SLIDE DECK themed by the org's brand kit (palette/fonts) — use it when the user wants polished branded business slides; it builds in-process and the board is ready on return. Optional `designProfile: 'illustrated'` instead builds an editable-illustration board: pick it for illustrated, image-based, picture-style, richly-drawn or educational explainer boards (e.g. illustrate photosynthesis, an illustrated diagram of the water cycle, a textbook-style visual). It generates a rich text-free vector illustration and overlays real, editable text labels with leader lines on top. It is gated per organisation; if it is not enabled the call returns a clear message, so fall back to the standard design. Optional `designProfile: 'image'` instead builds a single, polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes): pick 'image' when the user wants a single finished image, poster or infographic they will refine by AI mask edits rather than by moving editable shapes. It is also gated per organisation; if it is not enabled the call returns a clear message.",
3883
- "operationId": "designWhiteboard",
3881
+ "summary": "autoDesignWhiteboard",
3882
+ "description": "Auto-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 WHOLE board, renders it, critiques the rendered image, and refines — far better than hand-placing shapes. This is the one-shot whole-board designer; it is NOT a conversation (for a deck you can chat with and refine turn by turn use designDeckInWhiteboard, and for a refinable illustration use designIllustrationInWhiteboard). 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. Optional `designProfile: 'branded-executive'` instead builds an ON-BRAND, fully-editable McKinsey-style SLIDE DECK themed by the org's brand kit (palette/fonts) — use it when the user wants polished branded business slides; it builds in-process and the board is ready on return. Optional `designProfile: 'illustrated'` instead builds an editable-illustration board: pick it for illustrated, image-based, picture-style, richly-drawn or educational explainer boards (e.g. illustrate photosynthesis, an illustrated diagram of the water cycle, a textbook-style visual). It generates a rich text-free vector illustration and overlays real, editable text labels with leader lines on top. It is available to every organisation and costs the same flat 50 credits (credits are the only gate). Optional `designProfile: 'image'` instead builds a single, polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes): pick 'image' when the user wants a single finished image, poster or infographic they will refine by AI mask edits rather than by moving editable shapes. It is also available to every organisation at the same flat 50 credits.",
3883
+ "operationId": "autoDesignWhiteboard",
3884
3884
  "tags": [
3885
3885
  "whiteboards"
3886
3886
  ],
@@ -3921,7 +3921,7 @@
3921
3921
  "agentic",
3922
3922
  "agentic-deck"
3923
3923
  ],
3924
- "description": "Optional. 'standard' (default) = the general multi-agent design. 'agentic' = an AI-chat-style agentic slide composer that drives the whiteboard tools and self-corrects from renders, composing ONE polished slide. 'agentic-deck' = the same agentic composer run over a planned storyline, building a multi-slide deck (each slide on its own frame, tiled left to right). 'branded-executive' = an on-brand, McKinsey-style editable SLIDE DECK themed by the org's brand kit (pair with brandKitId, or omit for the org default). 'illustrated' = an editable-illustration board: a rich text-free vector illustration with real editable text labels and leader lines placed on top. 'image' = a single polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes), which the user then refines with AI mask edits. 'illustrated' and 'image' are each gated per organisation; if not enabled the call returns a clear message."
3924
+ "description": "Optional. 'standard' (default) = the general multi-agent design. 'agentic' = an AI-chat-style agentic slide composer that drives the whiteboard tools and self-corrects from renders, composing ONE polished slide. 'agentic-deck' = the same agentic composer run over a planned storyline, building a multi-slide deck (each slide on its own frame, tiled left to right). 'branded-executive' = an on-brand, McKinsey-style editable SLIDE DECK themed by the org's brand kit (pair with brandKitId, or omit for the org default). 'illustrated' = an editable-illustration board: a rich text-free vector illustration with real editable text labels and leader lines placed on top. 'image' = a single polished, on-brand IMAGE board with all the text baked into the picture (no editable shapes), which the user then refines with AI mask edits. Every profile is available to every organisation; the flat credit fee is the only gate."
3925
3925
  },
3926
3926
  "brandKitId": {
3927
3927
  "type": "string",
@@ -4013,10 +4013,10 @@
4013
4013
  "/tools/designComponent": {
4014
4014
  "post": {
4015
4015
  "summary": "designComponent",
4016
- "description": "Design ONE reusable, on-brand SLIDE COMPONENT and add it to the org's component library so every future branded deck (designWhiteboard designProfile:'branded-executive') can use it. This is the self-improving design loop: an agent AUTHORS the component as a declarative template (a gradient/shadow/curve SVG skin + a native editable PPTX shape + reflowing bound-text slots), RENDERS it, a vision critic COMPARES the render to your brief and lists gaps, and it FIXES + re-renders until polished — then validates and stores it. Use it to grow the deck component catalogue beyond the built-ins (e.g. a 'kpi.delta' stat with an up/down arrow, a 'quote.card', a 'logo.strip'). Browse-first: if a component with this `key` already exists it is reused (pass force:true to redesign). Provide example `sampleSlots` so it can lay out real content, and a `projectId` for the small preview board it builds. Returns the stored component, the per-round critique trail, and the preview board id. It uses a few AI calls + renders (no flat credit charge); the new component is then free to reuse forever.",
4016
+ "description": "Design ONE reusable, on-brand SLIDE COMPONENT and add it to the org's component library so every future branded deck (autoDesignWhiteboard designProfile:'branded-executive') can use it. This is the self-improving design loop: an agent AUTHORS the component as a declarative template (a gradient/shadow/curve SVG skin + a native editable PPTX shape + reflowing bound-text slots), RENDERS it, a vision critic COMPARES the render to your brief and lists gaps, and it FIXES + re-renders until polished — then validates and stores it. Use it to grow the deck component catalogue beyond the built-ins (e.g. a 'kpi.delta' stat with an up/down arrow, a 'quote.card', a 'logo.strip'). Browse-first: if a component with this `key` already exists it is reused (pass force:true to redesign). Provide example `sampleSlots` so it can lay out real content, and a `projectId` for the small preview board it builds. Returns the stored component, the per-round critique trail, and the preview board id. It uses a few AI calls + renders (no flat credit charge); the new component is then free to reuse forever.",
4017
4017
  "operationId": "designComponent",
4018
4018
  "tags": [
4019
- "uncategorized"
4019
+ "whiteboards"
4020
4020
  ],
4021
4021
  "requestBody": {
4022
4022
  "required": false,
@@ -4163,7 +4163,7 @@
4163
4163
  "/tools/editWhiteboardImageRegion": {
4164
4164
  "post": {
4165
4165
  "summary": "editWhiteboardImageRegion",
4166
- "description": "Mask-edit (inpaint) one region of an image element on a whiteboard. Given the target image element id and a paint MASK (a PNG where WHITE marks the area to regenerate and BLACK is kept), it regenerates only the masked region using the prompt and replaces the image IN PLACE (same position + size). This is mainly used by the in-app image-board mask editor for boards designed with designProfile:'image'. It costs a small flat credit charge (refunded automatically if the edit fails on our side). It is gated per organisation behind the same 'whiteboard_design_image' feature as the image design profile; if that is not enabled the call returns a clear message.",
4166
+ "description": "Mask-edit (inpaint) one region of an image element on a whiteboard. Given the target image element id and a paint MASK (a PNG where WHITE marks the area to regenerate and BLACK is kept), it regenerates only the masked region using the prompt and replaces the image IN PLACE (same position + size). This is mainly used by the in-app image-board mask editor for boards designed with designProfile:'image'. It is available to every organisation; the small flat credit charge is the only gate (refunded automatically if the edit fails on our side).",
4167
4167
  "operationId": "editWhiteboardImageRegion",
4168
4168
  "tags": [
4169
4169
  "whiteboards"
@@ -4281,13 +4281,13 @@
4281
4281
  }
4282
4282
  }
4283
4283
  },
4284
- "/tools/designDeck": {
4284
+ "/tools/designDeckInWhiteboard": {
4285
4285
  "post": {
4286
- "summary": "designDeck",
4287
- "description": "Create or refine a slide deck on a whiteboard by conversing with the AI design agent. Send a brief for a NEW deck, a change to an EXISTING one, or an answer to the agent's question. The agent builds a polished, on-brand deck and places it on the board; if the brief is ambiguous it asks ONE clarifying question (answer with the same sessionId). Returns immediately; poll getDeckReply for the result. Use for building or editing slide decks / presentations. The deck lives in a whiteboard, so it needs an existing whiteboard documentId: if you do not have one, create it first with createWhiteboard and pass its documentId here. FIRST vs FOLLOW-UP: the first call (from nothing) builds; a follow-up call (an answer, a change, or a new instruction) passes the sessionId (or the deckId) plus the new message. kind:'deck' (default) is the premium on-brand HTML deck; kind:'express' builds the native, deterministic branded-executive deck directly on the whiteboard (faster, lower fidelity, one-shot, not conversational). COST + APPROVAL: a build costs 50 credits and an edit 10; a clarifying question is FREE. Call FIRST without confirm to get the exact cost plus the workspace balance, show it to the user, and only call again with confirm:true once they agree. The fee is auto-refunded if a turn produces no change or fails. Returns sessionId (the conversation), deckId (the deck), status, turnType, started, awaitingUser, needsConfirmation, insufficientCredits, and assistantMessage. Export the finished deck with exportFromWhiteboard.",
4288
- "operationId": "designDeck",
4286
+ "summary": "designDeckInWhiteboard",
4287
+ "description": "Create or refine a slide deck INSIDE an existing whiteboard by conversing with the AI design agent. Send a brief for a NEW deck, a change to an EXISTING one, or an answer to the agent's question. The agent builds a polished, on-brand deck and places it on the board; if the brief is ambiguous it asks ONE clarifying question (answer with the same sessionId). Returns immediately; poll getDeckReplyInWhiteboard for the result. Use for building or editing slide decks / presentations. WHITEBOARD IS REQUIRED: a deck always lives inside a whiteboard, so documentId (the whiteboard's id) is required. If you do NOT already have a whiteboard id, ASK THE USER which whiteboard they want the deck designed in — do NOT create a whiteboard automatically. Only call createWhiteboard first if the user explicitly asks for a brand-new board; otherwise use the id of the whiteboard they name. FIRST vs FOLLOW-UP: the first call (from nothing) builds; a follow-up call (an answer, a change, or a new instruction) passes the sessionId (or the deckId) plus the new message. kind:'deck' (default) is the premium on-brand HTML deck; kind:'express' builds the native, deterministic branded-executive deck directly on the whiteboard (faster, lower fidelity, one-shot, not conversational). COST + APPROVAL: a build costs 50 credits and an edit 10; a clarifying question is FREE. Call FIRST without confirm to get the exact cost plus the workspace balance, show it to the user, and only call again with confirm:true once they agree. The fee is auto-refunded if a turn produces no change or fails. Returns sessionId (the conversation), deckId (the deck), status, turnType, started, awaitingUser, needsConfirmation, insufficientCredits, and assistantMessage. Export the finished deck with exportFromWhiteboard.",
4288
+ "operationId": "designDeckInWhiteboard",
4289
4289
  "tags": [
4290
- "uncategorized"
4290
+ "whiteboards"
4291
4291
  ],
4292
4292
  "requestBody": {
4293
4293
  "required": false,
@@ -4298,7 +4298,7 @@
4298
4298
  "properties": {
4299
4299
  "documentId": {
4300
4300
  "type": "string",
4301
- "description": "The whiteboard to design into. REQUIRED: the deck lives in this whiteboard. Create one first with createWhiteboard if you do not already have its id."
4301
+ "description": "The whiteboard the deck lives in. REQUIRED: a deck cannot exist without a whiteboard, and this is that whiteboard's id. If you do not already have a whiteboard id, ASK THE USER which whiteboard to design the deck in — never create one automatically. Only call createWhiteboard first if the user explicitly wants a new board."
4302
4302
  },
4303
4303
  "message": {
4304
4304
  "type": "string",
@@ -4306,7 +4306,7 @@
4306
4306
  },
4307
4307
  "sessionId": {
4308
4308
  "type": "string",
4309
- "description": "The design conversation to continue, as returned by an earlier designDeck call. Pass it together with message to answer a question, make an edit, or send a follow-up. Omit on the very first call to start a new conversation."
4309
+ "description": "The design conversation to continue, as returned by an earlier designDeckInWhiteboard call. Pass it together with message to answer a question, make an edit, or send a follow-up. Omit on the very first call to start a new conversation."
4310
4310
  },
4311
4311
  "deckId": {
4312
4312
  "type": "string",
@@ -4448,13 +4448,13 @@
4448
4448
  }
4449
4449
  }
4450
4450
  },
4451
- "/tools/getDeckReply": {
4451
+ "/tools/designIllustrationInWhiteboard": {
4452
4452
  "post": {
4453
- "summary": "getDeckReply",
4454
- "description": "Get the design agent's reply after calling designDeck: the status (thinking/building/ready) and EITHER the finished deck (slide count + preview) OR a clarifying question to answer (call designDeck with the sessionId + your answer). Poll until ready or a question appears. Give it the whiteboard documentId and the deckId (both returned by designDeck). It returns the build status ('generating' while working, 'ready' when the deck is finished, 'failed' if it failed) plus, once ready, the slide count and a thumbnail image URL. IMPORTANT for the conversation: if the agent asked a CLARIFYING QUESTION instead of doing the work, this returns awaitingUser:true with pendingQuestion (and assistantMessage) relay that question to the user, then call designDeck again with the same sessionId and the user's answer as message to continue. It also returns the full conversation (history + status + pending question). A turn usually takes about 1 to 3 minutes, so poll every 15 to 30 seconds until it is 'ready' or awaitingUser is true. When ready, the deck has already been placed on the whiteboard; you can also export it with exportFromWhiteboard. If a turn failed or produced no change, the user was not charged.",
4455
- "operationId": "getDeckReply",
4453
+ "summary": "designIllustrationInWhiteboard",
4454
+ "description": "Create or refine a standalone ILLUSTRATION INSIDE an existing whiteboard by conversing with the AI design agent. This is the illustration sibling of designDeckInWhiteboard: same conversation, same follow-up flow, but it makes ONE on-brand illustration placed on the board (not a slide deck). Send a brief for a NEW illustration, a change to an existing one, or an answer to the agent's question. The agent generates the illustration, places it on the board, and if the brief is ambiguous it asks ONE clarifying question (answer with the same sessionId). Returns immediately; poll getDeckReplyInWhiteboard for the result. Use it when the user wants a picture they can talk about and refine turn by turn (e.g. 'draw a friendly robot onboarding a new team', then 'make it warmer', 'add a second robot'). For a quick one-shot illustration with no follow-up, use generateIllustrationInWhiteboard instead. WHITEBOARD IS REQUIRED: an illustration always lives inside a whiteboard, so documentId (the whiteboard's id) is required. If you do NOT already have a whiteboard id, ASK THE USER which whiteboard they want the illustration designed in do NOT create a whiteboard automatically. Only call createWhiteboard first if the user explicitly asks for a brand-new board; otherwise use the id of the whiteboard they name. FIRST vs FOLLOW-UP: the first call (from nothing) builds; a follow-up call (an answer, a change, or a new instruction) passes the sessionId (or the deckId) plus the new message. COST + APPROVAL: a build costs 50 credits and an edit 10; a clarifying question is FREE. Call FIRST without confirm to get the exact cost plus the workspace balance, show it to the user, and only call again with confirm:true once they agree. The fee is auto-refunded if a turn produces no change or fails. Returns sessionId (the conversation), deckId (the illustration's id), status, turnType, started, awaitingUser, needsConfirmation, insufficientCredits, and assistantMessage.",
4455
+ "operationId": "designIllustrationInWhiteboard",
4456
4456
  "tags": [
4457
- "uncategorized"
4457
+ "whiteboards"
4458
4458
  ],
4459
4459
  "requestBody": {
4460
4460
  "required": false,
@@ -4465,16 +4465,62 @@
4465
4465
  "properties": {
4466
4466
  "documentId": {
4467
4467
  "type": "string",
4468
- "description": "The whiteboard that hosts the deck."
4468
+ "description": "The whiteboard the illustration lives in. REQUIRED: an illustration cannot exist without a whiteboard, and this is that whiteboard's id. If you do not already have a whiteboard id, ASK THE USER which whiteboard to design the illustration in — never create one automatically. Only call createWhiteboard first if the user explicitly wants a new board."
4469
+ },
4470
+ "message": {
4471
+ "type": "string",
4472
+ "description": "This turn's message in plain language: the illustration brief on the first turn, a change instruction later, or the user's ANSWER to a clarifying question the agent asked. On a follow-up turn, pass this together with the sessionId (or deckId) from the earlier call."
4473
+ },
4474
+ "sessionId": {
4475
+ "type": "string",
4476
+ "description": "The design conversation to continue, as returned by an earlier designIllustrationInWhiteboard call. Pass it together with message to answer a question, make a change, or send a follow-up. Omit on the very first call to start a new conversation."
4469
4477
  },
4470
4478
  "deckId": {
4471
4479
  "type": "string",
4472
- "description": "The deck to poll, as returned by designDeck."
4480
+ "description": "Optional. An existing illustration to continue refining (usually you pass sessionId instead; when both are given the session's illustration wins). The id is called deckId because illustrations and decks share the same conversation spine."
4481
+ },
4482
+ "title": {
4483
+ "type": "string",
4484
+ "description": "Optional title. If omitted, a clear one is derived from the brief."
4485
+ },
4486
+ "brandKitId": {
4487
+ "type": "string",
4488
+ "description": "Optional brand kit id (from listBrandKits) to colour-condition the illustration. If omitted, the organisation's effective brand is used."
4489
+ },
4490
+ "attachments": {
4491
+ "type": "array",
4492
+ "description": "Optional reference images for THIS turn (up to 8; images only). The agent lifts palette, layout, and tone from them (it does not pixel-copy). Non-image attachments are ignored.",
4493
+ "items": {
4494
+ "type": "object",
4495
+ "description": "One reference image: give a public url, OR base64 data plus its mediaType.",
4496
+ "properties": {
4497
+ "url": {
4498
+ "type": "string",
4499
+ "description": "A public https URL to the image."
4500
+ },
4501
+ "data": {
4502
+ "type": "string",
4503
+ "description": "The image as base64 (no data: prefix). Provide mediaType alongside it."
4504
+ },
4505
+ "mediaType": {
4506
+ "type": "string",
4507
+ "description": "The image MIME type, e.g. 'image/png' or 'image/jpeg'."
4508
+ },
4509
+ "name": {
4510
+ "type": "string",
4511
+ "description": "Optional human-readable name for the image."
4512
+ }
4513
+ }
4514
+ }
4515
+ },
4516
+ "confirm": {
4517
+ "type": "boolean",
4518
+ "description": "Set true ONLY after the user has approved the cost (50 for a build, 10 for an edit). Leave unset/false on the first call of a turn to receive the cost quote plus balance. A clarifying question turn is never charged."
4473
4519
  }
4474
4520
  },
4475
4521
  "required": [
4476
4522
  "documentId",
4477
- "deckId"
4523
+ "message"
4478
4524
  ]
4479
4525
  }
4480
4526
  }
@@ -4555,11 +4601,11 @@
4555
4601
  }
4556
4602
  }
4557
4603
  },
4558
- "/tools/designInWhiteboard": {
4604
+ "/tools/getDeckReplyInWhiteboard": {
4559
4605
  "post": {
4560
- "summary": "designInWhiteboard",
4561
- "description": "DEPRECATED use designDeck instead. This tool no longer designs anything; it returns a short message pointing you at designDeck (to build or edit a slide deck on a whiteboard) or at createWhiteboard + addWhiteboardElements (for manual whiteboard content). It has NO side effects and runs no design. It is kept only so existing callers get a clear message; it will be upgraded in a future update.",
4562
- "operationId": "designInWhiteboard",
4606
+ "summary": "getDeckReplyInWhiteboard",
4607
+ "description": "Get the design agent's reply after calling designDeckInWhiteboard OR designIllustrationInWhiteboard: the status (thinking/building/ready) and EITHER the finished result (a deck's slide count + preview, or the placed illustration) OR a clarifying question to answer (call the SAME tool you started with, passing the sessionId + your answer). Poll until ready or a question appears. Give it the whiteboard documentId and the deckId (both returned by the tool you called). It returns the build status ('generating' while working, 'ready' when finished, 'failed' if it failed) plus, once ready, the slide count and a thumbnail image URL. IMPORTANT for the conversation: if the agent asked a CLARIFYING QUESTION instead of doing the work, this returns awaitingUser:true with pendingQuestion (and assistantMessage) — relay that question to the user, then call the SAME design tool again with the same sessionId and the user's answer as message to continue. It also returns the full conversation (history + status + pending question). A turn usually takes about 1 to 3 minutes, so poll every 15 to 30 seconds until it is 'ready' or awaitingUser is true. When ready, the deck or illustration has already been placed on the whiteboard; a deck can also be exported with exportFromWhiteboard. If a turn failed or produced no change, the user was not charged.",
4608
+ "operationId": "getDeckReplyInWhiteboard",
4563
4609
  "tags": [
4564
4610
  "whiteboards"
4565
4611
  ],
@@ -4572,120 +4618,17 @@
4572
4618
  "properties": {
4573
4619
  "documentId": {
4574
4620
  "type": "string",
4575
- "description": "Ignored. Deprecated tool use designDeck."
4621
+ "description": "The whiteboard that hosts the deck or illustration (it lives inside the board). REQUIRED."
4576
4622
  },
4577
- "message": {
4578
- "type": "string",
4579
- "description": "Ignored. Deprecated tool — use designDeck."
4580
- }
4581
- }
4582
- }
4583
- }
4584
- }
4585
- },
4586
- "responses": {
4587
- "200": {
4588
- "description": "Tool result (shape varies per tool — refer to the tool's docs for the exact return value).",
4589
- "content": {
4590
- "application/json": {
4591
- "schema": {
4592
- "type": "object",
4593
- "additionalProperties": true
4594
- }
4595
- }
4596
- }
4597
- },
4598
- "400": {
4599
- "description": "Validation error.",
4600
- "content": {
4601
- "application/json": {
4602
- "schema": {
4603
- "$ref": "#/components/schemas/ErrorResponse"
4604
- }
4605
- }
4606
- }
4607
- },
4608
- "401": {
4609
- "description": "Missing or invalid credentials.",
4610
- "content": {
4611
- "application/json": {
4612
- "schema": {
4613
- "$ref": "#/components/schemas/ErrorResponse"
4614
- }
4615
- }
4616
- }
4617
- },
4618
- "403": {
4619
- "description": "Authenticated but lacking the required permission or feature flag.",
4620
- "content": {
4621
- "application/json": {
4622
- "schema": {
4623
- "$ref": "#/components/schemas/ErrorResponse"
4624
- }
4625
- }
4626
- }
4627
- },
4628
- "404": {
4629
- "description": "Resource not found.",
4630
- "content": {
4631
- "application/json": {
4632
- "schema": {
4633
- "$ref": "#/components/schemas/ErrorResponse"
4634
- }
4635
- }
4636
- }
4637
- },
4638
- "422": {
4639
- "description": "Body did not match the tool's input schema.",
4640
- "content": {
4641
- "application/json": {
4642
- "schema": {
4643
- "$ref": "#/components/schemas/ErrorResponse"
4644
- }
4645
- }
4646
- }
4647
- },
4648
- "500": {
4649
- "description": "Server error.",
4650
- "content": {
4651
- "application/json": {
4652
- "schema": {
4653
- "$ref": "#/components/schemas/ErrorResponse"
4654
- }
4655
- }
4656
- }
4657
- }
4658
- }
4659
- }
4660
- },
4661
- "/tools/editInWhiteboard": {
4662
- "post": {
4663
- "summary": "editInWhiteboard",
4664
- "description": "DEPRECATED — use designDeck instead. An edit is just another turn in the design conversation, and designDeck handles build AND edit. This tool no longer edits anything; it returns a short message pointing you at designDeck. It has NO side effects and runs no design. It is kept only so existing callers get a clear message; it will be upgraded in a future update.",
4665
- "operationId": "editInWhiteboard",
4666
- "tags": [
4667
- "whiteboards"
4668
- ],
4669
- "requestBody": {
4670
- "required": false,
4671
- "content": {
4672
- "application/json": {
4673
- "schema": {
4674
- "type": "object",
4675
- "properties": {
4676
- "documentId": {
4677
- "type": "string",
4678
- "description": "Ignored. Deprecated tool — use designDeck."
4679
- },
4680
- "designId": {
4681
- "type": "string",
4682
- "description": "Ignored. Deprecated tool — use designDeck."
4683
- },
4684
- "instruction": {
4623
+ "deckId": {
4685
4624
  "type": "string",
4686
- "description": "Ignored. Deprecated tool use designDeck."
4625
+ "description": "The deck or illustration to poll, as returned by designDeckInWhiteboard or designIllustrationInWhiteboard."
4687
4626
  }
4688
- }
4627
+ },
4628
+ "required": [
4629
+ "documentId",
4630
+ "deckId"
4631
+ ]
4689
4632
  }
4690
4633
  }
4691
4634
  }
@@ -4786,7 +4729,7 @@
4786
4729
  },
4787
4730
  "designId": {
4788
4731
  "type": "string",
4789
- "description": "The design to export (the deck id), as returned by designInWhiteboard."
4732
+ "description": "The design to export (the deck id), as returned by designDeckInWhiteboard."
4790
4733
  },
4791
4734
  "kind": {
4792
4735
  "type": "string",
@@ -4893,247 +4836,6 @@
4893
4836
  }
4894
4837
  }
4895
4838
  },
4896
- "/tools/getDesignStatusInWhiteboard": {
4897
- "post": {
4898
- "summary": "getDesignStatusInWhiteboard",
4899
- "description": "DEPRECATED — use getDeckReply instead. This tool no longer reads any status; it returns a short message pointing you at getDeckReply (poll it after calling designDeck to get the agent's reply — the deck, or a clarifying question). It has NO side effects. It is kept only so existing callers get a clear message; it will be upgraded in a future update.",
4900
- "operationId": "getDesignStatusInWhiteboard",
4901
- "tags": [
4902
- "whiteboards"
4903
- ],
4904
- "requestBody": {
4905
- "required": false,
4906
- "content": {
4907
- "application/json": {
4908
- "schema": {
4909
- "type": "object",
4910
- "properties": {
4911
- "documentId": {
4912
- "type": "string",
4913
- "description": "Ignored. Deprecated tool — use getDeckReply."
4914
- },
4915
- "designId": {
4916
- "type": "string",
4917
- "description": "Ignored. Deprecated tool — use getDeckReply."
4918
- }
4919
- }
4920
- }
4921
- }
4922
- }
4923
- },
4924
- "responses": {
4925
- "200": {
4926
- "description": "Tool result (shape varies per tool — refer to the tool's docs for the exact return value).",
4927
- "content": {
4928
- "application/json": {
4929
- "schema": {
4930
- "type": "object",
4931
- "additionalProperties": true
4932
- }
4933
- }
4934
- }
4935
- },
4936
- "400": {
4937
- "description": "Validation error.",
4938
- "content": {
4939
- "application/json": {
4940
- "schema": {
4941
- "$ref": "#/components/schemas/ErrorResponse"
4942
- }
4943
- }
4944
- }
4945
- },
4946
- "401": {
4947
- "description": "Missing or invalid credentials.",
4948
- "content": {
4949
- "application/json": {
4950
- "schema": {
4951
- "$ref": "#/components/schemas/ErrorResponse"
4952
- }
4953
- }
4954
- }
4955
- },
4956
- "403": {
4957
- "description": "Authenticated but lacking the required permission or feature flag.",
4958
- "content": {
4959
- "application/json": {
4960
- "schema": {
4961
- "$ref": "#/components/schemas/ErrorResponse"
4962
- }
4963
- }
4964
- }
4965
- },
4966
- "404": {
4967
- "description": "Resource not found.",
4968
- "content": {
4969
- "application/json": {
4970
- "schema": {
4971
- "$ref": "#/components/schemas/ErrorResponse"
4972
- }
4973
- }
4974
- }
4975
- },
4976
- "422": {
4977
- "description": "Body did not match the tool's input schema.",
4978
- "content": {
4979
- "application/json": {
4980
- "schema": {
4981
- "$ref": "#/components/schemas/ErrorResponse"
4982
- }
4983
- }
4984
- }
4985
- },
4986
- "500": {
4987
- "description": "Server error.",
4988
- "content": {
4989
- "application/json": {
4990
- "schema": {
4991
- "$ref": "#/components/schemas/ErrorResponse"
4992
- }
4993
- }
4994
- }
4995
- }
4996
- }
4997
- }
4998
- },
4999
- "/tools/generateInWhiteboard": {
5000
- "post": {
5001
- "summary": "generateInWhiteboard",
5002
- "description": "Generate an on-brand ASSET inside a whiteboard and place it on the board. kind:'illustration' (default) makes a standalone, on-brand illustration (raw pixels, the one thing native shapes and diagrams cannot make) from a plain-language prompt, colour-conditioned to the organisation's brand (or a specific brandKitId), in a clean flat-vector editorial style with NO text, letters, or numbers baked in. It is stored and dropped onto the whiteboard as an image element. Costs a small flat credit charge (refunded automatically if generation fails on our side); an identical prompt reuses a cached image at no charge. Returns the durable image URL and confirms it was placed.",
5003
- "operationId": "generateInWhiteboard",
5004
- "tags": [
5005
- "whiteboards"
5006
- ],
5007
- "requestBody": {
5008
- "required": false,
5009
- "content": {
5010
- "application/json": {
5011
- "schema": {
5012
- "type": "object",
5013
- "properties": {
5014
- "documentId": {
5015
- "type": "string",
5016
- "description": "The whiteboard to generate the asset into (the asset is placed on this board)."
5017
- },
5018
- "prompt": {
5019
- "type": "string",
5020
- "description": "Plain-language description of the asset to generate (e.g. 'a friendly robot assistant helping a small team')."
5021
- },
5022
- "kind": {
5023
- "type": "string",
5024
- "enum": [
5025
- "illustration"
5026
- ],
5027
- "description": "What to make. 'illustration' (default)."
5028
- },
5029
- "width": {
5030
- "type": "number",
5031
- "description": "Optional output width in px (rounded to a multiple of 64, 512 to 2048). Default 1024."
5032
- },
5033
- "height": {
5034
- "type": "number",
5035
- "description": "Optional output height in px (rounded to a multiple of 64, 512 to 2048). Default 1024."
5036
- },
5037
- "style": {
5038
- "type": "string",
5039
- "description": "Optional extra style hint appended to the prompt (e.g. 'isometric', 'soft gradients, pastel')."
5040
- },
5041
- "brandKitId": {
5042
- "type": "string",
5043
- "description": "Optional brand kit id to colour-condition the asset. Defaults to the organisation's effective brand."
5044
- },
5045
- "x": {
5046
- "type": "number",
5047
- "description": "Optional x position on the board. Omit to auto-place."
5048
- },
5049
- "y": {
5050
- "type": "number",
5051
- "description": "Optional y position on the board. Omit to auto-place."
5052
- }
5053
- },
5054
- "required": [
5055
- "documentId",
5056
- "prompt"
5057
- ]
5058
- }
5059
- }
5060
- }
5061
- },
5062
- "responses": {
5063
- "200": {
5064
- "description": "Tool result (shape varies per tool — refer to the tool's docs for the exact return value).",
5065
- "content": {
5066
- "application/json": {
5067
- "schema": {
5068
- "type": "object",
5069
- "additionalProperties": true
5070
- }
5071
- }
5072
- }
5073
- },
5074
- "400": {
5075
- "description": "Validation error.",
5076
- "content": {
5077
- "application/json": {
5078
- "schema": {
5079
- "$ref": "#/components/schemas/ErrorResponse"
5080
- }
5081
- }
5082
- }
5083
- },
5084
- "401": {
5085
- "description": "Missing or invalid credentials.",
5086
- "content": {
5087
- "application/json": {
5088
- "schema": {
5089
- "$ref": "#/components/schemas/ErrorResponse"
5090
- }
5091
- }
5092
- }
5093
- },
5094
- "403": {
5095
- "description": "Authenticated but lacking the required permission or feature flag.",
5096
- "content": {
5097
- "application/json": {
5098
- "schema": {
5099
- "$ref": "#/components/schemas/ErrorResponse"
5100
- }
5101
- }
5102
- }
5103
- },
5104
- "404": {
5105
- "description": "Resource not found.",
5106
- "content": {
5107
- "application/json": {
5108
- "schema": {
5109
- "$ref": "#/components/schemas/ErrorResponse"
5110
- }
5111
- }
5112
- }
5113
- },
5114
- "422": {
5115
- "description": "Body did not match the tool's input schema.",
5116
- "content": {
5117
- "application/json": {
5118
- "schema": {
5119
- "$ref": "#/components/schemas/ErrorResponse"
5120
- }
5121
- }
5122
- }
5123
- },
5124
- "500": {
5125
- "description": "Server error.",
5126
- "content": {
5127
- "application/json": {
5128
- "schema": {
5129
- "$ref": "#/components/schemas/ErrorResponse"
5130
- }
5131
- }
5132
- }
5133
- }
5134
- }
5135
- }
5136
- },
5137
4839
  "/tools/createWhiteboard": {
5138
4840
  "post": {
5139
4841
  "summary": "createWhiteboard",
@@ -6099,6 +5801,10 @@
6099
5801
  "fileName": {
6100
5802
  "type": "string",
6101
5803
  "description": "Optional original filename (for storage + type hinting)."
5804
+ },
5805
+ "locked": {
5806
+ "type": "boolean",
5807
+ "description": "Lock the placed image so it cannot be moved, resized, or deleted by hand (e.g. a deck-owned framed slide image that changes only via the deck conversation). Defaults to false."
6102
5808
  }
6103
5809
  },
6104
5810
  "required": [
@@ -6723,7 +6429,7 @@
6723
6429
  "/tools/getWhiteboardImage": {
6724
6430
  "post": {
6725
6431
  "summary": "getWhiteboardImage",
6726
- "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 image attached to the result. Pass elementIds to render only specific shapes (e.g. to inspect one section/slide), region:{x,y,width,height} to capture an exact scene-coordinate window (e.g. the user's viewport), theme:'light' for the fastest single-variant render, format:'svg' for vector markup, or background to set the canvas colour. Unchanged boards return instantly from a content-keyed cache. Call this after addWhiteboardElements/updateWhiteboardScene to check layout, overlaps, labels and alignment before continuing.",
6432
+ "description": "Render a whiteboard to a raster 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 image attached to the result (always raster: a JPEG light variant and/or a PNG dark variant; there is no vector/SVG output, so for a vector export of a single diagram use getDiagramImage). Pass elementIds to render only specific shapes (e.g. to inspect one section/slide), region:{x,y,width,height} to capture an exact scene-coordinate window (e.g. the user's viewport), theme:'light' for the fastest single-variant render, or background to set the canvas colour. Unchanged boards return instantly from a content-keyed cache. Call this after addWhiteboardElements/updateWhiteboardScene to check layout, overlaps, labels and alignment before continuing.",
6727
6433
  "operationId": "getWhiteboardImage",
6728
6434
  "tags": [
6729
6435
  "whiteboards"
@@ -6739,14 +6445,6 @@
6739
6445
  "type": "string",
6740
6446
  "description": "The whiteboard's documentId."
6741
6447
  },
6742
- "format": {
6743
- "type": "string",
6744
- "enum": [
6745
- "png",
6746
- "svg"
6747
- ],
6748
- "description": "png (default — a viewable raster) or svg (vector markup)."
6749
- },
6750
6448
  "elementIds": {
6751
6449
  "type": "array",
6752
6450
  "items": {
@@ -22902,7 +22600,7 @@
22902
22600
  "description": "Create a per-org BRAND KIT so Stable Baseline outputs come out fully on-brand. Upload your branding and it is auto-applied: pass a `logoUrl` (as little as your logo, and the vision model AUTO-EXTRACTS your palette and fonts), or an `officeUrl` (an existing .pptx/.docx, from which it extracts theme colours, fonts, logo, watermark and the embedded font files), or explicit `tokens`. The kit themes branded-executive slides AND document exports (PDF, Word, PowerPoint). Auth: can_admin_org. Tiered: free 0, pro 1, enterprise unlimited. Optionally set it as the default at a scope in one call.",
22903
22601
  "operationId": "createBrandKit",
22904
22602
  "tags": [
22905
- "uncategorized"
22603
+ "settings"
22906
22604
  ],
22907
22605
  "requestBody": {
22908
22606
  "required": false,
@@ -23039,7 +22737,7 @@
23039
22737
  "description": "List an organisation's BRAND KITS (palette/fonts/logo), newest first. Use a returned `id` as brandKitId for a design call or setDefaultBrandKit. Auth: can_admin_org.",
23040
22738
  "operationId": "listBrandKits",
23041
22739
  "tags": [
23042
- "uncategorized"
22740
+ "settings"
23043
22741
  ],
23044
22742
  "requestBody": {
23045
22743
  "required": false,
@@ -23140,7 +22838,7 @@
23140
22838
  "description": "Set or clear the default BRAND KIT at a scope: organization, workspace, or project. Defaults cascade most-specific-first (a per-board/document override beats project beats workspace beats organization). Pass brandKitId:null to clear. Auth: org owner/admin.",
23141
22839
  "operationId": "setDefaultBrandKit",
23142
22840
  "tags": [
23143
- "uncategorized"
22841
+ "settings"
23144
22842
  ],
23145
22843
  "requestBody": {
23146
22844
  "required": false,