Skip to main content
Glama

duplicate_objects

Copies board objects into multiple offset copies, preserving connectors between copied items and creating new groups for copied groups.

Instructions

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

Input Schema

NameRequiredDescriptionDefault
dxNoDefault 40.
dyNoDefault 40.
idsYesIds of the objects to copy (1 to 2000; ids come from describe_board, find_objects or the add_* tools). Groups are not expanded: list every member.
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).
countNoDefault 1.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well: it explains how connectors are handled (copied and linked, or freed if the linked object is not copied), that groups become new groups, and the shift behavior between copies. It omits permission or undo details, though the path parameter schema notes live-board undoability.

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 front-loaded, beginning with the core action and shift behavior before detailing connector and group handling. Every sentence contributes useful information without redundancy.

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 6 parameters, full schema coverage, and no output schema, the description is nearly complete: it explains the copy logic, connector/group behavior, and the shape of the return value (sources and ids with ordering). Minor gaps like page/path nuances are handled by the schema descriptions.

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 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: it clarifies that dx/dy shift each copy from the previous one, states the default for count and the 50-copy maximum, and explains the ordering of returned ids. This is genuine value on top of the structured fields.

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?

The description opens with a precise verb-resource pair ('Copies objects') and immediately explains the core mechanics. It is clearly distinguishable from sibling tools like move_objects, arrange_objects, or delete_object, though it does not explicitly name an alternative.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as add_shape, add_connector, or move_objects, nor are prerequisites or exclusions stated. The description explains behavior but leaves the agent to infer the appropriate context.

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