Funnel/Split

Developers

AI control via MCP

FunnelSplit ships a Model Context Protocol server. Connect Claude — or any MCP-capable assistant — and it can build pages, publish forms, run split tests, manage your CRM and read your analytics. You stay in control: scoped keys, rate limits, audit logs.

How it works

Setup

First, create a key in the dashboard: API & webhooks → Create key → check the "AI / content control (MCP)" scopes (or Select all). Copy the token — it's shown once.

Claude Code

claude mcp add --transport http funnelsplit https://app.funnelsplit.com/mcp \
  --header "Authorization: Bearer fs_live_YOUR_TOKEN"

Claude Desktop / Cursor / other clients

Add to your client's MCP config (claude_desktop_config.json, Cursor's mcp.json, etc.):

{
  "mcpServers": {
    "funnelsplit": {
      "url": "https://app.funnelsplit.com/mcp",
      "headers": { "Authorization": "Bearer fs_live_YOUR_TOKEN" }
    }
  }
}

Smoke test with curl

curl -X POST https://app.funnelsplit.com/mcp \
  -H "Authorization: Bearer fs_live_YOUR_TOKEN" \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

Or interactively: npx @modelcontextprotocol/inspector → Streamable HTTP → the endpoint URL + your Authorization header.

Try it — things to ask your assistant

The assistant starts with get_workspace_overview to see what exists, and list_block_types before it authors page content.

Page block format

Page content ("puckData") is a JSON document rendered by the same engine as the visual editor — AI-authored pages are fully editable in the dashboard afterwards:

{
  "content": [
    { "type": "Hero", "props": { "id": "hero-1", "title": "Launch faster",
      "subtitle": "Pages, tests and funnels in one place.", "align": "center",
      "backgroundColor": "#111827", "textColor": "#ffffff",
      "ctaLabel": "Start free", "ctaHref": "/signup" } },
    { "type": "FormEmbed", "props": { "id": "form-1", "formSlug": "contact" } }
  ],
  "root": { "props": {} },
  "zones": {}
}

21 block types — core: Hero, Heading, Text, Image, Video, Columns, Button, Spacer, Html, CountdownTimer, FormEmbed; marketing sections: Navbar, Footer, FeatureGrid, Testimonials, PricingTable, FAQ, LogoStrip, Stats, SplitSection, CTABand. The list_block_types tool returns every prop, allowed values and defaults — that catalog is generated from the editor's own config, so it can't drift.

Themes

Every page can carry a theme on puckData.root.props — a designed preset (font pairing, palette, corner radius, spacing) that all blocks obey via CSS variables. Six presets ship: default, editorial, startup, bold, calm, noir, plus overrides for accent color, background, fonts and corners. Fonts are open-source and self-hosted first-party — no third-party requests.

{
  "content": [ … ],
  "root": { "props": { "themePreset": "startup", "themeAccent": "#4f46e5" } },
  "zones": {}
}

list_block_types returns the full theme documentation (presets, fonts, override keys). Pages without a theme keep the classic look — existing pages are unaffected.

Raw HTML pages & layouts

Pages also support contentMode: "html" — a raw HTML fragment instead of blocks (created via create_page, content set via update_page.draftHtml or save_page_version.html). And every page (blocks or HTML) can attach a layout: a shared HTML shell with a [[ $pageContent ]] placeholder, managed by the list/create/update/delete_layout tools. Edit the layout once, every attached page updates. Page Meta overrides the layout's title/description tags. Embed a form in raw HTML with <div data-fs-form="slug"></div>.

Tool reference

All 39 tools, generated from the server's registry (never hand-maintained). Scopes shows what the key must have for the tool to appear; click a tool for its parameters.

Loading tool reference…

Safety & limits

Prefer plain REST? The API reference documents the /v1 endpoints for contacts, submissions, events, test stats and webhooks.

No credit card required

Ship the page
that wins.

Start free See pricing