Skip to main content
Glama
tvolodi

penpot-headless

by tvolodi

penpot_distribute_shapes

Distributes three or more shapes on a page so gaps between adjacent shapes are equal, along a horizontal or vertical axis. Fixes outermost shapes and slides middle ones to create uniform spacing.

Instructions

Distribute three or more shapes so the gaps between adjacent shapes are equal, matching Penpot's own "distribute horizontal/vertical spacing" actions — instead of the caller computing even spacing itself. "axis" is "horizontal" (equalize left-to-right gaps) or "vertical" (top-to-bottom). The two outermost shapes stay put and the ones between them slide so every gap is identical; distributes on each shape's visible bounding box (selrect), accounting for differing shape sizes. Applied as a single update-file change-set; shapes already evenly spaced (and the two endpoints) are left untouched.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
axisYes
fileIdYes
pageIdYes
shapeIdsYes
tokensPathNo/app/tokens.json
Behavior5/5

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

With no annotations, the description fully discloses behavior: outer shapes stay put, inner shapes slide, uses selrect bounding box, applies as single change-set, and leaves already evenly spaced shapes untouched. No contradictions.

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?

Four sentences clearly convey purpose and behavior. Minor structure improvement possible by explicitly listing parameters, but overall concise and well-organized.

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 no output schema, the description thoroughly explains behavior and key parameters. The only gap is the missing tokensPath parameter, but the core functionality is well-covered.

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

Parameters3/5

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

The description explains axis and implicitly covers fileId, pageId, shapeIds. However, the tokensPath parameter is not mentioned at all, and schema description coverage is 0%, leaving one parameter undocumented.

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 distributes three or more shapes to equalize gaps, matching Penpot's own distribute actions. It distinguishes from siblings like penpot_align_shapes by specifying the exact behavior of spacing equalization.

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

Usage Guidelines4/5

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

The description explains when to use the tool (to distribute shapes with equal gaps) and contrasts with caller-computed spacing. It does not explicitly mention alternatives or when not to use, but the sibling list provides context for differentiation.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tvolodi/penpot-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server