Skip to main content
Glama
zcube

Penpot MCP Server

by zcube

update_shape

Modify Penpot shapes: change position, size, colors, gradients, images, borders, shadows, blur, blend modes, text alignment, and visual effects.

Instructions

Update shape properties including position, size, colors, gradients, images, borders, shadows, blur, blend modes, text alignment, and visual effects

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xNoX position
yNoY position
r1NoTop-left corner radius
r2NoTop-right corner radius
r3NoBottom-right corner radius
r4NoBottom-left corner radius
nameNoShape name
widthNoWidth
fileIdYesFile ID
heightNoHeight
pageIdYesPage ID
opacityNoOverall opacity (0-1)
shapeIdYesShape ID
fontSizeNoFont size for text shapes
blendModeNoBlend mode: "normal", "multiply", "screen", "overlay", etc.
blurValueNoBlur intensity in pixels
fillColorNoFill color (HEX)
fontStyleNoFont style for text shapes: "normal", "italic"
textAlignNoText alignment for text shapes: "left", "center", "right", "justify"
fontFamilyNoFont family for text shapes
fontWeightNoFont weight for text shapes: "normal", "bold", "100"-"900"
lineHeightNoLine height multiplier for text shapes
shadowBlurNoShadow blur radius in pixels
fillImageIdNoImage media ID
fillOpacityNoFill opacity (0-1)
shadowColorNoShadow color (HEX)
shadowStyleNoShadow style: "drop-shadow" or "inner-shadow"
strokeColorNoStroke color (HEX)
strokeWidthNoStroke width
borderRadiusNoAll corners radius (shorthand)
gradientEndXNoGradient end X (0-1 normalized)
gradientEndYNoGradient end Y (0-1 normalized)
gradientTypeNoGradient type: "linear" or "radial"
shadowSpreadNoShadow spread in pixels
fillImageNameNoImage name
gradientStopsNoGradient stops as JSON array
letterSpacingNoLetter spacing in pixels for text shapes
shadowOffsetXNoShadow X offset in pixels
shadowOffsetYNoShadow Y offset in pixels
shadowOpacityNoShadow opacity (0-1)
strokeOpacityNoStroke opacity (0-1)
verticalAlignNoVertical alignment for text shapes: "top", "center", "bottom"
fillImageMtypeNoImage MIME type
fillImageWidthNoImage width
gradientStartXNoGradient start X (0-1 normalized)
gradientStartYNoGradient start Y (0-1 normalized)
textDecorationNoText decoration for text shapes: "none", "underline", "line-through"
fillImageHeightNoImage height
fillImageKeepAspectRatioNoKeep image aspect ratio
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure but only says 'Update shape properties,' which vaguely implies mutation. It doesn't state whether unspecified properties are left unchanged or reset, whether some properties only apply to text shapes, or what the response contains. This is a significant gap for an update tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with a clear verb and object, and the property list is relatively concise considering the large schema. There is no redundant or filler content.

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

Completeness2/5

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

For a tool with 49 parameters and no annotations or output schema, the description should clarify update semantics (e.g., partial update), shape-type applicability of certain properties, and required identifiers, but it doesn't. This leaves substantial ambiguity for the agent.

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?

All 49 properties already have schema descriptions, so the baseline is 3. The description's property list merely summarizes what the schema already details, adding no extra meaning about parameter interactions, constraints, or partial-update behavior.

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 uses the specific verb 'Update' and identifies the resource ('shape properties') with a comprehensive list of property categories, making it clear this modifies existing shapes. It distinguishes itself from creation tools like create_rectangle and read tools like get_shape_properties.

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?

The description implies the tool is for modifying existing shape properties but provides no explicit guidance on when to prefer it over related tools like align_shapes or distribute_shapes, nor any exclusions. The verb 'Update' gives a clear basic context, but no alternatives or when-not-to-use scenarios are mentioned.

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/zcube/penpot-mcp-server'

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