Skip to main content
Glama
kekegg

Lingsu Slides MCP Server

by kekegg

document.add_shape

Add a shape to a slide and get its new shape ID. Supports text, rect, ellipse, image, connector, arrow, autoshape, freeform, and table kinds with per-kind style props.

Instructions

Add a shape to a slide. Returns the new shape id. kinds: text / rect / ellipse / image (NamedShape subclasses — fill / text / path go in their own fields). kinds: connector / arrow / autoshape (preset shape — pass props.prst). kind: freeform (props.path_ops is a list of [op, *args] tuples: M/L/C/Q/Z). kind: table (rows / cols / cells). Every kind accepts extra props that ride through onto the shape verbatim (rotation, flip_h, fill, stroke, font_size, ln_color, head_end, ...).

Input Schema

NameRequiredDescriptionDefault
hNo
wNo
xNo
yNo
colsNoTable column count (kind=table only).
kindYes
pathNoImage path (kind=image only).
rowsNoTable row count (kind=table only).
textNo
cellsNoTable cells, 2D list of strings (kind=table only).
propsNoPer-kind style attributes. Common: fill, stroke, stroke_w, font_size, color. connector/arrow/autoshape: ``prst`` (preset name — required for autoshape, default ``'line'`` for connector, ``'rightArrow'`` for arrow). freeform: ``path_ops`` (required, list of [op, *args]). Plus rotation, flip_h, flip_v, ln_color, head_end, tail_end, ln_w_emu, ln_dash, glow, shadow, reflection, etc.
slide_indexNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.1

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose that it returns the new shape id and that extra props 'ride through onto the shape verbatim' – a genuine behavioral trait – but says nothing about error behavior for invalid slide_index/kind combinations, coordinate units, or undo interaction.

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?

Purpose and return are front-loaded, followed by a dense but earned per-kind enumeration. Some repetition ('kinds:' twice with inconsistent spacing) is minor overhead for covering nine enum values plus a nested props object.

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

Completeness3/5

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

Given no annotations, no output schema, and a nested free-form props object, the description explains the variant-specific contract well but omits positional-parameter semantics, slide_index defaulting, and failure modes an agent would need to call it 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 only 42%, but the description compensates well: it groups the nine kinds, explains props.prst/path_ops/rows/cols/cells and the freeform op format (M/L/C/Q/Z). Gaps remain for x/y/w/h units and slide_index defaults, which are undocumented in both places.

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?

Opens with a specific verb+resource ('Add a shape to a slide') and states the return value. The per-kind breakdown makes the scope concrete, though it never contrasts with siblings like move_shape/resize_shape to complete the differentiation.

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?

Per-kind instructions ('pass props.prst', 'path_ops is required') imply how to use each variant, but there is no explicit when-to-use guidance, no prerequisites (slide_index default, whether the slide must exist), and no routing against sibling tools.

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