Skip to main content
Glama

Add Text

add_text
Destructive

Create a NEW text node, or update an existing one (pass the same id to overwrite content/position in place — preferred over creating a duplicate). Supports cnvs markup (Markdown-ish) and Mermaid diagrams in the content. When using Mermaid, the ENTIRE content of this text node must be a single Mermaid diagram (one ```mermaid fenced block and nothing else — no heading, no prose before or after). If you need prose + a diagram, create two separate text nodes. postit: true renders as a yellow sticky; diagram: true renders as a framed box (2px border in the text colour, centred text) — the two are mutually exclusive. Coordinates are in board-world pixels, +x right, +y DOWN; pick a spot that does not overlap existing items (check get_preview first). Default width auto-fits content up to ~320 px; pass width for explicit wrapping (160–4096). Keep content under 100 000 chars.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
idNoOptional stable id; generated when omitted.
colorNoNamed ink only (no hex). Accepted (case-insensitive): 'auto'/''/'black'/omitted for theme-aware ink, or 'red', 'blue', 'green', 'orange', 'yellow', 'pink', 'purple', 'maroon', 'brown', 'gray', 'lightgray', 'teal', 'sage', 'sky', 'lavender'. Anything else (including a literal hex) silently clamps to auto.
widthNoExplicit width in px (160–4096).
authorNoAuthor tag, defaults to ai:claude.
postitNo
contentYes
diagramNoRender as a framed diagram box (2px border in the text colour, centred text). Mutually exclusive with postit.
board_idYes
access_keyNo8-character lowercase alphanumeric board access key when the board is locked (legacy 6-character lowercase alphanumeric keys are also accepted). Equivalent to setting the `X-Board-Key` HTTP header on the JSON-RPC POST. Omit for unlocked boards. Obtain via POST /api/boards/<id>/lock.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and openWorldHint=true, so the description adds value by detailing specific behaviors: Mermaid content must be a single fenced block, postit and diagram are mutually exclusive, coordinate system (+y down), default width auto-fit, and content size limit. It doesn't contradict annotations; it enriches them with concrete constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured, front-loading the core action and then detailing constraints. It's a single paragraph but covers all critical aspects without redundancy. Slightly long but every sentence adds value; could be broken into bullets for readability, but it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 params, multiple modes, rendering options), the description covers essential usage, constraints, and edge cases. It lacks explicit return value info, but no output schema exists, so that's not required. It mentions checking get_preview for overlap, which is a good practice. Overall, it's complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 55%, and the description compensates by explaining key parameters: id for overwrite, postit/diagram rendering, coordinates meaning, width behavior, and content constraints. It adds meaning beyond the schema, especially for postit, diagram, and coordinate semantics, though some parameters like color and access_key are already well-described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new text node or updates an existing one, with specific details on overwriting via id. It distinguishes from siblings like add_image and add_link by focusing on text content, and mentions cnvs markup and Mermaid diagrams, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: use for new text nodes or updates, prefer updating over duplicating, and when to create separate nodes for prose+diagram. It also mentions checking get_preview to avoid overlaps, which is a clear alternative/companion tool reference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: canvas items (text, image, stroke, link), kanban elements (tasks, columns, lanes), and board-level operations (create, open, preview). Even the two move tools are clearly separated: move for board items and move_task for kanban cards. Descriptions explicitly disambiguate potential overlaps (e.g., add_link vs add_text).

Naming Consistency4/5

Tool names overwhelmingly follow a verb_noun snake_case pattern (add_image, create_column, delete_task, update_task). Minor deviations: 'erase' and 'move' are single-word verbs lacking an explicit object, and 'move' could be confused with 'move_task' without descriptions. Overall the pattern is highly predictable.

Tool Count4/5

25 tools is at the high end but justified by the dual-mode scope (freeform whiteboard and kanban board). Each cluster has a coherent set covering create, read, update, delete, and specialized operations (bulk creation, export, querying, waiting for updates). Slightly heavy but well-scoped.

Completeness4/5

Core workflows for both whiteboard and kanban are covered: CRUD for text, images, tasks, columns, plus preview, export, bulk creation, and filtering. Minor gaps exist: no board rename/delete, no image resize after creation, and no bulk erase, but these can be worked around.