
List all assets for a Webflow site with pagination. Use list_sites to find valid site IDs.
Get a specific asset by ID including its hosted URL and metadata. Use list_assets to find IDs.
Create an asset upload request. Returns a presigned upload URL. The actual file upload must be done separately to the returned URL.
Delete an asset permanently. This cannot be undone. Use list_assets to find asset IDs.
List all asset folders for a Webflow site. Use list_sites to find valid site IDs.
Get a specific asset folder by ID. Use listassetfolders to find folder IDs.
Create a new asset folder in a Webflow site. Optionally nest under a parent folder.
List all CMS collections for a Webflow site. Use list_sites to find valid site IDs.
Get a CMS collection by ID including its fields. Use list_collections to find valid IDs.
Create a new CMS collection in a Webflow site. Requires displayName and singularName.
Delete a CMS collection. This permanently removes the collection and all its items.
Add a new field to a CMS collection. Use get_collection to see existing fields.
Update a field in a CMS collection. Use get_collection to find field IDs.
Delete a field from a CMS collection. Use get_collection to find field IDs.
List all forms for a Webflow site with pagination. Use list_sites to find valid site IDs.
Get a specific form by ID including its field configuration. Use list_forms to find form IDs.
List submissions for a form with pagination. Use list_forms to find form IDs.
Get a specific form submission by ID. Use listformsubmissions to find submission IDs.
Update a form submission's data. Use getformsubmission to see current values.
Get inventory details for a CMS item. Use listcollectionitems to find item IDs.
Update inventory for a CMS item. Set type to 'finite' with quantity or 'infinite' for unlimited stock.
Get e-commerce settings for a Webflow site including currency and tax configuration.
List staged CMS collection items with pagination. Use list_collections to find collection IDs.
Get a staged CMS collection item by ID. Use listcollectionitems to find item IDs.
Create a new staged CMS item. Pass field_data as a dict matching the collection's field schema.
Create up to 100 staged CMS items in bulk. Each item dict must include fieldData.
Update a staged CMS item's fields. Pass field_data with fields to change.
Update up to 100 staged CMS items in bulk. Each item dict must include id and fieldData.
Delete a staged CMS item. This is permanent and cannot be undone.
Delete up to 100 staged CMS items in bulk. This is permanent and cannot be undone.
Publish staged CMS items to make them live. Provide a list of item IDs to publish.
List live (published) CMS items with pagination. Only shows published content.
Get a live (published) CMS item by ID. Shows the published version of the item.
Create and immediately publish a CMS item. Skips the staging step.
Update a live CMS item directly. Changes are immediately visible on the published site.
Update up to 100 live CMS items in bulk. Changes are immediately visible.
Unpublish a live CMS item. Removes it from the published site.
Unpublish up to 100 live CMS items in bulk. Removes them from the published site.
List e-commerce orders for a Webflow site with pagination. Optionally filter by status.
Get an e-commerce order by ID. Use list_orders to find order IDs.
Update an e-commerce order's comment or shipping details. Use get_order to see current values.
Mark an e-commerce order as fulfilled. Optionally send a fulfillment notification email.
Mark a fulfilled e-commerce order as unfulfilled. Use get_order to check current status.
Refund an e-commerce order. This cannot be undone. Use get_order to check order status first.
List pages for a Webflow site with pagination. Use list_sites to find valid site IDs.
Get details of a specific Webflow page by ID. Use list_pages to find valid page IDs.
Update a Webflow page's title, slug, or SEO settings. Use get_page to see current values.
Get the DOM content (nodes) of a Webflow page. Returns structured page elements.
Update DOM content on a Webflow page for secondary locales only. Primary locale content must be edited in the Designer. Use getpagecontent for node IDs.
List e-commerce products for a Webflow site with pagination. Use list_sites to find site IDs.
Get an e-commerce product by ID including its SKUs. Use list_products to find product IDs.
Create an e-commerce product with an optional default SKU. Product data should include fieldData with name and slug.
Update an e-commerce product's fields. Use get_product to see current values.
Create SKU variants for an e-commerce product. Each SKU can have different price and properties.
Update a specific SKU variant. Use get_product to find SKU IDs.
List all Webflow sites accessible to the authenticated user. Returns site IDs, names, and metadata.
Get details of a specific Webflow site by ID. Use list_sites to find valid site IDs.
Publish a Webflow site to make changes live. Optionally specify custom domains to publish to.
List all custom domains configured for a Webflow site. Use list_sites to find valid site IDs.
Validate Webflow API credentials by checking the authorized user info. Used during credential setup.
List all webhooks configured for a Webflow site. Use list_sites to find site IDs.
Get a specific webhook by ID. Use list_webhooks to find webhook IDs.
Create a webhook for a Webflow site. Trigger types: formsubmission, sitepublish, collectionitemcreated, collectionitemchanged, collectionitemdeleted, collectionitemunpublished, ecommneworder, ecommorderchanged, ecomminventorychanged.
Delete a webhook. This stops all future webhook deliveries. Use list_webhooks to find IDs.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It's an MCP server that gives your agents access to Webflow via tools. Your agents can invoke these tools to create and publish CMS collection items, manage e-commerce orders, handle form submissions, update site content, and more.
Webflow offers an official MCP server, but you can also use one from a third-party platform, like Merge Agent Handler.
The use cases naturally depend on the agent you've built, but here are a few common ones:
create_collection_item</code> to add it to the appropriate Webflow CMS collection and then calls <code class="blog_inline-code">publish_collection_items</code> to make it live without any manual steps in the Webflow editorget_form_submission</code> to retrieve the data and creates a corresponding contact record in HubSpot, keeping sales pipeline data current without manual importsfulfill_order</code> to mark the Webflow order as shipped and calls update_inventory to decrement available stock, keeping storefront data accurate in real timepublish_site</code> to push all pending content changes live alongside the code release, ensuring copy and functionality ship togetherHere are some of the most commonly used tools:
<code class="blog_inline-code">create_collection_item</code> adds a new item to a specified Webflow CMS collection with the provided field values. Use this when an agent needs to push content from an external source into a Webflow site without opening the editor<code class="blog_inline-code">publish_collection_items</code> moves one or more staged collection items to the live site. Call this after creating or updating items when an agent needs the changes to be immediately visible to site visitors<code class="blog_inline-code">list_collection_items</code> retrieves all items in a CMS collection, including their field values and publish status. Good for agents that need to audit existing content before creating duplicates or generating a content inventory report<code class="blog_inline-code">list_form_submissions</code> returns all submissions for a given Webflow form, including field data and timestamps. Helpful when an agent needs to process leads, route inquiries, or sync form data to a downstream system on a schedule<code class="blog_inline-code">fulfill_order</code> marks a Webflow e-commerce order as fulfilled and optionally records tracking information. Use this when an agent is automating order processing in response to a fulfillment event in a logistics or payment system<code class="blog_inline-code">publish_site</code> pushes all staged changes for a Webflow site to production. Call this when an agent needs to coordinate a content release with an external trigger, like a campaign launch date or a completed approval workflowHere is what sets Merge Agent Handler's Webflow MCP server apart from building your own or using a standalone alternative:
You can take the following steps:
1. Create or log into your Merge Agent Handler account and navigate to Tool Packs (collections of connector tools scoped to a specific use case).
2. Create a new Tool Pack, then find and enable the Webflow connector. Choose which tools to include: enable read tools like <code class="blog_inline-code">list_collection_items</code> for content auditing use cases, or add write tools like <code class="blog_inline-code">create_collection_item</code> and <code class="blog_inline-code">publish_site</code> if your agent needs to create or publish content.
3. Add a Registered User inside the Tool Pack. This is the identity context under which your agent operates. Merge generates a unique MCP URL scoped to this user once it's created.
4. From the Registered User detail page, authenticate Webflow by completing the OAuth flow. Merge stores and manages the credentials going forward.
5. Copy the MCP URL from the Tool Pack detail page and generate an API key from Settings. You'll need both to connect your agent.
6. Add the MCP server to your agent or IDE using the MCP URL and API key. Your Webflow tools are now accessible through that endpoint.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now