MCP server (Cursor, Claude, Codex)

Paste one URL into your AI client and operate your web2wave project from chat.

The web2wave MCP server is an AI connector for your project. Plug Cursor, Claude Web/Desktop, Windsurf or Codex into it and drive quizzes, paywalls, subscriptions and experiments with a single prompt.

Endpoint: https://mcp.web2wave.com/mcp

1. Grab an API key

Cabinet → Project Settings → API. One key = one project. Copy it — you'll need it in the next step.

2. Connect a client

  1. Open SettingsTools & MCPsAdd custom MCP.

  2. Choose Add JSON and paste:

    {
      "mcpServers": {
        "web2wave": {
          "url": "https://mcp.web2wave.com/mcp",
          "headers": { "Authorization": "Bearer YOUR_WEB2WAVE_API_KEY" }
        }
      }
    }
  3. Save. Cursor reloads MCPs automatically.

Pick a vision-capable model (Claude Opus 4 / Sonnet 4, GPT‑5, Gemini 2.5 Pro) so web2wave_render_quiz_screen can hand back real screenshots the model can read.

Verify

Open a fresh chat and ask:

List my web2wave quizzes.

If real ids and slugs come back — you're connected.

3. Prompts you can copy straight in

Build a quiz from scratch

Build a 9-screen onboarding quiz for a meditation app. Primary color #4F46E5, soft corners. Use web2wave_create_quiz_with_screens so it's created and published in one call. Return the preview URL.

From a Figma file

(needs a Figma MCP connected alongside)

Take the frames from https://www.figma.com/file/XXX and rebuild them as a web2wave quiz. Show me the screen plan and wait for my approval before publishing.

From a screenshot dropped into the chat

[image] Make the welcome screen of quiz 24484 look like this image. Use theme CSS variables first, then re-render. Iterate until they match.

Clone a competitor funnel

Clone the funnel at https://competitor.com/quiz/start into a new web2wave quiz in this project using web2wave_crawl_funnel. Show me the plan before publishing.

Re-skin to a brand palette

Re-skin quiz 24484 with brand color #5C6AC4, accent #F59E0B, soft corners. Use web2wave_generate_theme_palette — show me the palette for approval first, then apply via theme variables and return a screenshot.

Match one screen to a reference

Render the welcome screen of quiz 24484 with web2wave_render_quiz_screen. Compare to this [image]. List concrete discrepancies (color, font-size, spacing) and fix them — web2wave_set_quiz_theme_variables first for global tokens, then web2wave_patch_block_css_variables for one-off block tweaks. Re-render until they match.

A/B experiment read-out

Give me a read-out on experiment 42, primary metric conversion_to_subscribe, min 500 users per variant. Use web2wave_summarize_experiment. If there's no winner yet, pull the last 5 snapshots with web2wave_get_experiment_snapshots and tell me whether the trend is for or against variant B.

Compare two versions

Pull web2wave_get_quiz_versions for quiz 24484. Compare the published and current versions (render each view_url with web2wave_render_quiz_screen). What changed, and what's risky before releasing.

Find the funnel drop-off

Run web2wave_analyze_funnel for quiz 24484 from 2026-05-01..2026-05-20. Where's the biggest drop-off, and which 3 experiments should I run.

Subscription support

Subscription 12345. Customer is complaining about a double charge. Run web2wave_diagnose_subscription and propose next steps — do not execute anything destructive.

Invoice backfill

Record an invoice for subscription 12345: date 2026-05-15, amount 19.99, status 1 (Paid). Use web2wave_create_subscription_invoice.

Migrate quiz or paywall from templates v1 to v2

Older funnels use templates version 1 (screen-content.ejs + global custom CSS). New funnels use version 2 (per-block templates + CSS variables). You do not need to mention custom_css, css_variables, or “compare preview” — the assistant runs the full pipeline from a short phrase.

One line (quiz):

Migrate quiz 1234 to templates v2 — create a new copy, don't touch the original.

What happens automatically:

  1. web2wave_migrate_templates_v1_to_v2GET the v1 source, POST a new quiz/paywall (templates_version: 2, slug like your-slug-v2). The original id is never updated.
  2. Styles from the old custom CSS are mapped to theme css_variables on the new id only.
  3. Screenshots of v1 vs v2 previews for a quick visual check.
  4. Plain-language reply: new id, slug, links; confirmation that the old funnel is unchanged.

Variants:

You sayEffect
Copy this funnel to the new templatesSame full migration
Migrate paywall 56 to templates 2Paywall instead of quiz
Clone screens only, styles laterClone only; styles when you ask

If you only know the name or slug, start with: Migrate quiz my-onboarding to v2 — the model resolves the id via web2wave_list_quizzes.

4. Pre-built scenarios (prompts)

Clients that show prompts in their UI (Cursor /mcp, Claude Web/Desktop prompts panel) expose these one-click workflows:

PromptWhat it does
web2wave-design-to-quizBrief → plan → blocks → JSON → validate → import.
web2wave-iterate-quiz-designRender → diff vs design → patch CSS variables → re-render.
web2wave-clone-funnel-from-urlCrawl an external funnel → web2wave quiz.
web2wave-theme-from-brandBrand colour → palette → approval → apply → verify.
web2wave-experiment-readoutA/B snapshot → winner / keep-running verdict + next steps.
web2wave-version-compareSide-by-side diff of two versions with screenshots.
web2wave-analyze-funnelDrop-off analysis + recommendations.
web2wave-investigate-subscriptionBilling triage.
web2wave-create-paywallPlans + prices + quiz wiring.
web2wave-migrate-templates-v1-to-v2v1 → new v2 copy (screens + styles + preview QA); source unchanged.
web2wave-migrate-v1-custom-css-to-variablesStyle pass only, when the v2 copy already exists.

5. What's inside (short)

70+ tools, grouped:

  • Content — quizzes, paywalls, screens, versions with preview URLs, custom CSS, theme CSS variables, palette generator, templates v1→v2 migration (create-only clone to version 2).
  • Subscriptions — list/get, invoices, manual invoice backfill, update/cancel/refund/charge/pause.
  • Analytics — graph reports, quiz answers, funnel snapshot.
  • A/B — list/get experiments, snapshots with p-value/effect-size/CI, summarize verdict.
  • Editor schema — 410+ block types, 1700+ CSS variables, property descriptions.
  • Authoringvalidate_quiz_json (pre-publish validator), curated guides, plan_quiz_from_design.
  • Preview — preview URLs, Playwright screenshots delivered inline to chat.
  • Browser — generic browser MCP (open any URL, click, fill, screenshot).
  • Docs — search and read docs.web2wave.com.

6. Security

  • One API key = one project. It cannot reach any other project.
  • Destructive operations (cancel, refund, delete, charge) are disabled on the hosted endpoint — use the cabinet for those.
  • The OAuth flow is PKCE-secured; the token lives in your client, not on our side.

7. Troubleshooting

SymptomFix
401 UnauthorizedWrong Bearer token / key — re-check or re-run OAuth.
"Couldn't reach the MCP server"Remove the connector in your client and add it again.
Tools return empty dataThe key belongs to a different project.
Cursor doesn't see the servercat ~/.cursor/mcp.json | jq — fix the JSON.
Screenshot is emptyPass screen_id explicitly.
validate_quiz_json complains about a block you can see in the editorSchema snapshot is stale — email [email protected].
list_subscriptions / list_quizzes returns only the first N rowsList tools already ship a slim row by default. If you actually need a much bigger page in one shot from a local client (Cursor / Codex CLI / Windsurf), raise the cap with env vars WEB2WAVE_MAX_TEXT_BYTES=300000 and WEB2WAVE_MAX_STRUCTURED_BYTES=600000. Leave the defaults for Claude Web/Desktop — its SSE proxy stops the session above ~100 KB.

See also