{
 "slug": "webflow",
 "name": "Webflow",
 "url": "https://webflow.com",
 "domain": "webflow.com",
 "category": "website-builders",
 "category_name": "Website builders",
 "tested_at": "2026-10-06",
 "run": "20261006T050202Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261006T050202Z",
   "date": "2026-10-06",
   "level": 2,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": null,
    "robots": "start"
   }
  }
 ],
 "level": 2,
 "level_name": "Gets in",
 "level_selfhost": null,
 "entry": "self-start",
 "door": {
  "passed": 1,
  "tries": 1,
  "self_start": true
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: sign-up in a browser"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "no",
   "text": "Work done: 0% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Reaches the checkout: stopped at the card form",
   "value": "ready",
   "route": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: sign-up in a browser",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "no",
   "text": "Work done: 0% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Reaches the checkout: stopped at the card form",
   "value": "ready",
   "route": "card_checkout",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "browser_signup",
   "label": "Sign-up in a browser",
   "routes": [],
   "minutes": 8.5,
   "core": "0/7"
  }
 ],
 "minutes": 8.5,
 "next": {
  "to": 3,
  "text": "Next: do half of the core work (now 0%)"
 },
 "stop": "first_action",
 "core": "0/7",
 "scores": {
  "coverage": 0,
  "reliability": null,
  "resilience": null,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 100,
  "security": null,
  "standards": [
   {
    "standard": "MCP",
    "state": "current",
    "behind": null,
    "value": "2026-07-28"
   },
   {
    "standard": "MCP discovery",
    "state": "current",
    "behind": null,
    "value": "ok"
   },
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.0"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": 0,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": "f3d0adeeb256",
  "kb_version": "2+overlay-9e43028a2c",
  "identity": null
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 2,
  "signed": true,
  "inbox": null,
  "robots": "start"
 },
 "same_level_drives": 1,
 "drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": {
  "rung": "signup",
  "vendor": "HUMAN (PerimeterX) invisible sensor",
  "signed": true
 },
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "block",
   "kind": "signup",
   "at": "2026-10-13"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "developers.webflow.com/llms.txt with per-section llms.txt, every page as .md, Accept: text/markdown redirects (303) to the .md; OpenAPI 3.1.0 for Data API v2 in github.com/webflow/openapi-spec; docs-search MCP without auth."
  },
  "signup": {
   "status": "browser",
   "note": "No sign-up API. Web form at webflow.com/signup (email, password); an invisible HUMAN (PerimeterX) sensor ran and let our agent's browser through."
  },
  "verify": {
   "status": "browser",
   "note": "Verification mail arrived within a minute; the link (a plain GET) was opened in the signed-in browser."
  },
  "credentials": {
   "status": "browser",
   "via": "",
   "note": "MCP OAuth: DCR headless at mcp.webflow.com/oauth/register, consent (scopes + workspace picker) in a logged-in browser, PKCE code exchange headless. No device flow, no CIMD. CLI 'webflow auth login' refuses in agent environments. Data API site tokens need a site, which we could not create."
  },
  "first_call": {
   "status": "headless",
   "note": "MCP (the 28 Jul 2026 spec) server/discover, tools/list (34 tools) and data_sites_tool list_sites (empty) all worked."
  },
  "first_action": {
   "status": "blocked",
   "via": "",
   "note": "Creating a site (needed by nearly every tool) is dashboard-only on the free plan. The create-site API is Enterprise-only; Webflow Cloud create_app (which creates a site) needs a connected GitHub account we don't have."
  },
  "pay": {
   "status": "browser",
   "grade": "P2",
   "rails": [
    "In-app checkout with a Stripe Elements card form (Plans > Upgrade)"
   ],
   "rail_ids": [
    "stripe-elements"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No x402/MPP/L402/UCP, no billing API or MCP billing tool. Upgrade to Core opens an in-app checkout ($228.00 USD due today, card form, hCaptcha script loaded). Not paid; whether a challenge or 3DS would appear is untested. Site plans also need a site first."
  },
  "cancel": {
   "status": "n/a",
   "note": "Nothing to cancel: our agent used the free plan.",
   "docs_note": "No plan was started. No billing API or MCP billing tool; plan management is only in the dashboard Plans/Billing pages. The cancel flow itself was not observed.",
   "docs_grade": "",
   "nothing": "free_plan"
  },
  "delete": {
   "status": "blocked",
   "note": "Account > Request account deletion > confirm by email link produced 'Your deletion request has been confirmed, your account will be deleted within 48 hours.' No API/CLI/MCP route exists, and the drive never observed final deletion or a subsequent rejected login/token call; login access was not re-tested after the request, so completion is unproven.",
   "left": "stuck",
   "account": true
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-06",
  "source": "drive",
  "options": [
   {
    "id": "stripe-elements",
    "name": "Stripe card form",
    "kind": "checkout",
    "first_party": false,
    "lead": false,
    "networks": [],
    "testnet": false
   }
  ],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST Data API v2, 140 operations in the OpenAPI",
  "openapi": "3.1.0, in github.com/webflow/openapi-spec",
  "mcp": "official remote, 34 tools; dry-run by default on create_app; nearly every tool needs a site_id",
  "cli": "@webflow/webflow-cli 2.10.0-next.0; auth is browser OAuth only",
  "llms_txt": "root and per-section llms.txt, .md for every page",
  "sdk": "Webflow JavaScript SDK (npm webflow-api), named in the docs"
 },
 "can_do": [
  "Read all developer docs as Markdown and search them through the docs MCP, no account needed",
  "Register an MCP OAuth client headless (DCR) and, after one browser consent, call the Webflow MCP server on the 28 Jul 2026 spec",
  "List the sites of the workspace through MCP",
  "Scaffold a Designer Extension with the Webflow CLI, no account needed",
  "Revoke its own MCP token"
 ],
 "cannot_do": [
  {
   "what": "Create a site on the free plan",
   "why": "Dashboard only, behind a HUMAN press-and-hold bot check; the create-site API is Enterprise-only"
  },
  {
   "what": "Any site work (pages, CMS, styles, publishing, assets, forms)",
   "why": "Every MCP tool and Data API call needs a site_id, and there was no site"
  },
  {
   "what": "Deploy a Webflow Cloud app",
   "why": "create_app needs a GitHub account with the Webflow Cloud GitHub App (409 GITHUB_REPO_NOT_CONNECTED)"
  },
  {
   "what": "Log in with the Webflow CLI",
   "why": "'webflow auth login' is browser OAuth and aborts in agent environments"
  },
  {
   "what": "Buy or cancel a plan headless",
   "why": "No billing API; checkout is an in-app card form"
  }
 ],
 "blockers": [
  "HUMAN press-and-hold bot check on site creation in the dashboard",
  "Create Site API is Enterprise-only"
 ],
 "tips_for_owner": [
  "Let verified agents create sites",
  "Open the Create Site API to all plans",
  "Add a create_site action to the MCP server",
  "Add device-flow login to the CLI and MCP",
  "Support CIMD on the MCP authorization server",
  "Offer an account and plan API"
 ],
 "tips_for_agents": [
  "Use the remote MCP server https://mcp.webflow.com/mcp: DCR then one browser consent; it speaks MCP 2026-07-28 (server/discover works).",
  "Every data_* action needs a 'label' string; validation errors say so clearly.",
  "create_app and other mutations default to dry_run: true; pass dry_run:false and an idempotency_key.",
  "You need an existing site: on the free plan a human must create it in the dashboard (bot check).",
  "Docs: append .md to any developers.webflow.com page, or use the docs MCP at developers.webflow.com/_mcp/server (legacy protocol 2025-11-25).",
  "The CLI refuses OAuth login when it detects an agent environment; use MCP or a site token instead."
 ],
 "selfhost": null,
 "summary": "Webflow has strong agent surfaces: Markdown docs with llms.txt, an OpenAPI 3.1 spec, and an official remote MCP server on the current 28 Jul 2026 protocol. Sign-up and MCP OAuth worked in a browser, but on the free plan an agent cannot create a site: the dashboard shows a HUMAN press-and-hold check and the Create Site API is Enterprise-only. Without a site, no core capability could be driven.",
 "wall": "Press-and-hold bot check on site creation",
 "plan_scope": "free plan",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Webflow is a website builder with good documentation and a developer API/MCP server for AI agents, but on the free plan an agent cannot actually build anything: creating a new website is blocked by a 'press and hold' bot check in the dashboard, and the programmatic way to create a site is reserved for Enterprise customers.",
  "can_do": [
   "Read all of Webflow's developer documentation and search it, without needing an account",
   "Sign up for a free account and verify its email in a web browser",
   "Connect an AI assistant to Webflow's official tool server and list the (empty) list of sites",
   "Scaffold a starter extension project with Webflow's command-line tool, no account needed",
   "Revoke its own access token when done"
  ],
  "cannot_do": [
   {
    "what": "Create a website on the free plan",
    "why": "A bot check appears in the dashboard and the programmatic option is Enterprise-only"
   },
   {
    "what": "Do any website work (pages, content, design, publishing)",
    "why": "Every tool needs an existing website, and none could be created"
   },
   {
    "what": "Deploy a cloud app",
    "why": "Requires linking a GitHub account first, which the agent doesn't have"
   },
   {
    "what": "Log in from the command line",
    "why": "Login only works through a browser popup, which the command line tool refuses to open for an automated agent"
   },
   {
    "what": "Buy or cancel a subscription through code",
    "why": "No billing API; checkout is a card form in the dashboard"
   },
   {
    "what": "Confirm its account was fully deleted",
    "why": "Deletion is requested by email and only finishes up to 48 hours later, outside the test"
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "Run A/B tests and personalize (Optimize)",
   "plan": "Optimize add-on ($299/mo)",
   "evidence": "webflow.com/pricing: Optimize add-on $299/mo; Starter 'Optional add-on'"
  },
  {
   "capability": "AEO monitoring",
   "plan": "Team site plan / Analyze add-on",
   "evidence": "webflow.com/pricing: 'AEO agents' under Team"
  },
  {
   "capability": "Page branching",
   "plan": "Team / Enterprise site plan",
   "evidence": "webflow.com/pricing: 'Site plans: Team | Enterprise | Page branching'"
  },
  {
   "capability": "Code components",
   "plan": "Premium site plan / Core workspace",
   "evidence": "webflow.com/pricing"
  },
  {
   "capability": "Site search",
   "plan": "Premium site plan",
   "evidence": "webflow.com/pricing"
  },
  {
   "capability": "Localization",
   "plan": "Team site plan",
   "evidence": "webflow.com/pricing"
  },
  {
   "capability": "Publishing workflows",
   "plan": "Team site plan",
   "evidence": "webflow.com/pricing"
  },
  {
   "capability": "Site activity log",
   "plan": "Team site plan / Enterprise (API)",
   "evidence": "webflow.com/pricing; MCP data_enterprise_tool description"
  },
  {
   "capability": "Analyze",
   "plan": "Analyze add-on ($9/mo)",
   "evidence": "webflow.com/pricing"
  },
  {
   "capability": "Campaigns",
   "plan": "Early Access / paid",
   "evidence": "MCP data_campaigns_tool; capability map"
  },
  {
   "capability": "Password protection",
   "plan": "Basic site plan",
   "evidence": "webflow.com/pricing"
  },
  {
   "capability": "Custom roles",
   "plan": "Enterprise",
   "evidence": "webflow.com/pricing"
  },
  {
   "capability": "Secure integrations",
   "plan": "Enterprise",
   "evidence": "webflow.com/pricing"
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Design",
   "capability": "Design a page visually on the canvas",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Elements/Styles tools (design and build)",
    "cli": null,
    "ui": "Designer canvas"
   },
   "check": "GET /v2/sites/{site_id}/pages shows new/updated page DOM structure",
   "source": "https://webflow.com (home page 'Edit content in a visual canvas'); https://webflow.com/feature/design"
  },
  {
   "id": "cap-02",
   "group": "Design",
   "capability": "Create and edit reusable style classes and breakpoint-specific styles",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Styles tools (create/edit classes, combo classes, CSS properties)",
    "cli": null,
    "ui": "Designer style panel"
   },
   "check": "Designer style panel shows new class applied; MCP 'Styles' tool read-back lists the class and its properties",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Styles' under Design and build)"
  },
  {
   "id": "cap-03",
   "group": "CMS",
   "capability": "Create a CMS collection and define its fields",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/sites/{site_id}/collections",
    "mcp": "CMS tool (create collections, define fields)",
    "cli": null,
    "ui": "CMS editor"
   },
   "check": "GET /v2/collections/{collection_id} returns the collection with the defined fields",
   "source": "https://webflow.com/feature/cms; https://developers.webflow.com/mcp/reference/overview.md"
  },
  {
   "id": "cap-04",
   "group": "CMS",
   "capability": "Create, update, and bulk-manage CMS collection items",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/collections/{collection_id}/items, PATCH /v2/collections/{collection_id}/items",
    "mcp": "CMS tool (manage items with bulk updates)",
    "cli": null,
    "ui": "CMS editor"
   },
   "check": "GET /v2/collections/{collection_id}/items/{item_id} shows updated field values",
   "source": "https://developers.webflow.com/data/reference/structure-1; https://developers.webflow.com/mcp/reference/overview.md"
  },
  {
   "id": "cap-05",
   "group": "CMS",
   "capability": "Publish or unpublish CMS items and pages",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/sites/{site_id}/publish",
    "mcp": "CMS tool (publish and unpublish CMS items)",
    "cli": null,
    "ui": "Designer publish button / CMS editor"
   },
   "check": "GET /v2/collections/{collection_id}/items/{item_id} shows isDraft/isArchived or lastPublished changed",
   "source": "https://webflow.com (home page 'Control what goes live and when'); https://developers.webflow.com/mcp/reference/overview.md"
  },
  {
   "id": "cap-06",
   "group": "Hosting",
   "capability": "Publish and host a live site on a custom or webflow.io domain",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/sites/{site_id}/publish",
    "mcp": null,
    "cli": null,
    "ui": "Site settings > Hosting; Publish button"
   },
   "check": "Site URL (webflow.io or custom domain) resolves and serves the published page content",
   "source": "https://webflow.com/pricing (Webflow.io domain / Custom domain rows)"
  },
  {
   "id": "cap-07",
   "group": "Optimize/A-B",
   "capability": "Run A/B tests and personalize site experiences for visitors",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Webflow Optimize dashboard"
   },
   "check": "Optimize dashboard shows an active experiment with variant traffic split and results",
   "source": "https://webflow.com/feature/optimize ('Run A/B tests', 'Give visitors a personalized site experience')"
  },
  {
   "id": "cap-08",
   "group": "AEO/SEO",
   "capability": "Monitor and optimize content for AI search (AEO) visibility and citations",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Webflow AEO dashboard"
   },
   "check": "AEO dashboard shows AI crawler activity and citation/visibility metrics for the site",
   "source": "https://webflow.com/feature/aeo ('See how AI crawls your site', 'Track visibility in AI answers')"
  },
  {
   "id": "cap-09",
   "group": "Collaboration",
   "capability": "Branch a page, edit in isolation, and merge changes back to main",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "Page branches tool (create, pull, publish preview, merge, delete)",
    "cli": null,
    "ui": "Designer page branching"
   },
   "check": "Site activity log records branch creation and merge; merged page reflects branch changes",
   "source": "https://webflow.com/updates/page-branching-enhancements; https://developers.webflow.com/mcp/reference/overview.md"
  },
  {
   "id": "cap-10",
   "group": "Code",
   "capability": "Build and deploy a full-stack app with Webflow Cloud (GitHub-connected)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Webflow Cloud tool (environments, deployments, domains, logs)",
    "cli": "webflow cloud deploy",
    "ui": "Webflow Cloud dashboard"
   },
   "check": "Webflow Cloud dashboard shows a deployment with status 'live' and build logs",
   "source": "https://webflow.com/pricing ('Webflow Cloud app hosting'); https://developers.webflow.com/webflow-cloud/getting-started.md"
  },
  {
   "id": "cap-11",
   "group": "Design",
   "capability": "Create and manage reusable components (props, variants, slots)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /v2/sites/{site_id}/components",
    "mcp": "Components tool",
    "cli": null,
    "ui": "Designer components panel"
   },
   "check": "GET /v2/sites/{site_id}/components/{component_id} shows component definition with props/variants",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Components' under Design and build)"
  },
  {
   "id": "cap-12",
   "group": "Code",
   "capability": "Import and style custom React code components",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "webflow cli (code components)",
    "ui": "Designer code components panel"
   },
   "check": "Designer element panel lists the imported code component available for placement",
   "source": "https://developers.webflow.com/code-components/introduction.md; https://webflow.com/pricing (Premium: 'Code components')"
  },
  {
   "id": "cap-13",
   "group": "Design",
   "capability": "Create and manage design-system variables (colors, typography, spacing)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Design systems tool (variables, color schemes, typography)",
    "cli": null,
    "ui": "Designer variables panel"
   },
   "check": "Designer variables panel shows the created variable and its applied value",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Design systems')"
  },
  {
   "id": "cap-14",
   "group": "Design",
   "capability": "Create click/hover/scroll animations with Interactions (GSAP-based)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Interactions tool",
    "cli": null,
    "ui": "Designer interactions panel"
   },
   "check": "Designer interactions panel lists the trigger and its animation steps",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Interactions')"
  },
  {
   "id": "cap-15",
   "group": "Code",
   "capability": "Add custom code (site-wide or page-level) and registered scripts",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /v2/sites/{site_id}/custom_code or /v2/pages/{page_id}/custom_code",
    "mcp": "Custom code tool",
    "cli": null,
    "ui": "Site/page settings > Custom code"
   },
   "check": "GET on the custom_code endpoint for that site/page returns the saved script content",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Custom code: Read and write freeform site- and page-level custom code')"
  },
  {
   "id": "cap-16",
   "group": "Design",
   "capability": "Upload and manage custom fonts",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Custom fonts tool",
    "cli": null,
    "ui": "Site settings > Fonts"
   },
   "check": "Site settings fonts list shows the uploaded font family available to apply",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Custom fonts')"
  },
  {
   "id": "cap-17",
   "group": "Assets",
   "capability": "Upload, organize, and compress site assets (images/files)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/sites/{site_id}/assets",
    "mcp": "Assets tool",
    "cli": null,
    "ui": "Designer asset manager"
   },
   "check": "GET /v2/sites/{site_id}/assets lists the uploaded asset with its folder and reduced file size after compression",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Assets: List, organize, update, and delete assets and folders, and run compression jobs')"
  },
  {
   "id": "cap-18",
   "group": "Pages",
   "capability": "Create pages and bulk-update page settings",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/sites/{site_id}/pages, PATCH /v2/pages/{page_id}",
    "mcp": "Pages tool",
    "cli": null,
    "ui": "Designer pages panel"
   },
   "check": "GET /v2/sites/{site_id}/pages shows the new page or updated settings for existing pages",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Pages: Create pages, bulk-update page settings')"
  },
  {
   "id": "cap-19",
   "group": "SEO",
   "capability": "Edit SEO meta titles, descriptions, Open Graph tags, and schema markup",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PATCH /v2/pages/{page_id} (seo, openGraph fields)",
    "mcp": "SEO tool",
    "cli": null,
    "ui": "Page settings > SEO"
   },
   "check": "GET /v2/pages/{page_id} returns updated seo.title/description and openGraph fields",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('SEO: Update meta titles, descriptions, and Open Graph tags')"
  },
  {
   "id": "cap-20",
   "group": "Pages",
   "capability": "Control sitemap inclusion for pages and CMS items",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Sitemap tool",
    "cli": null,
    "ui": "Page/CMS settings > SEO sitemap toggle"
   },
   "check": "Published sitemap.xml includes/excludes the page or item URL matching the toggle",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Sitemap: Control sitemap inclusion for pages and CMS items')"
  },
  {
   "id": "cap-21",
   "group": "Site search",
   "capability": "Enable on-site search across pages and CMS content",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Site settings > Search"
   },
   "check": "Published site's search widget returns results for site content",
   "source": "https://webflow.com/pricing (Premium: 'Site search')"
  },
  {
   "id": "cap-22",
   "group": "Forms",
   "capability": "Collect and manage form submissions",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /v2/sites/{site_id}/forms, GET /v2/forms/{form_id}/submissions",
    "mcp": "Forms tool",
    "cli": null,
    "ui": "Site settings > Forms"
   },
   "check": "GET /v2/forms/{form_id}/submissions lists the new submission; DELETE removes it",
   "source": "https://webflow.com/pricing ('50 form submissions' / 'Unlimited form submissions'); https://developers.webflow.com/mcp/reference/overview.md"
  },
  {
   "id": "cap-23",
   "group": "Collaboration",
   "capability": "Comment on site elements and pages and reply in threads",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v2/sites/{site_id}/comments",
    "mcp": "Comments tool",
    "cli": null,
    "ui": "Designer comment mode"
   },
   "check": "GET comments endpoint for the page shows the new comment/reply thread",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Comments: Read and add site and element comments, list threads and replies')"
  },
  {
   "id": "cap-24",
   "group": "Localization",
   "capability": "Localize site content into multiple languages/locales",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Site settings > Localization"
   },
   "check": "Published locale subdomain/path serves translated page content for that locale",
   "source": "https://webflow.com/pricing (Team: 'Webflow Localize')"
  },
  {
   "id": "cap-25",
   "group": "Workflow",
   "capability": "Run approval/publishing workflows before content goes live",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Site settings > Publishing workflows"
   },
   "check": "Site activity log shows a content change held in a pending-approval state until approved",
   "source": "https://webflow.com/pricing (Team: 'Publishing workflows', 'Single-page publishing')"
  },
  {
   "id": "cap-26",
   "group": "Governance",
   "capability": "Read the site activity log and audit changes (including agent-made changes)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET /v2/sites/{site_id}/activity (Enterprise)",
    "mcp": null,
    "cli": null,
    "ui": "Site settings > Activity log"
   },
   "check": "Activity log lists the specific edit event with actor, timestamp, and change description",
   "source": "https://webflow.com/pricing (Team: 'Site activity log & API')"
  },
  {
   "id": "cap-27",
   "group": "Governance",
   "capability": "Give AI agents site-specific Agent Instructions governing their behavior",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Agent Instructions feature",
    "cli": null,
    "ui": "Designer > Agent Instructions"
   },
   "check": "Agent Instructions panel shows the saved instructions text referenced by subsequent MCP agent actions",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Agent Instructions: Give agents site-specific rules and skills')"
  },
  {
   "id": "cap-28",
   "group": "Analyze",
   "capability": "View site traffic and engagement analytics",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "Analyze tool (traffic, top pages, dimensions, engagement events, time on page)",
    "cli": null,
    "ui": "Webflow Analyze dashboard"
   },
   "check": "Analyze dashboard/MCP tool returns session and pageview counts for the queried date range",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Analyze'); https://webflow.com/feature/analyze"
  },
  {
   "id": "cap-29",
   "group": "Quality",
   "capability": "Run content audits for broken links, missing alt text, and outdated info",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Content audits tool",
    "cli": null,
    "ui": null
   },
   "check": "Audit report lists specific pages/items flagged with broken links or missing alt text",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Content audits: Scan for broken links, missing alt text, and outdated information')"
  },
  {
   "id": "cap-30",
   "group": "Marketing",
   "capability": "Generate and measure campaign landing pages from a brief (Early Access)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "Campaigns tool (Early Access)",
    "cli": null,
    "ui": "Campaigns interface"
   },
   "check": "Campaigns interface shows the generated landing page variant and its performance metrics",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('Campaigns: Generate a campaign landing page from a markdown brief')"
  },
  {
   "id": "cap-31",
   "group": "Developer",
   "capability": "Export reusable components to external codebases via DevLink",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "webflow devlink",
    "ui": null
   },
   "check": "Local codebase contains generated component files matching the Webflow component after running devlink sync",
   "source": "https://developers.webflow.com/devlink/reference/overview.md"
  },
  {
   "id": "cap-32",
   "group": "Developer",
   "capability": "Scaffold and deploy Designer Extensions and apps via the Webflow CLI",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "webflow extension create / webflow cloud deploy",
    "ui": null
   },
   "check": "CLI command output confirms project scaffold created / deployment succeeded with a live URL",
   "source": "https://developers.webflow.com/cli/command-reference.md; https://developers.webflow.com/reference.md"
  },
  {
   "id": "cap-33",
   "group": "Access",
   "capability": "Password-protect a site or specific pages",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Site settings > Access"
   },
   "check": "Visiting the protected page/site in a private browser prompts for a password before showing content",
   "source": "https://webflow.com/pricing (Basic: 'Password protection')"
  },
  {
   "id": "cap-34",
   "group": "Governance",
   "capability": "Set granular permissions and custom roles for workspace members",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > Members & roles"
   },
   "check": "Workspace member list shows a user assigned the created custom role with restricted permissions",
   "source": "https://webflow.com/pricing (Enterprise: 'Granular permissions', 'Custom roles')"
  },
  {
   "id": "cap-35",
   "group": "Integrations",
   "capability": "Connect secure third-party integrations (Enterprise)",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Workspace settings > Integrations"
   },
   "check": "Integrations settings list shows the connected third-party app as active",
   "source": "https://webflow.com/pricing (Enterprise: 'Secure integrations')"
  },
  {
   "id": "cap-36",
   "group": "Collaboration",
   "capability": "Look up workspace users by email for mentions/assignment",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "Comments tool (look up workspace users by email)",
    "cli": null,
    "ui": "Designer comment mentions"
   },
   "check": "User lookup by email returns the matching workspace member profile usable in a comment mention",
   "source": "https://developers.webflow.com/mcp/reference/overview.md ('look up workspace users by email')"
  }
 ],
 "attempts": [
  {
   "t": "00:40",
   "cap": "discovery",
   "capability": "robots.txt",
   "task": "Read robots.txt for AI preferences",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://webflow.com/robots.txt 200: 'Content-Signal: ai-train=yes, search=yes, ai-input=yes' (Cloudflare Content Signals syntax, parses) under User-agent: *; Disallow /admin/, /design/, /dashboard/, /api/ ...",
   "notes": "No aipref Content-Usage line."
  },
  {
   "t": "00:40",
   "cap": "discovery",
   "capability": "well-known cards",
   "task": "Probe AI catalog, A2A cards, UCP, auth.md, SKILL.md",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "/.well-known/ai-catalog.json 404, /.well-known/agent-card.json 404, /.well-known/agent.json 404, /.well-known/ucp 404, /auth.md 404, /SKILL.md 404 (all HTML). /.well-known/mcp/server-card.json 200 application/json: com.webflow/mcp v2.0.0, streamable-http https://mcp.webflow.com/mcp, oauth2 required, 25 tools listed.",
   "notes": ""
  },
  {
   "t": "00:40",
   "cap": "discovery",
   "capability": "MCP server/discover",
   "task": "POST server/discover 2026-07-28 to https://mcp.webflow.com/mcp",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "401 application/json, WWW-Authenticate: Bearer resource_metadata=\"https://mcp.webflow.com/.well-known/oauth-protected-resource/mcp\" error=invalid_token. PRM at /.well-known/oauth-protected-resource 200 {resource: https://mcp.webflow.com, authorization_servers:[https://mcp.webflow.com]}. AS metadata: registration_endpoint (DCR), client_id_metadata_document_supported:false, code_challenge_methods plain+S256, grants authorization_code+refresh_token (no device flow).",
   "notes": "Auth required before discover; needs OAuth consent in a browser by a logged-in Webflow user."
  },
  {
   "t": "03:07",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Create a Webflow account",
   "route": "none",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "No documented sign-up API/CLI/MCP: Data API docs only describe tokens for an existing account; MCP needs OAuth by a logged-in user.",
   "notes": "Headless route does not exist."
  },
  {
   "t": "03:07",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Create account via webflow.com/signup web form",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Email -> Continue -> password -> Create account: POST https://webflow.com/api/user 200 {id:6ac48173...}; redirected to /dashboard/welcome?workspace=october-6-workspace-863d03",
   "notes": "HUMAN/PerimeterX sensor (px-cloud.net collector) ran invisibly and let our agent's browser through; no visible challenge. First two tries failed due to our Playwright script timing (form reset between calls), not the product."
  },
  {
   "t": "06:05",
   "cap": "verify",
   "capability": "Verify email",
   "task": "Open verification link from inbox",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Mail 'Please verify your account' from support@webflow.com arrived within ~1 min; link https://webflow.com/verifyEmail?t=•••• opened in the signed-in browser -> /dashboard?workspace=october-6-workspace-863d03",
   "notes": "Link opened in the browser session (it redirects into the dashboard); a plain GET link, so it does not need a browser in principle."
  },
  {
   "t": "06:05",
   "cap": "first_action",
   "capability": "Create a site",
   "task": "Create a blank site from the dashboard (New Project > Blank site)",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Clicking 'Blank site' at /dashboard/sites/new raised a HUMAN (PerimeterX) 'Confirm you're not a bot - Press and hold' modal (Reference ID [id]). Our pw tool reported visible_challenge:false; screenshot browser/shots/013.png shows it.",
   "notes": "Not attempted to pass. Site creation via Data API (POST /v2/workspaces/{id}/sites) is Enterprise-only per docs; no free-plan headless route to create a site."
  },
  {
   "t": "08:31",
   "cap": "credentials",
   "capability": "Get credentials",
   "task": "MCP OAuth: DCR at https://mcp.webflow.com/oauth/register (headless), then authorize + consent in browser, code exchange headless with PKCE S256",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "DCR 201-equivalent JSON client_id 3JghRPwmwbV-vomv; consent pages mcp.webflow.com/oauth/authorize -> webflow.com/oauth/authorize (scopes list, workspace picker, Authorize) -> code; POST /oauth/token returned bearer, expires_in 3600, refresh_token.",
   "notes": "Consent step needs a logged-in browser session; no device flow, no CIMD (client_id_metadata_document_supported:false). Data API site tokens need a site, which we could not create."
  },
  {
   "t": "08:31",
   "cap": "first_call",
   "capability": "First MCP call",
   "task": "server/discover then tools/list then data_sites_tool list_sites",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "server/discover 200 supportedVersions ['2026-07-28'], serverInfo webflow-mcp 2.1.0; tools/list 34 tools; list_sites -> {sites:[], total:0}",
   "notes": "First list_sites call failed validation: 'actions.0: label: Invalid input: expected string' - clear error, fixed by adding label.",
   "quality": {
    "verify_route": "yes",
    "error_legibility": "clear",
    "docs_match": "match",
    "recoverable": "yes"
   }
  },
  {
   "t": "08:31",
   "cap": "cap-10",
   "capability": "Build and deploy a full-stack app with Webflow Cloud",
   "task": "Create a standalone Webflow Cloud app from public repo Webflow-Examples/hello-world-static-app",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "data_apps_tool create_app dry_run default true returned preview; with dry_run:false -> 409 ConflictError code GITHUB_REPO_NOT_CONNECTED with installUrl to GitHub OAuth for the Webflow Cloud GitHub App.",
   "notes": "Webflow Cloud needs a GitHub account with the Webflow Cloud GitHub App installed; our agent has no GitHub account. Dry-run default and idempotency_key are good agent design.",
   "quality": {
    "error_legibility": "clear",
    "idempotent": "yes",
    "recoverable": "no"
   }
  },
  {
   "t": "08:58",
   "cap": "discovery",
   "capability": "Docs MCP server",
   "task": "Probe docs MCP https://developers.webflow.com/_mcp/server (Fern)",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "server/discover 2026-07-28 -> HTTP 400 JSON-RPC -32000 'Unsupported protocol version: 2026-07-28 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)'; initialize -> protocolVersion 2025-11-25, fern-docs-mcp-server 1.0.0; tools/list: searchDocs (no auth).",
   "notes": "Legacy docs-search MCP; useful for agents, no account needed."
  },
  {
   "t": "08:58",
   "cap": "first_action",
   "capability": "Create a site",
   "task": "Find a headless route to create a site",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "Docs (searchDocs): 'The Create Site endpoint is an Enterprise-only API' POST https://api.webflow.com/v2/workspaces/{workspaceId}/sites. MCP data_sites_tool has only get_site, list_sites, publish_site; get_more_tools: 'we have shown you the full tool list'.",
   "notes": "On the free Starter workspace there is no documented headless way to create a site; the UI route is behind the press-and-hold check."
  },
  {
   "t": "10:49",
   "cap": "cap-01",
   "capability": "Design a page visually on the canvas",
   "task": "Via MCP data_whtml_builder / data_element_builder on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-02",
   "capability": "Create and edit reusable style classes and breakpoint-specific styles",
   "task": "Via MCP data_style_tool create_style on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-03",
   "capability": "Create a CMS collection and define its fields",
   "task": "Via MCP data_cms_tool create_collection on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-04",
   "capability": "Create, update, and bulk-manage CMS collection items",
   "task": "Via MCP data_cms_tool create_collection_items on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-05",
   "capability": "Publish or unpublish CMS items and pages",
   "task": "Via MCP data_cms_tool publish_collection_items on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-06",
   "capability": "Publish and host a live site on a custom or webflow.io domain",
   "task": "Via MCP data_sites_tool publish_site on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-07",
   "capability": "Run A/B tests and personalize site experiences for visitors",
   "task": "Use run a/b tests and personalize site experiences for visitors on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: 'Optimize | Maximize conversions from your site. | $299 /mo' add-on; Starter: '| Optional add-on'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-08",
   "capability": "Monitor and optimize content for AI search (AEO) visibility and citations",
   "task": "Use monitor and optimize content for ai search (aeo) visibility and citations on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: 'AEO agents' listed under Team ('Everything in Premium, plus'); Analyze AEO insights an add-on ($9/mo)",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-09",
   "capability": "Branch a page, edit in isolation, and merge changes back to main",
   "task": "Use branch a page, edit in isolation, and merge changes back to main on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: 'Site plans: | Team | Enterprise | Page branching'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-11",
   "capability": "Create and manage reusable components (props, variants, slots)",
   "task": "Via MCP data_component_tool create_blank_component on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-12",
   "capability": "Import and style custom React code components",
   "task": "Use import and style custom react code components on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Premium site plan 'Code components'; Core workspace 'Code components on staged sites' ($19/mo)",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-13",
   "capability": "Create and manage design-system variables (colors, typography, spacing)",
   "task": "Via MCP data_variable_tool create_color_variable on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-14",
   "capability": "Create click/hover/scroll animations with Interactions (GSAP-based)",
   "task": "Via MCP data_interactions_tool create_interaction on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-15",
   "capability": "Add custom code (site-wide or page-level) and registered scripts",
   "task": "Via MCP data_scripts_tool set_site_freeform_code on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-16",
   "capability": "Upload and manage custom fonts",
   "task": "Via MCP data_fonts_tool create_font on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-17",
   "capability": "Upload, organize, and compress site assets (images/files)",
   "task": "Via MCP data_assets_tool create_asset on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-18",
   "capability": "Create pages and bulk-update page settings",
   "task": "Via MCP data_pages_tool create_page on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-19",
   "capability": "Edit SEO meta titles, descriptions, Open Graph tags, and schema markup",
   "task": "Via MCP data_pages_tool update_page_settings on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-20",
   "capability": "Control sitemap inclusion for pages and CMS items",
   "task": "Via MCP data_sitemap_tool update_page_sitemap_status on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-21",
   "capability": "Enable on-site search across pages and CMS content",
   "task": "Use enable on-site search across pages and cms content on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Premium site plan 'Site search'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-22",
   "capability": "Collect and manage form submissions",
   "task": "Via MCP data_forms_tool list_forms on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-23",
   "capability": "Comment on site elements and pages and reply in threads",
   "task": "Via MCP data_comments_tool create_reply on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-24",
   "capability": "Localize site content into multiple languages/locales",
   "task": "Use localize site content into multiple languages/locales on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Team 'Webflow Localize'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-25",
   "capability": "Run approval/publishing workflows before content goes live",
   "task": "Use run approval/publishing workflows before content goes live on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Team 'Publishing workflows'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-26",
   "capability": "Read the site activity log and audit changes (including agent-made changes)",
   "task": "Use read the site activity log and audit changes (including agent-made changes) on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Team 'Site activity log & API'; MCP data_enterprise_tool list_site_activity_logs 'only works if User's workspace plan is Enterprise'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-27",
   "capability": "Give AI agents site-specific Agent Instructions governing their behavior",
   "task": "Via MCP data_agent_instructions_tool create_instruction on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-28",
   "capability": "View site traffic and engagement analytics",
   "task": "Use view site traffic and engagement analytics on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: 'Analyze ... $9/mo based on # of sessions' add-on; Starter '| Optional add-on'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-29",
   "capability": "Run content audits for broken links, missing alt text, and outdated info",
   "task": "Via MCP (no dedicated MCP tool found in tools/list) on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "cap-30",
   "capability": "Generate and measure campaign landing pages from a brief (Early Access)",
   "task": "Use generate and measure campaign landing pages from a brief (early access) on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "MCP data_campaigns_tool (Early Access); campaigns not in the free Starter plan per capabilities map",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-33",
   "capability": "Password-protect a site or specific pages",
   "task": "Use password-protect a site or specific pages on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Basic site plan 'Password protection'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-34",
   "capability": "Set granular permissions and custom roles for workspace members",
   "task": "Use set granular permissions and custom roles for workspace members on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Enterprise 'Granular permissions', 'Custom roles'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-35",
   "capability": "Connect secure third-party integrations (Enterprise)",
   "task": "Use connect secure third-party integrations (enterprise) on the free Starter workspace",
   "route": "none",
   "documented": true,
   "result": "plan_gated",
   "verified": false,
   "evidence": "webflow.com/pricing: Enterprise 'Secure integrations'",
   "notes": "Also needs a site, which we could not create."
  },
  {
   "t": "10:49",
   "cap": "cap-36",
   "capability": "Look up workspace users by email for mentions/assignment",
   "task": "Via MCP data_comments_tool search_comment_user_by_email on our test site",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Every MCP action for this capability requires site_id (schema 'required': ['site_id'] / siteId); list_sites returned {sites:[], total:0}. A site can only be created in the dashboard, where 'Blank site' raised a HUMAN press-and-hold check, or via the Enterprise-only POST /v2/workspaces/{id}/sites.",
   "notes": "No site in the workspace, so the capability could not be exercised.",
   "quality": {
    "error_legibility": "n/a"
   }
  },
  {
   "t": "10:49",
   "cap": "pay",
   "capability": "Pay",
   "task": "Find how an agent could buy a plan",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "No x402/MPP/L402: x402.webflow.com, mpp.webflow.com, agents.webflow.com 404 HTML; /.well-known/ucp 404; not in x402 Bazaar or mpp.dev/api/services; no billing tools in MCP tools/list; no billing API in docs. Dashboard Plans > 'Upgrade to Core' opens an in-app checkout: 'Core Workspace plan $19/month billed yearly, Total due today $228.00 USD', 'Payment details > Add a payment method > Card' (Stripe Elements iframes js.stripe.com), hCaptcha script on the page, 'Pay $228.00 USD now'. Starter is free; no trial offered.",
   "notes": "Did not enter a card. Whether hCaptcha/3DS would challenge is untested."
  },
  {
   "t": "12:20",
   "cap": "cap-32",
   "capability": "Scaffold and deploy Designer Extensions and apps via the Webflow CLI",
   "task": "Install @webflow/webflow-cli@next locally and scaffold a Designer Extension",
   "route": "cli",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "webflow 2.10.0-next.0; 'webflow extension init agentdrives-ext --no-input' -> 'Done! Check out ./agentdrives-ext/README.md'; folder has webflow.json, package.json, src/, public/.",
   "notes": "Scaffold works headless with no account. Deploy not done: 'webflow auth login' aborts with 'No-input mode enabled. Aborting OAuth authentication' (no-input auto-enabled in agent environments), and cloud deploy also needs a GitHub/site.",
   "quality": {
    "verify_route": "yes",
    "error_legibility": "clear",
    "docs_match": "match"
   }
  },
  {
   "t": "12:20",
   "cap": "credentials",
   "capability": "Get credentials",
   "task": "Webflow CLI login: webflow auth login",
   "route": "cli",
   "documented": true,
   "result": "failed",
   "verified": false,
   "evidence": "'webflow auth login --no-input' and under a PTY: '✖ No-input mode enabled. Aborting OAuth authentication'. Docs: 'Open browser OAuth flow to authenticate'.",
   "notes": "CLI login is a browser OAuth flow only; no device flow or token flag documented in the command reference we read.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "12:20",
   "cap": "cap-31",
   "capability": "Export reusable components to external codebases via DevLink",
   "task": "webflow devlink export/sync from a site",
   "route": "cli",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "DevLink needs 'webflow auth login' (aborts headless, see credentials attempt) and a site with components; workspace has no sites.",
   "notes": ""
  },
  {
   "t": "14:13",
   "cap": "cleanup",
   "capability": "Revoke MCP token",
   "task": "Revoke the MCP OAuth access token (RFC 7009 at revocation_endpoint)",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST https://mcp.webflow.com/oauth/token token=•••• -> 200; tools/list with the token then -> 401 invalid_token.",
   "notes": ""
  },
  {
   "t": "14:13",
   "cap": "cancel",
   "capability": "Cancel plan",
   "task": "Cancel/downgrade",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "No paid plan was started (Starter, $0). No billing API or MCP billing tool exists; the plans/billing pages are dashboard-only.",
   "notes": ""
  },
  {
   "t": "14:13",
   "cap": "delete",
   "capability": "Delete account",
   "task": "Delete the account and its data",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Account > 'Request account deletion' -> checkbox -> 'Delete account' -> 'Check your email to complete your account deletion request.' Mail 'Confirm your Webflow account deletion' arrived 05:15:21; link /dashboard/profile/settings?deleteToken=•••• redirected to /signup?m=... decoding to 'Your deletion request has been confirmed, your account will be deleted within 48 hours.'",
   "notes": "Web UI plus email confirmation; no API/CLI/MCP route. Final deletion is asynchronous (within 48 h) and could not be observed. After logout the /signup page itself showed the HUMAN press-and-hold check (Reference ID 04253ed0-...).",
   "quality": {
    "verify_route": "no"
   }
  },
  {
   "t": "15:06",
   "cap": "docs",
   "capability": "Docs",
   "task": "Read docs headless: llms.txt, .md pages, markdown negotiation, OpenAPI",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://developers.webflow.com/llms.txt 200 (per-section llms.txt, 'append .md'); quick-start.md 200 text/markdown; Accept: text/markdown -> 303 Location: ...quick-start.md (no vary: accept on the 303); OpenAPI 'openapi: 3.1.0' Data API v2 at https://raw.githubusercontent.com/webflow/openapi-spec/main/openapi/v2.yml (140 operationId); docs MCP searchDocs works without auth.",
   "notes": "",
   "quality": {
    "docs_match": "match"
   }
  }
 ],
 "stale": false,
 "icon": "/logos/webflow.png",
 "monitored": false,
 "verdict": "Gets in on its own, but not yet the work: L2 · Gets in. Sign-up passed an invisible PerimeterX sensor, and verification and MCP OAuth consent both completed in the browser. It stopped at the first real action: creating a site, which nearly every tool needs, is dashboard-only on the free plan, and the Create Site API is Enterprise-only. It read the docs through a Markdown llms.txt tree and an OpenAPI spec, and listed the MCP server's tools, but could do no site work through API, MCP or CLI. Upgrading opened an in-app checkout with an hCaptcha script loaded, left unpaid; deletion was requested and confirmed by email, but never checked through to completion.",
 "page": "https://agentdrives.com/tools/webflow?via=api"
}