Kalpana Docs
Designer MCP

Shared types

The layer fields, fills, flows, strokes and effects that several designer tools take.

Layer fields

The fields of a layer in create_layers and of a change in update_layers. Only type is required, and only on create.

FieldTypeDescription
typestringframe (a box with children and an optional flow), group, text, rectangle, ellipse, line, image or vector.
idstringAn id you choose, unused on the page; generated when omitted.
namestringThe layer's name, and the input's label in batches. Name layers by role ("Headline", "CTA").
childrenlayer[]Create only: the layers inside a frame or group.
x, ynumberPosition relative to the parent. Ignored inside a flow unless absolute.
width, heightnumberSize.
rotationnumberDegrees clockwise about the centre.
skewnumberLean in degrees, -80 to 80; a positive value tips the top right.
visible, opacityboolean, numberVisibility; opacity 0 to 1.
blend_modestringnormal, darken, multiply, color_burn, linear_burn, lighten, screen, color_dodge, linear_dodge, overlay, soft_light, hard_light, difference, exclusion, hue, saturation, color, luminosity, pass_through, print_light, knockout (cuts this layer's shape out of the layers below it in its group), fill_below (paints only where the layers below it in its group are).
constraints{horizontal, vertical}How the layer follows a resized parent: horizontal left, right, center, left_right, scale; vertical top, bottom, center, top_bottom, scale. Not for layers a flow places.
absolutebooleanInside a flow: take the layer out of it and place it by x/y.
flowflowFrames: arrange the children in a row or column.
paddingnumber | [v, h] | [t, r, b, l] | {top, right, bottom, left}Frames: inner spacing.
clipbooleanFrames: hide children that overflow.
sizing{horizontal, vertical}Inside a flow: each fixed, hug (fit the content) or fill (the space left).
min_width, max_width, min_height, max_heightnumberLimits for hug and fill sizing; 0 clears one.
fillfillOne fill, replacing all fills; on text, the text colour. "none" removes fills.
fillsfill[]Several fills, painted bottom to top.
strokestrokeOutline; width: 0 removes it.
radiusnumber | [tl, tr, br, bl]Corner radius.
shadows{x, y, blur, spread, color, inner}[]Replaces the shadows; [] removes them. The first lies farthest back and the last nearest the layer, the reverse of CSS. Colour defaults to #00000040.
blur, background_blurnumberBlur of the layer, or of what is behind it (frosted glass), px; 0 removes it.
maskstringMask the layers above in the same parent: alpha, vector, luminance, alpha_inverted, luminance_inverted or none.
glass, noise, texture, progressive_blureffectLiquid glass, film grain, torn edges, and a blur that grows across the layer.
textstringText content, as one run in the current style.
runstext run[]Differently styled runs (one highlighted word). Each run has text and any text style field below.
font_family, font_style, font_weight, font_size, italicstring, string, integer, number, booleanThe font. font_family must come from list_fonts; font_style such as "Bold Italic", or font_weight 100 to 900.
font_axesRecord<string, number>Variable-font axes, e.g. {"wght": 640}; {} clears them.
colorstringText colour as hex; wins over fill on text.
gradientgradientA gradient on the text instead of a solid colour.
line_heightnumber | stringpx (4 or more), a percentage like "120%", or "auto".
letter_spacingnumber | stringpx, or a percentage of the size like "-2%".
align, vertical_alignstringleft, center, right, justified; top, center, bottom.
text_sizingstringfixed (wraps and clips), auto_height (wraps, grows down) or auto_width (one line, grows to fit).
shrink_to_fitboolean | {min_scale}Text in a fixed box: shrink until it fits, down to min_scale of the size (0.5).
wrapstringbalance evens line widths (headlines), pretty avoids a one-word last line, normal fills lines.
min_last_line_wordsintegerFewest words a paragraph may end on.
max_linesintegerMost lines shown; longer text ends in an ellipsis, and auto_height text grows up to it. 0 clears.
text_casestringoriginal, upper, lower or title.
decoration, decoration_stylestringunderline, strikethrough, both, or none; solid, dotted, dashed, wavy, double.
list, paragraph_spacing, paragraph_indentstring, number, numberParagraphs as bullets, numbers or none; space before each, and first-line indent, px.
figures, featuresstring, objectDigit style (default, lining, oldstyle, tabular, tabular_lining); OpenType ligatures, contextual_alternates, fractions, superscript, subscript.
text_effect{preset, color?, intensity?}One-click effect on text: shadow, lift, hollow, splice, echo, glitch, neon, outline, sticker, gradient, extrude (solid 3D depth behind the letters, shading darker as it recedes, on a soft ground shadow; color is the side colour, angle the way the depth runs in degrees clockwise from right, 45 by default; a stroke sent with it outlines the face and the depth together), background (create only: a pill behind the text) or none. intensity scales offsets, blurs and strokes (1 by default, 0.5 subtle, 2 strong). The text stays one layer.
text_pathboolean | {path, start, align}Lay the text along an SVG path in the layer's own px. start is where the text sits along the path, 0 to 1 (0 by default); align (start, center or end) says which part of the line sits there; false removes it. For text on an arc, make the path with shape_path text_arc.
outlines{color, width}[]Text: rings outside the stroke, innermost first, each width px thick (white then dark makes a double outline); [] removes them.
contours{inset, style, ...}[]Text: dots (size, spacing, colors) or a line (width, color) along the letters' own shape. inset is the distance from the letter edge, above 0 inside and below 0 outside; lengths are fractions of the font size. [] removes them.
text_warp{kind, amount}Text: bend the lettering. arch (positive curves up, negative sags), bulge (positive makes the middle taller, negative the ends), flag (a wave), perspective (positive narrows the top), bounce (each letter tilted and lifted, like hand lettering) or none. amount -1 to 1, 0.5 by default.
leading_trimstringcap_height (the box hugs cap height to baseline) or none.
baseline_shiftnumberOn a run: px up (+) or down (-), line kept.
ringboolean | {radius, tilt, perspective, back_opacity, start}Lay the text on a ring in perspective; false removes it.
imagestringImage layers: a key from find_images, or an https URL (copied into the workspace).
fitstringfill (cover, cropping), fit (inside, leaving space), stretch or tile.
anchorstringWith fit: "fit": the edge or corner the picture sits against when its shape differs from the box: center (default), top, bottom, left, right, top-left, top-right, bottom-left or bottom-right. Lines products of different shapes up across rows.
placestringImage layers: box (default) or subject. With subject, x, y, width and height are the box the cut-out's visible subject fills, and the layer grows to fit the file around it (fit becomes fill unless given). With both sizes the subject is centred in the box. An image with no transparent margins is placed by its box, with a note.
zoom, focus, tile_scalenumber, [x, y], numberZoom into the image (1 as fitted); the point to centre, 0 to 1; tile size as a multiple of the image.
filtersobjectPhoto adjustments, each −1 to 1: exposure, contrast, saturation, temperature, tint, highlights, shadows.
pathsstring[]Vector layers: SVG path data in the layer's own px, one per sub-shape. width and height are the box of the data.

Fill

A fill is one of:

  • A colour: "#FF5A1F", "#FF5A1F80", "white" or "none"; or {color, opacity}.
  • A gradient, flat or as {gradient: {...}}: type (linear, radial, angular, diamond), stops (required: colours spread evenly, or {color, at} with at 0 to 1), angle (linear: 0 left to right, 90 top to bottom), from and to (linear points), center, radius (0.5 touches the edges), repeat (none, repeat, mirror), opacity and interpolation: how colours blend between stops, oklab (the default, keeps midpoints bright), oklch (also keeps colourfulness, turning through hue) or srgb (as imported designs blend). Points are fractions of the layer's box.
  • An image: {image, fit, anchor, zoom, focus, opacity, tile_scale, filters}, with image an https URL or a key.

Flow

A frame's layout flow arranges its children; fields left out keep their values.

FieldValues
directionrow, column, wrap (a row that wraps), or none to remove the flow.
gap, row_gapSpace between children, and between rows of a wrap, px.
alignAlong the flow: start, center, end, space_between, space_around, space_evenly.
cross_alignAcross the flow: start, center, end, stretch, baseline.
row_alignWrap only: start, center, end, space_between, space_around.
width, heightfixed keeps the frame's size; hug grows and shrinks with the children.

Stroke

width (px; 0 removes it; a new stroke defaults to 1), color (a new stroke defaults to black) or gradient, align (inside, center, outside), dashes ([6, 4]; [] is solid), cap (none, round, square), join (miter, round, bevel), miter_limit, and sides ([top, right, bottom, left] widths, such as [0, 0, 2, 0] for a bottom rule).


Effects

Each effect takes its settings, true for the defaults, or false to remove it.

EffectSettings (defaults)
glassdepth (24), refraction (0.5), dispersion (0.2), radius (8, frost), light_angle (0), light_intensity (0.72)
noisekind (mono, duo, multi), color (#00000040), second_color, density (0.5), size (1), opacity (1)
texturesize (4), depth (4), clip (true), self_only (false: fray only a frame's own fill)
progressive_blurradius (required), start_radius (0), from ([0.5, 0]), to ([0.5, 1]), background (false)
Was this page helpful?

Updated 5 Nov 2026

On this page