MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

Create Web Page

Create, edit, preview, publish, and manage web pages from MCP-capable AI clients.

Checks passed
13 / 22

2 failed · 7 not measured

Median response
529 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
24

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
013
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 573 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-06-18, serverInfo.name create-web-page.

  • Pass
    Lists tools

    tools/list returned 24 tools.

  • Pass
    Current protocol

    Negotiated 2025-06-18. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 529 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 569 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Fail
    Stable tool list

    removed account_page_manage, account_pages_list, page_claim

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    100 of 155 parameters have a description (65%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-05-27T15:02:09.910934Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using Create Web Page

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http create-web-page https://create-web-page.com/mcp

Capabilities

Tools 24

account_whoami

Return the current Create Web Page account context. Use this to check whether the user is authenticated or using an anonymous expiring demo.

Discovered
block_add

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 props. The server generates the block id and returns it in the response. On an already-published page this saves a new draft revision only: the live page does not change until page_publish runs, which should happen only when the user explicitly asks to update the live page. The edit never takes the live page down. The response includes nextSteps: optional hints about what else would make the page more complete.

Discovered
block_delete

Delete one block by stable blockId. Use page_get first if unsure which id to remove. On an already-published page this saves a new draft revision only: the live page does not change until page_publish runs, which should happen only when the user explicitly asks to update the live page. The edit never takes the live page down.

Discovered
block_reorder

Move a block to a new zero-based index in the page main slot. On an already-published page this saves a new draft revision only: the live page does not change until page_publish runs, which should happen only when the user explicitly asks to update the live page. The edit never takes the live page down.

Discovered
block_update

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. On an already-published page this saves a new draft revision only: the live page does not change until page_publish runs, which should happen only when the user explicitly asks to update the live page. The edit never takes the live page down.

Discovered
layouts_list

List supported page layouts. Currently ships link_in_bio only.

Discovered
media_attach

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 (theme background).

Discovered
media_delete

Soft-delete a media asset and remove all references to it from the page content.

Discovered
media_upload

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 and waste context, so never paste a photo's bytes; for a file on the user's device use media_upload_link_create instead. After a successful upload, call media_attach to place it (unless this returned content already showing it).

Discovered
media_upload_link_create

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). Returns uploadPageUrl, a page the user opens to pick their photo; it resizes the image for the web and attaches it to the page itself, so no media_attach call is needed. The link expires (see expiresAt). page_get shows the photo once it has been uploaded.

Discovered
page_create

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 via block_update — do not invent content. This tool intentionally creates a draft only and does not return a publish action. After calling it, stop and show the preview URL. Do not call page_publish in the same turn unless the user's current message explicitly asks to publish, make the page live, or get a public share link. Anonymous demo pages expire unless claimed.

Discovered
page_create_from_brief

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 one round of questions first (page_intake_start lists them). Creates a private draft and returns previewUrl, pageId, editToken (anonymous pages), claimUrl and expiresAt. Planning fields (audience, offer, primaryGoal, location, businessType, style, mustInclude) are context only and are not rendered as public body copy. Draft previews are customer-facing: do not pass owner instructions, section-planning labels, or placeholder copy as public content. Keep sparse briefs sparse: use only facts supplied by the user or imported public sources, plus light wording polish; never invent menus, services, hours, facilities, locations, testimonials, guarantees, staff details, prices, or operational claims. If a requested action lacks its real destination, ask for it, or use fallbackLeadForm with destinationEmail (ask the user which email should receive enquiries — without it the form cannot deliver anything and cannot be the page's only action at publish). Personal, gift or event pages (birthday, invitation, tribute, a poem) need no contact form and no action at all: a page with real text (bio + publicSections) can be published as is; add a link (primaryActionUrl, e.g. RSVP, gift list or playlist) only if the user has one, never primaryActionId 'lead'. After calling it, show the preview URL and stop; call page_publish only when the user explicitly asks to publish, make it live, or get a public link. Anonymous pages are deleted after expiresAt unless the user claims them via claimUrl. Passing onboardingMainCategory picks the matching template. The draft also seeds the preset's starter blocks (empty placeholder links, social row, save-contact) — they never block publishing and are pruned if left empty. Use the returned previewUrl directly (no need for page_preview). nextSteps marked recommended/optional (bio, photo, social links) are improvements to offer after the user has seen the preview; only 'required' ones block publishing.

Discovered
page_get

Read a landing page draft, including its latest content JSON. For anonymous demo pages, include the editToken.

Discovered
page_header_update

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 you want to change. On an already-published page this saves a new draft revision only: the live page does not change until page_publish runs, which should happen only when the user explicitly asks to update the live page. The edit never takes the live page down.

Discovered
page_intake_start

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 must-have facts. Skip it when the request already has a name and the main action's destination — call page_create_from_brief directly. Call at most once per request; if the user gave a public link, read it yourself or use source_import instead. Does not create a page.

Discovered
page_meta_update

Update internal page title, URL slug, and SEO title/description. On an already-published page this saves a new draft revision only: the live page does not change until page_publish runs, which should happen only when the user explicitly asks to update the live page. The edit never takes the live page down.

Discovered
page_onboarding_start

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). IMPORTANT: this flow is STATELESS — page_onboarding_update does not remember earlier calls, so each update must resend the FULL set of selections + knownFields gathered so far. As soon as you have a business name and a primary action, stop and call page_create_from_brief (you do not need to reach a 'ready' step).

Discovered
page_onboarding_update

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, action destination, etc.) gathered so far — not just the latest answer, or earlier choices will look 'missing'. You do not need to loop to a 'ready' state: once you have a name and a primary action, call page_create_from_brief with those values.

Discovered
page_preview

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.

Discovered
page_publish

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 anonymous demo pages, include the editToken returned by page_create. The response includes the public URL and nextSteps (the claim reminder for demo pages and any remaining optional improvements).

Discovered
page_theme_update

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. On an already-published page this saves a new draft revision only: the live page does not change until page_publish runs, which should happen only when the user explicitly asks to update the live page. The edit never takes the live page down.

Discovered
page_unpublish

Remove a published landing page from public availability while keeping its draft and revision history.

Discovered
presets_list

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.

Discovered
source_import

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

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected573 ms24
Connected484 ms27