Skip to main content
Glama

framer_design

Framer DESIGN surface — build real, native, client-editable Framer pages server-side (layout, typography, design tokens, components, native animation). THIS is the tool for any design/layout/styling work; framer_canvas set_attributes/set_text are low-level node ops that bypass the design layer and silently produce Framer's default typography. action: 'guide' (START HERE — returns the compact DSL reference; no framer_site_id needed, and it is the same for every project so fetch it ONCE per session), 'apply' (dsl=, optional page_path — builds/edits the canvas; returns errors, linter warnings and renamedIds mapping your temp ids to canonical ids you MUST use in later edits), 'find_images' (query= — stock photo candidates), 'add_image' (url= — uploads it into the project and returns a permanent asset URL; always do this before using an image in fill=, remote URLs fetch inconsistently and fail silently). Changes are NOT live until framer_publish.

Input Schema

NameRequiredDescriptionDefault
dslNoDSL commands (action=apply | validate). Every command ends with ';'. apply runs a local pre-flight first and REFUSES to send known-wrong attributes — the API accepts them and silently does nothing, so this is the only place they can be caught.
urlNoImage URL to upload (action=add_image)
codeNoReact/TSX source (action=create_code_file). This is the ONLY way to get continuous motion or texture — an animated gradient, a grain overlay, a carousel, an animated counter. The DSL silently ignores appearEffect.loop/.repeat/loopEffect.*, so anything that moves forever has to live here. Export a default component and use addPropertyControls so the client can tune it in Framer afterwards.
nameNoComponent file name (action=create_code_file), e.g. 'AuroraGrain.tsx'
briefNoaction=suggest: describe the page and the feel you want, e.g. 'dark premium studio hero, iridescent moving background'. Returns a build plan naming the NATIVE primitive for it — which shader, the preset set, the two layout rules that silently ruin a build, and how to verify. START HERE for any design work: it costs no round trip and it is the difference between using the one-line shader Framer ships and hand-writing a React component to imitate it.
queryNoImage subject (action=find_images)
actionYessuggest | guide | validate | apply | find_images | add_image | code_files | create_code_file | add_component
page_pathNoOptional page path to scope the change (action=apply)
insert_urlNoaction=add_component: the export's insertURL from action=code_files. NOT url or identifier — both read back undefined, and using them looks exactly like the component not existing.
framer_site_idNoFrom connect_framer (not needed for action=guide)
skip_validationNoaction=apply: send even if pre-flight found errors. Rarely correct — each error is an attribute Framer accepts and ignores, so the apply reports success while nothing lands.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover mutation safety (readOnlyHint=false, destructive=false, idempotent=false, openWorld=true), yet the description adds extensive behavior beyond them: silent failures from remote URLs and ignored attributes, the mandatory renamedIds round-trip, the apply pre-flight refusal, and the requirement to publish before changes go live.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the sibling differentiation are front-loaded, and each action clause carries actionable content rather than filler. It is dense and long, but nearly every sentence earns its place by naming a concrete failure mode or ordering constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-param, multi-action tool with no output schema, the description covers workflow order, return artifacts (errors, linter warnings, renamedIds, permanent asset URL) and the publish dependency. Some actions referenced in the schema (validate, code_files, add_component, suggest) get only partial prose coverage, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds sequencing semantics the schema cannot express — add_image must precede fill=, guide takes no site id, and renamedIds from apply must feed later edits — which raises it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('build real, native, client-editable Framer pages server-side') and enumerates the sub-capabilities (layout, typography, design tokens, components, animation). It explicitly contrasts itself with the sibling framer_canvas, so an agent can pick the right tool without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: 'THIS is the tool for any design/layout/styling work', with framer_canvas named as the low-level alternative that bypasses the design layer. Each action carries a when-to-use note ('guide' START HERE, fetch once; 'add_image' always before fill=; changes not live until framer_publish).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources