
Create Web Page
Connects your AI client to a hosted page builder over streamable HTTP. Exposes tools for guided onboarding, layout and palette selection, block-level content editing (links, social rows, WhatsApp actions, galleries, forms, product cards), and draft preview before publish. No auth needed for anonymous demo pages. OAuth kicks in only when you want to claim a page for long-term management. Useful when you need to spin up a contact page, link-in-bio, or single-purpose landing from a conversational brief without opening a visual editor. The workflow is import or intake, iterate the draft with structured block operations, preview, then explicitly publish. Includes source import for scraping public pages into structured briefs.
- tools
- 27
- transport
- HTTP
- last updated
- May 27, 2026
Install
From registry metadata$ npx add-mcp https://create-web-page.com/mcp --name create-web-pageRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). 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 create-web-page https://create-web-page.com/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 27 toolsVerified live against the running server on Nov 6, 2026.
account_whoamiReturn the current Create Web Page account context. Use this to check whether the user is authenticated or using an anonymous expiring demo.
Return the current Create Web Page account context. Use this to check whether the user is authenticated or using an anonymous expiring demo.
No parameters. Call it with no arguments.
page_intake_startOptional 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...7 params
Optional 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...
businessNamestringbusinessTypestringlocalestringoriginalRequeststringprimaryGoalstringsourceHandlestringsourceUrlstringpage_onboarding_startGuided 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). IMPOR...3 params
Guided 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). IMPOR...
localestringoriginalRequeststringsuggestedSelectionobjectpage_onboarding_updateValidate 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, act...4 params
Validate 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, act...
knownFieldsobjectlocalestringselectionobjectstepIdstringcategory · layout · profile · primary-action · readysource_importFetch 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...2 params
Fetch 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...
localestringsourceUrl*stringpage_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...9 params
Low-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...
biostringbusinessTypestringdisplayNamestringinitialPromptstringlayoutstringlink_in_biopreset*stringclassic_dark · sunset_gradient · editorial_serif · minimalist_light · local_business · bold_popslugstringstylestringtitle*stringpage_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...29 params
The 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...
audiencestringbiostringbusinessName*stringbusinessTypestringfallbackLeadFormobjectheroImageUrlstringinitialPromptstringlayoutstringlink_in_biolocalestringlocationstringmustIncludearrayofferstringonboardingLayoutstringbackground_color · full · background_imageonboardingMainCategorystringonboardingPalettestringonboardingSubCategorystringpreferredSlugstringpresetstringclassic_dark · sunset_gradient · editorial_serif · minimalist_light · local_business · bold_popprimaryActionIdstringappointment · whatsapp · phone · maps · buy · leadprimaryActionLabelstring+9 more parameters. See the server's own documentation for the full schema.
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 prop...3 params
Append 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 prop...
block*objecteditTokenstringpageId*stringlayouts_listList supported page layouts. Currently ships link_in_bio only.
List supported page layouts. Currently ships link_in_bio only.
No parameters. Call it with no arguments.
presets_listList 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.
List 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.
No parameters. Call it with no arguments.
page_getRead a landing page draft, including its latest content JSON. For anonymous demo pages, include the editToken.2 params
Read a landing page draft, including its latest content JSON. For anonymous demo pages, include the editToken.
editTokenstringpageId*stringmedia_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...8 params
Add 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...
altTextstringcontentTypestringeditTokenstringfileNamestringimageBase64stringimageUrlstringpageId*stringplacementstringavatar · header_photo · block_image · gallery_item · background · unassignedmedia_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 cl...4 params
Get 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 cl...
altTextstringeditTokenstringpageId*stringplacementstringavatar · header_photo · block_image · gallery_item · background · unassignedmedia_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...6 params
Attach 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...
altTextstringblockIdstringeditTokenstringmediaAssetId*stringpageId*stringplacement*stringavatar · header_photo · block_image · gallery_item · background · unassignedmedia_deleteSoft-delete a media asset and remove all references to it from the page content.3 params
Soft-delete a media asset and remove all references to it from the page content.
editTokenstringmediaAssetId*stringpageId*stringpage_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...2 params
Claim 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...
editToken*stringpageId*stringaccount_pages_listList 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 need...1 params
List 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 need...
limitnumberaccount_page_manageRead a claimed account page without requiring an editToken. Use after OAuth when the user wants to manage a durable website.1 params
Read a claimed account page without requiring an editToken. Use after OAuth when the user wants to manage a durable website.
pageId*stringpage_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 y...12 params
Update 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 y...
biovaluedisplayvaluedisplayNamestringeditTokenstringlabelvaluelabelPositionvaluepageId*stringphotoAltstringphotoObjectPositionstringphotoUrlvalueshowQrbooleanverifiedbooleanpage_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 n...3 params
Apply 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 n...
editTokenstringpageId*stringtheme*objectpage_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 fo...6 params
Update 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 fo...
editTokenstringpageId*stringseoDescriptionstringseoTitlestringslugstringtitlestringpage_previewReturn 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.2 params
Return 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.
editTokenstringpageId*stringpage_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 ano...2 params
Publish 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 ano...
editTokenstringpageId*stringpage_unpublishRemove a published landing page from public availability while keeping its draft and revision history.2 params
Remove a published landing page from public availability while keeping its draft and revision history.
editTokenstringpageId*stringblock_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 pag...
Patch 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 pag...
No parameters. Call it with no arguments.
block_deleteDelete 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 u...3 params
Delete 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 u...
blockId*stringeditTokenstringpageId*stringblock_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...4 params
Move 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...
blockId*stringeditTokenstringpageId*stringtoIndex*numberSponsors
Readme
Details
- Repository
- github.com/daniel-lopez-puig/landings
- Website
- create-web-page.com/docs/mcp
- Transport
- HTTP
- Registry
- MCP registry, active
- Tools verified
- Nov 6, 2026