Skip to content
Stable Baseline logo

Stable Baseline MCP server

Which MCP servers are Stable Baseline's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-26

← Back to Stable Baseline

Whose server it is
  • Registry nameio.stablebaseline/sbverified in the MCP registry

The registry name sits under stablebaseline.io. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-26
  • Stateanswerschecked 2026-10-26
  • Tools222
  • Server calls itselfsb
  • Server version0.4.0
  • Protocol version2025-06-18

On 2026-10-26 the server answered initialize and tools/list without a sign-in. First answer in 556 ms.

Should an agent connect itNot proven either way yet
  • Whether its tools do the product's job has not been judged yet.

Once connected

  • Keep approval on for cancelInvitation, cancelKgBuildBatch: they delete, send or pay without saying so.
  • createFolder, updateFolder, deleteFolder, createDocument, editDocument change data without a sign-in: anyone with the address can call them.
  • Its definitions take about 117459 tokens of context: enable only the tools a task needs.
  • Parameters are untyped or undescribed in 117 of 227 tools: check arguments before calling.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 10, the first on 2026-10-26
  • INITE MCP score51 of 100answers 100 · definitions 91 · context 30 · use 0 · connects 100 · lowered by the warning signs below
  • Answered100% of days10 of 10 daily checks
  • Median first answer674 ms
  • Space in an agent's context≈ 117,459 tokensthe definitions of all its tools (227), which an agent carries on every turn
  • Tool definitionsA · 91 of 100
  • Typed results227 of 227 toolsdeclared outputSchema: results come typed, read once
  • No description an agent can choose by: 1 of 227
  • Parameters without a description: in 117 of 227

What an agent can do with it

  • cannot · Track deals and pipeline value in a shared database
  • not sure · Build sales dashboards from live customer records
  • not sure · Collect event sign-ups into a table that agents can act on

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that delete, send or pay, marked as not destructive: cancelInvitation, cancelKgBuildBatch
  • Tools that change data, on a server that answers without a sign-in: createFolder, updateFolder, deleteFolder, createDocument, editDocument

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers222 tools · read 2026-10-26
  • searchTools

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

  • listDiagramTypes

    List supported diagram types (renderers such as default, mermaid, plantuml, bpmn and d2; 'default' is the platform default renderer). Pass `query` to search by name OR intent (keyword + semantic): e.g. 'circuit diagram', 'wiring harness'…

  • getDiagramTypeGuide

    Get DSL writing instructions and an example for a diagram type (a renderer such as 'default', 'mermaid' or 'bpmn'). Also accepts a diagram family slug or name from supportedDiagrams (e.g. 'bpmn-process'), which resolves to that family's…

  • listArchitectureIcons

    List and search the full Stable Baseline icon library, including 3,850 library icons. The AWS, Azure, GCP, Development, Essentials and other categories stay intact; library icons join matching categories, with specific Oracle Cloud…

  • searchInfographicTemplates

    Search the 276 infographic templates by meaning. 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…

  • getCdmdLanguageGuide

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

  • getCurrentUser

    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…

  • listAssignablePrincipals

    Server-side searchable, paginated list of the USERS and TEAMS that can be assigned as the owner of an improvement or task in a project, and the canonical source for resolving a person's user_id when @-mentioning them in a document. Users…

  • listTeams

    List teams in an organisation, with optional search filter and an `includeMembers` flag that returns each team's members in the same call. Supply EITHER organizationId OR workspaceId (the workspace's parent org is resolved automatically)…

  • getTeam

    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.

  • listOrganisations

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

  • listWorkspaces

    List workspaces you have access to. Scope to one organisation with organisationId (a structural filter — use it rather than `query`, which only searches names/slugs). Supports query filtering by name/slug.

  • listProjects

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

  • listFolders

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

  • createFolder

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

  • updateFolder

    Update a folder: rename it, move it or reorder it. `parentId` moves it under another folder of its project. To move the folder WITH EVERYTHING IN IT into another project, in any workspace of the same organisation, give `projectId` (the…

  • deleteFolder

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

  • reorderFolders

    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…

  • listDocuments

    List AND grep documents in a project, workspace, or folder. `query` does a full-content search across each document's body (not just the title) and returns the matching lines — like grep across your docs. Each returned document includes…

  • getProjectHierarchy

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

  • getFolderHierarchy

    Get the folder and document tree. Pass folderId for the subtree under one folder, or projectId for the project's ENTIRE folder tree from the root (no need to reassemble listFolders' flat list by parentId). Alias for getProjectHierarchy.

  • getDocument

    Read a document's content with line numbers. content.text lines are formatted `NNNNN<TAB>content` (cat -n style); the number+tab prefix is DISPLAY ONLY — never part of the document — so when building editDocument anchor patches, copy only…

  • createDocument

    Create a document from CDMD markdown (standard Markdown plus SB extensions — call getCdmdLanguageGuide if unfamiliar). The body goes in `cdmd` (`content` is accepted as an alias). A leading `---` YAML frontmatter block is stored and…

  • editDocument

    Edit a document: the PREFERRED tool for small targeted changes. Two patch dialects — do NOT mix them in one call. (1) ANCHOR patches {oldText, newText, before?, after?} — RECOMMENDED: replace an exact snippet of existing text with new…

  • findAndReplaceTextInDocument

    Find and replace EXACT substrings in a document (NOT regex: wildcards and patterns are matched literally). Replaces EVERY occurrence and returns the replacement count; best for renames and repeated phrases. For a single targeted change at…

  • getDiagramInDocument

    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, renderStatus/renderError, and versionTimestamp — the diagram's…

  • 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…

  • updateDiagramInDocument

    Update a diagram's code, description, or properties. Call getDiagramTypeGuide for DSL syntax. New diagramCode is COMPILE-CHECKED BY RENDERING at write time — broken DSL is rejected with the renderer's error — and a valid change is…

  • deleteDiagramInDocument

    Delete a diagram: removes the database record AND every reference to it in the document body — the current marker format plus legacy forms (markers without an embedded diagramId, and old plain-text `[Diagram: name]` placeholders). The…

  • deleteDocument

    Delete a document.

  • getWhiteboardGuide

    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…

  • autoDesignWhiteboard

    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…

  • designComponent

    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…

  • editWhiteboardImageRegion

    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…

  • designDeckInWhiteboard

    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…

  • designIllustrationInWhiteboard

    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…

  • getDeckReplyInWhiteboard

    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…

  • exportFromWhiteboard

    Export from a whiteboard: a finished design (a deck) as an editable PowerPoint (PPTX), a PDF or PNG images, or the whiteboard canvas itself as a PowerPoint. LARGE EXPORTS FINISH IN THE BACKGROUND: if the export takes longer than one tool…

  • startMeetingScribe

    Invite the Stable Baseline Meeting Scribe bot to a LIVE meeting (Zoom, Google Meet, Microsoft Teams, or Webex) so it paints a live, editable whiteboard of the conversation as it happens: sticky notes and topic clusters, an agenda that…

  • getMeetingScribeStatus

    Get a meeting scribe's status after startMeetingScribe: the session state (joining, in the waiting room, live in the call, paused, ending, ended, or failed), the live activity feed of what the scribe has painted, and the board it is…

  • stopMeetingScribe

    Stop a running meeting scribe: the bot leaves the meeting and the board is finalised (tidy pass plus a summary frame). Give it the sessionId returned by startMeetingScribe. Billing stops at the current block; the user can also stop the…

  • createWhiteboard

    Create a whiteboard: an infinite freeform 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 +…

  • listWhiteboards

    List AND grep the whiteboards in a project (hidden whiteboard-kind documents). `query` searches the title and friendlyId (substring by default; set isRegex:true for a regular expression, caseSensitive:true for exact case). This is the…

  • getWhiteboard

    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…

  • updateWhiteboardScene

    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…

  • addWhiteboardElements

    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…

  • duplicateWhiteboardElements

    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…

  • insertWhiteboardImage

    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…

  • insertWhiteboardDiagram

    Insert (or re-render in place) a real DIAGRAM (BPMN, Diagrams-as-Code / any DSL: mermaid, d2, plantuml, graphviz, …) on a whiteboard as an editable SB diagram element. Provide documentId, diagramType (call listDiagramTypes /…

  • traceImage

    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…

  • dataToTable

    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…

  • listWhiteboardStencils

    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)…

  • getWhiteboardImage

    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…

  • deleteWhiteboard

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

  • renderDiagram

    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. 'default', 'mermaid', 'd2', 'plantuml', 'graphviz'…

  • getDiagramImage

    Render a diagram that ALREADY exists in a document to an IMAGE (svg/png/jpeg @1x/2x/3x) and return it — a temporary imageUrl available for 1 hour plus, for png/jpeg, the image inline so you can see it, and title/url citing the document…

  • rebuildPlatformCatalogEmbeddings

    Maintenance (requires write). Refreshes the search index over every platform catalogue (MCP tools, whiteboard stencils, architecture icons, infographic templates, whiteboard design components and design skills), so that search by meaning…

  • reorderDocuments

    MOVE documents and boards between folders, or into another project of the organisation, and reorder them: the batch filing tool. Pass items [{documentId, folderId?, position?}, ...]. Inside a project give at least one of folderId or…

  • listDocumentVersions

    List version history for a document. Returns timestamps, creator, change summary, and content. HOW IT CHANGED: give changedSince (a period such as this_week, or a date) for the versions saved in that time, each with who saved it by name…

  • getImageInDocument

    Get image details including a fresh link to the image that works for one hour (call again for a new one; never save the link into content). Use storagePath from IMAGE_OMITTED markers in getDocument output.

The first 60 of 222, as the server listed them.

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "sb": {
      "type": "http",
      "url": "https://api.stablebaseline.io/functions/v1/cloud-serve/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http stablebaseline https://api.stablebaseline.io/functions/v1/cloud-serve/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://api.stablebaseline.io/functions/v1/cloud-serve/mcp as a custom connector in the settings.

OpenAPI spec

222 paths, read 2026-10-26. Open the spec ↗

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.