Install
$ agentstack add skill-yesterday-ai-skills-webflow ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Webflow 🪂
Read and edit Webflow sites through the official Webflow MCP server: pages, CMS, assets, components, styles, variables, custom code, comments, localization, and publishing.
Setup
This plugin ships the Webflow MCP server (.mcp.json → webflow, remote HTTP at https://mcp.webflow.com/mcp). It registers automatically when the plugin is enabled — no claude mcp add, no API key.
You only need to authenticate (OAuth) once:
- Call the
authenticatetool, open the returned URL, authorize. - The real tools load automatically once the flow completes. If the
localhost/callback page errors, pass the full address-bar URL to complete_authentication.
Verify with a real call before claiming success — e.g. data_sites_tool → list_sites. "Connected" in /mcp is not proof; run a tool.
> Standalone (no plugin)? Add the server by hand: > claude mcp add webflow --transport http https://mcp.webflow.com/mcp.
Two tool tiers — read this first
| Tier | Tools | Needs Designer open? | |---|---|---| | Data API (REST) | data_sites_tool, data_pages_tool, data_cms_tool, data_assets_tool, data_scripts_tool, data_comments_tool, data_localization_tool | No — works headless | | Designer API (live canvas) | de_page_tool, de_component_tool, element_tool, element_builder, whtml_builder, style_tool, variable_tool, asset_tool, element_snapshot_tool | Yes |
Designer tools require the Webflow Designer open in a browser tab, in the foreground, with the MCP Bridge app running. When the tab goes to the background or idle, calls time out / "Unable to connect" — the server returns a Bridge-app link; share it as a markdown link and ask the user to reopen the Designer and keep it foreground, then retry.
Always call webflow_guide_tool once at the start of a Designer session (the server requires it before other tools). ask_webflow_ai answers Webflow how-to questions.
Core workflows
Inventory / audit (headless)
data_sites_tool list_sites → per site: data_pages_tool list_pages, data_cms_tool get_collection_list, data_scripts_tool get_registered_scripts
get_site_scripts,data_comments_tool list_comment_threads. Assets,
components, styles, variables need the Designer (asset_tool, de_component_tool get_all_components, style_tool get_styles, variable_tool get_variable_collections).
Create a page
There is no Data-API create-page. Either de_page_tool create_page (blank — no nav/footer, since those are per-page unless componentized), or have the user duplicate an existing page in the Pages panel (keeps nav/footer/styles), then edit content via MCP. Set slug/SEO with data_pages_tool update_page_settings.
Replace rich-text body
whtml_builder into the content container with one root ` (, , , ), supply matching CSS via the css param, then removeelement the old block. Verify with elementsnapshot_tool`.
Add a link across pages (no components)
If the footer/nav is duplicated per page, repeat per page: switch_page → verify with get_current_page → query_elements (filter by style) to find the wrapper → element_builder a TextLink with the existing style + set_link (page). Snapshot to confirm.
Publish
data_sites_tool publish_site (or the user clicks Publish). Publishing pushes every staged change since the last publish, not just yours — warn the user and have them preview first.
Gotchas
- Never assume
site_id—list_sitesand confirm. Data tools require it explicitly. get_all_elementsoutput is huge — it often exceeds the token limit and is saved to a file; slice it with python (read()[A:B]) or parse in a subagent. Preferquery_elementswith filters when you can.- Active-page drift:
switch_pagedoes not always stick; element ops fail with "parent not found" if the canvas is on another page. Alwaysget_current_pageto verify before building. set_texton a RichText collapses formatting — usewhtml_builderfor structured content.- Inherited styles: new plain blocks can inherit
text-align: justify, bold display fonts, etc. from the body. Setfont-family/font-weight/text-alignexplicitly and snapshot. - Verify visually:
element_snapshot_toolafter every structural edit. Don't trust the success message alone. - Nothing is live until published. Treat publish as outward-facing — get explicit confirmation; never publish unprompted.
Safety
Read-only Data tools (list_*, get_*) are always safe. Treat any write (create/update/delete elements, CMS items, scripts) and publish_site as consequential and outward-facing — confirm scope first, and let the user own the publish.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Yesterday-AI
- Source: Yesterday-AI/skills
- License: MIT
- Homepage: https://github.com/Yesterday-AI/skills
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.