Create Web Page
Create, edit, preview, publish, and manage web pages from MCP-capable AI clients.
Connect it
Settings → Connectors → Add custom connector
URL: https://create-web-page.com/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://create-web-page.com/mcp{
"mcpServers": {
"create-web-page": {
"url": "https://create-web-page.com/mcp"
}
}
}claude mcp add --transport http create-web-page https://create-web-page.com/mcp{
"servers": {
"create-web-page": {
"type": "http",
"url": "https://create-web-page.com/mcp"
}
}
}27 tools, verified live
account_whoamiread-onlyReturn the current Create Web Page account context. Use this to check whether the user is authenticated or using an anonymous expiring demo.
page_intake_startread-onlyOptional first step for a vague page request (e.g. 'make me a website for my barbershop'). Returns at most one round of questions to ask together: the name, the main visitor action AND where it goes (WhatsApp number with country code, booking/order link, phone or address), and must-have facts. Skip it when the request already has a name and the main action's destination — call page_create_from_bri
page_onboarding_startread-onlyGuided visual setup (category, layout, palette, primary action) that does NOT create a page. Use it ONLY when the user explicitly wants to choose the style/layout step by step; for normal requests call page_create_from_brief (asking at most one round of questions first). IMPORTANT: this flow is STATELESS — page_onboarding_update does not remember earlier calls, so each update must resend the FULL
page_onboarding_updateread-onlyValidate onboarding selections and return the remaining checklist. STATELESS: it does not remember previous calls, so every call must include the FULL accumulated selection (mainCategory, subCategory, layout, palette, primaryAction) plus all knownFields (name, description, action destination, etc.) gathered so far — not just the latest answer, or earlier choices will look 'missing'. You do not nee
source_importread-onlyFetch a public website URL and extract a structured brief with business name, description, contact links, and suggested page blocks. Only works with public HTTP/HTTPS pages. Does not bypass login, CAPTCHA, or paywalls. Returns extracted fields and suggestedBlocks for use with page_create_from_brief.
page_createLow-level/legacy: create a blank link-in-bio scaffold from a style preset (title, displayName, preset or 'auto'). Not for normal page requests — use page_create_from_brief, which builds the page from the user's details. The scaffold starts with empty placeholder blocks to fill via block_update — do not invent content. This tool intentionally creates a draft only and does not return a publish actio
page_create_from_briefThe main tool for creating a page. Call it directly when the request already has the business/page name and the main visitor action with its real destination (WhatsApp number with country code, booking/order link, phone, address or email); if the request is vague, ask at most one round of questions first (page_intake_start lists them). Creates a private draft and returns previewUrl, pageId, editTo
block_addAppend a new content block to a link-in-bio page. The block must match one of the 14 allowed types (link, social_row, whatsapp, phone_call, email_contact, image, gallery, video_embed, text, map_embed, product_card, lead_form, reviews, save_contact) with that type's strict props. The server generates the block id and returns it in the response. For already-published pages, this saves an unpublished
layouts_listread-onlyList supported page layouts. Currently ships link_in_bio only.
presets_listread-onlyList the 12 curated style presets (theme + starter blocks) for link-in-bio. Use to offer the user a choice or to confirm a preset:auto selection.
page_getread-onlyRead a landing page draft, including its latest content JSON. For anonymous demo pages, include the editToken.
media_uploadAdd an image to a page. PREFERRED for any image already on the web: pass its imageUrl and the server fetches it directly (no size limit, no attachment needed in chat). imageBase64 is ONLY for very small inline images — large base64 payloads are rejected by request-size limits and waste context, so never paste a photo's bytes; for a file on the user's device use media_upload_link_create instead. Af
media_upload_link_createGet an upload link for a photo on the user's own device (phone/computer) — the right tool whenever the image is not already at a public URL. Pass pageId (+ editToken for demo pages) and the placement (e.g. header_photo). Then show the returned uploadPageUrl to the user as a clickable link and ask them to open it and pick their photo: the page resizes the image for the web automatically and attache
media_attachAttach a ready media asset to the page. placement determines where: avatar (header), block_image (image inside a specific block — requires blockId), gallery_item (appended to a gallery — optional blockId targets a specific gallery; otherwise the first one is used), background (theme background).
media_deletecan modifySoft-delete a media asset and remove all references to it from the page content.
page_claimClaim an anonymous demo page into an AUTHENTICATED account. This requires the signed-in user's OAuth — an anonymous chat/agent session cannot call it and will get an OAuth-required error. So in a normal agent conversation, do NOT call this to 'save' a demo page: instead share the claimUrl from the page_create/page_publish result with the user, who opens it, signs in, and keeps the page. Only call
account_pages_listread-onlyList landing pages saved to the signed-in account. Safe to call without sign-in: an anonymous chat gets ok=true, authenticated=false and an empty list (not an error) because it has no saved pages — then create the page directly with page_create_from_brief. Sign-in is only needed later to keep or manage a page.
account_page_manageread-onlyRead a claimed account page without requiring an editToken. Use after OAuth when the user wants to manage a durable website.
page_header_updateUpdate the link-in-bio page header: displayName, bio, verified checkmark, business-card display style ("photo_hero" large top photo or "avatar"), a short role label (e.g. "Barber · Madrid"), labelPosition, and the header photo (photoUrl; null removes it). Use only the fields you want to change. For already-published pages, this saves an unpublished latest revision only. Do not call page_publish in
page_theme_updateApply a partial theme patch. Theme fields are enum-constrained (button variant/radius/shadow, font family/weight, density, icon_size). Use presets_list first if the user wants a complete restyle. For already-published pages, this saves an unpublished latest revision only. Do not call page_publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then
page_meta_updateUpdate internal page title, URL slug, and SEO title/description. For already-published pages, this saves an unpublished latest revision only. Do not call page_publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling
page_previewread-onlyReturn the current preview URL for a page. You usually do not need this: page_create and page_create_from_brief already return a ready-to-open previewUrl. For an anonymous demo page you must pass the editToken from the create result; calling this with pageId alone fails.
page_publishPublish the latest page revision. Call this only when the user's latest message explicitly asks to publish, make the page live, or get a public share link. Do not call this immediately after page_create or page_create_from_brief just because the draft is publish-ready. For anonymous demo pages, include the editToken returned by page_create. The response includes nextSteps: always share these with
page_unpublishcan modifyRemove a published landing page from public availability while keeping its draft and revision history.
block_updatePatch one content block by stable blockId. Provide a props patch (merged into existing props) and/or a new type. Block types and props are validated against the strict per-type schema. For already-published pages, this saves an unpublished latest revision only. Do not call page_publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a
block_deletecan modifyDelete one block by stable blockId. Use page_get first if unsure which id to remove. For already-published pages, this saves an unpublished latest revision only. Do not call page_publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes pu
block_reorderMove a block to a new zero-based index in the page main slot. For already-published pages, this saves an unpublished latest revision only. Do not call page_publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling pag
Alternatives in AI & Agents
Compare →KEKernelcadA
Agent-first CAD: editable .kcad.ts source, deterministic review, OpenCASCADE kernel.
EREu RegistryA
EU company registry lookup: 16 countries incl. Lithuania (JAR: identity + legal status).
DDDdA
Czech & EU due diligence in one call — facts, insolvency, sanctions, VAT, risk score, UBO chain.
SUSuperlogA
Open-source agent that observes and fixes your application. Query logs, traces, metrics, incidents.
RERealestateA
Czech distressed real estate — anonymized district aggregates (k≥5). Free tier.
SASanctionsA
Sanctions screening for KYC/AML — EU FSF + OFAC SDN checks for Czech companies & individuals.