Webcake Landing

io.github.vuluu2kPublished by GitHub account vuluu2kv1.7.0Updated Nov 5, 2026

Build, validate, and persist Webcake landing-page source JSON: element schemas plus AI usage hints.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowDeveloper ToolsMedia & Design

Overview

AI-generated overview

Builds, validates and saves Webcake landing-page source JSON, letting an assistant design pages and publish them to a Webcake account.

What you can do
  • Learn the element model: generation guide, element catalog and per-type usage details, full page JSON schema
  • Generate and check pages: default elements, page skeletons, coordinate layout helpers, schema and semantic validation
  • Source media: Pexels stock photo search, icon-name to inline SVG, image re-hosting, URL or page screenshots
  • Ingest existing pages: parse an HTML string or fetch a public URL into a reference layout tree
  • Manage account pages: list organizations and pages, find and read a page, create, update, append sections, patch by element id, publish
When to use it
Useful when someone wants an assistant to turn a plain-language brief into an editable Webcake landing page, or to make targeted edits to an existing one, without hand-writing the page JSON. The reference and generation tools work without credentials, so it can be tried before connecting an account.
Requirements
Runs either as a hosted remote endpoint or locally via npx with Node.js 18+. Persistence tools need a Webcake JWT (WEBCAKE_JWT or Authorization header) and an API base (WEBCAKE_API_BASE or WEBCAKE_ENV); a browser login command can save the token. An optional PEXELS_API_KEY is used for image search, otherwise a shared proxy is used. Publishing needs a build host, auto-configured for the prod preset.
Before you install
The persistence tools write to a real Webcake account: create_page publishes by default, update_page replaces stored source, and publish_page makes pages live. Writes default to dry_run=true, but re-running with dry_run=false changes the account. The JWT is a personal credential; the hosted link embeds it, so treat it like a password. upload_images re-hosts images on a third-party CDN, and image search and icon lookup call external services.

Installation

In SourceWeft

  1. Open Webcake Landing in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.vuluu2k%2Fwebcake-landing-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "webcake-landing": {
      "type": "http",
      "url": "https://mcp.toolvn.io.vn/mcp"
    }
  }
}

README

[Webcake] WebCake Landing MCP

English · Tiếng Việt

[npm version] [npm downloads] [GitHub stars] [MCP]

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."

…and a real, editable WebCake page appears in your account. No dragging boxes, no learning the schema, no hand-writing JSON.


🧩 How it works

This server is the bridge between your AI assistant and WebCake. The AI never guesses what a WebCake page looks like — it asks this MCP, which knows the entire element model, validates the result, and saves it for you.

text
   You              AI assistant            webcake-landing MCP            WebCake  ┌──────┐  prompt  ┌────────────┐  tools  ┌──────────────────────┐  API  ┌──────────┐  │ idea │ ───────► │  Claude /  │ ──────► │ • knows the element  │ ────► │  a real  │  │      │          │  Cursor /  │         │   model + AI hints   │       │ editable │  │      │ ◄─────── │  Windsurf  │ ◄────── │ • builds + validates │ ◄──── │  page in │  └──────┘ page URL └────────────┘ result  │ • saves to your acct │       │  WebCake │                                           └──────────────────────┘       └──────────┘
  1. You ask in plain language — goal, brand, sections, CTA, form fields.
  2. The AI learns the model from the MCP: the element catalog, the absolute-positioning canvas, the event vocabulary — so it builds a real WebCake page, not a guess.
  3. It assembles + validates the full { page, popup, settings, options } JSON. validate_page catches off-canvas boxes, dangling CTAs, and missing form fields before anything is saved.
  4. It persists to your WebCake account — dry-run preview first, then for real.
  5. You get an editor link — open it, tweak, publish. The AI did the heavy lifting.

Why it's reliable

📚 Knows the real modelServes WebCake's actual element catalog (40+ types — hero, form, countdown, gallery, product list…), each with its exact specials and AI hints, drawn straight from the editor's renderers.
✅ Validates before savingStructural + semantic checks (unique ids, on-canvas layout, working CTAs, unique form fields) so the page isn't broken when it lands.
🛡️ Safe by defaultEvery write is dry-run first (preview the request, token masked) — nothing touches your account until you confirm.
✏️ Edits surgicallyAsk for one change ("make the CTA green") and it edits only that element — every other id, coordinate, and block stays exactly as it was.

💡 Lead-gen, events, invitations, app promos — or selling COD/online? It speaks WebCake's commerce model too (product lists, variations, cart).


✨ What you can build

One sentence to your AI → a finished, editable WebCake page. A taste of what people ship with it:

Just say…
🧲 Lead-gen landing"A SaaS waitlist page — hero, 3 benefits, an email-capture form."
🛒 COD / online store"A one-product page for my skincare serum — gallery, price, variations, an order form with cart."
🎟️ Event / webinar"A registration page for Saturday's webinar — countdown, agenda, sign-up form."
💌 Invitation"A wedding invite — names, date, a map, an RSVP form."
📱 App promo"A page for my fitness app — phone mockups, feature list, App Store + Google Play buttons."
⚡ Flash sale"A flash-sale page — big countdown, discounted product grid, a sticky Buy button."
🔗 Link-in-bio"A link-in-bio for my creator profile — avatar, short bio, 5 link buttons, socials."
🎉 Product launch"A launch page for v2 — hero, what's-new list, an early-access form."

…then "make the CTA green" or "add a 4th feature" and it edits only that block — every other id and coordinate stays exactly where it was.

🤖 Works in Claude Desktop, Claude Code, Cursor, Windsurf, Augment, Codex, Antigravity, Gemini CLI, Cline, Kiro, OpenCode, or any MCP-capable client — and the reference + generation tools need zero setup, so you can try it before ever pasting a token.


Under the hood

MCP (Model Context Protocol) server that teaches AI agents how to build a complete WebCake landing-page source JSON from a requirement — and persist it to a WebCake backend.

It exposes the element catalog, per-element usage hints + specials, the full page JSON Schema, valid element/page skeletons, a page validator, and tools to create or edit pages on the backend. The AI agent produces the full { page, popup, settings, options, cartConfigs } JSON; create_page persists it and auto-publishes (build + publish_html) so the preview renders immediately (the edit tools save source-only — re-publish via publish_page after edits).

MethodBest forAuth
npx (local) — runs on your machinePersonal daily use, full controlbrowser login, a JWT, or none (reference tools)
Hosted URL — use our live server, nothing to installNo Node.js, teams, the claude.ai dialogyour personal ?jwt= link / x-webcake-jwt header

The reference + generation tools (get_generation_guide, list_elements, validate_page, …) and the ingest tools (ingest_html, ingest_url — turn an existing HTML or URL into a layout anchor so the AI can recreate or adapt it) work with zero config; only the persistence tools (create_page, update_page, add_section, patch_page, publish_page, list_pages, find_pages, get_page, list_organizations) need a token. Credentials resolve in order: per-request header → env var → saved auth.json (login).


🚀 Get connected — the 2 main ways

Pick one. Both hand your AI tool (Claude, Cursor, …) the full Webcake landing toolkit. No coding.

① npx — runs on your machine (recommended for personal use)

Zero install, always the latest version, needs Node.js 18+. One line grabs your token and writes the IDE config:

bash
# Opens the browser — click Connect, your installed IDEs are configured (prod)npx -y webcake-landing-mcp install
# Developers only — step by step: environment, login or JWT, org, IDE(s)npx -y webcake-landing-mcp install --dev
# Scripts and CI — every supported IDE, even ones not installed yetnpx -y webcake-landing-mcp install --ide all --jwt <your-jwt>
# Remove the server from every IDE confignpx -y webcake-landing-mcp uninstall

install asks nothing. It connects to production, opens your browser so you can click Connect, then adds the server to every AI app it finds on this computer. Your other servers are kept, and any config file it changes is backed up next to the original as <file>.webcake-landing-backup. No AI app found? It says so and exits with an error: install one and run it again, or name it with --ide.

Need staging or local? --dev opens the step-by-step wizard, or skip it with --env staging / --env local.

Installed with an older version? Run install again. Older versions wrote VS Code's config under the wrong key, so the server never appeared there, and registered Claude Code for the current folder only.

It writes a webcake-landing entry into the right config file for each target: claude-desktop, claude-code, cursor, windsurf, augment (VS Code), codex, antigravity, gemini (Gemini CLI), cline, kiro, opencode, or all. Flags: --dev, --ide, --env, --jwt, --org-id, --api-base/--app-base, --npx/--local, -y — see install --help.

Just want to run the server (configure by hand later)? npx -y webcake-landing-mcp

🛠️ Hand-written per-IDE config, shell-script installers (install.sh/install.ps1), or a cloned local build → docs/manual-install.md.

② Remote URL …/mcp?jwt= — hosted, nothing to install

The server is already live at https://mcp.toolvn.io.vn/mcp — no Node.js, no machine to keep awake. Grab your personal link (your token is baked in) and paste it into your client's Add custom connector / config:

https://mcp.toolvn.io.vn/mcp?jwt=<YOUR_TOKEN>

Two ways to get the link:

Optional extras: &env=prod, &org_id=…, &api_base=…. Hand each teammate a link with their own jwt → per-user, no OAuth. Clients that support headers should send the token as x-webcake-jwt instead of putting it in the URL — the full header ↔ env mapping is in docs/configuration.md.

✅ Best for: no Node.js, team/shared use, the claude.ai connector dialog (URL-only, no headers). ⚠️ The link contains your personal token — treat it like a password, always use HTTPS.


⚙️ Configuration

The quick version — only the persistence tools need any of this:

bash
npx -y webcake-landing-mcp login    # opens the browser once, saves the token to ~/.webcake-landing-mcp/auth.json

…or set WEBCAKE_ENV (local | staging | prod — fills in all base URLs) + WEBCAKE_JWT.

For publish_page to actually put a page live, a build host is needed (it renders the app/app_css that the live publish_html route requires):

  • prod preset auto-configures https://build.webcake.io — no extra setup (the preset applies when the env resolves to prod: WEBCAKE_ENV=prod, --env prod, or x-webcake-env: prod).
  • For staging/local, set WEBCAKE_BUILD_BASE=<url> or send the x-webcake-build-base header per request.
  • Without it, publish_page falls back to a legacy source-only save with rendered:false, live:false + a warning — nothing goes live.
  • A page is only permanently live with a custom_domain; without one the returned /preview/<page_id> link expires ~10 minutes after the publish.

Everything else — the full env-var table, environment presets, per-request headers for the hosted server, the login browser flow (+ backend contract), and how to grab a JWT by hand — lives in docs/configuration.md.


📚 Docs

GuideWhat's inside
Connect your IDE / claude.aiStep-by-step connection for every client (npx & hosted URL), troubleshooting table.
ConfigurationEnv vars, --env presets, browser login, per-request headers, getting a JWT.
Tools referenceAll 23 tools in detail + the step-by-step workflow + model notes.
Usage examplesThree end-to-end walkthroughs: build from a brief, surgical edit, inspect a type.
Manual / advanced installShell installers, cloned builds, hand-written per-IDE config.
Page-element schemaThe full element-model reference (+ every special/event).

🧰 The tools at a glance

23 tools in five groups — full descriptions in docs/tools.md:

GroupToolsNeeds
Referenceget_generation_guide · list_elements · get_element · get_page_schemanothing
Generationnew_element · new_page_skeleton · validate_page · layout (exact centering/row/grid/stack coordinates, both breakpoints)nothing
Mediasearch_images (real Pexels stock photos) · get_icon_svg (Material Symbols / Font Awesome icon names → inline SVG via Iconify) · upload_images (re-host external images, data: URIs, or local file paths from the user's machine — files into your media collection when Webcake creds and an org are available; the org is required and must match the page's, so settle it up front — 1 org auto-selects, 2+ with none chosen returns organization_required + the list; no JWT → the public CDN) · render_preview (screenshot a page/URL so the model can see + compare it)nothing
Ingestingest_html · ingest_url (recreate an existing page)nothing
Persistencelist_organizations · create_page · list_pages · find_pages · get_page · update_page · add_section · patch_page · publish_pageWEBCAKE_API_BASE + WEBCAKE_JWT

Every write defaults to dry_run=true — it previews the exact request (token masked) and only touches your account when you re-run with dry_run=false.

Suggested prompt

Build me a WebCake landing page for <brand/offer>. Use the webcake-landing MCP: call get_generation_guide, new_page_skeleton, then get_element for each element type you use, assemble the { page, popup, settings, options } JSON, validate_page until zero errors, then create_page (dry-run first).


⭐ Like the idea? Drop a star

This is a solo, open-source project — every ⭐ genuinely keeps it moving and helps other builders discover it.

  • ⭐ Star the repo — 2 seconds, huge motivation.
  • 🐛 Open an issue — a bug, a missing element type, or just an idea.
  • 🔁 Share it with anyone still building landing pages box by box.

[Star History Chart]

Built with ❤️ for the WebCake community. Thanks for being here.

Source: README.md at commit e1dbbbc

Tools

23

get_generation_guide

Get Generation Guide

Returns the page-building conventions reference: output shape, the absolute-positioning coordinate system, event vocabulary, and the recommended workflow.

Takes no parameters.

list_elements

List Element Types

List every supported element type, grouped by category, with a one-line summary and whether it is a container (can hold children).

Takes no parameters.

get_element

Get Element Details

Returns usage details for one element type, or for several via `types: [...]`: a summary, when it applies, key `specials` fields, a sparse skeleton node (the server fills omitted boilerplate), and for common types a filled example. `types` returns { elements: { [type]: details } }; `type` returns a single doc.

Parameterstypetypes

get_page_schema

Get Page JSON Schema

Returns the full JSON Schema (Draft 2020-12) of a Webcake page source object { page: [...], settings: {...} } for structural reference and validation.

Takes no parameters.

new_element

New Element Node

Returns a default element node for a type in the sparse authoring shape: a fresh id, seeded styles for both breakpoints, and seeded specials. properties, runtime, empty events and per-breakpoint config are omitted because the server fills them from factory defaults on validate and save.

Parametersnametyperequired

new_page_skeleton

New Page Skeleton

Returns an empty, complete top-level page source { page:[], popup:[], settings, options, cartConfigs } in the Webcake editor's shape. desktopWidth (960 or 1200) and mobileWidth (420 or 360) set settings.width_section, the canvas width that all element coordinates are measured in.

ParametersmobileOnlymobileWidthdesktopWidth

validate_page

Validate Page Source

Validates a page source against the JSON schema and semantic rules: unique ids, dangling event targets, children only on container types, missing field_name, top-level types, and form-data bindings (duplicate field_name within one form; dangling promoId / connectedSurvey / connectedForm / set_field_value targets). Before validating it applies deterministic layout corrections (off-canvas boxes moved on-canvas, elements below wrapped text moved down) and lists them in auto_fixed. Returns errors (structural problems that block saving) and warnings (visible layout defects such as overlapping text, off-canvas bounds, or empty bands).

Parameterspagerequired

layout

Compute Layout Coordinates

Computes on-canvas coordinates (top/left/width/height) for a group of elements on both breakpoints. Modes: 'center' (one box centered on the canvas), 'row' (N boxes in a centered horizontal row on desktop, stacked into one column on mobile), 'grid' (N uniform cells in `cols` columns, stacked on mobile), 'stack' (a vertical list down the content column). Respects the page margins (content column 80–880 on desktop and 20–400 on mobile by default). Returns one box per item in input order, plus `notes` for off-canvas or over-wide inputs. Pure computation: no credentials, no network.

ParametersgaptopcolsmoderequiredaligncountitemsrowGapitemWidthmobileTopitemHeightcanvasMobile+4 more

search_images

Search Stock Images

Searches Pexels stock photos (API: https://www.pexels.com/api/documentation/) by short English subject queries. Each photo includes hotlinkable URLs at several sizes, a `sizes` map with each variant's pixel dimensions, `avg_color`, and the photographer's name and attribution URL; the response also includes a `size_guide` mapping slot widths to variants (hero/banner ~940–1880px → large/large2x, card ~350px → medium, avatar → tiny). `queries: [...]` runs several searches in parallel and returns { queries: { [q]: result } } — `pick:'best'` (default) keeps only the top photo per query, `pick:'all'` the full list; `query` runs a single search. Works without configuration through a shared hosted proxy; a PEXELS_API_KEY env var or x-pexels-key header uses a personal Pexels quota.

Parameterspagepicksizecolorqueryqueriesper_pageorientation

get_icon_svg

Resolve Icon SVGs

Resolves icon-font names into inline SVG markup via the public Iconify API (https://iconify.design/docs/api/). Accepts Material Symbols refs ("ms:verified"), Font Awesome refs ("fa:chart-line"), Iconify ids ("mdi:home"), or bare names (treated as Material Symbols); underscores become hyphens, and Material Symbols resolve to the outlined variant with a filled fallback. These are the same `ms:` / `fa:` refs that ingest results report in block.icon. Returns { icons: { "<ref>": { ok, svg, iconify } } }. In Webcake an icon renders as an SVG mask on a rectangle element: the SVG goes in responsive.desktop.config.svgMask and responsive.mobile.config.svgMask (each breakpoint is read separately), the visible color comes from styles.background (the SVG's own fill is ignored), and the mask is stretched to the box (preserveAspectRatio='none'), so a square box keeps its proportions. No Webcake credentials needed.

Parametersiconsrequired

render_preview

Render Preview Screenshot

Renders a public URL to a PNG screenshot and returns it as an image. `page_id` targets a created page's preview URL (/preview/<id>); `url` targets any public page and takes precedence. full_page (default true) captures the whole scrollable page and `width` sets the viewport; `tiles:true` returns a tall page as several top-to-bottom band images (requires a self-hosted Playwright host via RENDER_SCREENSHOT_BASE, otherwise a single image is returned). Engine: Microlink's free tier by default (API: https://microlink.io/docs/api/getting-started/overview; about 50 requests/day per IP — when rate-limited the result is ok:false with HTTP 429), or a self-hosted screenshot proxy set by RENDER_SCREENSHOT_BASE / x-render-screenshot-base; MICROLINK_API_KEY / x-microlink-key raises the quota. A page published without a custom domain serves its preview for about 10 minutes after the last publish; after that the preview shows 'Preview page is expired'. Docs: https://github.com/vuluu2k/webcake-landing-mcp/blob/main/docs/tools.md

Parametersurltileswidthpage_idfull_page

upload_images

Upload Images to Webcake

Re-hosts images on Webcake's CDN (statics.pancake.vn) and returns a map from each original entry to its hosted URL. Accepts up to 20 entries per call, processed in parallel, up to 200 MB each: http(s) image URLs, data:image/…;base64 URIs, and — only when the server runs locally over stdio — local file paths (absolute, ~/, file://, or Windows drive paths; rejected per entry on the remote HTTP transport). Upload target: with Webcake credentials and a resolved organization, each image is filed into that organization's media collection (the library the Webcake editor's media picker shows) and marked collection:true with its asset_id; without credentials the public CDN endpoint is used (the URL works, but the image is not in any collection: collection:false). Organization resolution: organization_id, then WEBCAKE_ORG_ID / x-webcake-org-id, then automatic selection when the account has exactly one organization; with two or more and none given, the result is ok:false with reason:'organization_required' and the organization list. dry_run defaults to false, because this only adds images to the media library and changes no page data; dry_run:true lists what would be processed without any network or filesystem access.

Parametersurlsrequireddry_runin_folderorganization_id

ingest_html

Ingest HTML Reference

Parses an HTML string into a reference AST for rebuilding the page in Webcake: title, description, og_image, language, and sections classified by role (header, hero, features, about, form, cta, gallery, testimonials, pricing, faq, footer, unknown), each with headings, paragraphs, images, CTAs, links, form fields and a size_hint (desktop section height in px — from CSS when explicit, else estimated). Also returns top colors, fonts, palette and background_images; for Tailwind-CDN pages (e.g. Google Stitch) the palette and `design_tokens` (spacing grid, corner radii, type scale) come from the page's tailwind.config. detail:'compact' (default, ~2–5 KB) or 'full' (up to ~25 KB: per-section blocks such as cards and steps, lists, gradients, images as { src, alt }, and `widgets` — the cleaned HTML + CSS of composite visuals such as device mockups). Fonts: `font_groups` lists self-hosted fonts from @font-face rules in the settings.fontGroups shape; `typography` and per-section `text_styles` give the computed font size (desktop and mobile), weight, family, line height and letter spacing. Absolute-canvas builder exports (LadiPage-family or Webcake-published HTML) are detected and converted deterministically into a complete Webcake page `source`, with `clone_notes` listing approximations and `canvas_summary` summarizing per-section geometry; external images in that source are re-hosted automatically when it is saved. Garbled Vietnamese text (UTF-8 read as Latin-1) is repaired, with a warning. No credentials, no writes.

Parametershtmlrequireddetailintentbase_urlsections

ingest_url

Ingest URL Reference

Fetches a public webpage (GET, 10 s timeout, 2 MB cap) together with its external stylesheets and @imports, and parses it into the same reference AST as ingest_html: role-classified sections with size_hint heights, palette, design tokens, self-hosted fonts (`font_groups`), computed typography, images, and — with detail:'full' — per-section blocks, lists and widgets. Absolute-canvas builder exports (LadiPage-family or Webcake-published pages) are detected and converted deterministically into a complete Webcake page `source` with `clone_notes` and `canvas_summary`. JavaScript is not executed, so client-rendered sites (React/Vue/Next.js) may return little content; the result then carries a warning that the body was empty. Fetches are restricted to public hosts (private and link-local addresses are blocked). No credentials, no writes. Docs: https://github.com/vuluu2k/webcake-landing-mcp/blob/main/docs/tools.md

Parametersurlrequireddetailintentsections

list_organizations

List Webcake Organizations

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.

Takes no parameters.

create_page

Create Webcake Page

Creates a new page in the user's Webcake account from a page source { page, popup, settings, options, cartConfigs }, saves it, and then publishes it (builds the rendered app on the Webcake build host and publishes it through the editor's publish route) so its preview renders; publish:false skips publishing, and a failed publish does not fail the create (result.publish reports the outcome). Before validating it applies deterministic layout corrections (off-canvas boxes, elements below wrapped text, containers grown to fit) and lists them in auto_fixed. External images and self-hosted font files in the source are re-hosted on Webcake's CDN during the save. dry_run defaults to true: it validates, caches the source under a draft_id, and returns the request it would send with the token masked; dry_run:false performs the create. A draft_id (from a validation failure, dry run, or timed-out create) re-runs from the cached source. Organization: explicit organization_id ('personal' = no organization), then WEBCAKE_ORG_ID / x-webcake-org-id, then automatic — no organizations → personal, exactly one → selected (organization_auto_selected:true), two or more → ok:false with the organization list. A page without a custom domain has a preview link that renders for about 10 minutes after each publish. Requires Webcake credentials.

Parametersnamesourcedry_runpublishdraft_idorganization_id

list_pages

List Webcake Pages

Lists the pages owned by the account (id, name, organization_id, updated_at), most-recent first. Needs WEBCAKE_API_BASE + WEBCAKE_JWT.

Takes no parameters.

find_pages

Find Webcake Pages

Searches the account's pages by name, domain and/or page id. Filters are AND-combined; name and domain are case-insensitive substrings, and domain matches custom_domain or default_domain. Each result includes id, name, organization_id, custom_domain, default_domain and updated_at. With no filters it returns the most recently updated pages. Requires Webcake credentials.

Parametersnamelimitdomainpage_id

get_page

Get Webcake Page Source

Fetches an existing page's source tree { page, popup, settings, options, cartConfigs } with its name, organization_id and source_version. By default the tree is compacted: boilerplate shared by every element (properties, runtime, empty events/children, per-breakpoint config and factory-default style keys) is stripped, giving the same sparse shape the save tools accept and re-hydrate. compact:false returns the raw stored tree. Requires Webcake credentials.

Parameterscompactpage_idrequired

update_page

Update Webcake Page (Overwrite)

Replaces an existing page's stored source with an edited tree (source only; the published build is not refreshed). Validates first. Concurrency check: the save is refused with page_changed_externally when the page was edited elsewhere since it was last read (base_version, or the version the server recorded), or with unverified_overwrite when an unverified save would delete live element ids; force:true overrides. dry_run defaults to true: it validates, caches the source under a draft_id and returns the masked request; dry_run:false saves. A draft_id from a dry run or a failed/timed-out update re-runs from the cached source. Requires Webcake credentials.

Parametersforcesourcedry_runpage_iddraft_idbase_version

add_section

Append Section(s) to Webcake Page

Appends one or more section nodes to the end of an existing page's `page` array, server-side: only the new sections are sent, and the backend rejects element ids that already exist on the page. The sections are validated first. dry_run defaults to true: it validates, caches the payload under a draft_id and previews the request; dry_run:false appends. A validation failure also returns a draft_id, which patch_page accepts for element-level fixes. Section-level saves cannot change page settings, so font weights that need new font links are reported in font_weights_notice. Requires Webcake credentials.

Parametersdry_runpage_idrequireddraft_idsections

patch_page

Patch Webcake Page (by element id)

Edits a page by element id without sending the whole source. The target is either a live page (page_id) or a cached draft (draft_id) returned by a failed or dry-run create_page, add_section or update_page call. Ops: {op:'update', id, type?, specials?, styles?:{desktop?,mobile?}, config?:{desktop?,mobile?}, events?, properties?} shallow-merges fields (op defaults to 'update'; it cannot delete existing keys), {op:'replace', id, element} swaps the node, {op:'remove', id} deletes it, and {op:'add', parent_id, element} appends a child to a container; `element` may be sparse. The server loads the source, applies the ops, validates the whole merged tree (errors block the save) and saves: a live page is updated in place, a create draft becomes a new page, a section draft is appended, and an update draft is re-saved. With a draft_id and no patches, the cached draft is committed as-is (the retry after a timeout). dry_run defaults to true (load, merge, validate, preview; no write); dry_run:false saves. Requires Webcake credentials; a page_id patch reads the live page, so it needs them even on a dry run.

Parametersforcedry_runpage_idpatchesdraft_id

publish_page

Publish Webcake Page

Publishes an existing page: builds the rendered app on the Webcake build host (POST <buildBase>/render/build; https://build.webcake.io in production, overridable with WEBCAKE_BUILD_BASE / x-webcake-build-base) and then creates or updates the published record that public serving reads. With custom_domain (already pointed at Webcake) the page is served at that domain; when omitted, the page's currently attached domain is reused; with no domain, or custom_domain:'', only the preview link (<previewBase>/preview/<page_id>) is returned, and it renders for about 10 minutes after the publish. Without a build host, or if the build fails, it falls back to a source-only publish that saves a version but serves nothing, and returns a warning. dry_run defaults to true and makes no network calls; dry_run:false builds and publishes. Requires Webcake credentials.

Parametersdry_runpage_idrequiredcustom_pathcustom_domain

Version history

8
  1. v1.7.0LatestNov 5, 2026
  2. v1.6.2Oct 29, 2026
  3. v1.6.1Oct 21, 2026
  4. v1.6.0Oct 14, 2026
  5. v1.5.10Oct 13, 2026
  6. v1.5.4Oct 9, 2026
  7. v1.5.3Oct 9, 2026
  8. v1.5.2Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts