Kalpana Docs
Designer MCP

Templates and pages

Read the guide and the workspace, find templates, and manage a template's pages and details.

design_guide

The guide to designing with this server. Without topics it returns a short core: how templates, pages and flows fit together, the working loop, what calls cost, the rules for every design, and the list of topics. Agents read the core before their first design, then ask for the topics the job needs in one call.

ParameterTypeRequiredDefaultDescription
topicsstring[]No—Topics to return instead of the core, in this order.
TopicCovers
briefGathering a brief for products, services, apps, local businesses, events and brands
adThe step-by-step procedure for an ad
formatsAngles and ad formats
copyCopy budgets, formulas, CTAs, platform limits
structureUnits, stacks, layout flows, page patterns, naming
sizesRatio families, size plans, safe zones, shared input limits
colourPalettes, value structures, contrast
typeFont pairings, scale, prices, Indic scripts
imageryCutouts, scenes, people, screenshots, designs without images
effectsGradients, shaders, grain, scrims, shadows, badges, text effects
letteringExtrude, outlines, contours, warps and cuts for display type
numbersCharts, shapes, curved text, items on a path, measurements
critiqueGlance, value and layout checks, generic tells, batch stress test
referenceRebuilding or matching a reference design
carouselCarousels and series
motionAnimating a page
flowsVideos made from pages
batchHanding a template over to batches
limitsKnown engine limits and workarounds
  • Returns: The core, or the topics asked for, as text. Free.

get_workspace

The one workspace this connection designs in, chosen when the user connected. No tool takes a workspace id.

  • Input Parameters: None ({})
  • Returns: The workspace's workspace_id, name, slug, subscribed (whether its organization's plan is active) and allowed_image_domains, the hosts an image URL may come from, subdomains included. An image URL on another host is refused until an admin adds the domain in Workspace Settings > Domain Whitelisting.

search_templates

The workspace's templates, still and animated, newest first, or those matching query.

ParameterTypeRequiredDefaultDescription
querystringNo—An exact template id, or words of a name, description or campaign topic. 3 to 100 characters; omit to list the newest.
pageintegerNo1Page of results, from 1.
limitintegerNo101 to 20.
  • Returns: Each template's template_id, name, size, whether it is animated, a preview image URL and a link that opens it in Kalpana. list_pages gives its page ids.

list_pages

List a template's pages. Each page is a design with its own size and layers, and its id is a page_id the design tools take.

ParameterTypeRequiredDefaultDescription
template_idstringYes—The template, from search_templates or create_design.
  • Returns: The template's id, name and description, and each page's page_id, name, size and whether it is animated. To add an empty page, use create_design with template_id; to copy pages, use duplicate.

rename_page

Rename one page of a template.

ParameterTypeRequiredDefaultDescription
page_idstringYes—The page.
namestringYes—The page's new name.
  • Returns: The page's page_id and new name. To name the template itself, use set_template_info.

delete_pages

Delete one or more pages of a template, with their layers and motion. Every page is checked first: an unknown id, or deleting every page of a template (a template keeps at least one), refuses the whole call and nothing is deleted. Deleted pages cannot be brought back, not even with undo.

ParameterTypeRequiredDefaultDescription
page_idsstring[]Yes—1 to 20 pages.
  • Returns: The deleted page_ids and their template_ids.

A deleted page also leaves every flow that visits it. A flow left with no pages stays, empty, under its name.


duplicate

Copy pages. Each copy keeps its layers, names, motion and input descriptions, and never replaces a page or a template.

ParameterTypeRequiredDefaultDescription
page_idsstring[]Yes—The pages to copy, in order. To copy a whole template, give all its pages from list_pages.
template_idstringNoA new templateAdd the copies to this template (it can be the pages' own).
namestringNoSource name + " copy"The new template's name, when one is made.
widthintegerWith heightEach page's ownPage width of each copy, 1 to 8000 px.
heightintegerWith widthEach page's ownPage height of each copy, 1 to 8000 px.

With a new size, the flows and constraints place the layers again; render the copy and adjust what the size needs.


set_template_info

The name and description a template is saved with, and what each input may hold. It also saves every change still waiting to be saved, so it is the last call of a design.

ParameterTypeRequiredDefaultDescription
template_idstringYes—The template.
namestringNo—Short and specific, e.g. "Ember Roasters autumn menu".
descriptionstringNo—A sentence on what it is and where it is used: intent, audience and platforms.
inputsRecord<string, string>No—Layer id or name to what it holds and its length limit ("Headline: up to 2 lines, about 45 characters"). "" clears one. Batches show these to whoever fills the rows.
fixedRecord<string, boolean>No—Layer id or name to true to keep it as designed, not a batch input (slide numbers, arrows, labels that never change), or false to make it an input again.

undo

Reverts the latest change of a design. Free.

ParameterTypeRequiredDefaultDescription
page_idstringYes—The page.
  • Returns: The revision the design is now at.

send_feedback

Feedback from the agent to the people who build these tools: a tool, its arguments or the design guide that was confusing, missing something or wrong, or that worked well. Agents call it when a tool blocks them and once after set_template_info with anything they have to report or suggest. It holds no user content and changes nothing in the design.

ParameterTypeRequiredDefaultDescription
kind"confusing" | "missing" | "bug" | "guide" | "worked_well"Yes—What sort of feedback it is.
toolsstring[]No[]The tools it is about; empty for the guide or the connection as a whole.
what_happenedstringYes—What the agent tried and what happened. Up to 1000 characters.
what_would_helpstringNo—What would have helped. Up to 1000 characters.
page_idstringNo—The page the agent was working on.
  • Returns: { "received": true }.
Was this page helpful?

Updated 5 Nov 2026

On this page