Layovelle

Tools Reference

Documentation

Legacy. This section documents the original Layovelle MCP server at mcp.moda.app/mcp, built around start_design_task and get_moda_canvas. It is superseded by Layovelle for Agents — the moda CLI wherever your agent has a shell, and the Layovelle connector for claude.ai and other chat hosts. The connector replaces this server, so the tools below retire with it. These pages stay published for existing integrations; start new ones on Layovelle for Agents.
The Layovelle MCP server provides 20+ tools for working with canvas designs. These tools are called automatically by your AI coding agent when it needs design data or wants to create and manage designs.

Session context

When you first connect, Layovelle uses your default organization and team. If you belong to multiple organizations, you can switch with set_context:
  1. Call list_organizations to see your orgs and teams.
  2. Call set_context with the org name (and optionally team name).
  3. All subsequent tool calls use that workspace automatically.
Your context persists for 24 hours across reconnections. Tools like list_brand_kits, create_brand_kit, start_design_task, and remix_design all read from your session context automatically. You can also pass org_id or team_id explicitly to override the session context for a single call.

URL formats

All tools that accept a url parameter support these formats: Private canvas URLs require authentication via the remote server.

set_context

Sets your preferred organization and team for the current session. Once set, all subsequent tools that operate within a workspace (brand kits, design tasks, remixes) will use these defaults automatically.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

A confirmation string:

Example usage

Notes


get_context

Shows your current session context — which organization and team are active for workspace-scoped tools.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

This tool takes no parameters.

Returns

A string describing your current context:
If no context is set:

get_moda_bootstrap

MANDATORY FIRST CALL, every new conversation, before creating, editing, reading, remixing, or exporting any canvas — even if the agent already knows the user’s identity: this returns far more than identity (the Layovelle skill pointer, active user, active workspace, and entitlements that affect tool-call decisions). The response also lets agents skip downstream lookups when defaults are unambiguous.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

This tool takes no parameters.

Returns

Notes


set_session_brand_kit

Pin the brand kit the user chose for the current session without changing the team default. Subsequent calls to start_design_task / remix_design that omit brand_kit_id will resolve to this kit, and it counts as the user’s brand choice for new designs.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.
This is what the brand-kit showcase iframe’s Use for this session button calls. For changing the team default (destructive, affects every team member), use set_default_brand_kit instead.

Parameters

Returns

A confirmation string:
Or when cleared:

Notes


get_moda_canvas

The primary tool for design-to-code workflows. Fetches a Layovelle canvas and returns semantic pseudo-HTML with CSS properties and design tokens that AI agents can translate to any frontend framework.

Parameters

Returns

A string containing semantic pseudo-HTML with CSS properties, followed by a design tokens summary.

Semantic tags

The transformer assigns semantic tag names based on visual properties and layer names: Layer names in Layovelle take priority over visual heuristics. See Naming Layers for best practices.

Example usage

Notes


get_moda_canvas_tokens

Returns only the design tokens from a canvas — colors, fonts, variables, and corner radii — as structured JSON. Use this when you need to generate theme configuration files without the full semantic layout.

Parameters

Returns

Example usage

Notes


list_moda_canvas_pages

Returns metadata about each page in a canvas, including page names, dimensions, and the number of design elements. Use this to understand the structure of multi-page canvases before fetching specific pages.

Parameters

Returns

Notes


export_canvas

Export a Layovelle canvas as an image or document file. Pass exactly one of canvas_id or url.

Parameters

Format guide

mp4 and gif render a single page’s animation timeline by default (see scope for the stitched sequence and Main Edit forms). The page must actually have animation — a still page is rejected with a no_animation error. Each format is bounded per file, whichever half binds first: mp4 by 18,000 encoded frames and 600 s (600 s at the default 30 fps, 300 s at 60 fps), gif by 9,000 frames and 300 s (300 s at its 10–24 fps rates). A longer timeline is rejected at submit time with the concrete ceiling. For multi-page PNG/JPEG without page_number, the response carries format: "zip" and the URL serves a .zip of per-page raster files. The requested raster format is preserved inside the archive (page-1.png, page-2.png, …).

Returns

On success:
When the canvas has multiple pages and page_number was omitted, a PNG/JPEG export bundles into a zip:
When the export hasn’t finished within the synchronous wait budget (large multi-page canvases, cold renders), the call returns an in-progress handle. Call get_export_status(task_id) to fetch the URL once it’s ready — the same task_id keeps returning the in-progress shape until terminal:
If a design task is still active for the target canvas:
canvas_id, canvas_url, and task_id are only included for authenticated private-canvas exports (i.e., when using canvas_id or a private URL). Share-link exports omit these fields to avoid leaking internal identifiers.

Example usage

Provide exactly one of canvas_id or url per call:

Notes


get_export_status

Poll the status of an asynchronous export started by export_canvas. Use when export_canvas returned status='in_progress' (large multi-page exports that exceed the synchronous wait budget).

Parameters

Returns

While running:
On completion:
On failure:

Notes


list_my_canvases

Returns a paginated list — or, with a query, a paginated keyword search — of canvases accessible to the authenticated user. Use this to browse available canvases when you don’t have a specific URL, and whenever the user should see or pick one.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Notes


search_canvases

Searches your canvases by name or content and returns matching results as plain JSON. Use this when you need to resolve a canvas ID for a follow-up call and don’t have the exact URL.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Notes


list_organizations

Returns a list of organizations and teams you belong to. Use this to discover available workspaces, then call set_context to choose which one to use.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

This tool takes no parameters.

Returns

Notes


find_brand_kits

JSON-only sibling of list_brand_kits. Same data, same parameters — the difference is presentation. find_brand_kits does not render the visual brand-kit showcase iframe, so it’s appropriate when the agent is just looking up a brand_kit_id to pass to another tool (e.g. start_design_task).
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.
Per the MCP Apps spec, iframe rendering is decided at tool-listing time from a tool’s _meta.ui.resourceUri. There is no per-call way to suppress rendering. So Layovelle exposes two tools sharing the same backing data:

Parameters

Identical to list_brand_kits: query, org_id, team_id, verbose, limit, offset.

Returns

Identical to list_brand_kits.

list_brand_kits

Returns brand kits for a team. Renders the visual brand-kit showcase iframe on every call (on app-aware hosts like claude.ai and Claude Desktop). Brand kits contain colors, fonts, logos, and brand guidelines that were extracted from company websites. Uses your session context (set via set_context) or defaults to your primary workspace. It is the picker the agent shows when the user must choose a kit for a new design (see start_design_task). For agent-side lookups where the iframe would take over screen space the user didn’t ask for, prefer find_brand_kits — same data, no UI.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

If neither org_id nor team_id is provided, uses your session context or defaults to your primary workspace.

Returns

When verbose=false, each kit drops the colors, fonts, logos, brand_values, brand_aesthetic, brand_tone_of_voice, company_url, and company_description fields — useful when you only need ids/titles to pick a kit by name. brand_aesthetic is a deprecated keyword array describing the brand’s visual style. The brand’s visual aesthetic is otherwise captured internally and is not exposed through this API.

Notes


create_brand_kit

Creates a brand kit by extracting brand information from a company website. Provide a URL or domain and Layovelle will extract colors, fonts, logos, and brand guidelines automatically. Uses your session context (set via set_context) or defaults to your primary workspace.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Returns the created brand kit in the same format as list_brand_kits entries.

Notes


update_brand_kit

Updates an existing brand kit. Pass only the fields you want to change — all other fields remain unchanged.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Setting default_theme_canvas_id to a non-theme canvas — or one on a different team — fails with invalid_theme_canvas.

Returns

Returns the updated brand kit in the same format as list_brand_kits entries.

Notes


set_default_brand_kit

Marks a brand kit as the team’s default and clears the default flag on the previously-default kit. The default fills in when an edited canvas has no kit of its own; it does not stand in for the user’s choice on a new design.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.
Destructive — affects every team member. This tool clears the default flag on whichever kit was previously default. Only call it when the user explicitly asks to change their team default brand kit. For session-only changes (no team-wide impact), use set_session_brand_kit instead — that’s what the Brand Kit Showcase iframe’s “Use for this session” button now calls.

Parameters

Returns

Returns the team’s brand kits in the same shape as list_brand_kits, with the new default first. Use this to rerender any UI that depends on default-kit state without an additional round-trip.

Example usage

Notes


list_brand_kit_images

Returns every image attached to a brand kit — both logos and design references — in newest-insertion order. Useful when reconciling an existing brand kit before adding new images, since blindly calling add_brand_kit_image would create duplicates.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Example usage

Notes


remove_brand_kit_image

Detaches an image from a brand kit by its bki_ ID. Returns the freshly re-listed images so callers can rerender from authoritative state.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.
Destructive. Only call this when the user explicitly asks to remove a specific image, or in response to a user action (e.g., the per-card Remove button in the Brand Kit Image Gallery iframe). The underlying file remains in storage; only the brand-kit reference is removed.

Parameters

Returns

Returns the same payload shape as list_brand_kit_images after the removal completes, so the caller can rerender directly from the response.

Example usage

Notes


upload_file

Uploads a file from a URL to Layovelle’s storage. Returns a stable proxy URL that can be used as an attachment in start_design_task. Supports images, PDFs, Office documents (PowerPoint, Word, and Excel spreadsheets), CSV, plain-text/Markdown, and web-playable video (MP4, WebM, MOV).
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Example usage

Notes


start_design_task

Starts an AI design task using Layovelle’s design agent. The agent creates or edits a canvas based on your prompt. Provide a canvas_id to edit an existing canvas, or omit it to create a new one. By default this tool returns immediately in milliseconds with a task handle ({task_id, canvas_id, canvas_url, status: 'queued'}). On hosts that support interactive apps (claude.ai web, Claude Desktop), the paired Design Task Progress iframe shows live progress and rendered pages, so you don’t need to block on completion. On non-interactive hosts, poll get_task_status(task_id) to track progress and detect completion. Pass wait=True to opt back into synchronous behavior — useful only for non-interactive consumers that need a single blocking call. Uses your session context (set via set_context) or defaults to your primary workspace.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

theme_canvas_id reports the brand kit’s slides theme that was auto-applied to the new canvas — the canvas whose page layouts the agent themes from. It’s populated only when you create a fresh slides deck (format_category="slides", no canvas_id) with a brand kit that has a saved default theme; it’s null for non-slides designs, edits of existing canvases, and brand kits without a saved theme. Once get_task_status reports status: "completed", the same envelope additionally carries result.export with the auto-exported artifact:

Example usage

Notes


get_task_status

Returns the status and progress of a specific design task. Use this to check on tasks started with start_design_task or remix_design.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Notes


list_tasks

Returns a list of recent design tasks. Use this to see what design tasks have been run recently, optionally filtered by canvas or status.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Notes


remix_design

Duplicates an existing canvas and optionally starts a design task on the copy. Use this to create variations of existing designs without modifying the original. When a prompt is provided, the call blocks by default (wait=true, unlike start_design_task) until the agent finishes and returns the completed remix — pass wait=false to get a task handle immediately and poll get_task_status the same way as start_design_task. Uses your session context (set via set_context) or defaults to your primary workspace.
This tool requires authentication via the remote MCP server at mcp.moda.app. It is not available when using the local stdio server.

Parameters

Returns

Without a prompt (plain duplicate):
With a prompt and wait=false (duplicate + backgrounded design task):

Example usage

Notes


Websites

Layovelle websites are HTML projects you can draft and manage, then publish from the Layovelle editor to a public *.layovelle.com URL. These MCP tools let your agent draft, inspect, and update websites in Layovelle — available to every authenticated MCP user. Publishing the resulting draft is opt-in: create_website_from_upload and update_website_from_upload both accept a publish flag that defaults to false. Publishing runs through Layovelle’s server-side publish gate (content screening plus publish-rate, live-site, and new-account quotas); when the gate blocks a publish the draft is still saved and the response comes back with published_url: null. The user can publish from the editor once any blocking gate condition clears — the editor runs through the same gate. HTML payloads are uploaded out-of-band (presigned URL → PUT bytes → call the tool with the returned storage_key) so large HTML documents — especially ones with inlined base64 images — don’t have to pass through MCP tool args. Inline data: images are extracted to Layovelle Files automatically so the published artifact stays small.
Every website tool requires authentication via the remote MCP server at mcp.moda.app. The local stdio server does not expose them.

list_my_websites

Lists the websites visible to the caller in the active team, newest-updated first. Scoped to the team in your session context — call set_context first if you belong to multiple teams.

Parameters

Returns

url is null for unpublished drafts.

get_website

Fetches the full agent-facing projection of one website — the source HTML for the home page, title, share state, comments toggle, editor URL, and (if published) the live *.layovelle.com URL. Use this before calling update_website_from_upload so the agent has the current source as a base.

Parameters

Returns

published_url and url are both null for unpublished drafts. url is a deprecated alias kept for backward compatibility — prefer published_url in new code.

create_website_from_upload

Creates a new Layovelle website from an HTML file. The HTML is uploaded out-of-band first so large documents (especially ones with inlined base64 images) don’t have to pass through MCP args. Required upload sequence:
  1. create_upload_url(filename="site.html", mime_type="text/html") → returns {upload_url, storage_key}.
  2. PUT the HTML bytes to upload_url with header Content-Type: text/html.
  3. Call create_website_from_upload(storage_key=…) with the storage_key from step 1.
Server-side, Layovelle extracts every inline data:image/… URI to a CDN-hosted Layovelle File, rewrites the HTML to reference the proxy URL, then creates the website row. Sites default to category='html-document', share_state='unlisted', and comments_enabled=true.

Parameters

Returns


update_website_from_upload

Replace the HTML and/or title of an existing website. The website_id is preserved, existing comments stay anchored via a reconciliation pass over the new DOM, and inline data: images in the uploaded HTML are extracted to Layovelle Files (same pipeline as create_website_from_upload). Same upload sequence as create_website_from_upload — omit storage_key to keep the current HTML and only rename via title.

Parameters

Supply at least one of storage_key or title — a call with neither is rejected.

Returns

published_url is null when publish=false — the live URL keeps serving the previously-published version until the user republishes from the editor.