Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
resources
{
  "subscribe": true,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_boardC

Creates an empty board (.inkboard file).

save_boardA

Saves the board displayed in the application (live mode; it must already have a file). No effect in file mode: every tool already saves there.

describe_boardA

Lists the pages and objects of a board (id, type, text, position, connector links). In live mode, also reports the user's selection (selection). Also reads draw.io, Excalidraw, JSON Canvas and Mermaid files. detail: "full" adds each object's style, font, stacking order z, group, lock, rotation and (connectors) route and arrow; tables also list their cells.

board_changesA

Reports what the USER changed on the board since your last look (describe_board or board_changes): objects added, modified, deleted. Your own changes are not reported. The first call records a baseline.

add_imageA

Adds an image (PNG, JPEG, GIF, WebP or SVG, 15 MiB at most) from a file (source, under the allowed root) or from base64 data (data_base64). The natural size is reduced to at most 600; w and/or h override it.

add_shapeC

Adds a shape with text (rect, ellipse, diamond, triangle, sticky = sticky note, text = free text). Returns the id.

add_connectorA

Connects two objects with an arrow that follows them when they move (ids returned by add_shape or describe_board).

add_tableB

Adds a table of cells; rows is a list of rows (lists of texts). The first row is the header.

add_code_blockB

Adds a code block (monospace font, dark background, syntax highlighting).

add_formulaB

Adds a LaTeX formula (math mode) typeset the way TeX does. Errors if the LaTeX is not supported.

import_mermaidA

Adds a Mermaid diagram (flowchart/graph, stateDiagram, sequenceDiagram) with automatic layout. Returns the ids created.

update_objectA

Modifies an object: text, position (top-left corner), size (shapes), colors, line style, font, lock, rotation; a connector's route, arrowheads and ends; one table cell. Everything is validated before anything is applied (an error changes nothing); a parameter that does not suit the object's type is ignored and listed in avertissements. Locked objects can still be modified here.

delete_objectA

Deletes an object, or several with ids (connectors that were bound to them remain, detached). Give id or ids.

auto_layoutC

Rearranges the shapes joined by connectors into a layered graph.

add_pageC

Adds a page. Returns its number.

exportA

Exports a page to a file; the format is chosen by the extension of output: .svg, .png, .pdf, .drawio, .excalidraw, .canvas, .inkboard.

search_iconsA

Searches the built-in icon library (about 28,800 icons: AWS, Azure, Google Cloud, Cisco, Kubernetes, brand logos, UI and diagram symbols...) by keywords; names are in English. Every word of query must match (case-insensitive) the icon name, its set or its group. Returns ids to give to add_icon. Use list_icon_groups to see what the library contains, and group / set to narrow a broad search. Does not modify the board (a board path is still needed when the application is not open).

list_icon_groupsA

Lists the groups of the icon library (AWS, Azure, Brands...) with their sets and the number of icons of each, to know what to search for. Does not modify the board (a board path is still needed when the application is not open).

add_iconA

Places an icon of the library on the board, as an image object that can be connected with add_connector. icon is an id returned by search_icons. Size: size = longest side (default 64, 8 to 2000), or w and/or h (the icon's ratio is kept when only one is given). Monochrome icons (mono: true in search_icons) take the color stroke (default: the theme's text color); colored icons keep their own colors. label adds a text centered under the icon, grouped with it. Returns the image id (and label_id).

renderA

Returns a PNG picture of the board (or of a part of it) as an image, to check your work visually. Read-only: the board, the file and the undo history are untouched. By default the whole page content is shown. region {x, y, w, h} (board units) shows exactly that rectangle; ids frames the given objects (plus padding) while still drawing their surroundings; give either, not both. show_ids: true draws a small white badge with the id of every visible object (top-left corner; middle of an arrow) so you can link what you see to the ids that update_object or add_connector expect (pen strokes get none). The longest side is max_px pixels (default 1400, 16 to 3000; a small region is enlarged 4 times at most); a PNG above 4 MiB is automatically produced smaller (said in note). output also writes the PNG to a .png file under the allowed root, for clients that do not display images. Text is measured approximately, as in export.

find_objectsA

Finds objects on a page without reading the whole board: by text, regex, type or area. Filters combine (all must match). text is a case-insensitive substring of a shape's text, a connector's label, a table's cells or a formula's LaTeX. in_region keeps objects whose bounding box overlaps the rectangle. Returns count (all matches), truncated (more than limit) and objects (same summaries as describe_board).

move_objectsA

Moves objects together. Either relative (dx, dy) or absolute (x, y: new top-left corner of the bounding box of all the objects, as update_object's x/y for one). Connectors bound to moved objects follow. Locked objects move too.

arrange_objectsA

Aligns, distributes, stacks, groups or locks objects. align_*: at least 2 unlocked objects, aligned on their common bounding box. distribute_*: at least 3 unlocked objects, equal gaps between the two outermost (an error otherwise; the engine alone would do nothing). Locked objects are skipped by align/distribute and reported in skipped_locked. bring_to_front/bring_forward/send_backward/send_to_back change the stacking order (z of describe_board detail "full"). group (2+ objects, returns group), ungroup, lock, unlock.

manage_pagesA

Lists, renames or deletes pages (add_page creates them). list returns number, name and object count. rename and delete need page (number from 1, or name); rename also needs name. The last page of a board cannot be deleted; deleting a page deletes its objects.

duplicate_objectsA

Copies objects, each copy shifted by (dx, dy) from the previous one (default 40, 40; count copies, default 1, 50 at most). Connectors between copied objects are copied and linked to the copies; a connector linked to an object that is not copied becomes free in the copy. Groups are copied as new groups. Returns sources (copied ids in page order) and ids (new ids: copy 1 in the order of sources, then copy 2...).

batchA

Runs several tool calls in ONE request (1 to 200 operations, in order), on one board, as a single undo step in the application. Use it to build or rework a board quickly instead of one call per object. Each operation is {"tool": "add_shape", "args": {...}} with the arguments the tool normally takes (but never path, output or source: the batch-level path applies to all). An operation can reuse what an earlier one returned: a string that is EXACTLY "$N.key" (N = index from 0 of an earlier operation, then keys or list indexes separated by dots, e.g. "$0.id" or "$3.ids.1") is replaced by that value of the result of operation N before the operation runs; text that only contains "$0.id" inside a longer string stays literal, and a text that is exactly like "$3.99" would be taken for a reference. An operation without page acts on the batch-level page (default: the first page), whatever the previous operations did. atomic (default true): at the first error everything already done is undone, the board is unchanged, and the error gives the operation index, its error and the results obtained before the rollback. With atomic: false the batch stops at the first error and keeps what succeeded, answering {applied, failed: {index, error}, results} (not an error). Success answers {results: [one result per operation], applied}. Not allowed inside a batch: batch, create_board, save_board, board_changes, export, render.

format_textA

Formats text already on the board, like selecting it in the application: bold, italic, underline, strike, color, highlight. Works on a shape's text, a connector's label, or one table cell (cell). Choose the part with match (first occurrence; every one with all: true) or range [start, end) (character indices of the plain text, end excluded); with neither, the whole text. clear: true removes all formatting of the part first (then the other options apply). Returns changed: the number of characters whose formatting changed. Error if match is not found.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 27 tools

Disambiguation4/5

Each tool has a clearly stated purpose, and the add_* family is cleanly split by content type (shape, icon, image, table, code, formula, mermaid). A few boundaries blur: update_object also moves/locks a single object while move_objects and arrange_objects handle the same properties in bulk, and export vs render vs save_board are close but disambiguated by whether they return a file, a picture, or just persist state.

Naming Consistency4/5

Nearly all names are snake_case verb_noun (add_shape, delete_object, find_objects, manage_pages, search_icons). A handful deviate: export, render, batch are bare verbs and board_changes is a noun, and manage_pages is a multi-action catch-all, but the overall pattern remains readable and predictable.

Tool Count3/5

27 tools is on the heavy side for a drawing app; the surface could likely compress (separate add_table/add_code_block/add_formula/add_icon tools, plus manage_pages subactions). Still, each tool maps to a real distinct capability rather than filler, so it is only borderline over-scoped.

Completeness4/5

Coverage is strong: board creation, object creation across all content types, update/delete/move/arrange/group/lock/duplicate, page management, search, formatting, import/export, rendering and a batch meta-tool. Minor gaps only: no explicit undo/redo or clipboard-style cut/paste tooling, which agents must emulate via duplicate_objects and batch atomicity.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive