insertDiagramInDocument
Insert a new diagram into a document. Call listDiagramTypes to find your type, then getDiagramTypeGuide for DSL syntax before writing diagramCode. The diagramCode is COMPILE-CHECKED BY RENDERING at write time: broken DSL is rejected with the renderer's error (fix and retry), and valid DSL is rend...
This record as markdown: /tools/io-stablebaseline-sb/insertdiagramindocument.md
What insertDiagramInDocument does on Stable Baseline
AI agents use insertDiagramInDocument to create or update resources in Stable Baseline, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Stable Baseline environment.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Diagram type, meaning the renderer (e.g. default, mermaid, plantuml, bpmn, d2; 'default' is the platform default renderer). For a diagram family such as a BPMN |
align | string | — | Alignment. |
prompt | string | Yes | Short description of what the diagram shows (1-2 sentences). |
caption | string | — | Caption below the diagram. |
afterLine | number | — | Insert after this line, counting the SAME line numbers getDocument prints (1-based; frontmatter is not counted, and every diagram/image marker counts as exactly |
colorPlan | object | — | BPMN only. Colour plan: { byElementId: { ElementId: SwatchName } }. |
projectId | string | — | Optional. Narrows a friendly-id lookup to one project. Only needed when a friendly id is ambiguous — TAS-/IMP-/PLN- ids are numbered per PROJECT, so the same id |
tableData | object | — | Vega-Lite charts only (type vegalite): fill the chart's data from a database table instead of a file. The question runs as you, now, and its answer becomes the |
brandKitId | string | — | Optional brand kit UUID (see listBrandKits) to theme with instead of the cascade default. Must belong to your organisation. |
documentId | string | Yes | |
imageScale | number | — | Raster resolution 1x/2x/3x when returnImage:true (default 2). |
diagramCode | string | Yes | Diagram DSL code. Call getDiagramTypeGuide for syntax. For 'default', provide MDP JSON with stable IDs and omit every entity x/y for automatic layout; fully pos |
Parameters from the server's own tool schema.
Why insertDiagramInDocument is rated Medium
An AI agent can call insertDiagramInDocument faster than any human can review: one bad instruction and it creates or modifies resources in Stable Baseline by the hundred, each call as confident as the last.
Risk signalsHigh parameter count (46 properties)
Attacks that exploit this kind of access
The rule that runs insertDiagramInDocument safely
PolicyLayer is an MCP gateway: it sits between your AI agents and Stable Baseline, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For insertDiagramInDocument, this is the rule to start with:
insertDiagramInDocument stays usable, but capped: an agent stuck in a loop can't make hundreds of changes a minute. Everything else on the server is denied unless you say otherwise.
The button opens the PolicyLayer dashboard: create your workspace, connect Stable Baseline, apply this rule, and every insertDiagramInDocument call is checked against it from then on.
Questions about insertDiagramInDocument
Insert a new diagram into a document. Call listDiagramTypes to find your type, then getDiagramTypeGuide for DSL syntax before writing diagramCode. The diagramCode is COMPILE-CHECKED BY RENDERING at write time: broken DSL is rejected with the renderer's error (fix and retry), and valid DSL is rendered + thumbnailed immediately so the document displays instantly everywhere. The response tells you what happened: diagram.renderStatus ('rendered' | 'pending_render' with renderError when the renderer was unavailable), plus fresh optimistic-lock tokens — document.versionTimestamp and diagram.versionTimestamp — so you can keep editing without re-reading. Always set prompt (and ideally nlDescription) to describe what the diagram shows. To SEE the result inline set returnImage:true, or call getDiagramImage afterwards; if it is wrong or ugly, correct it with updateDiagramInDocument (provide the full updated diagramCode). It is categorised as a Write tool in the Stable Baseline MCP Server, which means it can create or modify data. Consider rate limits to prevent runaway writes.
insertDiagramInDocument accepts 12 parameters: type, align, prompt, caption, afterLine, colorPlan, projectId, tableData, brandKitId, documentId, imageScale, diagramCode. Required: type, prompt, documentId, diagramCode. The full parameter table on this page comes from the server's own tool schema.
Register the Stable Baseline MCP server in PolicyLayer and add a rule for insertDiagramInDocument: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Stable Baseline. Nothing to install.
insertDiagramInDocument is a Write tool with medium risk. Write tools should be rate-limited to prevent accidental bulk modifications.
Yes. Add a rate_limit block to the insertDiagramInDocument rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for insertDiagramInDocument. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
insertDiagramInDocument is provided by the Stable Baseline MCP server (https://api.stablebaseline.io/functions/v1/cloud-serve/mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on Stable Baseline, and thousands of servers like it.
This server
Across the catalogue