Agent Skill · Webflow

webflow-mcp:safe-publish

Publish a Webflow site with a plan-confirm-publish workflow. Shows what changed since last publish, runs pre-publish checks, and requires explicit confirmation before going live.

Provider: Webflow Path in repo: plugins/webflow-skills/skills/safe-publish/SKILL.md

Skill body

Safe Publish

Publish a Webflow site with comprehensive preview, validation, and explicit confirmation workflow.

Important Note

ALWAYS use Webflow MCP tools for all operations:

Instructions

Phase 1: Site Selection & Status Check

  1. Get site: Identify the target site. If user does not provide site ID, ask for it.
  2. Fetch site details: Use Webflow MCP’s data_sites_tool with action get_site to retrieve:
    • Last published date
    • Last updated date
    • Custom domains configured
    • Locale settings
  3. Check publish status: Determine if site has unpublished changes:
    • Compare lastUpdated vs lastPublished timestamps
    • If lastPublished is null, site has never been published
    • If lastUpdated > lastPublished, site has unpublished changes

Phase 2: Change Detection & Analysis

  1. List all pages: Use Webflow MCP’s data_pages_tool with action list_pages
  2. Identify modified pages:
    • Compare each page’s lastUpdated with site’s lastPublished
    • Flag pages modified after last publish
    • Categorize by type (static, CMS template, archived, draft)
  3. List all collections: Use Webflow MCP’s data_cms_tool with action get_collection_list
  4. Check for draft items:
    • For each collection, use Webflow MCP’s data_cms_tool with action list_collection_items
    • Count items where isDraft: true
    • Count items modified since last publish
  5. Detect issues:
    • Draft items that won’t be published unless explicitly included
    • Pages missing SEO metadata
    • Broken references (if detectable)

Phase 3: Pre-Publish Validation & Preview

  1. Run pre-publish checks:
    • Verify no broken collection references
    • Check for pages with missing required fields
    • Warn about draft items that will remain unpublished
  2. Generate detailed preview:
    • Show all pages to be published
    • Show all CMS items to be published
    • Display warnings for any issues found
    • Show which domains will be updated
  3. Ask for publish scope:
    • Webflow subdomain only
    • Custom domains only
    • Both subdomain and custom domains

Phase 4: Confirmation & Publishing

  1. Require explicit confirmation:
    • User must type “publish” to proceed
    • “yes” or “y” should NOT trigger publish
    • Show clear warning about what will go live
  2. Execute publish:
    • Use Webflow MCP’s data_sites_tool with action publish_site with correct parameters
    • Handle customDomains as empty array if no custom domains
    • Set publishToWebflowSubdomain based on user choice
  3. Capture publish timestamp:
    • Fetch site info again after publish
    • Record exact publish time from lastPublished field

Phase 5: Verification & Reporting

  1. Verify publish success:
    • Check that lastPublished timestamp updated
    • Verify site is accessible at published URL(s)
    • Report any verification failures clearly
  2. Generate success report:
    • Show publish timestamp
    • List what went live (pages, items)
    • Provide published URL(s)
    • Show verification status
  3. Handle failures gracefully:
    • If publish fails, show clear error message
    • Suggest remediation steps
    • Do not retry automatically

Examples

User prompt:

Publish my site

Step 1: Site Selection

🚀 Safe Publish - Site Selection

Available Sites:

1. **MCP Demo#1**
   - Last published: January 9, 2026 at 20:05:38 UTC
   - Last updated: January 9, 2026 at 20:49:37 UTC
   - ⚠️ **Has unpublished changes** (updated 44 minutes after last publish)

2. **MCP Demo#2**
   - Last updated: January 9, 2026 at 19:32:53 UTC
   - Status: Not yet published

Which site would you like to publish? (1-2)

Step 2: Change Detection & Preview

🚀 Publish Preview: MCP Demo#1

**Last published:** January 9, 2026 at 20:05:38 UTC
**Time since last publish:** ~1 hour 5 minutes

---

## Changes to Publish:

### 📄 Pages Modified: 1
└── **Home** (/)
    - SEO title updated to "Home Page"
    - Last modified: 21:10:52 UTC

### 📝 CMS Items: 2 draft items to publish

**Blog Posts (2 drafts):**

1. **"Why Webflow MCP Will Transform Your Workflow in 2026!"**
   - Status: Draft
   - Created: 20:24:44 UTC
   - Last modified: 21:11:03 UTC
   - Featured: Yes
   - Slug: webflow-mcp-transform-workflow-2026

2. **"Webflow E-commerce: The Future of Online Shopping in 2026!"**
   - Status: Draft
   - Created: 20:05:24 UTC
   - Last modified: 21:11:11 UTC
   - Featured: Yes
   - Slug: webflow-ecommerce-2026

---

**Pre-Publish Checks:**
- ✅ No broken references detected
- ✅ All required fields populated
- ⚠️ 2 draft items will become published

**Publish Targets:**
- Webflow subdomain: mcp-demo-1-e88499.webflow.io
- Custom domains: None configured

**⚠️ Type "publish" to make these changes live.**

Step 3: After user types “publish”

🔄 Publishing MCP Demo#1...

Progress: ████████████████████ 100%

✅ Published Successfully!

**Site:** MCP Demo#1
**Published at:** 2026-01-09 21:12:52 UTC (January 9, 2026 at 21:12:52)

---

## What Went Live:

### 📄 Pages (1)
- ✅ Home (/) - SEO title updated

### 📝 Blog Posts (2)
- ✅ "Why Webflow MCP Will Transform Your Workflow in 2026!"
- ✅ "Webflow E-commerce: The Future of Online Shopping in 2026!"

---

## Verification:

- ✅ **Site accessible:** Yes
- ✅ **URL:** https://mcp-demo-1-e88499.webflow.io
- ✅ **Status:** Page loading successfully
- ✅ **Content delivery:** Webflow CDN responding

---

**🎉 Your site is now live with all changes published!**

All unpublished changes have been successfully published to the Webflow subdomain. The 2 draft blog posts are now visible on your site.

Alternative: With Warnings

🚀 Publish Preview: Company Site

**Last published:** January 8, 2026 at 14:30:00 UTC

---

## Changes to Publish:

### 📄 Pages Modified: 3
├── **About** (/about)
│   └── Content updated
├── **Contact** (/contact)
│   └── Form fields changed
└── **Home** (/)
    └── Hero section updated

### 📝 CMS Items

**Blog Posts:**
- 5 published items modified
- 2 draft items (will NOT be published automatically)

**Products:**
- 3 new items created
- 1 item updated

---

**Pre-Publish Checks:**
⚠️ **Warnings Found:**

1. **Missing SEO Metadata (2 pages):**
   - /about - No meta description
   - /contact - No meta title or description
   - 💡 Recommendation: Add SEO metadata before publishing

2. **Draft Items (2):**
   - "Upcoming Product Launch" (Blog Post)
   - "Holiday Sale Announcement" (Blog Post)
   - ⚠️ These will remain unpublished

3. **Large Change Set:**
   - 3 pages + 9 CMS items will be updated
   - Consider reviewing changes carefully

**Publish Targets:**
- Webflow subdomain: company-site.webflow.io
- Custom domains: example.com, www.example.com

---

**Would you like to:**
1. Proceed with publish (type "publish")
2. Cancel and review (type "cancel")

Guidelines

Phase 1: Critical Requirements

Site Status Check:

Timestamp Handling:

Phase 2: Change Detection Rules

Page Change Detection:

CMS Item Detection:

Collections to Check:

Phase 3: Pre-Publish Validation

Required Checks:

  1. Broken References:
    • Check if referenced items exist
    • Warn if reference field points to deleted/archived item
    • Note: API may not expose this easily - best effort
  2. Missing Required Fields:
    • Verify all required CMS fields are populated
    • Warn if required fields are empty (shouldn’t be possible, but check)
  3. SEO Completeness:
    • Check pages for missing seo.title or seo.description
    • Warn but don’t block publish
    • Provide recommendations for improvement
  4. Draft Item Warning:
    • Clearly list all draft items
    • Explain they will remain unpublished
    • Offer to cancel if user wants to publish drafts first

Warning Levels:

When to Block Publish:

Phase 4: Confirmation & Publishing

Confirmation Requirements:

Publish API Usage:

// Correct format for data_sites_tool with action publish_site
{
  "site_id": "site-id-here",
  "publishToWebflowSubdomain": true,  // or false
  "customDomains": []  // MUST be array, even if empty
}

// If custom domains exist:
{
  "site_id": "site-id-here",
  "publishToWebflowSubdomain": false,
  "customDomains": ["example.com", "www.example.com"]
}

Domain Selection:

Error Handling:

Phase 5: Verification & Reporting

Post-Publish Verification:

  1. Fetch Updated Site Info:
    • Call data_sites_tool with action get_site again
    • Verify lastPublished timestamp updated
    • If timestamp didn’t update, publish may have failed
  2. Site Accessibility Check:
    • Use WebFetch to check published URL
    • Verify site returns 200 OK
    • Check that content is served (not error page)
    • Measure response time
  3. Custom Domain Checks:
    • If published to custom domains, verify each domain
    • Some domains may take time to propagate (DNS)
    • Note: “Domain may take a few minutes to update” if slow

Verification Failure Handling:

Success Report Format:

✅ Published Successfully!

Site: [Site Name]
Published at: [ISO Timestamp] ([Human Readable])

What Went Live:
- X pages modified
- Y CMS items published
- Z draft items promoted to published

Verification:
✅ Site accessible
✅ URL: [primary URL]
✅ Response time: [Xms]

[If custom domains]
Custom Domains:
✅ example.com - accessible
⚠️ www.example.com - propagating (may take 2-3 minutes)

Best Practices

Always:

Never:

Edge Cases:

No Changes to Publish:

ℹ️ No Changes to Publish

Last published: January 9, 2026 at 20:05:38 UTC
Last updated: January 9, 2026 at 20:05:38 UTC

All changes are already published. Your site is up to date!

First Publish (Never Published Before):

⚠️ First Publish Warning

This site has NEVER been published before.

This will make the ENTIRE site publicly accessible:
- All pages (2 pages)
- All CMS items (47 items across 3 collections)
- All assets

Are you ready to make this site live?
Type "publish" to proceed, or "cancel" to abort.

Publish to Staging Subdomain:

Partial Publish Not Supported:

Performance Optimization

For Large Sites:

Caching:

Timeouts:

Error Messages

Clear and Actionable:

Bad:

"Publish failed"

Good:

"Publish Failed: Validation Error

The Webflow API returned an error:
- customDomains parameter must be an array

This is likely a configuration issue. Retrying...

Common Errors:

  1. Validation Error (customDomains):
    • Fix: Ensure customDomains: [] is an array
    • Don’t pass null or omit the field
  2. Site Not Found:
    • User may have provided wrong site ID
    • List available sites and ask user to select
  3. Insufficient Permissions:
    • Site may require specific publish permissions
    • Check workspace access settings
  4. Publish Already in Progress:
    • Another publish may be running
    • Wait 30 seconds and try again

Work with this as data

Every skill here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for agent skills

4 MCP tools reach this
  • find_skillsBrowse and filter every skill in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This skill
curl "https://apis.io/api/v1/skills/webflow-mcp-safe-publish"
All agent skills
curl "https://apis.io/api/v1/skills?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.