Skip to main content
Glama

Kalpana Designer

Server Details

Design editable social, banner and ad templates from a brief, checked by rendering.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL

TDQS

Score is being calculated.

Available Tools

41 tools
animateAnimate layersInspect

Add motion to layers: presets (fade_in, slide_in_up, pop_in, spring_in, bounce_in, tilt_in, blur_in, wipe_in_right, draw_on, pulse, float, spin, shake, drift, count_up, count_down, orbit, ring_spin, peel and the outs) placed at a start time, raw keyframes per property (with springs), word or letter text reveals (typewriter, scramble), shape morphs between a vector layer's shapes, and stagger to cascade a motion over a layer's children. Motion adds to what a layer has unless replace is set; the timeline grows to fit. Check it with render_contact_sheet. A template with motion can still fill batches as images. Each image shows one moment of the motion. The default moment is the last frame. An outro or a loop can make the last frame a bad image. Find the moment where all the content shows (render_contact_sheet, render_timeline), ask the user if you are not sure, and set that second with set_timeline still_time.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
animationsYes
calculateCalculate
Read-only
Inspect

Evaluate arithmetic exactly instead of estimating: + - * / % ^, parentheses, pi, trigonometry in radians (rad() and deg() convert), sqrt, abs, min, max, round, floor, ceil, clamp, lerp, pow, hypot, atan2, ln, log10, exp. One expression, several named ones, or one expression over a range.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentNoOptional: a few words on why.
seriesNoEvaluate `expression` over a range of one variable instead.
variablesNoValues for names used in the expressions.
expressionNoOne expression, e.g. "1080 / 3 - 24" or "sin(rad(30)) * r".
expressionsNoSeveral named expressions at once; later ones may use earlier names.
cameraMove a camera through the designInspect

Films the design's layers with a camera: push in on a detail, pan across, roll, tilt in 3D, pull back out. Stops give time, zoom (1 = whole design), the focus point at the centre of the shot, and rotation/tilt. The layers move into a design-sized Camera frame at the back (their positions do not change); kinetic type and transitions stay on screen above the shot. Calling it again replaces the move.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoThe top-level layers the camera films (default every top-level layer except transitions, which stay fixed to the screen).
stopsYesWhere the camera is over time: pushes, pans to a detail, rolls.
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
check_layoutCheck a design's layout
Read-only
Inspect

Layout problems after layout: text over other text, layers cut off by a clipping frame or running off the canvas, text too small for the size the design is seen at, and text with too little contrast on what is behind it. Each issue names the layers and has a severity (error or info; info is often on purpose). Confirm an issue with render_design before changing the design. Opt-in craft checks with craft: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
craftNoRun every craft check (all "info", never blocking): orphan, near_touch, raw_hex, empty_frame, chrome_drift, sliver, empty_band.
checksNoCraft checks to run, by name (see `craft`).
ignoreNoPairs of layer ids whose overlap is on purpose (a stamp over a headline): not reported.
intentNoOptional: a few words on why.
marginNoContent margin in px (one number, or [left, top, right, bottom]): report layers whose painted extent (strokes included) crosses it.
page_idYesThe page to work on, as returned by create_design.
allow_bleedNoLayers (and their children) that bleed past the page or their clipping frame on purpose: not reported.
display_widthNoHow wide the design is seen on screen, px. Sets the smallest readable text and what counts as large text. Default: 400 for 1080-wide square or portrait social posts, 1280 for 1920x1080, else the page width.
clear_animationRemove motionInspect

Remove all motion of layers, or only some properties (shape removes a shape morph with its outlines).

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYesOne short sentence: what you change and why. Kept in the design history.
tracksNoOnly these properties (all motion of the layers when omitted).
page_idYesThe page to work on, as returned by create_design.
node_idsNoThe layers to clear. Leave it out to clear every layer.
color_mathColour maths
Read-only
Inspect

Exact colour answers: WCAG contrast of two colours (and whether it passes for body and large text), the most readable text colour on a background, a 50-900 tint and shade scale of a colour, or a mix of two colours. ops runs several at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNocontrast, readable, scale or mix.
toNo
opsNoSeveral operations, each {op, ...}; results come back in order.
fromNomix.
colorNoscale: the colour at 500.
pairsNocontrast: [[foreground, background], ...] for several pairs.
amountNomix: 0-1 of the way from `from` to `to`.
intentNoOptional: a few words on why.
amountsNomix: several amounts, one colour each.
backgroundNocontrast, readable.
candidatesNoreadable: colours to choose from (default black and white).
foregroundNocontrast.
create_designCreate a designInspect

Start a new design: a canvas of the given size (1080x1080 post, 1080x1920 story, 1920x1080 slide or banner) with a background. Returns the page_id that every other design tool takes. Add content with create_layers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoA name for the design ("Untitled" when omitted).
widthYesWidth in px (1 to 8192).
heightYesHeight in px (1 to 8192).
intentYesOne short sentence: what you change and why. Kept in the design history.
backgroundNoThe canvas fill: a colour such as "#FFFFFF", a gradient, or "none" for transparent. White when omitted.
template_idNoAdd the design as the next page of this template (a template_id from an earlier create_design) instead of starting a new template. Pages of one template share its inputs by layer name.
create_layersCreate layersInspect

Add layers (frames, groups, text, rectangles, ellipses, lines, images from a URL, and vector paths from SVG path data) to a design, nested with children in one call. Frames with a flow arrange their children in a row or column, so build text stacks and button rows as flows instead of placing each line by hand. Returns the new layer ids; change them later with update_layers. Layout problems (overflow, overlap, text off the page) this call made or changed come back as layout_issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoPosition among the parent's children (front-most last); end when omitted.
intentYesOne short sentence: what you change and why. Kept in the design history.
layersNo
page_idYesThe page to work on, as returned by create_design.
previewNoAlso return a preview picture of the result. Use it only when you need to see the design (the finished build, visual fixes); leave it off for empty frames and structural steps.
replaceNoA layer in `layers` whose `id` exists replaces that layer and its children in place, keeping the id.
parent_idNoFrame or group to add into; the scene when omitted.
design_guideDesign guide
Read-only
Inspect

How designs, layers, templates and these tools fit together: the model, the working loop, placing layers, numbers, motion, and going from a design to a batch of images: the reference for a first design.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

duplicateCopy pagesInspect

Copy pages. Each copy keeps its layers, names, motion and input descriptions. A copy never replaces a page or a template. With template_id, the copies are added to that template (it can be the pages' own template). Without template_id, a new template is made and the first copy is its first page. To copy a whole template, give all its pages from pages list. With width and height, each copy gets that page size, and the flows and constraints place its layers again: render the copy and adjust it for the new size.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe new template's name (default: the source template's name with "copy").
widthNoPage width of each copy in px, with height.
heightNoPage height of each copy in px, with width.
page_idsYesThe pages to copy, in order (their page_ids from pages list or create_design).
template_idNoAdd the copies to this template. Leave it out to make a new template.
edit_keyframesEdit single keyframesInspect

Tune existing motion one keyframe at a time: add a keyframe, move one in time, change its value or easing (or hold), delete one, or shift a layer's whole motion earlier or later. Keyframes are found by track and time; read them with get_design timeline_detail. animate with tracks replaces a whole track instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
editsYesChanges applied in order; if one cannot apply, none do.
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
edit_structureRearrange layersInspect

Move layers to another parent or position, delete, duplicate, wrap siblings in a group or a flow frame, mask, combine shapes with a boolean (union, subtract, intersect, exclude), unwrap, scale layers with everything inside them, change paint order, align and distribute. To change a layer's own properties use update_layers.

ParametersJSON Schema
NameRequiredDescriptionDefault
opsYes
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
skip_missingNoSkip ids that are not on the scene in move, delete and unwrap ops instead of failing the whole call; the result lists them in `skipped`.
find_imagesFind images
Read-only
Inspect

Images in this workspace (photos, logos, product shots), newest first, or those whose file name contains search or that are in a collection, with a numbered preview sheet to see them. Without filters the reply also names the workspace's collections: when the user says where their images are ("the Diwali photos"), look in that collection. Each image comes with its image key, the key a design places it by, its asset_id, the id the same image has in batch rows, and its name and pixel size. Place one with create_layers type: "image" (or image in a fill) and fit. An image layer is a template input, like text: name it by role ("Product photo", "Brand logo"). A new image from an https URL is stored in the workspace when it is placed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoAt most this many images (default 6).
searchNoOnly images whose file name contains this.
collectionNoOnly images in this collection (its name).
get_designRead a design
Read-only
Inspect

Outline of a design's layers after layout: id, type, name, box [x, y, w, h] in design px, text, colours, layout flow and each layer's etag, plus the fonts used. Read it before changing a design; render_design shows how it looks. timeline: true adds what moves on each layer and when (the keyframes of node_id when given).

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNo
depthNoLevels of children to include (all when omitted).
intentNoOptional: a few words on why.
compactNoA shorter reply, to look rather than edit.
node_idNoDescribe only this layer and what is inside it.
page_idYesThe page to work on, as returned by create_design.
timelineNoAlso return the timeline: length, still time, choreography and what moves on each layer and when; with node_id, that layer's keyframes [time, value].
with_previewNoAlso return a small picture of the scene (at `time`, default 0).
timeline_detailNoLike timeline, with keyframes as {t, value, easing, hold} to tune with edit_keyframes.
import_svgImport an SVGInspect

Add an SVG (icon, logo, illustration, a drawing made elsewhere) as editable vector layers inside one group, from its markup in svg: paths, rectangles, circles, lines and polygons with their fills, strokes, linear and radial gradients and transforms. Each becomes a group named from its id, data-name or inkscape:label, and each shape keeps its name, so update_layers select and animate can find them. Text, images, masks, clips, filters and are skipped and listed in skipped. Returns the group and every layer made.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoLeft edge in px relative to the parent (centred when omitted).
yNoTop edge in px relative to the parent (centred when omitted).
svgNoThe SVG markup.
nameNoName of the group the shapes go into ("SVG" by default).
widthNoWidth in px to scale to, keeping the aspect ratio. Default: the SVG's own width, shrunk to fit inside the parent when larger.
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
parent_idNoFrame or group to add into; the scene when omitted.
kinetic_typeSet a phrase as kinetic typeInspect

Lay out a phrase word by word, measured by the real text engine (wrapping at width, words sharing a baseline), with emphasis on chosen words (colour, style, size, tilt, a highlight pill) and motion that gives every word its own path: fly, drop, scatter, pop, wave, glitch, zoom; exit_at sends them out. Seeded, so it varies per phrase but repeats exactly. Returns the group id and the block's size.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesWhere the block sits in the parent and how wide it may be, px.
yYes
nameNoThe group's name (default: the text).
seedNo
textYes
alignNoleft
colorNo#111111
startNoSeconds.
widthYes
intentYesOne short sentence: what you change and why. Kept in the design history.
motionNo
exit_atNoLeave at this second (words fly back out in reverse).
page_idYesThe page to work on, as returned by create_design.
staggerNoSeconds between words (default 0.08).
durationNoSeconds each word takes (default 0.7).
emphasisNo
font_sizeYes
parent_idNo
strike_atNoStrike the whole phrase through at this second: a line draws across the words left to right (a "stop doing this" list item).
font_styleNo
font_familyNo
line_heightNoLine height: a multiple of the size (default 1.15), or px when above 4.
strike_colorNoThe strike line's colour (default the text colour).
list_fontsList fonts
Read-only
Inspect

Font families in Kalpana's library for this workspace (the global library and the workspace's uploads). Only these can be used: a design and its batches load fonts from Kalpana, and a font_family outside this list is refused. Without family: the family names. With family: that family's styles (style name, weight, italic), or the families whose name contains it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoAt most this many families (default 200).
familyNoOnly families whose name contains this (case-insensitive), e.g. "inter". Each family's styles are listed when 20 or fewer match.
intentNoOptional: a few words on why.
list_shadersList shader fills
Read-only
Inspect

Procedural fills: dot grids and halftone, grain and mesh gradients, god rays, noise, waves, dithering and more. Fill with {shader, preset, params, speed}; speed: 0 keeps it still. With name: its settings, defaults and presets.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOne shader's settings with defaults, presets and options.
intentNoOptional: a few words on why.
list_workspacesThe connected workspace
Read-only
Inspect

The one Kalpana workspace this connection designs in, chosen when the user connected: its id, name and whether its designer subscription is active. Every tool works in this workspace, so none takes a workspace id. Designing in another workspace needs a reconnect that chooses it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

make_chartMake a chart from dataInspect

Draw a chart from numbers as editable layers in a design: line, area, bar, horizontal bar, stacked bar, scatter, donut, pie, sparkline, progress ring, gauge or radar. Every point, bar, tick and label is computed exactly. Pick a style, a palette and a font_size; never hand-write chart paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesWhere the chart sits in its parent, and its size, px.
yYes
maxNoProgress ring, gauge and radar: the full-scale value (default 100, or radar's largest value).
axesNoAxis labels, x and y together (default: per style; off for sparklines and rings). `x_labels` and `y_labels` set each side on its own.
dotsNoA dot on each point (default: per style).
gridNo
kindNo
nameNoThe chart layer's name (default "Chart").
sizesNoScatter: a size per point, making it a bubble chart.
styleNoHow it is drawn (default clean). Vary it with the design.
ticksNoGrid lines (default 4). With both y_min and y_max the lines are exactly (y_max - y_min) / ticks apart. 0 = no grid lines, no y tick labels and no left margin.
widthYes
y_maxNo
y_minNoFix the value range (default: from 0, or the data's minimum when it is below 0, up to a round number above the maximum).
cornerNoBar corner radius px (default per style; half the width = pill).
heightYes
intentYesOne short sentence: what you change and why. Kept in the design history.
labelsNoA label per value along the x axis (per bar, segment or spoke).
legendNoA key of series names above the plot (default: when 2+ series); on donuts and pies, of the `labels` (default: when given).
prefixNo
seriesYes
smoothNoCurve lines through the points (default: per style).
suffixNo
page_idYesThe page to work on, as returned by create_design.
paletteNoSeries colours in order, as hex. Default: a built-in palette.
step_atNoStep chart: where the level changes between two points. `start` (default) holds a value until the next point, `end` jumps at the first point of each pair, `middle` changes halfway.
decimalsNoDecimal places in value labels (default: 0 for whole data, else 1), or "auto" to print as many as the data and fixed range need.
x_labelsNoThe category labels under the plot (default: as `axes`).
x_valuesNoScatter: the x of each point (default 0, 1, 2...).
y_labelsNoThe value tick labels left of the plot (default: as `axes`).
bar_widthNoBar thickness as a share of its slot, 0.1 to 1 (default per style).
font_sizeNoSize of every chart label, px (default: the height / 22, at least 24 px, so it reads when the chart is shown small; below about 20 px the result warns).
parent_idNoPut the chart inside this layer (the scene when omitted).
thicknessNoRing thickness, px (donut, progress ring, gauge).
grid_colorNoHex.
line_widthNo
text_colorNoHex.
annotationsNoPoints worth pointing out.
font_familyNo
value_labelsNoLabel the last point / the top of each bar / the ring's value.
make_cursorAdd a cursor that moves and clicksInspect

A pointer (arrow, a named pill, or a touch dot) that glides through stops ({x, y, t, click}) with eased moves; each click presses the cursor and spreads a ripple. Use it to walk through product UI. It sits on top.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
sizeNoSize of the arrow in px (default 40).
colorNoCursor colour (default near-black).
labelNoPill style: the name on it.
stopsYesThe path: at least one stop; it glides between them.
styleNo
intentYesOne short sentence: what you change and why. Kept in the design history.
rippleNoRipple colour (default the cursor colour).
page_idYesThe page to work on, as returned by create_design.
make_listBuild an animated listInspect

Rows of UI (a ranked list, inbox, settings, search results) with text and an optional value on the right; rows spring in one after another and a highlight slides from row to row at the select times. Pair with make_cursor clicks at the same times. static: true builds a still list or table instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left of the list and its width.
yYes
gapNo
fillNoRow fill (default white), text colour (default near-black).
nameNo
colorNo
itemsYes
startNoSeconds: when rows start arriving, and between rows (default 0.07).
widthYes
accentNoHighlight fill and the text colour on it.
intentYesOne short sentence: what you change and why. Kept in the design history.
selectNoThe highlight's path: it lands on each row in turn.
staticNoA still list or table (ranked rows, a ledger, an answer key): a column layout flow of row frames, each a row flow with a Label text filling the width and an optional Value on the right. No motion, no highlight (`select`, `start`, `stagger` are refused). Edit rows later with update_layers like any flow.
dividerNoStatic lists: a hairline under each row but the last, in this colour (rows then have no fill unless `fill` is given).
page_idYesThe page to work on, as returned by create_design.
staggerNo
numberedNoNumber each row (1, 2, 3...), for ranked lists.
font_sizeNo
parent_idNo
row_heightNoRow height px (default 64) and gap between rows (default 10).
accent_textNo
font_familyNo
make_particlesScatter a particle fieldInspect

Fill a region with many small shapes (dots, rings, sparkles, stars, plus, cross, pills, squares, triangles, blobs) spread by a seed: no clumps, no grid, sizes leaning small, some out of focus for depth, colours from a palette, a box kept clear behind text. Motion: float, twinkle, burst (from a point), rain, rise, pop, or still. Sits behind the other layers unless front is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe group's layer name (default "Particles").
seedNoSame seed, same field.
sizeNoSmallest and largest size, px (default 6 to 28).
avoidNoKeep this box clear (e.g. behind a headline): [x, y, width, height].
countYesHow many, 1 to 400.
depthNoShare of particles pushed out of focus (bigger, blurred, fainter) for depth, 0 to 1 (default 0.2).
frontNoPut the field on top of everything (default: behind the other layers).
startNoSeconds: when the motion starts (default 0).
untilNoSeconds: when floating stops (default start + duration + 4, so the field doesn't stretch a short scene). The scene timeline grows to it.
intentYesOne short sentence: what you change and why. Kept in the design history.
motionNo
originNoBurst: the point they fly out from, in the parent (default the region's centre).
regionYesThe area they live in (px in the parent): [x, y, width, height].
shapesNoWhich shapes, mixed (default dot, ring, sparkle).
opacityNoLowest and highest opacity (default 0.5 to 1).
page_idYesThe page to work on, as returned by create_design.
paletteNoSeries colours in order, as hex. Default: a built-in palette.
durationNoSeconds: how long the arrival takes (burst, rain, pop; default 1.2), or the whole drift (rise).
strengthNoHow far they drift, px (default 14).
parent_idNo
make_transitionAdd a graphic transitionInspect

Shapes that cover or reveal the design: circle (rings of colour grow from a point), stripes (tilted bands sweep across), blades (panels slam shut and part) or burst (rays, then a flood). part: out ends fully covered at at + duration; part: in uncovers from 0. It sits on top of everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
atNoSeconds: when it starts. For `out`, usually the scene's end minus `duration`; for `in`, 0.
nameNo
partNo
sizeNoThe scene's size [width, height] (default 1920 x 1080).
angleNoStripes: the tilt in degrees (default -18).
countNoStripes: how many (default 5); burst: how many rays (default 14).
styleNo
colorsNoThe layers of colour, first to last (the last is what the screen is covered by at the cut). Default: a built-in palette.
intentYesOne short sentence: what you change and why. Kept in the design history.
originNoWhere circles and bursts start: [x, y] (default the centre).
page_idYesThe page to work on, as returned by create_design.
durationNoSeconds (default 0.6).
measure_textMeasure text
Read-only
Inspect

The real size of text in a font as the renderer lays it out: each line and its width, the height, and whether the last line is a widow; or the largest font size that fits a box (width + fit_height). With page_id + layer_id it measures a text layer of that design. texts measures many at once, and pack lays them out as chips in rows. Use it before placing text instead of guessing.

ParametersJSON Schema
NameRequiredDescriptionDefault
packNoWith `texts`: lay them out as pills or chips packed in rows with no overlaps, and return each one's box (x, y, width, height) ready for create_layers.
runsNoText in differently styled runs, as create_layers takes them (mixed families or weights), in place of `text`.
textNoThe text to measure (or give `texts`).
wrapNoLine breaks as create_layers `wrap` sets them: "normal", "balance" or "pretty" (a stored layer keeps its own unless given).
textsNoMeasure many texts in one call (same font, size and width); the result lists each one's width, height and lines.
widthNoWrap within this width (px); one line when omitted.
intentNoOptional: a few words on why.
page_idNoThe page to work on, as returned by create_design.
layer_idNo
max_sizeNo
min_sizeNo
font_sizeNoMeasure at this size (px).
fit_heightNoInstead of measuring, find the largest size in [min_size, max_size] whose text fits `width` x `fit_height`.
font_styleNo"Regular", "Bold"...
font_familyNo
line_heightNoline_height like create_layers ("120%", "auto", or px).
letter_spacingNoletter_spacing like create_layers: px number or a percentage of the font size like "-3%".
min_last_line_wordsNoFewest words a wrapped paragraph may end on, as create_layers takes it.
pagesWork with a template's pages
Destructive
Inspect

A template has one or more pages, each a design of its own (its own size and layers): a post, a story and a banner of one campaign, say. Every page's id is a page_id the design tools take. list the pages of a template (template_id), rename a page (page_id, name) or delete one (page_id; a template keeps at least one page). To copy pages or templates, use duplicate. To add an empty page, use create_design with template_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNorename: the new name.
actionYes
page_idNorename, delete: the page.
template_idNolist: the template whose pages to list.
place_itemsCompute positions for items
Read-only
Inspect

Where to put N items: around a circle, along an arc, in a grid, evenly along a line or a path. Returns each centre, the top-left x/y for an item of item_size, and the rotation that faces along the layout. Use it for radial menus, timelines and grids.

ParametersJSON Schema
NameRequiredDescriptionDefault
countYesHow many places.
intentNoOptional: a few words on why.
layoutYesThe shape to place them on, e.g. `{kind: "circle", center: [540, 540], radius: 300}`.
item_sizeNoThe items' size [width, height], to also get each top-left x/y.
render_contact_sheetRender frames of an animation
Read-only
Inspect

Frames of the design's animation tiled into one PNG, left to right and top to bottom: evenly spaced frames from start to end, or exact times. One call checks a whole animation; a design without a timeline gives one frame. Returns the times shown. For one moment at full size use render_design with time. Previews are PNGs at most 800 px on the longest side, with a faint repeating "Kalpana preview" mark. The mark is only on previews; the design, its exports and batch renders do not have it, and sample_points read the design's own colours. Zoom with region or node_id to check small text or detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoLast second (default the end of the timeline).
startNoFirst second (default 0).
timesNoExact seconds to show instead of `frames` (1 to 32).
framesNoHow many frames, evenly spaced from `start` to `end` (default 12, at most 32).
intentNoOptional: a few words on why.
columnsNoFrames per row (default 4, at most 8).
page_idYesThe page to work on, as returned by create_design.
cell_widthNoWidth of each frame in px (default and at most 320).
render_designRender a design
Read-only
Inspect

A PNG of the design, rendered as it will export. Check the work with it after each meaningful change. Zoom with region or node_id, read pixel colours with sample_points, or judge shapes with hide, only and mode; time shows one moment of an animation. For layout problems as data use check_layout; for many moments of an animation use render_contact_sheet. Previews are PNGs at most 800 px on the longest side, with a faint repeating "Kalpana preview" mark. The mark is only on previews; the design, its exports and batch renders do not have it, and sample_points read the design's own colours. Zoom with region or node_id to check small text or detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
hideNoHide these layers for this picture only (the design is unchanged).
modeNo"color" (default), "grey" for a value study, or "silhouette" to judge a shape's read (use with `only`).
onlyNoShow only these layers (with their children) for this picture.
timeNoSecond of the animation to show (default 0). See render_contact_sheet for many moments in one picture.
sizesNoSeveral pictures in one call, each with this longest side in px (1 to 4 values, each at most 800), in place of max_size.
intentNoOptional: a few words on why.
regionNoZoom into this part: [x, y, width, height] in design px.
node_idNoZoom into a layer: its laid-out box grown by `padding`.
paddingNoSpace around `node_id`'s box in design px (default 24).
page_idYesThe page to work on, as returned by create_design.
regionsNoSeveral close-ups in one call: each [x, y, width, height] in design px. Combines with `node_ids`; 4 pictures at most, each `max_size`.
max_sizeNoLongest side of the picture in px (default and at most 800). Zoom with region or node_id for detail.
node_idsNoSeveral layers to zoom into, one picture each (box grown by `padding`).
sample_pointsNoPoints [x, y] in design px whose colour to read; returned as {x, y, hex, alpha}.
render_timelinePicture of the timeline
Read-only
Inspect

The timeline as a diagram, not a frame: a time ruler, a row per animated layer with a bar over its motion, and under it a row per property with keyframe diamonds; where the motion ends is marked. Check timing and overlap here, then get_design timeline with node_id for the keyframes to change. node_ids limits it to layers; properties: false shows layer rows only.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentNoOptional: a few words on why.
page_idYesThe page to work on, as returned by create_design.
node_idsNoOnly these layers (or groups, with what is inside).
propertiesNoA row per property under each layer (default true).
search_templatesFind templates to edit
Read-only
Inspect

The workspace's templates, still and animated, newest first, or those matching query (an exact template id, or words of a name, description or campaign topic). Each comes with its template_id, name, size, whether it is animated, a preview image URL and a link that opens it in Kalpana. To edit one, pages list with its template_id gives each page's page_id for get_design and the other design tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage of results, from 1 (default 1).
limitNoAt most this many templates (default 10).
queryNoAt least 3 characters; omit to list the newest.
send_feedbackTell Kalpana what got in the wayInspect

Feedback for the people who build these tools, not for the user: a tool, its arguments or the design guide that was confusing, missing something, wrong, or that worked especially well, with what was tried, what happened and what would have helped. It is for when a tool or the guide got in the way; nothing needs sending when none did. It holds no user content (their copy, names, image URLs or brand details). Free, and it changes nothing in the design.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesconfusing: a tool or argument did not do what its description led you to expect. missing: something you needed has no tool or argument. bug: a wrong result or a failure. guide: the design guide was unclear or lacked something. worked_well: worth keeping as it is.
toolsNoThe tools it is about, by name; empty for the guide or the connection as a whole.
page_idNoThe design you were working on, if any.
what_happenedYesWhat you tried and what happened.
what_would_helpNoWhat change to the tool or guide would have helped.
set_choreographySet choreographyInspect

Camera moves and morphs between layers for the design, in the stored format (read the current value with get_design timeline). {} clears it. A flow alone (slides in order joined by transitions) is compiled into the camera and morphs it plays. Validated before saving; the timeline grows to fit the flow.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
choreographyYesCamera moves and morphs between layers, in the stored format (read the current value with get_timeline). `{}` clears it. May instead carry just a `flow` (the slides in video order, joined by transitions, under `stage`/`steps`), the camera and morphs it plays are compiled from it and saved alongside it.
set_template_infoName the templateInspect

The name and description a template is saved with, and what each input may hold. Name: short and specific, e.g. "Ember Roasters autumn menu". Description: a sentence on what it is and where it is used. inputs: a description per text or image layer, by its id or name, saying what it holds and how long it can be ("Headline: up to 2 lines, about 45 characters"); batches show it to whoever fills the rows, and "" clears one. It also saves every change still waiting to be saved, so call it last: the template is then ready to fill with data.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
inputsNoLayer id or name to its input description: what it holds and its length limit.
descriptionNo
template_idYes
set_timelineSet the timelineInspect

Set the design's animation length in seconds (at most 30) and its frame rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
fpsNo
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
durationNoLength of the scene's video in seconds.
still_timeNoThe second a still image of the scene shows: the moment where all its content is in place. A negative value clears it (the last frame).
shape_pathCompute a shape outline
Read-only
Inspect

Exact SVG path data for a shape (arc, sector, ring, rounded polygon, star, spiral, wave, gear, arrow, blob, comic burst (jitter, seed, aspect), smooth line through points, the graph of a function), a stroke's filled outline, a boolean of paths, or the gap between two shapes. layer_gap with page_id gives the gap between two placed layers. Returns paths, width and height to pass to a vector layer in create_layers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aNo
bNo
opNo
toNo
capNo
endNo
bendNo
formNo
fromNo
headNo
joinNo
kindYes
seedNo
x_toNo
depthNo
pathsNo
sidesNo
startNo
teethNo
turnsNo
widthNo
y_maxNo
y_minNoFix the y range (default: the function's own min and max).
aspectNo
closedNo
cornerNo
heightNo
intentNoOptional: a few words on why.
jitterNo
pointsNo
radiusNo
smoothNo
wobbleNo
x_fromNo
page_idNoThe page to work on, as returned by create_design.
samplesNo
amplitudeNo
expressionNo
wavelengthNo
inner_ratioNo
inner_radiusNo
stagger_timesCompute stagger times
Read-only
Inspect

Start times for N items that cascade: a fixed step apart or spread over a total, evenly or easing in or out. Pass the times to animate.

ParametersJSON Schema
NameRequiredDescriptionDefault
easeNolinear (default), in, out, in_out: how the gaps shrink or grow.
stepNoSeconds between starts; or give `total`.
countYes
startNoSeconds for the first one.
totalNoSeconds from the first start to the last.
intentNoOptional: a few words on why.
undoUndoInspect

Revert the latest change of a design. Returns the revision the design is now at.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesThe page to work on, as returned by create_design.
update_layersChange layersInspect

Change existing layers: position, size, rotation, visibility, opacity, blend mode, masks, fills, strokes, radius, shadows, blur, image zoom and focus, vector paths, text and its style, flows and sizing in a flow. Only the given fields change. To move, wrap, delete or align layers use edit_structure. Layout problems this call made or changed come back as layout_issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYesOne short sentence: what you change and why. Kept in the design history.
page_idYesThe page to work on, as returned by create_design.
previewNoAlso return a preview picture of the result. Use it only when you need to see the design (the finished build, visual fixes); leave it off for empty frames and structural steps.
updatesNo
upload_imagesAdd images to the workspaceInspect

Bring the user's own images (PNG, JPEG or WebP, up to 5 MB each) into the workspace, optionally into a collection (made when it does not exist). Without files: a link to the workspace's Images page (the collection's page with collection) for the user to open and drop the images into; after they say they are done, find them with find_images and that collection. When you have the files yourself (a shell, files on disk): pass files with each one's SHA-256 hash, content type and size, PUT each file's bytes to its upload_url with that Content-Type header, then call again with done (each hash and file name) to record them; the reply gives each image's image key for create_layers and its asset_id for batch rows. Never send image data as base64. Images already on the web can be placed straight from their https URL instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
doneNoFiles you uploaded, to record them.
filesNoFiles you will upload yourself.
collectionNoCollection to put the images in, by name.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 41 tool updates
    • First observedanimate
    • First observedcalculate
    • First observedcamera
    • First observedcheck_layout
    • First observedclear_animation
    • First observedcolor_math
    • First observedcreate_design
    • First observedcreate_layers
    • First observeddesign_guide
    • First observedduplicate
    • First observededit_keyframes
    • First observededit_structure
    • First observedfind_images
    • First observedget_design
    • First observedimport_svg
    • First observedkinetic_type
    • First observedlist_fonts
    • First observedlist_shaders
    • First observedlist_workspaces
    • First observedmake_carousel
    • First observedmake_chart
    • First observedmake_cursor
    • First observedmake_list
    • First observedmake_particles
    • First observedmake_transition
    • First observedmeasure_text
    • First observedpages
    • First observedplace_items
    • First observedrender_contact_sheet
    • First observedrender_design
    • First observedrender_timeline
    • First observedsearch_templates
    • First observedsend_feedback
    • First observedset_choreography
    • First observedset_template_info
    • First observedset_timeline
    • First observedshape_path
    • First observedstagger_times
    • First observedundo
    • First observedupdate_layers
    • First observedupload_images

Publisher details

Operator
Shreekaram Technologies ยท Publisher source
Operator website
https://kalpana.one ยท Publisher source
Vendor relationship
First-party
Trust center
Not available
Restrictions
Requires an active paid Kalpana plan; designer calls are paid from the workspaceโ€™s render credits. Each connection covers one workspace chosen at sign-in, within the userโ€™s role there. ยท Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Turns photos plus a short brief into finished social-media designs such as stories, carousels, reel covers and invites. It searches and ranks templates, uploads images, places photos and copy, and returns rendered designs with links for further editing.
    Apache 2.0
  • F
    license
    B
    quality
    C
    maintenance
    Enables brand-guided design generation by creating social media graphics, quote posts, and one-page layouts from a fictional sample identity, with asset validation and auditing.
    13
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Generates logos, social media posts, app-store screenshots, comic panels, and visual-novel assets from natural-language prompts using 119 templates.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources