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
-
Open Settings → Tools & MCPs → Add custom MCP.
2. Choose Add JSON and paste:{ "mcpServers": { "web2wave": { "url": "https://mcp.web2wave.com/mcp", "headers": { "Authorization": "Bearer YOUR_WEB2WAVE_API_KEY" } } } }- 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_screencan 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. Useweb2wave_create_quiz_with_screensso 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/XXXand 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
24484look 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/startinto a new web2wave quiz in this project usingweb2wave_crawl_funnel. Show me the plan before publishing.
Re-skin to a brand palette
Re-skin quiz
24484with brand color#5C6AC4, accent#F59E0B, soft corners. Useweb2wave_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
24484withweb2wave_render_quiz_screen. Compare to this [image]. List concrete discrepancies (color, font-size, spacing) and fix them —web2wave_set_quiz_theme_variablesfirst for global tokens, thenweb2wave_patch_block_css_variablesfor one-off block tweaks. Re-render until they match.
A/B experiment read-out
Give me a read-out on experiment
42, primary metricconversion_to_subscribe, min 500 users per variant. Useweb2wave_summarize_experiment. If there's no winner yet, pull the last 5 snapshots withweb2wave_get_experiment_snapshotsand tell me whether the trend is for or against variant B.
Compare two versions
Pull
web2wave_get_quiz_versionsfor quiz24484. Compare the published and current versions (render eachview_urlwithweb2wave_render_quiz_screen). What changed, and what's risky before releasing.
Find the funnel drop-off
Run
web2wave_analyze_funnelfor quiz24484from2026-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. Runweb2wave_diagnose_subscriptionand propose next steps — do not execute anything destructive.
Invoice backfill
Record an invoice for subscription
12345: date2026-05-15, amount19.99, status1(Paid). Useweb2wave_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
1234to templates v2 — create a new copy, don't touch the original.
What happens automatically:
web2wave_migrate_templates_v1_to_v2— GET the v1 source, POST a new quiz/paywall (templates_version: 2, slug likeyour-slug-v2). The original id is never updated.- Styles from the old custom CSS are mapped to theme
css_variableson the new id only. - Screenshots of v1 vs v2 previews for a quick visual check.
- Plain-language reply: new id, slug, links; confirmation that the old funnel is unchanged.
Variants:
| You say | Effect |
|---|---|
| Copy this funnel to the new templates | Same full migration |
Migrate paywall 56 to templates 2 | Paywall instead of quiz |
| Clone screens only, styles later | Clone 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:
| Prompt | What it does |
|---|---|
web2wave-design-to-quiz | Brief → plan → blocks → JSON → validate → import. |
web2wave-iterate-quiz-design | Render → diff vs design → patch CSS variables → re-render. |
web2wave-clone-funnel-from-url | Crawl an external funnel → web2wave quiz. |
web2wave-theme-from-brand | Brand colour → palette → approval → apply → verify. |
web2wave-experiment-readout | A/B snapshot → winner / keep-running verdict + next steps. |
web2wave-version-compare | Side-by-side diff of two versions with screenshots. |
web2wave-analyze-funnel | Drop-off analysis + recommendations. |
web2wave-investigate-subscription | Billing triage. |
web2wave-create-paywall | Plans + prices + quiz wiring. |
web2wave-migrate-templates-v1-to-v2 | v1 → new v2 copy (screens + styles + preview QA); source unchanged. |
web2wave-migrate-v1-custom-css-to-variables | Style 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.
- Authoring —
validate_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
| Symptom | Fix |
|---|---|
401 Unauthorized | Wrong 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 data | The key belongs to a different project. |
| Cursor doesn't see the server | cat ~/.cursor/mcp.json | jq — fix the JSON. |
| Screenshot is empty | Pass screen_id explicitly. |
validate_quiz_json complains about a block you can see in the editor | Schema snapshot is stale — email [email protected]. |
list_subscriptions / list_quizzes returns only the first N rows | List 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. |