> This page is for MCP Server.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.webflow.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.webflow.com/_mcp/server.

# Skill Migration

> Update skills and automations that reference older Webflow MCP tool and action names to the names the current version expects.

The Webflow MCP server has updated several tool and action names across releases. If a [skill](/mcp/reference/skills), prompt, or automation still refers to a name from an older version, that call may fail once the action has moved or been renamed.

This guide lists every tool and action name that changed across v1.3, v2.0, v2.0.1, and v2.1, so you can update older references to the names the current version expects. A "skill" here means any saved set of instructions that tells an agent how to work with Webflow, together with the specific tool calls it relies on.

It is written for two readers: developers updating skills or automations they wrote against an earlier version, and agents pointed at this page to update those skills on their own. After reading it, you should be able to find every earlier tool or action reference in a skill, replace it with the current name, and recognize the two cases where renaming alone is not enough to keep the skill working.

## How to use this with an agent

Point an agent at this page and ask it to update a skill. The tables in this guide list only the names that changed, so they are the reference to work from. Any tool or action not listed here kept its name and needs no change, which means an agent can leave unlisted calls untouched.

Work through a skill in this order:

1. Find every Webflow tool and action name the skill refers to.
2. Look each one up in the tables below. If it appears in an "earlier" column, replace it with the current name.
3. Watch for relocations. An action can keep its name but move to a different tool, so the tool named in the call has to change even when the action name stays the same.
4. Check the behavioral changes near the end. Some updates affect how a skill runs, not just what it is called, and a find-and-replace pass alone will not catch them.

## Record the version each skill was built against

When you create or update a skill, record which Webflow MCP version it was built against, somewhere durable in the skill itself. The next time the server changes, that note tells you, or an agent, exactly which part of a guide like this one to apply, turning the update into a lookup rather than a guess about what the skill was written for.

The whole of this guide is organized around that one question. A skill built against v2.0.1 or v2.1 needs no changes today, a skill built against v2.0 needs only a few, and a skill built against v1.3 needs the most. Without a recorded version, working that out means inspecting the tool and action names the skill calls and inferring the version from them, which is slower and less certain. With it, you go straight to the matching section.

Record it in whatever form fits how you keep skills. What matters is that the version is written down, stays with the skill, and is easy to find later. The exact wording and location are up to you.

## v1.3 to v2.0 changes

v2.0 was a major release. Nearly all of the tools that previously required a Designer session via the Webflow MCP Bridge app were rebuilt to run without it. These rebuilt tools are headless, meaning they work directly through Webflow's Data API and an agent can call them from a server or script with no Designer session open. As part of that work, several tools gained a data\_ prefix, a few actions were renamed, and everything to do with a Designer session like selecting elements or moving around the canvas was gathered into a single new tool called designer\_tool.

### Tools renamed, actions unchanged

These tools gained the data\_ prefix and became headless. Only the tool name changed; every action name inside them stayed the same.

| **Earlier (v1.3)** |    **Updated (v2.0)**    |
| :----------------: | :----------------------: |
|  element\_builder  |  data\_element\_builder  |
| component\_builder | data\_component\_builder |
|   whtml\_builder   |   data\_whtml\_builder   |
|     style\_tool    |     data\_style\_tool    |

### Tools that split into more than one tool

Several v1.3 tools were broken apart. The work that could run without the Designer moved into a data\_ tool, and anything that acts on the live canvas moved into the new designer\_tool.

| **Earlier (v1.3) tool** |                                                            **Split into (v2.0)**                                                            |
| :---------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: |
|      de\_page\_tool     | data\_pages\_tool (page creation), plus designer\_tool (reading the current page, mode, and branch; switching pages; creating page folders) |
|   de\_component\_tool   |    data\_component\_tool (component, prop, variant, and instance operations), plus designer\_tool (canvas and component-view navigation)    |
|      element\_tool      |                             data\_element\_tool (most element editing), plus designer\_tool (element selection)                             |
|       asset\_tool       |                data\_assets\_tool (asset and folder management), plus asset\_tool (only upload\_image\_by\_url stayed behind)               |
|      variable\_tool     |    Removed. Its work moved to data\_variable\_tool (variables, collections, and modes) and data\_style\_tool (per-style variable modes).    |

### Actions moved into designer\_tool

These actions kept their names but moved out of their v1.3 tool and into designer\_tool. Update the tool named in the call, even though the action name is the same.

|             **Action**             | **Earlier (v1.3) tool** | **Updated (v2.0) tool** |
| :--------------------------------: | :---------------------: | :---------------------: |
| check\_if\_inside\_component\_view |   de\_component\_tool   |      designer\_tool     |
|       close\_component\_view       |   de\_component\_tool   |      designer\_tool     |
|        open\_component\_view       |   de\_component\_tool   |      designer\_tool     |
|            open\_canvas            |   de\_component\_tool   |      designer\_tool     |
|       get\_current\_component      |   de\_component\_tool   |      designer\_tool     |
|         get\_current\_page         |      de\_page\_tool     |      designer\_tool     |
|         get\_current\_mode         |      de\_page\_tool     |      designer\_tool     |
|      get\_current\_branch\_id      |      de\_page\_tool     |      designer\_tool     |
|    get\_branch\_parent\_page\_id   |      de\_page\_tool     |      designer\_tool     |
|            switch\_page            |      de\_page\_tool     |      designer\_tool     |
|           list\_branches           |      de\_page\_tool     |      designer\_tool     |
|        create\_page\_folder        |      de\_page\_tool     |      designer\_tool     |
|           select\_element          |      element\_tool      |      designer\_tool     |
|       get\_selected\_element       |      element\_tool      |      designer\_tool     |

### Actions renamed

|      **Earlier (v1.3) tool.action**      |      **Updated (v2.0) tool.action**      |                                                         **Note**                                                        |
| :--------------------------------------: | :--------------------------------------: | :---------------------------------------------------------------------------------------------------------------------: |
| element\_tool.add\_or\_update\_attribute |    data\_element\_tool.set\_attributes   |                                                         Renamed.                                                        |
|           element\_tool.set\_id          |     data\_element\_tool.set\_dom\_id     |                                      Renamed. Handles a static value or a binding.                                      |
|    element\_tool.update\_id\_attribute   |     data\_element\_tool.set\_dom\_id     | Folded into set\_dom\_id, which now covers both the static and the bound case. The separate static-only action is gone. |
|        asset\_tool.create\_folder        | data\_assets\_tool.create\_asset\_folder |                                          Renamed and moved to a different tool.                                         |

### One action replaced by several

The old single call that returned assets and folders together no longer exists. Use the separate data\_assets\_tool actions instead.

|             **Earlier (v1.3)**             |                                     **Updated (v2.0)**                                    |
| :----------------------------------------: | :---------------------------------------------------------------------------------------: |
| asset\_tool.get\_all\_assets\_and\_folders | data\_assets\_tool.list\_assets, list\_asset\_folders, get\_asset, and get\_asset\_folder |

### Renamed and given a different input

This one changes more than the name, so a find-and-replace pass alone will produce a call that fails.

|        **Earlier (v1.3)**        |           **Updated (v2.0)**           |                                                                                        **What changed**                                                                                        |
| :------------------------------: | :------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| get\_image\_preview (input: url) | get\_asset\_preview (input: asset\_id) | The tool and action were renamed, and the input changed. The earlier call took an image URL; the current one takes an asset ID. A skill that passed a URL has to look up the asset's ID first. |

### Unchanged in this release

These tools kept both their names and their existing action names. Some gained new actions, but nothing was renamed: data\_sites\_tool, data\_pages\_tool, data\_cms\_tool, data\_comments\_tool, data\_scripts\_tool, data\_webhook\_tool, data\_localization\_tool, data\_enterprise\_tool, element\_snapshot\_tool, ask\_webflow\_ai, webflow\_guide\_tool, and get\_more\_tools. New tools also appeared (data\_analyze\_tool, data\_sitemap\_tool, data\_fonts\_tool, data\_forms\_tool, and data\_agent\_instructions\_tool), but new tools do not affect skills written against the earlier version.

## v2.0 to v2.0.1 changes

v2.0.1 was a minor release. No tools were renamed and nothing became headless that was not already. Instead, two of the larger tools were split so that related actions live in their own focused tools. In every split below the action names stayed the same; only the tool that holds them changed, so these are relocations to update rather than renames.

### data\_element\_tool split

Element settings and data bindings moved out of data\_element\_tool into a new tool, data\_element\_settings\_tool. A binding is a link from an element to a data source, such as a content field, so the element shows that data instead of a fixed value.

|       **Action**       | **Earlier (v2.0) tool** |   **Updated (v2.0.1) tool**   |
| :--------------------: | :---------------------: | :---------------------------: |
|      get\_settings     |   data\_element\_tool   | data\_element\_settings\_tool |
|      set\_settings     |   data\_element\_tool   | data\_element\_settings\_tool |
| get\_bindable\_sources |   data\_element\_tool   | data\_element\_settings\_tool |
|        set\_tag        |   data\_element\_tool   | data\_element\_settings\_tool |
|     set\_visibility    |   data\_element\_tool   | data\_element\_settings\_tool |
|      set\_dom\_id      |   data\_element\_tool   | data\_element\_settings\_tool |

Everything else in data\_element\_tool stayed where it was, including the attribute actions get\_attributes, set\_attributes, and remove\_attribute.

### data\_component\_tool split

Props and variants moved out of data\_component\_tool into two new tools. A prop is a configurable input on a component, and a variant is a saved alternate version of a component, such as a different size or state.

|               **Action**               | **Earlier (v2.0) tool** |    **Updated (v2.0.1) tool**    |
| :------------------------------------: | :---------------------: | :-----------------------------: |
|              create\_prop              |  data\_component\_tool  |   data\_component\_props\_tool  |
|              update\_prop              |  data\_component\_tool  |   data\_component\_props\_tool  |
|              remove\_prop              |  data\_component\_tool  |   data\_component\_props\_tool  |
|     get\_component\_instance\_props    |  data\_component\_tool  |   data\_component\_props\_tool  |
| set\_component\_instance\_prop\_values |  data\_component\_tool  |   data\_component\_props\_tool  |
|        reset\_all\_props\_value        |  data\_component\_tool  |   data\_component\_props\_tool  |
|             create\_variant            |  data\_component\_tool  | data\_component\_variants\_tool |
|             delete\_variant            |  data\_component\_tool  | data\_component\_variants\_tool |
|           duplicate\_variant           |  data\_component\_tool  | data\_component\_variants\_tool |
|            reorder\_variants           |  data\_component\_tool  | data\_component\_variants\_tool |
|           set\_variant\_name           |  data\_component\_tool  | data\_component\_variants\_tool |
|         get\_variant\_settings         |  data\_component\_tool  | data\_component\_variants\_tool |
|          get\_variant\_styles          |  data\_component\_tool  | data\_component\_variants\_tool |
|          set\_variant\_styles          |  data\_component\_tool  | data\_component\_variants\_tool |

The remaining data\_component\_tool actions stayed put: getting and querying components, creating a blank component, duplicating, transforming an element into a component, inserting and unlinking instances, updating metadata, and unregistering a component.

## v2.0.1 to v2.1 changes

v2.1 is additive. No tool or action was renamed or relocated, so a skill written against v2.0.1 keeps resolving with no changes.

Three new tools appeared: `data_interactions_tool` (Interactions with GSAP), `data_apps_tool` (Webflow Cloud), and `data_campaigns_tool` (Campaigns). Existing tools also gained new actions: `data_pages_tool` (the rest of the branch lifecycle: `update_branch`, `merge_branch`, `publish_branch`, `get_branch_conflicts`), `data_cms_tool` (`get_collection_field_groups`, `update_collection_field_groups`), and `data_agent_instructions_tool` (`generate_instruction`). As with the new tools that appeared in v2.0, new tools and new actions do not affect skills written against an earlier version — there is nothing to update.

## Consolidated old-to-current lookup

Use this section to update a skill in a single pass, whichever version it was written against. It lists only names that changed, and where an action moved more than once (for example from v1.3 to v2.0 and again to v2.0.1) it shows the current destination directly, so you do not have to trace it through the middle release. Anything not listed here kept its name.

### Tools

| **Earlier (v1.3 or v2.0)** | **Current**                                                                                                                                         |
| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |
| element\_builder           | data\_element\_builder                                                                                                                              |
| component\_builder         | data\_component\_builder                                                                                                                            |
| whtml\_builder             | data\_whtml\_builder                                                                                                                                |
| style\_tool                | data\_style\_tool                                                                                                                                   |
| get\_image\_preview        | get\_asset\_preview (input changed from url to asset\_id)                                                                                           |
| variable\_tool             | Removed. Use data\_variable\_tool, and data\_style\_tool for per-style variable modes.                                                              |
| de\_page\_tool             | Removed. Actions split across data\_pages\_tool and designer\_tool (see below).                                                                     |
| de\_component\_tool        | Removed. Actions split across data\_component\_tool, data\_component\_props\_tool, data\_component\_variants\_tool, and designer\_tool (see below). |
| element\_tool              | Removed. Actions split across data\_element\_tool, data\_element\_settings\_tool, and designer\_tool (see below).                                   |
| asset\_tool                | Reduced to upload\_image\_by\_url. Other actions moved to data\_assets\_tool (see below).                                                           |

### Actions from tools that split, coming from v1.3

**element\_tool.** Most editing actions kept their names under data\_element\_tool. The exceptions are below.

| **Earlier (v1.3) action**  | **Current tool.action**                              |
| :------------------------- | :--------------------------------------------------- |
| add\_or\_update\_attribute | data\_element\_tool.set\_attributes                  |
| get\_settings              | data\_element\_settings\_tool.get\_settings          |
| set\_settings              | data\_element\_settings\_tool.set\_settings          |
| get\_bindable\_sources     | data\_element\_settings\_tool.get\_bindable\_sources |
| set\_tag                   | data\_element\_settings\_tool.set\_tag               |
| set\_visibility            | data\_element\_settings\_tool.set\_visibility        |
| set\_id                    | data\_element\_settings\_tool.set\_dom\_id           |
| update\_id\_attribute      | data\_element\_settings\_tool.set\_dom\_id           |
| select\_element            | designer\_tool.select\_element                       |
| get\_selected\_element     | designer\_tool.get\_selected\_element                |

**de\_component\_tool.** Core component actions kept their names under data\_component\_tool. The exceptions are below.

| **Earlier (v1.3) action group**                                                                                                                                                   | **Current tool**                                    |
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------- |
| Prop actions (create\_prop, update\_prop, remove\_prop, get\_component\_instance\_props, set\_component\_instance\_prop\_values, reset\_all\_props\_value)                        | data\_component\_props\_tool (same action names)    |
| Variant actions (create\_variant, delete\_variant, duplicate\_variant, reorder\_variants, set\_variant\_name, get\_variant\_settings, get\_variant\_styles, set\_variant\_styles) | data\_component\_variants\_tool (same action names) |
| Navigation actions (check\_if\_inside\_component\_view, close\_component\_view, open\_component\_view, open\_canvas, get\_current\_component)                                     | designer\_tool (same action names)                  |

**de\_page\_tool.** Only create\_page moved to data\_pages\_tool. Everything else moved to designer\_tool with the same action names: create\_page\_folder, get\_current\_page, get\_current\_mode, get\_current\_branch\_id, get\_branch\_parent\_page\_id, switch\_page, and list\_branches.

**asset\_tool.** upload\_image\_by\_url stayed in asset\_tool and still requires a Designer session through the Bridge app. The rest moved to data\_assets\_tool, as shown below.

| **Earlier (v1.3) action**      | **Current tool.action**                                                                   |
| :----------------------------- | :---------------------------------------------------------------------------------------- |
| create\_folder                 | data\_assets\_tool.create\_asset\_folder                                                  |
| update\_asset                  | data\_assets\_tool.update\_asset                                                          |
| get\_all\_assets\_and\_folders | data\_assets\_tool.list\_assets, list\_asset\_folders, get\_asset, and get\_asset\_folder |

**variable\_tool.** The variable, collection, and mode actions moved to data\_variable\_tool with the same names. The four per-style variable-mode actions (get\_style\_variable\_modes, set\_style\_variable\_mode, remove\_style\_variable\_mode, remove\_all\_style\_variable\_modes) moved to data\_style\_tool.

### Actions that moved again, coming from v2.0

If a skill was written against v2.0, these are the only relocations to apply. The action names did not change; only the tool did.

| **Earlier (v2.0) tool.action**             | **Current tool**                |
| :----------------------------------------- | :------------------------------ |
| data\_element\_tool.get\_settings          | data\_element\_settings\_tool   |
| data\_element\_tool.set\_settings          | data\_element\_settings\_tool   |
| data\_element\_tool.get\_bindable\_sources | data\_element\_settings\_tool   |
| data\_element\_tool.set\_tag               | data\_element\_settings\_tool   |
| data\_element\_tool.set\_visibility        | data\_element\_settings\_tool   |
| data\_element\_tool.set\_dom\_id           | data\_element\_settings\_tool   |
| data\_component\_tool prop actions         | data\_component\_props\_tool    |
| data\_component\_tool variant actions      | data\_component\_variants\_tool |

## Behavioral changes to check

Two of the updates change how a skill behaves, not just what a call is named. A find-and-replace pass will not catch either one, so check for both by hand after you have updated the names. These are the two cases mentioned at the start where renaming alone is not enough to keep a skill working.

### The Designer session requirement changed

In v1.3, editing elements, components, styles, and variables required an open Designer session through the Webflow MCP Bridge app. From v2.0 onward, the rebuilt headless tools (the data\_ tools) do this work without a session, running directly through Webflow's Data API. If a skill opens or waits for a Designer session only so that it can edit content, that step is no longer needed and can be removed.

A few things still require a Designer session through the Bridge app: selecting an element and moving around the canvas (now in designer\_tool), uploading an image by URL (asset\_tool.upload\_image\_by\_url), and capturing an element snapshot (element\_snapshot\_tool). A skill that relies on any of these still needs the session.

### get\_asset\_preview takes an asset ID, not a URL

As noted in the v1.3 to v2.0 tables, the earlier get\_image\_preview accepted an image URL, and its replacement get\_asset\_preview accepts an asset ID instead. A skill that previewed an image by URL has to first look up that asset's ID, for example with data\_assets\_tool.list\_assets, and pass the ID. This changes what the skill has to supply, so updating the name alone will leave the call broken.

## Summary at a glance

Three releases are covered here, and the amount of work to update a skill depends on which one it was written against.

**Written against v1.3.** Expect the most changes. v2.0 was a major release that rebuilt nearly all of the Designer-session tools to run headlessly, added the data\_ prefix to many of them, renamed a few actions, and gathered element selection and canvas navigation into the new designer\_tool. Several v1.3 tools were split apart, and one tool (variable\_tool) was removed, its work moved to data\_variable\_tool and data\_style\_tool. Work through the v1.3 to v2.0 tables, then apply the v2.0 to v2.0.1 changes on top, or use the consolidated lookup to jump straight to the current names in one pass.

**Written against v2.0.** Expect only a few changes. v2.0.1 was a minor release that split element settings into data\_element\_settings\_tool and split component props and variants into data\_component\_props\_tool and data\_component\_variants\_tool. The action names did not change; only the tool holding them did. The "Actions that moved again, coming from v2.0" table lists every one.

**Written against v2.0.1 or v2.1.** Nothing to change. v2.1 only added new tools and actions; it renamed or relocated nothing. These are the current names.

Two updates need a manual check regardless of version, because renaming alone will not fix them: the Designer session requirement (most editing no longer needs a session, though selection, canvas navigation, image upload by URL, and snapshots still do) and get\_asset\_preview (which now takes an asset ID rather than an image URL). Both are covered in the behavioral changes section above.

## Resources

#### [Skills](/mcp/reference/skills)

Browse available skills and learn how to install and update them.

#### [Getting started](/mcp/reference/getting-started)

Learn how to set up and configure the Webflow MCP server.