Page Structure
Build, inspect, and manage page elements and components in the Webflow Designer.
Important Note
ALWAYS use Webflow MCP tools for all operations:
- Use Webflow MCP's
webflow_guide_tool to get best practices before any other tool call
- Use Webflow MCP's
data_sites_tool with action list_sites to identify the target site
- Use Webflow MCP's
data_pages_tool with action list_pages to find the target page by name or slug — headless, works against any page
- Use Webflow MCP's
data_pages_tool with action create_page to create new pages — headless
- Use Webflow MCP's
data_element_tool with action get_all_elements or query_elements to retrieve or filter page elements — headless, pass the page's ID directly
- Use Webflow MCP's
data_element_builder to create new elements — headless, pass the page's ID and a parent element ID
- Use Webflow MCP's
data_element_tool with action set_attributes, set_text, set_style, or set_link to modify elements — headless
- Use Webflow MCP's
element_snapshot_tool to get visual previews of elements before and after changes — this is a Designer tool and requires a Designer connection
- Use Webflow MCP's
data_style_tool to create and update styles on elements — headless
- Use Webflow MCP's
webflow_guide_tool to check supported style properties
- Use Webflow MCP's
data_component_tool with action get_all_components or query_components to list site components — headless
- Use Webflow MCP's
data_component_tool with action get_component to inspect a component's metadata — headless
- Use Webflow MCP's
data_element_tool scoped with scope_component_id to inspect or edit a component's internal elements (its "content") — headless
- Use Webflow MCP's
data_component_props_tool to manage prop definitions and set prop values on component instances — headless
- Use Webflow MCP's
data_component_variants_tool to manage variants and per-variant style overrides — headless
- Use Webflow MCP's
data_component_tool with action insert_component_instance or unlink_component_instance to manage component instances on a page — headless, not Designer-gated
- Use Webflow MCP's
designer_tool only for actions that need a live canvas: get_current_page/switch_page (what's open in Designer right now), select_element/get_selected_element (interactive canvas selection), create_page_folder (page folders are Designer-only, unlike page creation itself), and open_component_view (viewing a component's canvas)
- DO NOT use any other tools or methods for Webflow operations
- All tool calls must include the required
context parameter (15-25 words, third-person perspective)
- Designer connection is required for
designer_tool actions and for element_snapshot_tool. Building, styling, inspecting, and updating elements, components, props, and variants (the data_ tools) runs headlessly against an explicit page ID from data_pages_tool's list_pages — but the before/after visual snapshots this skill relies on for safe mutation need Designer open and connected. If Designer isn't available, skip the snapshot steps and rely on query_elements output to describe changes instead.
Instructions
Phase 1: Discovery
- Call
webflow_guide_tool first — always the first MCP tool call in any workflow
- Get the site: Use
data_sites_tool with action list_sites to identify the target site. If only one site exists, use it automatically.
- Get the target page: Use
data_pages_tool with action list_pages to find the page by name or slug — no Designer connection needed. If the user is actively working in an open Designer session and wants "the page I have open," use designer_tool with action get_current_page instead.
- If user specifies a different page: Just use that page's ID directly in later calls — no page "switch" is needed for headless operations. Only use
designer_tool with action switch_page if the user wants the Designer canvas itself to navigate there.
- Identify the task type:
- Inspect: List elements, view structure, preview → go to Phase 2
- Build/Modify/Delete: Add, update, restructure, remove → go to Phase 3
- Components: List, inspect, update → go to Phase 2 or Phase 3 depending on read vs write
Phase 2: Inspection (read-only operations)
- List page elements: Use
data_element_tool with get_all_elements (or query_elements to filter by type/text/attribute) to retrieve page structure, passing the page ID from Phase 1. Present a summary of sections, elements, and nesting.
- Preview elements: Use
element_snapshot_tool to get visual previews of specific sections — requires Designer
- List components: Use
data_component_tool with action get_all_components or query_components to list all site components
- Inspect a component: Use
data_component_tool with action get_component for metadata (props, variants), or data_element_tool with scope_component_id set to the component's ID to inspect its internal elements
Phase 3: Planning (before any mutation)
Before creating, updating, or deleting anything:
10. Snapshot current state: Use element_snapshot_tool to capture the area being changed — requires Designer; if unavailable, describe the current state from query_elements output instead
11. Present the plan: Describe exactly what will be created, modified, or deleted
12. Request explicit confirmation: Ask the user before proceeding:
- "Would you like me to proceed with these changes?"
- "Shall I go ahead and create this?"
- "Do you want me to apply these changes?"
- "Before I make changes, here's what I'll do: [plan]. Confirm to proceed."
13. For destructive operations (delete, restructure): Require "confirm" or "delete", warn about child elements that will also be affected
Phase 4: Execution (after confirmation only)
- Build elements: Use
data_element_builder to create new elements (max 3 levels deep), passing the page ID and the parent element ID. For deeper structures, build in multiple passes.
- Style elements: Use
data_style_tool to apply or update styles on created or existing elements
- Modify elements: Use
data_element_tool with set_attributes, set_text, set_style, or set_link to update attributes, text, or links
- Update components: Use
data_element_tool (scoped with scope_component_id) to edit a component's internal elements; data_component_props_tool to change prop definitions or instance prop values; data_component_variants_tool to manage variants; data_component_tool with insert_component_instance/unlink_component_instance to add or unlink instances on a page
- Create pages: Use
data_pages_tool with action create_page. To create a page folder, use designer_tool with action create_page_folder — this specific action requires a Designer connection
Phase 5: Verification
- Snapshot the result: Use
element_snapshot_tool to capture the new state — requires Designer; if unavailable, summarize the change from the tool response instead
- Report what changed: Summarize the changes made
Examples
Example 1: List page elements
User: "Show me all elements on the homepage"
- Call
webflow_guide_tool for best practices
- Call
data_sites_tool with list_sites to identify the site
- Call
data_pages_tool with list_pages to find the homepage's page ID
- Call
data_element_tool with get_all_elements (using that page ID) to retrieve page structure
- Present organized summary of sections, elements, and nesting
Example 2: Build a hero section
User: "Add a hero section with a heading and CTA button"
- Call
webflow_guide_tool for best practices
- Call
data_sites_tool with list_sites to identify the site
- Call
data_pages_tool with list_pages to find the target page's ID
- Call
element_snapshot_tool to capture current state
- Present plan: "I'll create a Section with a Heading and Button. Would you like me to proceed?"
- After confirmation: call
data_element_builder with nested structure
- Call
data_style_tool to apply styles (padding, background, typography)
- Call
element_snapshot_tool to show the result
Example 3: Update a component
User: "Update the footer copyright text to 2026"
- Call
webflow_guide_tool for best practices
- Call
data_sites_tool with list_sites to identify the site
- Call
data_component_tool with query_components to find the footer component
- Call
data_element_tool (scoped with scope_component_id) to inspect its internal elements and find the copyright text element
- Present: "I'll update the copyright text from '2025' to '2026'. Would you like me to proceed?"
- After confirmation: call
data_element_tool with set_text (scoped with scope_component_id)
- Report the change
Example 4: Restructure a section
User: "Restructure the hero section layout"
- Call
webflow_guide_tool for best practices
- Call
data_sites_tool with list_sites to identify the site
- Call
data_pages_tool with list_pages to find the target page's ID
- Call
element_snapshot_tool to capture current hero section
- Call
data_element_tool with query_elements to inspect current structure
- Present restructuring plan with before/after description
- After confirmation: apply changes using
data_element_tool (move_element, set_style, etc.) and/or data_element_builder
- Call
element_snapshot_tool to show the result
Example 5: Create a two-column layout
User: "Create a two-column layout with text on left and image on right"
- Call
webflow_guide_tool for best practices
- Call
data_sites_tool with list_sites to identify the site
- Call
data_pages_tool with list_pages to find the target page's ID
- Call
element_snapshot_tool to capture current state
- Present plan: "I'll create a Grid with two columns — text block on left, image on right. Would you like me to proceed?"
- After confirmation: call
data_element_builder with grid structure
- Call
data_style_tool to set grid layout properties
- Call
element_snapshot_tool to show the result
Guidelines
webflow_guide_tool always first — before any other MCP tool in every workflow
- Snapshot before and after — use
element_snapshot_tool before mutations and after to show results
- Never silently mutate — every write operation requires explicit user confirmation
- Headless for building and editing — get the page ID once via
data_pages_tool's list_pages, then pass it directly to data_element_tool, data_element_builder, and data_style_tool. Reach for designer_tool only when the task specifically needs the live canvas (current-page detection, interactive selection, page folders, component canvas view).
- Visual snapshots need Designer —
element_snapshot_tool is a Designer tool; if Designer isn't connected, fall back to describing changes from query_elements/tool response data instead of skipping the before/after check entirely.
- Batch changes need itemized preview — if modifying multiple elements, list each change
- Prefer Webflow's native layout tools (Grid, Flexbox) over manual positioning
- Components shared across pages should be updated via
data_element_tool scoped to the component (changes propagate to all instances)
- Component instance management (
insert_component_instance, unlink_component_instance) is headless via data_component_tool — not Designer-gated
data_element_builder supports max 3 levels per call — build deeper structures in stages
- Check
webflow_guide_tool for supported style properties when unsure
1---
2name: webflow-mcp-designer-tools
3description: Build and manage pages, elements, components, and styles in Webflow Designer. Use when adding sections, creating layouts, building elements, inspecting or updating components, viewing what's inside a component, restructuring pages, creating new pages, previewing page structure, styling elements, or managing component properties. Building, styling, and inspecting run headlessly against an explicit page ID — no Designer connection needed. Designer is required for `designer_tool` actions (reading/switching the page open on canvas, interactively selecting an element, creating page folders, opening a component's canvas view) and for `element_snapshot_tool` visual previews.
4mcp-version: 2.0.1
5---
6
7# Page Structure
8
9Build, inspect, and manage page elements and components in the Webflow Designer.
10
11## Important Note
12
13**ALWAYS use Webflow MCP tools for all operations:**
14- Use Webflow MCP's `webflow_guide_tool` to get best practices **before any other tool call**
15- Use Webflow MCP's `data_sites_tool` with action `list_sites` to identify the target site
16- Use Webflow MCP's `data_pages_tool` with action `list_pages` to find the target page by name or slug — headless, works against any page
17- Use Webflow MCP's `data_pages_tool` with action `create_page` to create new pages — headless
18- Use Webflow MCP's `data_element_tool` with action `get_all_elements` or `query_elements` to retrieve or filter page elements — headless, pass the page's ID directly
19- Use Webflow MCP's `data_element_builder` to create new elements — headless, pass the page's ID and a parent element ID
20- Use Webflow MCP's `data_element_tool` with action `set_attributes`, `set_text`, `set_style`, or `set_link` to modify elements — headless
21- Use Webflow MCP's `element_snapshot_tool` to get visual previews of elements before and after changes — this is a Designer tool and requires a Designer connection
22- Use Webflow MCP's `data_style_tool` to create and update styles on elements — headless
23- Use Webflow MCP's `webflow_guide_tool` to check supported style properties
24- Use Webflow MCP's `data_component_tool` with action `get_all_components` or `query_components` to list site components — headless
25- Use Webflow MCP's `data_component_tool` with action `get_component` to inspect a component's metadata — headless
26- Use Webflow MCP's `data_element_tool` scoped with `scope_component_id` to inspect or edit a component's internal elements (its "content") — headless
27- Use Webflow MCP's `data_component_props_tool` to manage prop definitions and set prop values on component instances — headless
28- Use Webflow MCP's `data_component_variants_tool` to manage variants and per-variant style overrides — headless
29- Use Webflow MCP's `data_component_tool` with action `insert_component_instance` or `unlink_component_instance` to manage component instances on a page — headless, not Designer-gated
30- Use Webflow MCP's `designer_tool` only for actions that need a live canvas: `get_current_page`/`switch_page` (what's open in Designer right now), `select_element`/`get_selected_element` (interactive canvas selection), `create_page_folder` (page folders are Designer-only, unlike page creation itself), and `open_component_view` (viewing a component's canvas)
31- DO NOT use any other tools or methods for Webflow operations
32- All tool calls must include the required `context` parameter (15-25 words, third-person perspective)
33- **Designer connection is required for `designer_tool` actions and for `element_snapshot_tool`.** Building, styling, inspecting, and updating elements, components, props, and variants (the `data_` tools) runs headlessly against an explicit page ID from `data_pages_tool`'s `list_pages` — but the before/after visual snapshots this skill relies on for safe mutation need Designer open and connected. If Designer isn't available, skip the snapshot steps and rely on `query_elements` output to describe changes instead.
34
35## Instructions
36
37### Phase 1: Discovery
381. **Call `webflow_guide_tool` first** — always the first MCP tool call in any workflow
392. **Get the site**: Use `data_sites_tool` with action `list_sites` to identify the target site. If only one site exists, use it automatically.
403. **Get the target page**: Use `data_pages_tool` with action `list_pages` to find the page by name or slug — no Designer connection needed. If the user is actively working in an open Designer session and wants "the page I have open," use `designer_tool` with action `get_current_page` instead.
414. **If user specifies a different page**: Just use that page's ID directly in later calls — no page "switch" is needed for headless operations. Only use `designer_tool` with action `switch_page` if the user wants the Designer canvas itself to navigate there.
425. **Identify the task type**:
43 - **Inspect**: List elements, view structure, preview → go to Phase 2
44 - **Build/Modify/Delete**: Add, update, restructure, remove → go to Phase 3
45 - **Components**: List, inspect, update → go to Phase 2 or Phase 3 depending on read vs write
46
47### Phase 2: Inspection (read-only operations)
486. **List page elements**: Use `data_element_tool` with `get_all_elements` (or `query_elements` to filter by type/text/attribute) to retrieve page structure, passing the page ID from Phase 1. Present a summary of sections, elements, and nesting.
497. **Preview elements**: Use `element_snapshot_tool` to get visual previews of specific sections — requires Designer
508. **List components**: Use `data_component_tool` with action `get_all_components` or `query_components` to list all site components
519. **Inspect a component**: Use `data_component_tool` with action `get_component` for metadata (props, variants), or `data_element_tool` with `scope_component_id` set to the component's ID to inspect its internal elements
52
53### Phase 3: Planning (before any mutation)
54Before creating, updating, or deleting anything:
5510. **Snapshot current state**: Use `element_snapshot_tool` to capture the area being changed — requires Designer; if unavailable, describe the current state from `query_elements` output instead
5611. **Present the plan**: Describe exactly what will be created, modified, or deleted
5712. **Request explicit confirmation**: Ask the user before proceeding:
58 - "Would you like me to proceed with these changes?"
59 - "Shall I go ahead and create this?"
60 - "Do you want me to apply these changes?"
61 - "Before I make changes, here's what I'll do: [plan]. Confirm to proceed."
6213. **For destructive operations** (delete, restructure): Require "confirm" or "delete", warn about child elements that will also be affected
63
64### Phase 4: Execution (after confirmation only)
6514. **Build elements**: Use `data_element_builder` to create new elements (max 3 levels deep), passing the page ID and the parent element ID. For deeper structures, build in multiple passes.
6615. **Style elements**: Use `data_style_tool` to apply or update styles on created or existing elements
6716. **Modify elements**: Use `data_element_tool` with `set_attributes`, `set_text`, `set_style`, or `set_link` to update attributes, text, or links
6817. **Update components**: Use `data_element_tool` (scoped with `scope_component_id`) to edit a component's internal elements; `data_component_props_tool` to change prop definitions or instance prop values; `data_component_variants_tool` to manage variants; `data_component_tool` with `insert_component_instance`/`unlink_component_instance` to add or unlink instances on a page
6918. **Create pages**: Use `data_pages_tool` with action `create_page`. To create a page **folder**, use `designer_tool` with action `create_page_folder` — this specific action requires a Designer connection
70
71### Phase 5: Verification
7219. **Snapshot the result**: Use `element_snapshot_tool` to capture the new state — requires Designer; if unavailable, summarize the change from the tool response instead
7320. **Report what changed**: Summarize the changes made
74
75## Examples
76
77### Example 1: List page elements
78
79**User:** "Show me all elements on the homepage"
80
811. Call `webflow_guide_tool` for best practices
822. Call `data_sites_tool` with `list_sites` to identify the site
833. Call `data_pages_tool` with `list_pages` to find the homepage's page ID
844. Call `data_element_tool` with `get_all_elements` (using that page ID) to retrieve page structure
855. Present organized summary of sections, elements, and nesting
86
87### Example 2: Build a hero section
88
89**User:** "Add a hero section with a heading and CTA button"
90
911. Call `webflow_guide_tool` for best practices
922. Call `data_sites_tool` with `list_sites` to identify the site
933. Call `data_pages_tool` with `list_pages` to find the target page's ID
944. Call `element_snapshot_tool` to capture current state
955. Present plan: "I'll create a Section with a Heading and Button. Would you like me to proceed?"
966. After confirmation: call `data_element_builder` with nested structure
977. Call `data_style_tool` to apply styles (padding, background, typography)
988. Call `element_snapshot_tool` to show the result
99
100### Example 3: Update a component
101
102**User:** "Update the footer copyright text to 2026"
103
1041. Call `webflow_guide_tool` for best practices
1052. Call `data_sites_tool` with `list_sites` to identify the site
1063. Call `data_component_tool` with `query_components` to find the footer component
1074. Call `data_element_tool` (scoped with `scope_component_id`) to inspect its internal elements and find the copyright text element
1085. Present: "I'll update the copyright text from '2025' to '2026'. Would you like me to proceed?"
1096. After confirmation: call `data_element_tool` with `set_text` (scoped with `scope_component_id`)
1107. Report the change
111
112### Example 4: Restructure a section
113
114**User:** "Restructure the hero section layout"
115
1161. Call `webflow_guide_tool` for best practices
1172. Call `data_sites_tool` with `list_sites` to identify the site
1183. Call `data_pages_tool` with `list_pages` to find the target page's ID
1194. Call `element_snapshot_tool` to capture current hero section
1205. Call `data_element_tool` with `query_elements` to inspect current structure
1216. Present restructuring plan with before/after description
1227. After confirmation: apply changes using `data_element_tool` (`move_element`, `set_style`, etc.) and/or `data_element_builder`
1238. Call `element_snapshot_tool` to show the result
124
125### Example 5: Create a two-column layout
126
127**User:** "Create a two-column layout with text on left and image on right"
128
1291. Call `webflow_guide_tool` for best practices
1302. Call `data_sites_tool` with `list_sites` to identify the site
1313. Call `data_pages_tool` with `list_pages` to find the target page's ID
1324. Call `element_snapshot_tool` to capture current state
1335. Present plan: "I'll create a Grid with two columns — text block on left, image on right. Would you like me to proceed?"
1346. After confirmation: call `data_element_builder` with grid structure
1357. Call `data_style_tool` to set grid layout properties
1368. Call `element_snapshot_tool` to show the result
137
138## Guidelines
139
140- **`webflow_guide_tool` always first** — before any other MCP tool in every workflow
141- **Snapshot before and after** — use `element_snapshot_tool` before mutations and after to show results
142- **Never silently mutate** — every write operation requires explicit user confirmation
143- **Headless for building and editing** — get the page ID once via `data_pages_tool`'s `list_pages`, then pass it directly to `data_element_tool`, `data_element_builder`, and `data_style_tool`. Reach for `designer_tool` only when the task specifically needs the live canvas (current-page detection, interactive selection, page folders, component canvas view).
144- **Visual snapshots need Designer** — `element_snapshot_tool` is a Designer tool; if Designer isn't connected, fall back to describing changes from `query_elements`/tool response data instead of skipping the before/after check entirely.
145- **Batch changes need itemized preview** — if modifying multiple elements, list each change
146- Prefer Webflow's native layout tools (Grid, Flexbox) over manual positioning
147- Components shared across pages should be updated via `data_element_tool` scoped to the component (changes propagate to all instances)
148- Component instance management (`insert_component_instance`, `unlink_component_instance`) is headless via `data_component_tool` — not Designer-gated
149- `data_element_builder` supports max 3 levels per call — build deeper structures in stages
150- Check `webflow_guide_tool` for supported style properties when unsure