Skip to main content
Glama

update_object

Modifies board objects by updating text, position, size, colors, styling, rotation, connectors, or a table cell. Validates all changes before applying, so errors leave the board unchanged.

Instructions

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.

Input Schema

NameRequiredDescriptionDefault
hNo
wNo
xNo
yNo
idYes
toNoConnector only: id of the object to connect the end to.
cellNoTable only: [row, column] (from 0) of the cell whose text `text` replaces.
dashNo
fillNoColor "#rrggbb" or "ink" (the theme's text color).
fromNoConnector only: id of the object to connect the start to (shape, table or image).
pageNoPage: number (from 1) or name. Defaults to the first.
pathNoPath of the board file (.inkboard; .inkboard.json and .tableau.json also accepted). Optional when the application is open: the tool then acts live on the displayed board (undoable with Ctrl+Z).
textNoNew text of a shape or connector label; with `cell`, the new text of that table cell.
alignNoText alignment (shapes and connector labels).
arrowNoConnector only: arrowheads.
routeNoConnector only.
lockedNoLock or unlock the object in the application.
strokeNoColor "#rrggbb" or "ink" (the theme's text color).
opacityNo
markdownNoDefault false (text taken literally). true: `text` is Markdown: **bold**, *italic* (or _italic_), __underline__, ~~strike~~, {color=#e03131}text{/}, {bg=#ffec99}text{/}, {color=#e03131 bg=ink}text{/} (colors: #rrggbb or ink); nesting allowed; \ escapes * _ ~ { } \. Markup that cannot be applied stays literal text and is listed in the `warnings` of the result.
rotationNoAbsolute angle in degrees (shapes and images; 0 resets).
font_sizeNo
roundnessNoCorner rounding (0 sharp, 1 capsule).
font_familyNo
stroke_widthNoOutline width (0: no outline).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses atomic validation (an error changes nothing), that type-mismatched parameters are silently ignored and reported in `avertissements`, and that locked objects remain editable. These are meaningful behavioral traits beyond a plain "update". It stops short of documenting permissions or full response shape.

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?

Front-loaded with the verb and a compact semicolon-delimited field list, then the validation contract. Dense but each clause earns its place given 25 parameters; the run-on structure is the only minor readability cost.

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?

For a 25-parameter mutation tool with no output schema and no annotations, the description supplies the key behavioral contract (all-or-nothing validation, ignored params surfaced in `avertissements`, locked-object handling) and scopes object-type-specific params. It doesn't fully enumerate every parameter's effect but is adequate to call 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 64% with 25 parameters, so the description must add value, and it does: it clarifies the text/markdown literal-vs-markup interplay, the `cell`+`text` combination, connector-only fields, and that irrelevant params are ignored and surfaced in `avertissements`. This layers semantics over the schema rather than repeating it.

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

Purpose4/5

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

States a specific verb ("Modifies") and resource ("an object") and enumerates the concrete facets handled: text, position, size, colors, line style, font, lock, rotation, connector route/arrows/ends, and one table cell. This clearly scopes what the tool can mutate, though it never names the overlapping siblings (move_objects, format_text, arrange_objects) so the agent must infer partitioning.

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

Usage Guidelines3/5

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

"Locked objects can still be modified here" implies a when-to-use condition vs tools that may refuse locked objects, and the type-matching rule hints at applicability. But there is no explicit statement of when to prefer this over move_objects/format_text/arrange_objects, leaving routing largely to inference.

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