
Webcake Landing
Lets Claude build complete WebCake landing pages from plain language prompts by exposing the full element catalog, JSON schema, and validation rules. It knows the exact structure of every WebCake component (hero, form, countdown, product list, cart) and guides the AI to assemble valid page JSON with absolute positioning, CTAs, and form fields. The validate_page tool catches layout errors before persistence, and the create_page and patch_page tools push directly to your WebCake account with dry-run previews. You describe the page you want, the AI calls list_elements and get_generation_guide to learn the model, builds the JSON, validates it, and saves it. You get an editable page in the WebCake editor without touching the schema yourself. Works over stdio locally or as a hosted endpoint with JWT auth.
- GitHub stars
- 7
- tools
- 19
- auth
- Secret needed
- transport
- STDIO, HTTP
- env vars
- 5
- last updated
- Nov 5, 2026
Install
From registry metadata$ npx add-mcp https://mcp.toolvn.io.vn/mcp --name webcake-landing-mcp --header 'Authorization: Bearer ${API_TOKEN}'Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http webcake-landing-mcp https://mcp.toolvn.io.vn/mcp --header 'Authorization: YOUR_AUTHORIZATION'Run in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 19 toolsVerified live against the running server on Jun 10, 2026.
get_generation_guideReturns the page-building conventions reference: output shape, the absolute-positioning coordinate system, event vocabulary, and the recommended workflow.
Returns the page-building conventions reference: output shape, the absolute-positioning coordinate system, event vocabulary, and the recommended workflow.
No parameters. Call it with no arguments.
list_elementsList every supported element type, grouped by category, with a one-line summary and whether it is a container (can hold children).
List every supported element type, grouped by category, with a one-line summary and whether it is a container (can hold children).
No parameters. Call it with no arguments.
get_elementReturns detailed usage for one element type — or for many in a single call (BATCH MODE): summary, when to use it, key `specials` fields, a SPARSE skeleton node (the exact shape to emit — the server hydrates omitted boilerplate), and (for common types) a filled example. Pass `t...2 params
Returns detailed usage for one element type — or for many in a single call (BATCH MODE): summary, when to use it, key `specials` fields, a SPARSE skeleton node (the exact shape to emit — the server hydrates omitted boilerplate), and (for common types) a filled example. Pass `t...
typestringtypesarrayget_page_schemaReturns the full JSON Schema (Draft 2020-12) of a Webcake page source object { page: [...], settings: {...} } for structural reference and validation.
Returns the full JSON Schema (Draft 2020-12) of a Webcake page source object { page: [...], settings: {...} } for structural reference and validation.
No parameters. Call it with no arguments.
new_elementReturns a default element node for a type in the SPARSE authoring shape (fresh id, both breakpoints' seeded styles, seeded specials). Emit elements exactly like this — fill in specials + top/left coordinates; OMIT properties/runtime/empty events/config (the server hydrates the...2 params
Returns a default element node for a type in the SPARSE authoring shape (fresh id, both breakpoints' seeded styles, seeded specials). Emit elements exactly like this — fill in specials + top/left coordinates; OMIT properties/runtime/empty events/config (the server hydrates the...
namestringtype*stringnew_page_skeletonReturns an empty but complete top-level page source { page:[], popup:[], settings:{...defaults}, options:{...}, cartConfigs:{} } matching the real editor shape.1 params
Returns an empty but complete top-level page source { page:[], popup:[], settings:{...defaults}, options:{...}, cartConfigs:{} } matching the real editor shape.
mobileOnlybooleanvalidate_pageValidates a page source against the schema + semantic rules (unique ids, dangling event targets, children only on containers, missing field_name, top-level types) plus form-data bindings (duplicate field_name within one form, dangling option-event promoId / connectedSurvey / c...1 params
Validates a page source against the schema + semantic rules (unique ids, dangling event targets, children only on containers, missing field_name, top-level types) plus form-data bindings (duplicate field_name within one form, dangling option-event promoId / connectedSurvey / c...
pagevaluesearch_imagesSearches Pexels stock photos (see https://www.pexels.com/api/) by short English subject queries. Returns hotlinkable URLs at several sizes (src.large for heroes/banners, src.medium for cards/thumbs), `avg_color` for matching section backgrounds, plus photographer name and attr...8 params
Searches Pexels stock photos (see https://www.pexels.com/api/) by short English subject queries. Returns hotlinkable URLs at several sizes (src.large for heroes/banners, src.medium for cards/thumbs), `avg_color` for matching section backgrounds, plus photographer name and attr...
colorstringorientationstringlandscape · portrait · squarepageintegerper_pageintegerpickstringbest · allqueriesarrayquerystringsizestringlarge · medium · smallingest_htmlParses an HTML string into a compact reference AST: title, description, og_image, language, and an array of sections classified by role (header, hero, features, about, form, cta, gallery, testimonials, pricing, faq, footer, unknown) with headings, subheadings, paragraphs, imag...2 params
Parses an HTML string into a compact reference AST: title, description, og_image, language, and an array of sections classified by role (header, hero, features, about, form, cta, gallery, testimonials, pricing, faq, footer, unknown) with headings, subheadings, paragraphs, imag...
html*stringintentstringadapt · cloneingest_urlFetches a public webpage (GET, 10s timeout, 2MB cap) and parses it into the same compact reference AST as ingest_html. Returns a warning when the page appears client-rendered (empty <body>) so the caller can fall back to a screenshot — Claude can analyze a screenshot natively...2 params
Fetches a public webpage (GET, 10s timeout, 2MB cap) and parses it into the same compact reference AST as ingest_html. Returns a warning when the page appears client-rendered (empty <body>) so the caller can fall back to a screenshot — Claude can analyze a screenshot natively...
intentstringadapt · cloneurl*stringlist_organizationsReturns the account's Webcake organizations (id, name, is_default). The default org (type===1, usually the personal workspace) is where pages normally go. Needs WEBCAKE_API_BASE + WEBCAKE_JWT.
Returns the account's Webcake organizations (id, name, is_default). The default org (type===1, usually the personal workspace) is where pages normally go. Needs WEBCAKE_API_BASE + WEBCAKE_JWT.
No parameters. Call it with no arguments.
create_pagePersists a page source to the configured Webcake backend: creates a NEW page and saves the source (source-only — opens in the editor where re-saving renders it). Validates first. DEFAULTS to dry_run=true (validates, caches the source as draft_id, returns the HTTP request it WO...5 params
Persists a page source to the configured Webcake backend: creates a NEW page and saves the source (source-only — opens in the editor where re-saving renders it). Validates first. DEFAULTS to dry_run=true (validates, caches the source as draft_id, returns the HTTP request it WO...
draft_idstringdry_runbooleannamestringorganization_idstring | numbersourcevaluelist_pagesLists the pages owned by the account (id, name, organization_id, updated_at), most-recent first. Needs WEBCAKE_API_BASE + WEBCAKE_JWT.
Lists the pages owned by the account (id, name, organization_id, updated_at), most-recent first. Needs WEBCAKE_API_BASE + WEBCAKE_JWT.
No parameters. Call it with no arguments.
find_pagesSearches the account's pages by name, domain, and/or page id so you can locate the page to edit, then pass its id to get_page → update_page/add_section. Filters are AND-combined (e.g. name='sale' + domain='shop.com'). Each result includes id, name, organization_id, custom_doma...4 params
Searches the account's pages by name, domain, and/or page id so you can locate the page to edit, then pass its id to get_page → update_page/add_section. Filters are AND-combined (e.g. name='sale' + domain='shop.com'). Each result includes id, name, organization_id, custom_doma...
domainstringlimitintegernamestringpage_idstringget_pageFetches an existing page's decoded source tree { page, popup, settings, options, cartConfigs } plus name and organization_id. By DEFAULT the source is COMPACTED: boilerplate every element shares (properties/runtime/empty events+children/per-breakpoint config + factory-default...2 params
Fetches an existing page's decoded source tree { page, popup, settings, options, cartConfigs } plus name and organization_id. By DEFAULT the source is COMPACTED: boilerplate every element shares (properties/runtime/empty events+children/per-breakpoint config + factory-default...
compactbooleanpage_id*stringupdate_pageOverwrites an EXISTING page's source with an edited tree (source-only; re-render in the editor for preview/publish). Validates first. DEFAULTS to dry_run=true (validates, caches the source as draft_id, previews the request, token masked); dry_run=false to actually save. Accept...4 params
Overwrites an EXISTING page's source with an edited tree (source-only; re-render in the editor for preview/publish). Validates first. DEFAULTS to dry_run=true (validates, caches the source as draft_id, previews the request, token masked); dry_run=false to actually save. Accept...
draft_idstringdry_runbooleanpage_idstringsourcevalueadd_sectionAppends one or more SECTIONS to an existing page WITHOUT re-sending the whole source — the incremental-build path that avoids large create_page payloads. The backend appends section(s) to the END of `page` server-side and rejects duplicate element ids, so the caller sends only...4 params
Appends one or more SECTIONS to an existing page WITHOUT re-sending the whole source — the incremental-build path that avoids large create_page payloads. The backend appends section(s) to the END of `page` server-side and rejects duplicate element ids, so the caller sends only...
draft_idstringdry_runbooleanpage_id*stringsectionsvaluepatch_pageEdits a page by element id WITHOUT re-sending the whole source — the surgical-edit and fix-after-error path. Targets EITHER a live page (page_id) OR a cached draft source (draft_id). Draft sources come from: (a) create_page — failed validation or timed-out network call → patch...4 params
Edits a page by element id WITHOUT re-sending the whole source — the surgical-edit and fix-after-error path. Targets EITHER a live page (page_id) OR a cached draft source (draft_id). Draft sources come from: (a) create_page — failed validation or timed-out network call → patch...
draft_idstringdry_runbooleanpage_idstringpatchesvaluepublish_pagePublishes an EXISTING page: saves the stored source as a new version and creates/updates its page_published record (live status), optionally attaching a custom domain/path. NOT needed for the preview link — /preview/<page_id> on the preview host renders the stored source direc...4 params
Publishes an EXISTING page: saves the stored source as a new version and creates/updates its page_published record (live status), optionally attaching a custom domain/path. NOT needed for the preview link — /preview/<page_id> on the preview host renders the stored source direc...
custom_domainstringcustom_pathstringdry_runbooleanpage_id*stringSponsors
Configuration
WEBCAKE_JWTsecretWebcake backend JWT; required only for the persistence tools (create/update/list pages).
WEBCAKE_ENVWebcake environment preset that fills the API/app/builder base URLs.
WEBCAKE_API_BASEOverride for the Webcake API base URL (takes precedence over WEBCAKE_ENV).
WEBCAKE_ORG_IDDefault Webcake organization id for the persistence tools.
PEXELS_API_KEYsecretOptional Pexels API key for search_images; without one a shared hosted proxy is used.
Readme
Webcake WebCake Landing MCP
English · Tiếng Việt
Describe a landing page in plain words — your AI builds it, checks it, and ships it straight to WebCake.
⭐ If this saves you an afternoon of dragging boxes, give it a star — it's a one-dev project and every star keeps it alive.
"Build a landing page for my coffee shop — a hero with a sign-up button, a 3-feature section, and a lead form. Save it to my workspace."
Details
- Repository
- github.com/vuluu2k/webcake-landing-mcp
- Website
- github.com/vuluu2k/webcake-landing-mcp#readme
- Category
- Data & Analytics
- Package
webcake-landing-mcp- Transport
- STDIO, HTTP
- Auth
- Required
- Registry
- MCP registry, active
- Tools verified
- Jun 10, 2026