Skip to main content
Glama
webflow

Webflow

Official
by webflow

Webflow's MCP server

A Node.js server implementing Model Context Protocol (MCP) for Webflow using the Webflow JavaScript SDK. Enable AI agents to interact with Webflow APIs. Learn more about Webflow's Data API in the developer documentation.

npm shield Webflow

Prerequisites

Related MCP server: Webflow MCP Server

🚀 Remote installation

Get started by installing Webflow's remote MCP server. The remote server uses OAuth to authenticate with your Webflow sites, and a companion app that syncs your live canvas with your AI agent.

Requirements

  • Node.js 22.3.0 or higher

Note: The MCP server currently supports Node.js 22.3.0 or higher. If you run into version issues, see the Node.js compatibility guidance.

Cursor

Add MCP server to Cursor

  1. Go to Settings → Cursor Settings → MCP & Integrations.

  2. Under MCP Tools, click + New MCP Server.

  3. Paste the following configuration into .cursor/mcp.json (or add the webflow part to your existing configuration):

{
  "mcpServers": {
    "webflow": {
      "url": "https://mcp.webflow.com/sse"
    }
  }
}

Tip: You can create a project-level mcp.json to avoid repeated auth prompts across multiple Cursor windows. See Cursor’s docs on configuration locations.

  1. Save and close the file. Cursor will automatically open an OAuth login page where you can authorize Webflow sites to use with the MCP server.

Open the Webflow Designer

  • Open your site in the Webflow Designer, or ask your AI agent:

Give me a link to open <MY_SITE_NAME> in the Webflow Designer

Open the MCP Webflow App

  1. In the Designer, open the Apps panel (press E).

  2. Launch your published "Webflow MCP Bridge App".

  3. Wait for the app to connect to the MCP server.

Write your first prompt

Try these in your AI chat:

Analyze my last 5 blog posts and suggest 3 new topic ideas with SEO keywords
Find older blog posts that mention similar topics and add internal links to my latest post
Create a hero section card on my home page with a CTA button and responsive design

Claude desktop

Add MCP server to Claude desktop

  1. Enable developer mode: Help → Troubleshooting → Enable Developer Mode.

  2. Open developer settings: File → Settings → Developer.

  3. Click Get Started or edit the configuration to open claude_desktop_config.json and add:

{
  "mcpServers": {
    "webflow": {
      "command": "npx",
      "args": ["mcp-remote", "https://mcp.webflow.com/sse"]
    }
  }
}
  1. Save and restart Claude Desktop (Cmd/Ctrl + R). An OAuth login page will open to authorize sites.

Open the Webflow Designer

  • Open your site in the Webflow Designer, or ask your AI agent:

Give me a link to open <MY_SITE_NAME> in the Webflow Designer

Open the MCP Webflow App

  1. In the Designer, open the Apps panel (press E).

  2. Launch your published "Webflow MCP Bridge App".

  3. Wait for the app to connect to the MCP server.

Write your first prompt

Analyze my last 5 blog posts and suggest 3 new topic ideas with SEO keywords
Find older blog posts that mention similar topics and add internal links to my latest post
Create a hero section card on my home page with a CTA button and responsive design

Reset your OAuth token

To reset your OAuth token, run the following command in your terminal.

rm -rf ~/.mcp-auth

Node.js compatibility

Please see the Node.js compatibility guidance on Webflow's developer docs.


Local Installation

You can also configure the MCP server to run locally. This requires:

  • Creating and registering your own MCP Bridge App in a Webflow workspace with Admin permissions

  • Configuring your AI client to start the local MCP server with a Webflow API token

1. Create and publish the MCP bridge app

Before connecting the local MCP server to your AI client, you must create and publish the Webflow MCP Bridge App in your workspace.

Steps

  1. Register a Webflow App

    • Go to your Webflow Workspace and register a new app.

    • Follow the official guide: Register an App.

  2. Get the MCP Bridge App code

    • Option A: Download the latest bundle.zip from the releases page.

    • Option B: Clone the repository and build it:

      git clone https://github.com/virat21/webflow-mcp-bridge-app
      cd webflow-mcp-bridge-app
      • Then build the project following the repository instructions.

  3. Publish the Designer Extension

    • Go to Webflow Dashboard → Workspace settings → Apps & Integrations → Develop → Your App.

    • Click “Publish Extension Version”.

    • Upload your built bundle.zip file.

  4. Open the App in Designer

    • Once published, open the MCP Bridge App from the Designer → Apps panel in a site within your workspace.

2. Configure your AI client

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "webflow": {
      "command": "npx",
      "args": ["-y", "webflow-mcp-server@latest"],
      "env": {
        "WEBFLOW_TOKEN": "<YOUR_WEBFLOW_TOKEN>"
      }
    }
  }
}

Claude desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "webflow": {
      "command": "npx",
      "args": ["-y", "webflow-mcp-server@latest"],
      "env": {
        "WEBFLOW_TOKEN": "<YOUR_WEBFLOW_TOKEN>"
      }
    }
  }
}

3. Use the MCP server with the Webflow Designer

  • Open your site in the Webflow Designer.

  • Open the Apps panel (press E) and launch your published “Webflow MCP Bridge App”.

  • Wait for the app to connect to the MCP server, then use tools from your AI client.

  • If the Bridge App prompts for a local connection URL, call the get_designer_app_connection_info tool from your AI client and paste the returned http://localhost:<port> URL.

Optional: Run locally via shell

WEBFLOW_TOKEN="<YOUR_WEBFLOW_TOKEN>" npx -y webflow-mcp-server@latest
# PowerShell
$env:WEBFLOW_TOKEN="<YOUR_WEBFLOW_TOKEN>"
npx -y webflow-mcp-server@latest

Reset your OAuth Token

To reset your OAuth token, run the following command in your terminal.

rm -rf ~/.mcp-auth

Node.js compatibility

Please see the Node.js compatibility guidance on Webflow's developer docs.

âť“ Troubleshooting

If you are having issues starting the server in your MCP client e.g. Cursor or Claude Desktop, please try the following.

Make sure you have a valid Webflow API token

  1. Go to Webflow's API Playground, log in and generate a token, then copy the token from the Request Generator

  2. Replace YOUR_WEBFLOW_TOKEN in your MCP client configuration with the token you copied

  3. Save and restart your MCP client

Make sure you have the Node and NPM installed

Run the following commands to confirm you have Node and NPM installed:

node -v
npm -v

Clear your NPM cache

Sometimes clearing your NPM cache can resolve issues with npx.

npm cache clean --force

Fix NPM global package permissions

If npm -v doesn't work for you but sudo npm -v does, you may need to fix NPM global package permissions. See the official NPM docs for more information.

Note: if you are making changes to your shell configuration, you may need to restart your shell for changes to take effect.

🛠️ Available tools

See the ./tools directory for a list of available tools

🗣️ Prompts & resources

This implementation doesn't include prompts or resources from the MCP specification. However, this may change in the future when there is broader support across popular MCP clients.

đź“„ Webflow developer resources

⚠️ Known limitations

Static page content updates

The pages_update_static_content endpoint currently only supports updates to localized static pages in secondary locales. Updates to static content in the default locale aren't supported and will result in errors.

Available Tools

22 tools
ask_webflow_aiAsk Webflow AIA
Read-only
Inspect

Ask Webflow AI about anything related to Webflow API.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe message to ask Webflow AI about.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds no additional behavioral context beyond these annotations, which is acceptable but does not enhance transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that is front-loaded and contains no redundant information, making it highly concise.

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?

The description is sufficient for a simple Q&A tool with one parameter and annotations. It could mention the nature of the AI response, but the current text is adequate given the tool's simplicity.

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

Parameters3/5

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

The input schema covers the single parameter with a clear description. The tool description adds no extra semantic meaning beyond what the schema provides, earning the baseline score.

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?

The description clearly states the verb 'ask' and the resource 'Webflow AI', specifying the scope 'anything related to Webflow API'. It effectively distinguishes this Q&A tool from sibling tools that focus on specific functionalities.

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

Usage Guidelines3/5

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

The description implies use for asking questions about Webflow API but does not explicitly state when to use this tool versus alternatives, nor does it provide when-not guidance.

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

asset_toolDesigner Asset ToolCInspect

Designer Tool - Asset tool to perform actions like create folder, get all assets and folders, update assets and folders

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and openWorldHint=true. Description adds no extra behavioral context (e.g., side effects, idempotency, permission needs). Fails to clarify what the 'open world' side effects are.

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

Conciseness3/5

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

Description is one sentence, concise but vaguely worded with 'perform actions like'. Front-loaded with 'Designer Tool -', which is not essential. Could be more precise but is not overly verbose.

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

Completeness2/5

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

Given the tool's complexity (multiple actions via an array), the description is insufficient. No output schema, no explanation of action ordering or response format. The description does not tie the structured input schema to a coherent workflow.

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

Parameters2/5

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

Schema description coverage is 50% but the tool description does not add meaning beyond what the schema provides. siteId has a detailed schema description, but actions and sub-properties are not augmented by the tool description. No compensation for missing schema documentation.

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

Purpose4/5

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

Description states it's an asset tool for actions like create folder, get all assets/folders, update. Clearly indicates the resource (assets) and actions. Distinguishes from siblings like style_tool or component_builder.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., data_cms_tool). No prerequisites or exclusions mentioned. The description simply lists actions without usage context.

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

component_builderAInspect

Designer Tool - Component builder to insert component instances on the current active page. Supports inserting into an element (as a child) or into a component instance's slot. Use insert_in_element to add a component inside a container/div/section. Use insert_in_slot to add a component inside a specific slot of an existing component instance.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

A4.1/5.0
Behavior4/5

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

Description adds behavioral context beyond annotations (modifies active page, supports two insertion modes). No contradiction with annotations (readOnlyHint=false, openWorldHint=true).

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

Conciseness5/5

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

Two concise sentences front-loading purpose and usage distinction. No unnecessary words. Highly efficient.

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

Completeness3/5

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

Covers core functionality and action modes. Lacks detail on component_schema usage, error conditions, or prerequisites (e.g., active page requirement). No output schema, so return values not mentioned. Adequate for a moderately complex tool.

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

Parameters3/5

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

Schema coverage is 50%, description does not add much parameter detail beyond schema. Implicitly references parent_element_id and slot_name but does not explain complex component_schema object. Adequate but could be improved.

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?

Description clearly states it inserts component instances on the current active page, with specific verbs and resource. It distinguishes two modes (insert_in_element, insert_in_slot), differentiating from sibling tools.

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

Usage Guidelines4/5

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

Explicitly states when to use insert_in_element vs insert_in_slot. Provides clear context for each action type. Lacks explicit comparison with siblings or when not to use.

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

data_cms_toolData CMS ToolCInspect

Data tool - CMS tool to perform actions like get collection list, get collection details, create collection, create collection fields (static/option/reference), update collection field, list collection items, create collection items, update collection items, publish collection items, and delete collection items

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already show it is not read-only; the description's list of mutating actions (create, update, delete) aligns with that. No additional behavioral traits (e.g., permission requirements, side effects) are disclosed beyond what the schema provides.

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

Conciseness2/5

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

The description is a single run-on sentence with a long list of actions, making it hard to parse quickly. It could be split into multiple sentences or broken down for clarity. It is not concise.

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

Completeness2/5

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

Given the complexity of the input schema (multiple nested actions), the description fails to provide an overview of how actions are organized, typical usage patterns, or how to sequence operations. It is incomplete for effective agent guidance.

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

Parameters2/5

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

The description does not explain the 'actions' parameter structure or how to invoke specific actions. It merely lists action names, leaving the agent to rely entirely on the schema, which is verbose but lacks high-level guidance.

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

Purpose4/5

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

The description lists specific CMS actions (get collection list, create collection, etc.), making it clear that the tool manages CMS collections and items. It distinguishes from sibling tools like data_comments_tool by focusing on CMS operations. However, it lacks a concise verb-resource summary.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other data tools. The description merely enumerates actions without contextual hints about selection criteria, prerequisites, or alternatives. The agent must infer usage from the tool name and action list.

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

data_comments_toolData Comments ToolA
Read-only
Inspect

Data tool - A comment in Webflow is user feedback attached to a specific element or page inside the Designer, stored as a top-level thread with optional replies. Each comment includes author info, timestamps, content, resolved state, and design-context metadata like page location and breakpoint. Use this tool to inspect feedback discussions across the site and understand where and why they were left.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYesThe actions to perform on the comments.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds context about the data included (author info, timestamps, resolved state, design-context metadata), which goes beyond annotations. No behavioral contradictions.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the tool's role, and every sentence adds value. No wasted words.

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?

The lack of output schema means the description must convey return value info. It describes the comment structure (author, timestamps, content, resolved state, design-context metadata) but could mention the output format for list vs get operations. Still, it provides adequate context for a read-only tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents the 'actions' parameter and its nested actions. The description provides conceptual context but does not add new meaning to the parameters beyond what the schema provides.

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?

The description clearly states the tool is for inspecting comment feedback discussions in Webflow Designer, explaining what a comment is and its metadata. It distinguishes itself from sibling tools like data_cms_tool and data_pages_tool by focusing specifically on comments.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this tool to inspect feedback discussions' and explains the context (page location, breakpoint). It does not mention when not to use it or provide alternatives, but the context is clear enough for an agent to decide.

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

data_components_toolData Components ToolCInspect

Data tool - Components tool to perform actions like list components, get component content, update component content, get component properties, and update component properties

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false (writes possible) and openWorldHint=true, but the description adds no behavioral context such as side effects, permissions, or state changes beyond listing actions.

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

Conciseness3/5

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

The description is a single sentence but somewhat repetitive ('Data tool - Components tool'). It front-loads the purpose but could be more concise without losing meaning.

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

Completeness2/5

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

Given the complex nested schema with multiple actions, the description is too sparse. It does not explain how to structure the actions array, required site_id, or output expectations.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the top-level 'actions' property lacks description. The description does not clarify parameter usage or the multi-action structure that is central to the tool.

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

Purpose3/5

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

The description states it's a 'Components tool' and lists actions (list, get, update) but is vague about the specific domain (Webflow components). It does not differentiate from siblings like 'component_builder' or 'data_cms_tool'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or exclusions.

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

data_enterprise_toolData Enterprise ToolCInspect

Data tool - Enterprise tool to perform actions like manage 301 redirects, manage robots.txt and more. This tool only works if User's workspace plan is Enterprise or higher, else tool will return an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYesThe actions to perform on the enterprise tool.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations provide readOnlyHint: false, so the description does not need to restate that. The description adds the enterprise requirement, but fails to disclose that multiple actions can be batched in one call, that actions are independent, or that destructive operations exist (e.g., deleting redirects). These behavioral traits are left to the schema.

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?

Two sentences with no fluff. The first sentence introduces the tool generically, the second adds a critical prerequisite. Could be slightly more detailed for such a complex tool, but remains efficient and front-loaded.

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

Completeness2/5

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

Given the tool's complexity (multiple sub-actions, batch behavior, enterprise prerequisite), the description is insufficient. It does not summarize the capabilties or explain the batched nature of the actions parameter. Even though the schema is detailed, the description should provide a high-level overview.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for each nested parameter. The tool description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose3/5

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

The description states 'perform actions like manage 301 redirects, manage robots.txt and more', providing a vague but non-tautological overview. It lacks specificity about being a batched tool for enterprise site actions, and does not differentiate from sibling tools like data_cms_tool or data_pages_tool.

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

Usage Guidelines2/5

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

The description includes a prerequisite ('only works if User's workspace plan is Enterprise or higher'), but gives no guidance on when to use this tool versus alternatives. It does not mention that non-enterprise users should use other data tools or how to handle enterprise-level tasks.

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

data_pages_toolData Pages ToolCInspect

Data tool - Pages tool to perform actions like list pages, get page metadata, update page settings, get page content, and update static content

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate mutation (readOnlyHint=false); description mentions update actions but adds no behavioral context like auth needs, idempotency, or side effects.

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?

Single sentence efficiently lists actions; could be improved with bullet points or structured format but is not wasteful.

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

Completeness2/5

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

Given the complexity (5 sub-actions, nested parameters), the description is too brief. It omits batching capability, pagination hints, and localization usage beyond what schema provides.

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

Parameters3/5

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

The input schema contains detailed descriptions for all sub-action parameters, so the tool description does not need to add parameter info. Baseline 3 is appropriate.

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

Purpose4/5

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

The description lists specific actions (list pages, get metadata, etc.) making the purpose clear, but does not differentiate from sibling tools like de_page_tool.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives; no prerequisites or context provided.

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

data_scripts_toolData Scripts ToolCInspect

Data tool - Scripts tool to perform actions like list registered scripts, list applied scripts, add inline site script, and delete all site scripts

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and openWorldHint=true. The description adds no behavioral details beyond stating actions, such as the destructive nature of deletions or replacement behavior of upsert. It does not contradict annotations, but provides minimal added context.

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

Conciseness3/5

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

The description is a single sentence, concise but not well-structured. It front-loads the tool's nature but lists examples incompletely, and does not prioritize key information. It is adequate but could be more organized.

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

Completeness2/5

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

Given the tool's complexity (multiple actions for both sites and pages) and lack of output schema, the description is insufficient. It omits page-related actions and does not explain the workflow between actions, leaving significant gaps for an agent.

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

Parameters2/5

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

The description does not describe the 'actions' parameter or its sub-properties, despite the schema having detailed descriptions. With 0% schema description coverage, the description fails to compensate, offering no added meaning beyond the schema.

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

Purpose3/5

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

The description states it is a scripts tool that performs actions like listing and adding scripts, but it does not cover all actions in the schema (e.g., page script actions) and uses 'like', making it vague. It distinguishes from other tools by its name but lacks specificity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus sibling tools such as data_cms_tool or other data tools. The description only labels it as a 'Data tool - Scripts tool' without any context on alternatives or prerequisites.

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

data_sites_toolData Sites ToolCInspect

Data tool - Sites tool to perform actions like list sites, get site details, and publish sites

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations indicate non-read-only and open-world hints, and description mentions 'publish' implying mutation. However, no details on side effects, permissions, or irreversible consequences are given.

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?

Single sentence efficiently lists key actions without wordiness. Could benefit from slightly more structure but remains concise.

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

Completeness2/5

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

Description lacks context on return values, error handling, or when to use specific actions. With no output schema, more explanatory text is needed for complete understanding.

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

Parameters3/5

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

Schema descriptions are comprehensive for each action, covering required fields and purposes. Baseline of 3 is appropriate as tool description adds no parameter information beyond schema.

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

Purpose3/5

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

Description lists three actions (list, get, publish) but fails to clearly define the tool's overarching purpose or distinguish it from sibling tools like data_pages_tool. The phrase 'Data tool - Sites tool' is redundant and vague.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites or exclusions provided. The description simply enumerates actions without context.

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

data_webhook_toolData Webhook ToolBInspect

Data tool - Webhook tool to perform actions like list webhooks, create webhooks, get webhook details, and delete webhooks for a Webflow site.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false and openWorldHint=true, which the description aligns with by mentioning mutations (create, delete). However, the description adds no additional behavioral context, such as side effects, rate limits, or irreversibility, beyond what annotations already imply.

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

Conciseness3/5

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

The description is very concise (one sentence, 20 words) but lacks necessary detail. It front-loads the purpose but is under-informative, sacrificing completeness for brevity.

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

Completeness2/5

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

Given the tool's complexity (multiple actions, nested schema), the description is overly sparse. It does not explain the action selection mechanism, site_id requirement, or trigger types, forcing the agent to rely solely on the schema.

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

Parameters2/5

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

The tool description (0% schema coverage) does not explain the 'actions' parameter or its nested structure. While the input schema contains detailed descriptions, the description itself adds no semantic value to the parameters.

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?

The description clearly states the tool's purpose: performing webhook actions (list, create, get, delete) for a Webflow site. It uses a specific verb ('perform') and identifies the resource ('webhooks for a Webflow site'), distinguishing it from sibling data tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It merely lists actions without contextualizing usage.

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

de_component_toolDesigner Component ToolCInspect

Designer tool - Component tool to perform actions like create component instances, get all components and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations indicate readOnlyHint: false and openWorldHint: true, but the description does not elaborate on destructive capabilities (e.g., unregister is marked dangerous in schema but not in description). Lacks behavioral context beyond what annotations already provide.

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

Conciseness2/5

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

The description is short but imprecise. It uses vague phrasing like 'and more' without adding clarity. Does not earn its place.

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

Completeness2/5

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

Given the tool's complexity (many actions, no output schema), the description fails to explain prerequisites, flow of actions, or return behavior. The schema provides details, but the high-level guidance is missing.

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

Parameters2/5

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

Schema description coverage is 50%; the description adds no meaning to parameters. Despite schema having some descriptions, the tool description is silent on how parameters relate to actions.

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

Purpose3/5

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

The description states it can perform actions like creating component instances and getting components, but it is vague ('and more') and does not clearly define the scope or differentiate from sibling tools like 'component_builder' or 'data_components_tool'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Sibling tools exist but no differentiation or context for selection.

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

de_page_toolDesigner Page ToolCInspect

Designer Tool - Page tool to perform actions like create page, create page folder, get current page, switch page

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

C2.6/5.0
Behavior2/5

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

The description does not disclose behavioral traits beyond what annotations already provide. It mentions 'create' and 'switch' which imply mutation, but annotations already indicate readOnlyHint=false. No additional context about side effects, permissions, or return values is given.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure. It front-loads the purpose but could be better organized for clarity given the multiple actions.

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

Completeness2/5

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

Given the complexity of multiple actions, no output schema, and partial annotations, the description is insufficient. It does not explain how actions relate, what results to expect, or how to handle errors.

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

Parameters2/5

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

The description does not add meaning beyond the input schema. It only lists action names, while the schema already describes each parameter. With 50% schema coverage, the description should compensate but fails to do so.

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

Purpose4/5

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

The description lists specific actions (create page, create page folder, get current page, switch page) which clarifies the tool's purpose. However, it uses 'perform actions like' which slightly undermines specificity. It is distinct from sibling tools like asset_tool or style_tool.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of when not to use or prerequisites, despite the schema containing a note about asking for siteId—that guidance is not in the description itself.

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

element_builderBInspect

Designer Tool - Element builder to create element on current active page.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (write operation) and openWorldHint=true (potential side effects). The description states 'create element', which is consistent. However, it does not elaborate on side effects or what 'current active page' means in terms of context, leaving some ambiguity.

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?

The description is a single, front-loaded sentence. It is concise but could benefit from additional context without becoming verbose.

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

Completeness2/5

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

Given the tool's complexity (nested actions, multiple element types, positions), the description is too minimal. It does not explain the overall workflow, such as how multiple actions are processed or the meaning of fields like parent_element_id. The schema helps, but the description should provide a higher-level view.

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

Parameters3/5

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

The input schema has detailed descriptions for most parameters, providing strong semantic meaning. The description adds no additional parameter insights, so it is adequate but not compensatory.

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

Purpose4/5

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

The description clearly states it is a designer tool to create elements on the current active page. It distinguishes from sibling tools like element_tool (which likely manipulates existing elements) and component_builder (which builds components). However, it does not explicitly differentiate from all siblings.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. While the input schema includes instructions for siteId, the description itself lacks usage context.

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

element_snapshot_toolC
Read-only
Inspect

Designer Tool - Element snapshot tool to perform actions like get element snapshot. helpful to get element snapshot for debugging and more and visual feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionYes

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint: true, so the agent knows this tool is read-only. The description adds minimal behavioral context beyond that, such as 'snapshot for debugging,' but does not disclose details like error handling or output format.

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

Conciseness2/5

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

The description is a single sentence that redundantly mentions 'element snapshot' twice and is poorly structured. It lacks clarity and could be significantly condensed.

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

Completeness2/5

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

The description does not explain the return value or behavior of the snapshot, which is problematic since there is no output schema. It also fails to provide enough detail for a tool with nested parameters, leaving the agent to infer usage.

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

Parameters3/5

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

The input schema provides decent explanations for both parameters (siteId and action), with siteId having a detailed instruction. The description adds no additional information about the parameters beyond what the schema already provides.

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

Purpose3/5

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

The description states it is a 'Designer Tool' for 'get element snapshot' and mentions debugging and visual feedback, giving a general sense of purpose. However, it is vague and does not clearly distinguish this tool from sibling tools like 'element_tool' or 'de_element_tool', which may have overlapping functionality.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies it is for debugging and visual feedback but provides no conditions, exclusions, or references to sibling tools.

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

element_toolDesigner Element ToolDInspect

Designer Tool - Element tool to perform actions like get all elements, get selected element, select element on current active page. and more

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

D1.6/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and openWorldHint=true, so the tool is not read-only. The description says 'perform actions' which implies changes, but it does not explicitly disclose the presence of dangerous actions like 'remove_element' (marked DANGEROUS in the schema). The tool description adds minimal behavioral context beyond the annotations.

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

Conciseness2/5

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

The description is a single sentence, which is concise but too brief to be useful. Important information about the tool's capabilities is omitted. Conciseness should not sacrifice completeness; here it does.

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

Completeness1/5

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

Given the tool's complexity (many actions, required siteId, nested objects), the description is woefully incomplete. It does not explain the return value, does not hint at the depth of functionality, and does not prepare the agent for the complex input schema. The annotations provide minimal context, and the description fails to fill the gap.

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

Parameters1/5

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

Schema description coverage is 50%, meaning many parameters lack descriptions. The tool description does not add any meaning for parameters; it only lists a few action types without explaining their structure or the required `siteId` and `actions` parameters. For example, it does not clarify that `actions` is an array of action objects with multiple specific types.

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

Purpose2/5

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

The description states it is a 'Designer Element Tool to perform actions like get all elements, get selected element, select element on current active page. and more.' It gives a general sense of the tool's purpose but does not specify all actions (e.g., mutations like remove_element, set_text) and does not differentiate from sibling tools like element_builder or style_tool. The verb 'perform actions' is vague.

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

Usage Guidelines1/5

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

No guidance on when to use this tool versus alternatives. The description does not mention prerequisites (e.g., need a siteId, need an active page) or when not to use it. The schema's siteId property has a detailed instruction to ask user for siteId, but that is not in the tool description itself.

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

get_designer_app_connection_infoGet Webflow MCP App Connection InfoB
Read-only
Inspect

Get Webflow MCP App Connection Info. if user ask to get Webflow MCP app connection info, use this tool

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already provide readOnlyHint and openWorldHint. Description adds no behavioral context beyond that.

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?

Short but slightly redundant; could be trimmed to one sentence. Efficient overall.

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

Completeness3/5

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

Adequate for a simple retrieval with no inputs, but lacks detail on what the connection info contains or its structure.

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?

No parameters exist, so schema coverage is 100%. No additional param info needed.

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

Purpose4/5

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

Description clearly states it retrieves connection info for the Webflow MCP app, but the first sentence is nearly identical to the tool name, adding little new information. It distinguishes from siblings by the resource type.

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

Usage Guidelines3/5

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

Explicitly says to use when user asks for connection info, but provides no guidance on when not to use or alternatives.

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

get_image_previewGet Webflow Image PreviewCInspect

Designer Tool - Get image preview from url. this is helpful to get image preview from url. Only supports JPG, PNG, GIF, WEBP, WEBP and AVIF formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the image to get the preview from
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and openWorldHint=true, but the description does not clarify whether the tool downloads, caches, or returns a URL. The behavior beyond the schema is unclear.

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

Conciseness3/5

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

Three sentences, but includes filler phrase 'this is helpful'. Could be more terse without losing clarity. Adequate but not exemplary.

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

Completeness2/5

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

No output schema, yet description does not hint at what the preview output is (e.g., thumbnail URL, image data). Also, the need for siteId with a URL-based tool is unexplained, creating incompleteness.

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

Parameters3/5

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

Schema coverage is 100% with good descriptions for both parameters. The tool description adds no new parameter meaning beyond the schema, so baseline score is appropriate.

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

Purpose4/5

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

The description clearly states 'Get image preview from url' and lists supported formats, making the purpose specific and distinguishable from sibling tools like asset_tool or element_builder.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., asset_tool or data_sites_tool). The format constraints provide some usage restriction but no when-not or alternative suggestions.

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

style_toolDesigner Style ToolCInspect

Designer Tool - Style tool to perform actions like create style, get all styles, update styles, remove styles

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false, which implies mutation. The description mentions 'create', 'update', 'remove' which align with that, but adds no further behavioral traits like rate limits, side effects, or authentication needs. The schema descriptions carry most of the burden.

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

Conciseness3/5

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

The description is a single sentence that is concise but lacks structure. It front-loads the tool identity but is too brief to be informative. It could be improved with bullet points or more details.

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

Completeness2/5

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

Given the complex nested schema with multiple actions and no output schema, the description is insufficient. It does not summarize the tool's overall behavior or mention data intensity of certain actions. The schema covers details, but the description should help the agent decide if this tool is appropriate.

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

Parameters2/5

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

The description adds no meaning beyond the input schema; it merely repeats action names. The schema already provides detailed descriptions for each action. With 50% coverage, the description should offer additional context but does not.

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

Purpose4/5

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

The description clearly states it is a style tool for actions like create, get, update, and remove. It identifies the resource (styles) and verbs, but does not differentiate from sibling tools such as component_builder or element_tool.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like variable_tool or element_tool. It simply lists actions without any context about prerequisites or when to avoid.

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

variable_toolDesigner Variable ToolCInspect

Designer Tool - Variable tool to perform actions like create variable, get all variables, update variable

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false (mutates) and openWorldHint=true (side effects). The description does not disclose behavioral traits beyond 'perform actions', lacking specifics on what gets created, updated, or deleted. It does not contradict annotations, but it adds minimal value beyond them.

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

Conciseness3/5

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

The description is a single sentence, concise but too brief for the tool's complexity. It could be improved by listing the main action categories (create, get, update, delete, query, rename). It sacrifices completeness for brevity.

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

Completeness2/5

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

Given the tool's complexity (14+ sub-actions) and lack of output schema, the description is insufficient. It does not cover the full range of operations or explain return values. The description is incomplete for an agent to understand the tool's capabilities.

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

Parameters2/5

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

The description does not add meaning to the parameters; it only lists example actions. The input schema has detailed parameter descriptions, so the schema carries the burden, but with 50% schema coverage, the description could compensate. It does not help with parameter usage or semantics.

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

Purpose3/5

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

The description states it performs actions like create, get all, update variables, but it is vague and does not capture the full scope of operations (e.g., delete, query, rename). It fails to distinguish from sibling tools, though sibling tools are different categories. The purpose is somewhat clear but incomplete.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus other tools. The description does not provide context for when it is appropriate, nor does it mention alternatives or exclusions. Sibling tools are diverse, so some implicit context exists, but explicit guidance is missing.

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

webflow_guide_toolWebflow Guide ToolA
Read-only
Inspect

Provides essential guidelines and best practices for effectively using the Webflow tools. Call this tool to understand recommended workflows and important considerations before performing actions. ALWAYS CALL THIS TOOL FIRST BEFORE CALLING ANY OTHER TOOLS. ALWAYS CALL THIS TOOL FIRST BEFORE CALLING ANY OTHER TOOLS.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating no side effects. The description adds the behavioral context that the tool should be called first, which is useful but not a technical behavioral disclosure beyond what annotations provide.

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?

The description is relatively short and front-loads the purpose, but the instruction to 'ALWAYS CALL THIS TOOL FIRST' is repeated unnecessarily, making it slightly less concise.

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?

Given the tool has no parameters and no output schema, the description adequately explains its role and when to call it. However, it lacks specifics on what guidelines or best practices are provided, which would improve completeness.

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?

There are no parameters in the input schema (trivially 100% coverage). The description adds no parameter info, which is fine since there are none. Baseline 4 applies for zero-parameter tools.

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?

The description clearly states the tool provides guidelines and best practices for Webflow tools, and explicitly distinguishes it from functional siblings by instructing to call it first. The verb 'provides' and resource 'essential guidelines' are specific.

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?

The description gives explicit guidance to 'ALWAYS CALL THIS TOOL FIRST BEFORE CALLING ANY OTHER TOOLS,' which is repeated for emphasis. This is a clear when-to-use directive, and while no alternatives are given, its unique role makes that unnecessary.

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

whtml_builderAInspect

Designer Tool - WHTML builder to insert elements from HTML and CSS strings on the current active page. Accepts HTML markup and optional CSS rules, constructs WHTML, and inserts into a parent element.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe ID of the site. DO NOT ASSUME site id. ALWAYS ask user for site id if not already provided or known. use sites_list tool to fetch all sites and then ask user to select one of them.
actionsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint=false) and potential side effects (openWorldHint=true). The description confirms insertion into a parent element, but fails to elaborate on behaviors like page modification, undo capabilities, or error handling. It adds some context beyond annotations but lacks depth.

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?

The description is two sentences, front-loaded with the tool category, and clearly conveys the core function. It contains no redundant information, though the 'Designer Tool' prefix is slightly extraneous. Efficient and well-structured.

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

Completeness3/5

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

The description misses return value information (e.g., what is returned after insertion) and does not mention error conditions or prerequisites. Given no output schema, this is a gap. However, the description covers the main action and required inputs adequately.

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

Parameters3/5

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

The input schema already provides detailed descriptions for siteId and actions (including nested properties), covering 50% coverage. The tool description summarizes 'HTML markup and optional CSS' but does not add new meaning beyond the schema. Baseline score is appropriate.

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?

The description clearly identifies the tool as a 'WHTML builder' that inserts elements from HTML and CSS strings into the active page, distinguishing it from sibling tools like element_builder or component_builder by focusing on raw string inputs.

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

Usage Guidelines4/5

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

The description explicitly states the tool accepts HTML markup and optional CSS rules and operates on the current active page, providing clear context. However, it does not explicitly exclude alternative tools or state when not to use it, but the usage scenario is well implied.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 51 tool updates
    • Removedadd_inline_site_script
    • Changedask_webflow_ai1 field changed
      • addedInput schema / properties / message / description
        Added value: +"The message to ask Webflow AI about."
    • Removedcollection_fields_create_option
    • Removedcollection_fields_create_reference
    • Removedcollection_fields_create_static
    • Removedcollection_fields_update
    • Removedcollections_create
    • Removedcollections_get
    • Removedcollections_items_create_item
    • Removedcollections_items_create_item_live
    • Removedcollections_items_delete_item
    • Removedcollections_items_list_items
    • Removedcollections_items_publish_items
    • Removedcollections_items_update_items
    • Removedcollections_items_update_items_live
    • Removedcollections_list
    • Addedcomponent_builder
    • Removedcomponents_get_content
    • Removedcomponents_get_properties
    • Removedcomponents_list
    • Removedcomponents_update_content
    • Removedcomponents_update_properties
    • Addeddata_cms_tool
    • Addeddata_comments_tool
    • Addeddata_components_tool
    • Addeddata_enterprise_tool
    • Addeddata_pages_tool
    • Addeddata_scripts_tool
    • Addeddata_sites_tool
    • Addeddata_webhook_tool
    • Changedde_component_tool8 fields changed
      • addedInput schema / properties / actions / items / properties / get_component
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Get a component by ID or by name. Provide component_id for ID lookup, or name (and optional group) for name lookup.",
        +  "properties": {
        +    "component_id": {
        +      "description": "The id of the component to get. Use this or name.",
        +      "type": "string"
        +    },
        +    "group": {
        +      "description": "Optional group to narrow the search when using name",
        +      "type": "string"
        +    },
        +    "name": {
        +      "description": "The name of the component. Use this or component_id.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / get_component_metadata
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Get the metadata (name, group, description) of a component",
        +  "properties": {
        +    "component_id": {
        +      "description": "The id of the component",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "component_id"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / actions / items / properties / insert_component_instance / properties / creation_position / description
        Previous value: -"The position to create component instance on. append to the end of the parent element or prepend to the beginning of the parent element. as child of the parent element."New value: +"The position to create component instance on. append/prepend insert as child of the parent element. before/after insert as sibling adjacent to the target element."
      • changedInput schema / properties / actions / items / properties / insert_component_instance / properties / creation_position / enum
        Previous value: -[
        -  "append",
        -  "prepend"
        -]New value: +[
        +  "append",
        +  "prepend",
        +  "before",
        +  "after"
        +]
      • addedInput schema / properties / actions / items / properties / set_component_metadata
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Update metadata (name, group, description) of a component",
        +  "properties": {
        +    "component_id": {
        +      "description": "The id of the component",
        +      "type": "string"
        +    },
        +    "description": {
        +      "description": "New description for the component",
        +      "type": "string"
        +    },
        +    "group": {
        +      "description": "New group for the component",
        +      "type": "string"
        +    },
        +    "name": {
        +      "description": "New name for the component",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "component_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / transform_element_to_component / properties / description
        Added value: +{
        +  "description": "Optional description for the component",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / transform_element_to_component / properties / group
        Added value: +{
        +  "description": "Optional group/category for the component",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / unregister_component
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Unregister a component. DANGEROUS ACTION. USE WITH CAUTION.",
        +  "properties": {
        +    "component_id": {
        +      "description": "The id of the component to unregister",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "component_id"
        +  ],
        +  "type": "object"
        +}
    • Removedde_learn_more_about_styles
    • Removeddelete_all_site_scripts
    • Changedelement_builder7 fields changed
      • addedInput schema / properties / actions / items / properties / build_label
        Added value: +{
        +  "description": "A label to identify this build action in the results.",
        +  "type": "string"
        +}
      • changedInput schema / properties / actions / items / properties / creation_position / description
        Previous value: -"The position to create element on. append to the end of the parent element or prepend to the beginning of the parent element. as child of the parent element."New value: +"The position to create element on. append/prepend insert as child of the parent element. before/after insert as sibling adjacent to the target element."
      • changedInput schema / properties / actions / items / properties / creation_position / enum
        Previous value: -[
        -  "append",
        -  "prepend"
        -]New value: +[
        +  "append",
        +  "prepend",
        +  "before",
        +  "after"
        +]
      • changedInput schema / properties / actions / items / properties / element_schema / description
        Previous value: -"element schema of element to create."New value: +"ElementSchema - element schema of element to create. Children are recursive ElementSchema objects."
      • changedInput schema / properties / actions / items / properties / element_schema / properties / children / description
        Previous value: -"The children of the element. only valid for container, section, div block, valid DOM elements."New value: +"Array of ElementSchema objects (same shape as element_schema with optional children).."
      • removedInput schema / properties / actions / items / properties / element_schema / properties / children / items
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "children": {
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "children": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "children": {
        -                  "items": {
        -                    "additionalProperties": false,
        -                    "properties": {
        -                      "set_attributes": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/set_attributes"
        -                      },
        -                      "set_dom_config": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/set_dom_config"
        -                      },
        -                      "set_heading_level": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/set_heading_level"
        -                      },
        -                      "set_image_asset": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/set_image_asset"
        -                      },
        -                      "set_link": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/set_link"
        -                      },
        -                      "set_style": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/set_style"
        -                      },
        -                      "set_text": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/set_text"
        -                      },
        -                      "type": {
        -                        "$ref": "#/properties/actions/items/properties/element_schema/properties/type"
        -                      }
        -                    },
        -                    "required": [
        -                      "type"
        -                    ],
        -                    "type": "object"
        -                  },
        -                  "type": "array"
        -                },
        -                "set_attributes": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/set_attributes"
        -                },
        -                "set_dom_config": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/set_dom_config"
        -                },
        -                "set_heading_level": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/set_heading_level"
        -                },
        -                "set_image_asset": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/set_image_asset"
        -                },
        -                "set_link": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/set_link"
        -                },
        -                "set_style": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/set_style"
        -                },
        -                "set_text": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/set_text"
        -                },
        -                "type": {
        -                  "$ref": "#/properties/actions/items/properties/element_schema/properties/type"
        -                }
        -              },
        -              "required": [
        -                "type"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "set_attributes": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/set_attributes"
        -          },
        -          "set_dom_config": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/set_dom_config"
        -          },
        -          "set_heading_level": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/set_heading_level"
        -          },
        -          "set_image_asset": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/set_image_asset"
        -          },
        -          "set_link": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/set_link"
        -          },
        -          "set_style": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/set_style"
        -          },
        -          "set_text": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/set_text"
        -          },
        -          "type": {
        -            "$ref": "#/properties/actions/items/properties/element_schema/properties/type"
        -          }
        -        },
        -        "required": [
        -          "type"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "set_attributes": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/set_attributes"
        -    },
        -    "set_dom_config": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/set_dom_config"
        -    },
        -    "set_heading_level": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/set_heading_level"
        -    },
        -    "set_image_asset": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/set_image_asset"
        -    },
        -    "set_link": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/set_link"
        -    },
        -    "set_style": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/set_style"
        -    },
        -    "set_text": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/set_text"
        -    },
        -    "type": {
        -      "$ref": "#/properties/actions/items/properties/element_schema/properties/type"
        -    }
        -  },
        -  "required": [
        -    "type"
        -  ],
        -  "type": "object"
        -}
      • addedInput schema / properties / actions / items / properties / return_element_info
        Added value: +{
        +  "description": "Whether to return full element info for the created element. Defaults to false.",
        +  "type": "boolean"
        +}
    • Addedelement_snapshot_tool
    • Changedelement_tool10 fields changed
      • removedInput schema / properties / actions / items / properties / get_all_elements / additionalProperties
        Removed value: -false
      • removedInput schema / properties / actions / items / properties / get_all_elements / properties
        Removed value: -{
        -  "include_all_breakpoint_styles": {
        -    "description": "Include all breakpoints styles",
        -    "type": "boolean"
        -  },
        -  "include_style_properties": {
        -    "description": "Include style properties",
        -    "type": "boolean"
        -  },
        -  "query": {
        -    "description": "Query to get all elements",
        -    "enum": [
        -      "all"
        -    ],
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / actions / items / properties / get_all_elements / required
        Removed value: -[
        -  "query"
        -]
      • changedInput schema / properties / actions / items / properties / get_all_elements / type
        Previous value: -"object"New value: +"boolean"
      • addedInput schema / properties / actions / items / properties / get_selected_element / additionalProperties
        Added value: +false
      • addedInput schema / properties / actions / items / properties / get_selected_element / properties
        Added value: +{
        +  "children_depth": {
        +    "description": "The depth of children to include. 0 for no children. -1 for all children. X for X levels deep.",
        +    "minimum": -1,
        +    "type": "number"
        +  }
        +}
      • addedInput schema / properties / actions / items / properties / get_selected_element / required
        Added value: +[
        +  "children_depth"
        +]
      • changedInput schema / properties / actions / items / properties / get_selected_element / type
        Previous value: -"boolean"New value: +"object"
      • addedInput schema / properties / actions / items / properties / query_elements
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Query elements on the current active page. Supports filtering by type, text, style, tag, attributes, component name, slot name. Supports scoped search, parent lookup, and multiple queries per call.",
        +  "properties": {
        +    "queries": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "children_depth": {
        +            "description": "Include N levels of children in each result. 0 = no children (default), -1 = all.",
        +            "type": "number"
        +          },
        +          "component_filter": {
        +            "additionalProperties": false,
        +            "description": "Filter by component properties. Cannot be combined with element_filter.",
        +            "properties": {
        +              "component_name": {
        +                "description": "Filter by component name. Case-insensitive substring match.",
        +                "type": "string"
        +              },
        +              "slot_name": {
        +                "description": "Filter by slot name. Case-insensitive substring match.",
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "element_filter": {
        +            "additionalProperties": false,
        +            "description": "Filter by element properties. Cannot be combined with component_filter.",
        +            "properties": {
        +              "attribute_name": {
        +                "description": "Filter by attribute name. Case-insensitive exact match on attribute key.",
        +                "type": "string"
        +              },
        +              "attribute_value": {
        +                "description": "Filter by attribute value. Used with attribute_name. Case-insensitive substring match.",
        +                "type": "string"
        +              },
        +              "style": {
        +                "description": "Filter by style/class name. Case-insensitive substring match against any applied style name.",
        +                "type": "string"
        +              },
        +              "tag": {
        +                "description": "Filter by HTML tag. For Block/DOM elements. Case-insensitive exact match. e.g. \"section\", \"nav\", \"div\".",
        +                "type": "string"
        +              },
        +              "text": {
        +                "description": "Filter by text content. Case-insensitive substring match.",
        +                "type": "string"
        +              },
        +              "type": {
        +                "description": "Filter by element type. Exact match. e.g. \"Heading\", \"Image\", \"Link\", \"Block\", \"DOM\", \"FormForm\".",
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "element_id": {
        +            "additionalProperties": false,
        +            "description": "Filter by element ID. Exact match. Bypasses other filters — returns the element directly.",
        +            "properties": {
        +              "component": {
        +                "type": "string"
        +              },
        +              "element": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "component",
        +              "element"
        +            ],
        +            "type": "object"
        +          },
        +          "label": {
        +            "description": "A label to identify this query in the results.",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "description": "Max results for this query. Default: 50, Max: 200.",
        +            "maximum": 200,
        +            "minimum": 1,
        +            "type": "number"
        +          },
        +          "return_parent": {
        +            "description": "Instead of returning matched elements, return their parent. \"parent\" = immediate parent. \"ancestor\" = any ancestor whose subtree contains matches.",
        +            "enum": [
        +              "parent",
        +              "ancestor"
        +            ],
        +            "type": "string"
        +          },
        +          "scope_element_id": {
        +            "additionalProperties": false,
        +            "description": "Scope search to descendants of this element (element itself excluded).",
        +            "properties": {
        +              "component": {
        +                "type": "string"
        +              },
        +              "element": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "component",
        +              "element"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "queries"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / remove_element
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Remove an element from the current active page. DANGEROUS ACTION. USE WITH CAUTION.",
        +  "properties": {
        +    "id": {
        +      "$ref": "#/properties/actions/items/properties/select_element/properties/id"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedget_designer_app_connection_info1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Removedpages_get_content
    • Removedpages_get_metadata
    • Removedpages_list
    • Removedpages_update_page_settings
    • Removedpages_update_static_content
    • Removedsite_applied_scripts_list
    • Removedsite_registered_scripts_list
    • Removedsites_get
    • Removedsites_list
    • Removedsites_publish
    • Changedstyle_tool5 fields changed
      • removedInput schema / properties / actions / items / properties / create_style / properties / parent_style_name
        Removed value: -{
        -  "description": "The name of the parent style to create the new style in. this will use to create combo class",
        -  "type": "string"
        -}
      • addedInput schema / properties / actions / items / properties / create_style / properties / parent_style_names
        Added value: +{
        +  "description": "The name of the parent style to create the new style in. this will use to create combo class",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / actions / items / properties / query_styles
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Query styles by name path, ID, or CSS properties [BETA]",
        +  "properties": {
        +    "queries": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "include_all_breakpoints": {
        +            "description": "Include all breakpoint styles in results. Default: false.",
        +            "type": "boolean"
        +          },
        +          "include_properties": {
        +            "description": "Include style properties in results. Default: false.",
        +            "type": "boolean"
        +          },
        +          "label": {
        +            "description": "A label to identify this query in the results.",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "description": "Max results for this query. Default: 50, Max: 200.",
        +            "maximum": 200,
        +            "minimum": 1,
        +            "type": "number"
        +          },
        +          "name_path": {
        +            "description": "Filter by style name path. Supports combo classes (e.g. ['base', 'combo']). Each segment is a case-insensitive substring match.",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "properties": {
        +            "description": "Filter styles that have ALL listed CSS properties matching. Each entry checks name (and optionally value).",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "name": {
        +                  "description": "CSS property name. Case-insensitive substring match.",
        +                  "type": "string"
        +                },
        +                "value": {
        +                  "description": "CSS property value. Case-insensitive substring match.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "name"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "style_id": {
        +            "description": "Filter by style ID. Exact match. Bypasses other filters.",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "queries"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / remove_style
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Remove a style",
        +  "properties": {
        +    "parent_style_names": {
        +      "description": "The parent style names (for combo class)",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "style_name": {
        +      "description": "The name of the style to remove",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "style_name"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / update_style / properties / parent_style_names
        Added value: +{
        +  "description": "The parent style names to update the style for (for combo class)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedvariable_tool13 fields changed
      • addedInput schema / properties / actions / items / properties / create_color_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string (e.g. 'color-mix(in srgb, red 50%, blue)'). Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / create_font_family_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string. Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / create_number_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string. Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / create_percentage_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string. Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / create_size_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string (e.g. 'calc(100vh - 60px)'). Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / delete_variable
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Delete a variable [BETA]",
        +  "properties": {
        +    "variable_collection_id": {
        +      "description": "The id of the variable collection containing the variable",
        +      "type": "string"
        +    },
        +    "variable_id": {
        +      "description": "The id of the variable to delete",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "variable_collection_id",
        +    "variable_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / query_variables
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Query variables across collections by name, ID, CSS name, or type [BETA]",
        +  "properties": {
        +    "queries": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "css_name": {
        +            "description": "Filter by CSS variable name (e.g. '--my-color'). Case-insensitive substring match.",
        +            "type": "string"
        +          },
        +          "include_all_modes": {
        +            "description": "Include values for all modes in results.",
        +            "type": "boolean"
        +          },
        +          "label": {
        +            "description": "A label to identify this query in the results.",
        +            "type": "string"
        +          },
        +          "limit": {
        +            "description": "Max results for this query. Default: 50, Max: 200.",
        +            "maximum": 200,
        +            "minimum": 1,
        +            "type": "number"
        +          },
        +          "name": {
        +            "description": "Filter by variable name. Case-insensitive substring match.",
        +            "type": "string"
        +          },
        +          "type": {
        +            "description": "Filter by variable type. Exact match.",
        +            "enum": [
        +              "Color",
        +              "Size",
        +              "Number",
        +              "Percentage",
        +              "FontFamily"
        +            ],
        +            "type": "string"
        +          },
        +          "variable_collection_id": {
        +            "description": "Scope search to a specific variable collection.",
        +            "type": "string"
        +          },
        +          "variable_id": {
        +            "description": "Filter by variable ID. Exact match. Bypasses other filters.",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "queries"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / rename_variable
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Rename a variable [BETA]",
        +  "properties": {
        +    "new_name": {
        +      "description": "The new name for the variable",
        +      "type": "string"
        +    },
        +    "variable_collection_id": {
        +      "description": "The id of the variable collection containing the variable",
        +      "type": "string"
        +    },
        +    "variable_id": {
        +      "description": "The id of the variable to rename",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "variable_collection_id",
        +    "variable_id",
        +    "new_name"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / actions / items / properties / update_color_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string (e.g. 'color-mix(in srgb, red 50%, blue)'). Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / update_font_family_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string. Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / update_number_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string. Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / update_percentage_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string. Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
      • addedInput schema / properties / actions / items / properties / update_size_variable / properties / value / properties / custom_value
        Added value: +{
        +  "description": "An arbitrary CSS expression string (e.g. 'calc(100vh - 60px)'). Use when the value doesn't fit standard typed formats.",
        +  "type": "string"
        +}
    • Changedwebflow_guide_tool1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedwhtml_builder
  2. 42 tool updatesv1.0.0
    • Addedadd_inline_site_script
    • Addedask_webflow_ai
    • Addedasset_tool
    • Addedcollection_fields_create_option
    • Addedcollection_fields_create_reference
    • Addedcollection_fields_create_static
    • Addedcollection_fields_update
    • Addedcollections_create
    • Changedcollections_get1 field changed
      • addedInput schema / properties / collection_id / description
        Added value: +"Unique identifier for the Collection."
    • Changedcollections_items_create_item_live9 fields changed
      • addedInput schema / properties / collection_id / description
        Added value: +"Unique identifier for the Collection."
      • addedInput schema / properties / request / properties / items / description
        Added value: +"Array of items to be created."
      • addedInput schema / properties / request / properties / items / items / properties / cmsLocaleId / description
        Added value: +"Unique identifier for the locale of the CMS Item."
      • addedInput schema / properties / request / properties / items / items / properties / createdOn / description
        Added value: +"Date when the item was created."
      • changedInput schema / properties / request / properties / items / items / properties / fieldData / allOf
        Previous value: -[
        -  {
        -    "additionalProperties": {},
        -    "type": "object"
        -  },
        -  {
        -    "properties": {
        -      "name": {
        -        "type": "string"
        -      },
        -      "slug": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "name",
        -      "slug"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "name": {
        +        "description": "Name of the field.",
        +        "type": "string"
        +      },
        +      "slug": {
        +        "description": "URL structure of the Item in your site. Note: Updates to an item slug will break all links referencing the old slug.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "slug"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / request / properties / items / items / properties / isArchived / description
        Added value: +"Indicates if the item is archived."
      • addedInput schema / properties / request / properties / items / items / properties / isDraft / description
        Added value: +"Indicates if the item is a draft."
      • addedInput schema / properties / request / properties / items / items / properties / lastPublished / description
        Added value: +"Date when the item was last published."
      • addedInput schema / properties / request / properties / items / items / properties / lastUpdated / description
        Added value: +"Date when the item was last updated."
    • Addedcollections_items_delete_item
    • Changedcollections_items_list_items8 fields changed
      • addedInput schema / properties / cmsLocaleId / description
        Added value: +"Unique identifier for the locale of the CMS Item."
      • addedInput schema / properties / collection_id / description
        Added value: +"Unique identifier for the Collection."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of records to be returned (max limit: 100)"
      • addedInput schema / properties / name / description
        Added value: +"Name of the field."
      • addedInput schema / properties / offset / description
        Added value: +"Offset used for pagination if the results have more than limit records."
      • addedInput schema / properties / slug / description
        Added value: +"URL structure of the Item in your site. Note: Updates to an item slug will break all links referencing the old slug."
      • addedInput schema / properties / sortBy / description
        Added value: +"Field to sort the items by. Allowed values: lastPublished, name, slug."
      • addedInput schema / properties / sortOrder / description
        Added value: +"Order to sort the items by. Allowed values: asc, desc."
    • Changedcollections_items_publish_items2 fields changed
      • addedInput schema / properties / collection_id / description
        Added value: +"Unique identifier for the Collection."
      • addedInput schema / properties / itemIds / description
        Added value: +"Array of item IDs to be published."
    • Changedcollections_items_update_items10 fields changed
      • addedInput schema / properties / collection_id / description
        Added value: +"Unique identifier for the Collection."
      • addedInput schema / properties / request / properties / items / items / description
        Added value: +"Collection item update request schema."
      • addedInput schema / properties / request / properties / items / items / properties / cmsLocaleId / description
        Added value: +"Unique identifier for the locale of the CMS Item."
      • addedInput schema / properties / request / properties / items / items / properties / createdOn / description
        Added value: +"Date when the item was created."
      • changedInput schema / properties / request / properties / items / items / properties / fieldData / allOf
        Previous value: -[
        -  {
        -    "additionalProperties": {},
        -    "type": "object"
        -  },
        -  {
        -    "properties": {
        -      "name": {
        -        "type": "string"
        -      },
        -      "slug": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "name",
        -      "slug"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "name": {
        +        "description": "Name of the field.",
        +        "type": "string"
        +      },
        +      "slug": {
        +        "description": "URL structure of the Item in your site. Note: Updates to an item slug will break all links referencing the old slug.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / request / properties / items / items / properties / id / description
        Added value: +"Unique identifier for the item."
      • addedInput schema / properties / request / properties / items / items / properties / isArchived / description
        Added value: +"Indicates if the item is archived."
      • addedInput schema / properties / request / properties / items / items / properties / isDraft / description
        Added value: +"Indicates if the item is a draft."
      • addedInput schema / properties / request / properties / items / items / properties / lastPublished / description
        Added value: +"Date when the item was last published."
      • addedInput schema / properties / request / properties / items / items / properties / lastUpdated / description
        Added value: +"Date when the item was last updated."
    • Changedcollections_items_update_items_live9 fields changed
      • addedInput schema / properties / collection_id / description
        Added value: +"Unique identifier for the Collection."
      • addedInput schema / properties / request / properties / items / items / properties / cmsLocaleId / description
        Added value: +"Unique identifier for the locale of the CMS Item."
      • addedInput schema / properties / request / properties / items / items / properties / createdOn / description
        Added value: +"Date when the item was created."
      • changedInput schema / properties / request / properties / items / items / properties / fieldData / allOf
        Previous value: -[
        -  {
        -    "additionalProperties": {},
        -    "type": "object"
        -  },
        -  {
        -    "properties": {
        -      "name": {
        -        "type": "string"
        -      },
        -      "slug": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "name": {
        +        "description": "Name of the field.",
        +        "type": "string"
        +      },
        +      "slug": {
        +        "description": "URL structure of the Item in your site. Note: Updates to an item slug will break all links referencing the old slug.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / request / properties / items / items / properties / fieldData / description
        Added value: +"Array of items to be updated."
      • addedInput schema / properties / request / properties / items / items / properties / isArchived / description
        Added value: +"Indicates if the item is archived."
      • addedInput schema / properties / request / properties / items / items / properties / isDraft / description
        Added value: +"Indicates if the item is a draft."
      • addedInput schema / properties / request / properties / items / items / properties / lastPublished / description
        Added value: +"Date when the item was last published."
      • addedInput schema / properties / request / properties / items / items / properties / lastUpdated / description
        Added value: +"Date when the item was last updated."
    • Changedcollections_list1 field changed
      • addedInput schema / properties / site_id / description
        Added value: +"Unique identifier for the Site."
    • Addedcomponents_get_content
    • Addedcomponents_get_properties
    • Addedcomponents_list
    • Addedcomponents_update_content
    • Addedcomponents_update_properties
    • Addedde_component_tool
    • Addedde_learn_more_about_styles
    • Addedde_page_tool
    • Addeddelete_all_site_scripts
    • Addedelement_builder
    • Addedelement_tool
    • Addedget_designer_app_connection_info
    • Addedget_image_preview
    • Changedpages_get_content4 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of records to be returned (max limit: 100)"
      • addedInput schema / properties / localeId / description
        Added value: +"Unique identifier for a specific locale. Applicable when using localization."
      • addedInput schema / properties / offset / description
        Added value: +"Offset used for pagination if the results have more than limit records."
      • addedInput schema / properties / page_id / description
        Added value: +"Unique identifier for the page."
    • Changedpages_get_metadata2 fields changed
      • addedInput schema / properties / localeId / description
        Added value: +"Unique identifier for a specific locale. Applicable when using localization."
      • addedInput schema / properties / page_id / description
        Added value: +"Unique identifier for the page."
    • Changedpages_list4 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of records to be returned (max limit: 100)"
      • addedInput schema / properties / localeId / description
        Added value: +"Unique identifier for a specific locale. Applicable when using localization."
      • addedInput schema / properties / offset / description
        Added value: +"Offset used for pagination if the results have more than limit records."
      • addedInput schema / properties / site_id / description
        Added value: +"The site's unique ID, used to list its pages."
    • Changedpages_update_page_settings24 fields changed
      • addedInput schema / properties / body / properties / archived / description
        Added value: +"Indicates if the page is archived."
      • addedInput schema / properties / body / properties / canBranch / description
        Added value: +"Indicates if the page can be branched."
      • addedInput schema / properties / body / properties / collectionId / description
        Added value: +"Unique identifier for the linked collection, NULL id the Page is not part of a collection."
      • addedInput schema / properties / body / properties / createdOn / description
        Added value: +"Date when the page was created."
      • addedInput schema / properties / body / properties / draft / description
        Added value: +"Indicates if the page is a draft."
      • addedInput schema / properties / body / properties / id / description
        Added value: +"Unique identifier for a Page."
      • addedInput schema / properties / body / properties / isBranch / description
        Added value: +"Indicates if the page is Branch of another page."
      • addedInput schema / properties / body / properties / isMembersOnly / description
        Added value: +"Indicates whether the Page is restricted by Memberships Controls."
      • addedInput schema / properties / body / properties / lastUpdated / description
        Added value: +"Date when the page was last updated."
      • addedInput schema / properties / body / properties / localeId / description
        Added value: +"Unique identifier for the page locale. Applicable when using localization."
      • addedInput schema / properties / body / properties / openGraph / properties / description / description
        Added value: +"The description supplied to Open Graph annotations."
      • addedInput schema / properties / body / properties / openGraph / properties / descriptionCopied / description
        Added value: +"Indicates the Open Graph description was copied from the SEO description."
      • addedInput schema / properties / body / properties / openGraph / properties / title / description
        Added value: +"The title supplied to Open Graph annotations."
      • addedInput schema / properties / body / properties / openGraph / properties / titleCopied / description
        Added value: +"Indicates the Open Graph title was copied from the SEO title."
      • addedInput schema / properties / body / properties / parentId / description
        Added value: +"Unique identifier for the parent folder."
      • addedInput schema / properties / body / properties / publishedPath / description
        Added value: +"Relative path of the published page."
      • addedInput schema / properties / body / properties / seo / description
        Added value: +"SEO-related fields for the page."
      • addedInput schema / properties / body / properties / seo / properties / description / description
        Added value: +"The Page description shown in search engine results."
      • addedInput schema / properties / body / properties / seo / properties / title / description
        Added value: +"The Page title shown in search engine results."
      • addedInput schema / properties / body / properties / siteId / description
        Added value: +"Unique identifier for the Site."
      • addedInput schema / properties / body / properties / slug / description
        Added value: +"Slug of the page (derived from title)."
      • addedInput schema / properties / body / properties / title / description
        Added value: +"Title of the page."
      • addedInput schema / properties / localeId / description
        Added value: +"Unique identifier for a specific locale. Applicable when using localization."
      • addedInput schema / properties / page_id / description
        Added value: +"Unique identifier for the page."
    • Changedpages_update_static_content3 fields changed
      • addedInput schema / properties / localeId / description
        Added value: +"Unique identifier for a specific locale. Applicable when using localization."
      • changedInput schema / properties / nodes / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "nodeId": {
        -        "type": "string"
        -      },
        -      "text": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "nodeId",
        -      "text"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "nodeId": {
        -        "type": "string"
        -      },
        -      "propertyOverrides": {
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "propertyId": {
        -              "type": "string"
        -            },
        -            "text": {
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "propertyId",
        -            "text"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "nodeId",
        -      "propertyOverrides"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "Text node to be updated.",
        +    "properties": {
        +      "nodeId": {
        +        "description": "Unique identifier for the node.",
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "HTML content of the node, including the HTML tag. The HTML tags must be the same as what’s returned from the Get Content endpoint.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "nodeId",
        +      "text"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "Update text property overrides of a component instance.",
        +    "properties": {
        +      "nodeId": {
        +        "description": "Unique identifier for the node.",
        +        "type": "string"
        +      },
        +      "propertyOverrides": {
        +        "items": {
        +          "additionalProperties": false,
        +          "description": "Properties to override for this locale’s component instances.",
        +          "properties": {
        +            "propertyId": {
        +              "description": "Unique identifier for the property.",
        +              "type": "string"
        +            },
        +            "text": {
        +              "description": "Value used to override a component property; must be type-compatible to prevent errors.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "propertyId",
        +            "text"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "nodeId",
        +      "propertyOverrides"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / page_id / description
        Added value: +"Unique identifier for the page."
    • Addedsite_applied_scripts_list
    • Addedsite_registered_scripts_list
    • Changedsites_get1 field changed
      • addedInput schema / properties / site_id / description
        Added value: +"Unique identifier for the site."
    • Changedsites_list3 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties
        Added value: +{}
    • Changedsites_publish3 fields changed
      • addedInput schema / properties / customDomains / description
        Added value: +"Array of custom domains to publish the site to."
      • addedInput schema / properties / publishToWebflowSubdomain / description
        Added value: +"Whether to publish to the Webflow subdomain."
      • addedInput schema / properties / site_id / description
        Added value: +"Unique identifier for the site."
    • Addedstyle_tool
    • Addedvariable_tool
    • Addedwebflow_guide_tool
  3. 16 tool updates
    • First observedcollections_get
    • First observedcollections_items_create_item
    • First observedcollections_items_create_item_live
    • First observedcollections_items_list_items
    • First observedcollections_items_publish_items
    • First observedcollections_items_update_items
    • First observedcollections_items_update_items_live
    • First observedcollections_list
    • First observedpages_get_content
    • First observedpages_get_metadata
    • First observedpages_list
    • First observedpages_update_page_settings
    • First observedpages_update_static_content
    • First observedsites_get
    • First observedsites_list
    • First observedsites_publish

TDQS

C2.8/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have clearly distinct purposes, especially the data_*_tool group. However, there is potential confusion between component_builder, de_component_tool, and data_components_tool, as well as element_builder, element_snapshot_tool, and element_tool, though descriptions help differentiate.

Naming Consistency3/5

Tool names follow a general pattern but are inconsistent: some end with '_tool', some with '_builder', and a few have no suffix (e.g., get_designer_app_connection_info). The mix of verb_noun (ask_webflow_ai) and noun_tool (asset_tool) reduces consistency.

Tool Count4/5

22 tools is slightly above the typical 3-15 range for a single-purpose server, but Webflow's diverse functionality (design, CMS, enterprise, etc.) justifies a larger set. Still, some tools could be merged or pruned.

Completeness4/5

The tool surface covers major Webflow areas: assets, components, CMS, pages, scripts, sites, webhooks, design elements, styles, variables, and a guide. Minor gaps exist, such as form handling or e-commerce tools, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers