Tools Reference
All tools operate on the live Studio editor in real-time via WebSocket. Changes appear on the canvas instantly. The server exposes 54 tools in 11 groups. Node kinds available: 72 (seelist_node_kinds).
No
pageId parameter is needed for most tools — they operate on the currently active page in Studio. Multi-page tools like list_pages and read_page let you inspect other pages.Template Tools
Read the template structure and browse pages.read_template
Read the currently loaded template from the live Studio editor. Returns the template name, category, and a summary of all pages.
No parameters.
list_pages
List all pages in the currently loaded template.
No parameters.
read_page
Read a specific page’s full document tree including root node, tokens, and assets. Shipped templates carry 1000+ copy tokens: pass includeTokens=false to get the tree alone (tokenCount is still reported) and use list_tokens for the ones you need.
Node Tools
Read, create, update, move, and delete nodes on the live canvas. Every mutation is undo-able in Studio (Ctrl+Z).find_nodes
Search for nodes in the current page by kind, prop name/value, or text content. Text search covers raw props and the resolved values of bound copy tokens (xxxToken props), so tokenized headings and labels are found; matches carry a resolved map of that text.
read_node
Read a single node’s full props, slots, and parent info from the live editor.
update_node
Update one or more props on a node. The change is applied live on the Studio canvas. Pass breakpoint=“mobile” or “tablet” to write a per-viewport override instead of the base (desktop) value: the props are deep-merged into props.responsive[breakpoint], keeping the other breakpoint’s overrides. Only layout/typography props the renderer applies per breakpoint are accepted there (describe_node_kind marks them “responsive”).
update_nodes_batch
Update the same props on multiple nodes at once in a single undo step. Efficient for bulk styling: e.g. set the same border/radius on all cards. With breakpoint=“mobile” or “tablet” the props become per-viewport overrides on every node (see update_node).
add_node
Add a new node as a child of a parent node’s slot. The canvas updates live.
apply_block
Insert a full tree of nodes at once (multiple nodes with nested children). All nodes are added in a single undo step. Use this to insert complex layouts like a card with heading + text + button, or an entire section with multiple children. Each node in the array needs: { id, kind, props, slots? }. Slots are: { [slotName]: { items: [childNodes] } }.
remove_node
Remove a node and all its children from the page.
remove_nodes
Remove multiple nodes at once in a single undo step.
move_node
Move a node to a different parent slot or position.
move_nodes
Move several nodes into the same parent slot in one undo step, keeping their order. Use it to regroup siblings (e.g. pull three cards into a new grid) instead of moving them one by one.
view_tree
View the node tree structure of the current page. Shows kind, id, slot info, and key props inline (text content, labels, colors) for efficient scanning. Text bound through xxxToken props is shown resolved, with the token name in parentheses, in the locale currently active in the editor.
get_subtree
Get the full JSON of a node and all its descendants. Returns the complete node tree with props and slots — useful for understanding complex structures, duplicating sections, or feeding to another tool.
duplicate_node
Deep-clone a node and insert the copy right after the original.
wrap_nodes
Wrap one or more sibling nodes in a new layout container.
swap_kind
Swap a node’s component kind while preserving compatible props. E.g. swap a Stack for a Grid, or a Heading for Text.
set_variant
Apply a named variant/recipe to a node. Recipes are predefined prop presets for components (e.g., Heading has “hero”, “section”, “minimal” variants; Button has “primary”, “secondary”, “outline”, “ghost”). Use describe_node_kind to see available recipes.
Token Tools
Read and write the design/copy tokens of the active page.list_tokens
List all design/content tokens in the current page. Tokens control colors, text, and localized values.
update_token
Update the value of an existing token. Applied live in the editor. The token is edited under the scope it already lives in (templates keep their tokens global); a name that does not exist yet is created as a global token.
add_token
Add a new token to the current page document. Defaults to global scope, which is what templates and the token resolver expect.
remove_token
Remove a token from the current page.
remove_locale
Unregister a locale from the current page and delete every token variant written for it. The default-locale values are untouched. Use list_pages to see registered locales.
Theme Tools
Palettes, typography presets, and history.apply_palette
Apply a named color palette to the current page. Changes all color tokens at once. Call list_palettes first: it returns every palette with its description and primary color (the set grows with Studio; nothing is hardcoded here).
apply_custom_palette
Generate a full, contrast-checked color palette from one brand color and apply it to the current page — the same generator the Studio palette picker uses. Use this when no named palette matches (e.g. colors extracted from a merchant site); prefer exact values over the closest named palette. Returns the generated colors.
apply_typography
Apply a named typography preset to the current page. Changes fonts, sizes, and weights. Available presets: modern, bold, elegant, friendly, compact, bloom, technical, minimal, expressive. Use list_typography_presets to see all options.
list_palettes
List all available color palettes with their descriptions and primary colors.
No parameters.
list_typography_presets
List all available typography presets with their font families and descriptions.
No parameters.
undo
Undo the last change on the canvas.
No parameters.
redo
Redo the previously undone change.
No parameters.
Schema Tools
Discover node kinds and their props. These work without a connected Studio.list_node_kinds
List all available node kinds (component types) in Tagada Studio. Optionally filter by category. Use this to discover what components you can add to a template.
describe_node_kind
Describe a node kind the way the Studio inspector presents it: one line per prop with its editor type (color, spacing, select, boolean, media, action…), label, accepted values with their labels, default, token twin and responsive eligibility, grouped by inspector section. Also lists slots, recipes for set_variant, runtime data requirements, the data contract, and visibility rules. Pass full=true for the raw JSON Schema instead.
Visual Tools
See what the agent built.take_screenshot
Capture a screenshot of the current page as rendered in Studio. Returns a JPEG image at the requested viewport size. Use this after making changes to visually verify the result. A heavy page takes tens of seconds and Studio captures one at a time, so raise your MCP client call timeout above 120s and do not fire a second capture before the first returns.
Page Tools
Navigate and create funnel pages. Node IDs are per page — callview_tree after switching.
switch_page
Switch the editor to another page of the funnel and load its document on the canvas. Every other tool then targets that page. Node IDs are per page: call view_tree again after switching.
create_page
Create a new empty page in the funnel and make it active. Returns rootNodeId — use it as parentId for build_section. Content nodes must live inside Section > Layout.Container, never at the root.
Building Tools
Whole structures in one undo step. These run the same executor as the in-app Studio assistant.build_section
Build a complete Section > Layout.Container > children structure in ONE undo step — the fastest way to add a full page section. Children may carry their own children for nested layouts (Grid > Card > content). Slots are created automatically. Returns sectionId, containerId and childIds. Include responsive.mobile padding on the section and paddingXMobile on the container (see guide://studio).
add_nodes_batch
Add several flat sibling nodes under one parent slot in a single undo step. Slots are created for container kinds. Returns the new node IDs in order.
update_tokens_batch
Update many global tokens in one call — design tokens after apply_palette / apply_typography, or a full set of translations for one locale. With locale, every token is written as that locale’s variant and the result lists the copy.* tokens still missing a translation (repeat until complete: true).
Library Tools
The shipped section blocks, the blocks saved on the account and the template library — the same insert paths as the Studio sidebar and Add-Page picker. The page archetypes inguide://studio map each page type to block ids. Blocks carry the copy of the template they came from: insert with placeholders: true, then fill from list_text_slots.
list_blocks
List the ready-made section blocks: the shipped library (hero, nav, offer, social-proof, trust, features, story, product, data, checkout, cta, thankyou) plus the blocks saved on the account. Returns id, category, description and top-level kinds. Insert one with insert_block — faster and more polished than composing sections from primitives. The page archetypes in guide://studio map each page type to block ids.
insert_block
Insert a block from list_blocks into the page in ONE undo step, with fresh node ids. Section-rooted blocks go under the page root (the default parent); card blocks need a parentId inside a section. IMPORTANT: the blocks were lifted from real template pages, so each one arrives selling that page’s product (olive oil, work boots…). Pass placeholders: true to strip that copy, or rewrite every slot with list_text_slots + update_nodes_batch. A page composed of blocks you did not rewrite advertises several unrelated products at once.
list_text_slots
List every piece of copy under a node — the text a merchant would rewrite, without the layout, style or data props. Returns props (rewrite them all in ONE update_nodes_batch) and arrays (FAQ items, review rows: write the whole items array back on its node). Use it after insert_block or add_page_from_template instead of hunting through view_tree.
