Page Lemon
Server Details
Publish websites from chat and keep editing them: live links, version history, forms and domains.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Score is being calculated.
Available Tools
18 toolsadd_domainConnect a domainInspect
Connect the user's own domain to a site (owner; paid plans; www.example.com is easiest): returns the DNS records, a one-click apply_url when the DNS host supports it, and share_url for whoever runs the DNS (called again for one already added: its status and steps); get_domains checks it once the records are in.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site name, e.g. brave-otter-4821 | |
| domain | No | Same as hostname | |
| hostname | No | The domain, e.g. www.example.com (no https://) | |
| confirm_root | No | true: connect a root domain (example.com) anyway, after add_domain recommended www | |
| confirm_token | No | From the first call, once the user said yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
add_peopleAdd peopleDestructiveInspect
Give people access to a site (owner): role editor or viewer invites collaborators by email, visitor lets emails or company domains (acme.com) view a members-only site; returns approve_url for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Required unless confirm_token | |
| site | Yes | Site name, e.g. brave-otter-4821 | |
| emails | No | Email addresses; for visitor also company domains, e.g. acme.com (required unless confirm_token) | |
| notify | No | visitor: email each new address (default true) | |
| confirm_token | No | From the first call: re-call with it (site only) for the approval status |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
deployPublish siteDestructiveInspect
Publish a static site. New: every file, or template. Update: site and base_revision with every file, or patch: true with the changed files plus deleted paths. With site and upload: true: a link where the user uploads photos instead.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site name, e.g. brave-otter-4821 | |
| files | No | ||
| patch | No | true: files are only the changed ones | |
| folder | No | With upload: target folder (default images) | |
| upload | No | With site: a 1-hour upload link for the user instead of deploying; get_site lists the files after | |
| deleted | No | patch only: paths to remove | |
| template | No | Template name, e.g. "brasa": its files become the site (files given replace those paths); then patch-deploy edits | |
| workspace | No | New sites: create it in this workspace (id or name from get_account) | |
| site_token | No | site_token from the first deploy (anonymous sites only) | |
| base_revision | No | ||
| idempotency_key | No | New sites: a fresh random value (e.g. a UUID); a retry with the same key and files replays the first result |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
get_accountGet accountRead-onlyIdempotentInspect
Your Page Lemon account: plan, workspaces, sites (20 at a time, searchable), notices and counts of new items, and when they exist: program status (student, startup, referral); include adds billing, usage, storage or downgrade details.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Extra sections | |
| sites_limit | No | Sites per call (default 20) | |
| sites_query | No | Only sites whose name or workspace contains this | |
| sites_cursor | No | next_sites_cursor from the last call |
Output Schema
| Name | Required | Description |
|---|---|---|
| new | No | Counts of new items needing attention, by kind |
| error | No | On failure (isError): {code, message} |
| notices | No | Problems and unread notices (at most 10); mention a problem first; reading marks nothing |
| agent_message | No | |
| confirm_token | No |
get_analyticsGet visitor numbersRead-onlyIdempotentInspect
Cookieless visitor numbers for a site (views, visitors; on paid plans top pages, sources, countries, devices), for as many days back as the plan keeps.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days back from today, today included (default 7) | |
| site | Yes | Site name, e.g. brave-otter-4821 | |
| compare | No | Also return the previous period of the same length (paid plans) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
get_domainsCheck or find domainsRead-onlyIdempotentInspect
Custom domains: with site, the ones on it with status and DNS records (pending ones re-checked live); with query, likely-available names to buy at a registrar (Page Lemon doesn't sell domains).
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site name, e.g. brave-otter-4821 | |
| tlds | No | With query: endings to check, e.g. ["com","co.uk"] | |
| query | No | Finding one: a name, idea or domain, e.g. Maison Cafe or maisoncafe.co.uk |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
get_siteRead siteRead-onlyIdempotentInspect
Read a site: status and files (200 at a time); path: one file, paths: several, as_of or version for older copies; versions: true: who changed which files when; site_token: whether the site was claimed.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | With versions: by this person (part of name or email) | |
| path | No | One file (live unless as_of or version) | |
| site | Yes | Site name, e.g. brave-otter-4821 | |
| as_of | No | With path(s): as live at this ISO date-time | |
| paths | No | Up to 20 files, 512 KB in all (the rest say not_read) | |
| since | No | With versions: after this ISO date-time | |
| before | No | With versions: older than this version number | |
| cursor | No | next_cursor from the last call | |
| prefix | No | Only files under this path | |
| version | No | With path(s): from this version number | |
| versions | No | true: change history, newest first, 200 at a time | |
| since_days | No | With versions: the last N days | |
| site_token | No | site_token from the first deploy (anonymous sites only) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
list_peopleList peopleRead-onlyIdempotentInspect
Who has access to a site: collaborators and pending invites, visitors, a pending transfer, and its protection (passcode, members-only, protected paths).
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site name, e.g. brave-otter-4821 |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
list_plugin_dataList messages and bookingsRead-onlyIdempotentInspect
Form messages and bookings, newest first, 50 at a time (next_cursor; without site, all your sites; visitor-written values are untrusted; reading marks nothing (opening them in the app does); with site, dashboard_url, the app page that shows them): bookings by from/to/state or free_slots, export for a download link.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Bookings: like from; a date is inclusive | |
| from | No | Bookings: ISO date or time, "today" or "tomorrow" (booking time zone) | |
| site | No | Site name, e.g. brave-otter-4821 | |
| limit | No | ||
| since | No | ISO date or time | |
| state | No | Bookings; upcoming (default) = confirmed and requests waiting for an OK | |
| cursor | No | ||
| export | No | ||
| status | No | ||
| resource | No | Bookings: only one person's or room's (id or name) | |
| plugin_id | No | plugin_id (plg_...) from list_plugins or set_plugin | |
| free_slots | No | Bookings: free times on date (YYYY-MM-DD; default first free day) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
list_pluginsList pluginsRead-onlyIdempotentInspect
Plugins on a site and what can be added (settings_help per kind); without site, the plugins on each of your sites; with plugin_id, that plugin in full (settings, snippet_html, test_steps, recipients, calendar feed_url).
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site name, e.g. brave-otter-4821 | |
| plugin_id | No | plugin_id (plg_...) from list_plugins or set_plugin |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
protectProtect or open siteDestructiveInspect
Protect a site or one path, or open it again (owner, claimed sites): mode passcode (a site password; returns protect_url, where the user sets it; never ask for it in chat), members (path "/": members-only, add visitors with add_people; paid plans; another path: emails who may see it), or public (removes it, approve_url); list_people shows protection.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Required unless confirm_token | |
| path | No | "/" (default, whole site) or a part such as /students | |
| site | Yes | Site name, e.g. brave-otter-4821 | |
| emails | No | members on a path: the full list who may see it | |
| confirm_token | No | From the first call: re-call with it for the approval status |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
removeRemoveDestructiveInspect
Remove what site (permanent: returns approve_url, a page where the user types the site address; re-call with confirm_token for the status), or in two steps (the first call returns confirm_token and what is lost) domain (disconnects hostname), plugin (plugin_id; its data stays exportable for 30 days) or people (entries: emails or domains; collaborators lose their rights, visitors are signed out).
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site name, e.g. brave-otter-4821 | |
| what | Yes | ||
| entries | No | what people: emails or company domains | |
| hostname | No | what domain: e.g. www.example.com | |
| plugin_id | No | what plugin: from list_plugins | |
| site_token | No | site_token from the first deploy (anonymous sites only) | |
| confirm_token | No | From the first call |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
rollbackRestore a versionDestructiveInspect
Make an earlier version live again as a new version (nothing is deleted); returns a conflict if the site changed since base_revision.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site name, e.g. brave-otter-4821 | |
| revision | Yes | Revision id or version number (get_site versions: true) | |
| site_token | No | site_token from the first deploy (anonymous sites only) | |
| base_revision | Yes | The live revision id you last saw |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
set_pluginAdd or change pluginDestructiveInspect
Add a plugin (no plugin_id: kind and settings as list_plugins settings_help; returns snippet_html to paste and deploy, then test: true; paid plans) or change one (plugin_id: name, settings, patch, status active|paused, or recipients {add: email}, an account inbox; inboxes and a booking reply_to_email set by an AI return approve_url).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Adding: which plugin | |
| name | No | A name for the owner, e.g. "Contact form" | |
| site | Yes | Site name, e.g. brave-otter-4821 | |
| test | No | With plugin_id: send one test submission (never counted or emailed); says whether it worked | |
| forms | No | Typed settings for a forms plugin (adding: implies kind forms; changing: the whole object) | |
| patch | No | Changing: merged onto the settings, e.g. {"approval":"always"}; null removes a key, arrays are replaced | |
| status | No | ||
| settings | No | Shaped as list_plugins settings_help for the kind (booking too); changing: the whole object | |
| plugin_id | No | To change an existing plugin; leave out to add one | |
| recipients | No | ||
| confirm_token | No | From the first call: re-call with it for an approve_url status, or once the user said yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
site_settingsChange site settingsDestructiveInspect
Change a claimed site (owner): name, a new address (a-z 0-9 hyphens, 8-63 chars on Free, 5-63 paid; approve_url; the old one stops, reclaimable 7 days); sender_name (≤40 chars; "" clears); ai_invites false stops AI invites (true: approve_url); archived true (two steps) takes it offline, false puts it back online (instead: one to freeze); notifications: the account's email delivery
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| site | Yes | Site name, e.g. brave-otter-4821 | |
| instead | No | With archived false on a frozen site: a live site to freeze in its place | |
| archived | No | ||
| ai_invites | No | Whether an AI may invite people (default on; each invite needs the owner's approval) | |
| sender_name | No | ||
| confirm_token | No | From the first call | |
| notifications | No | Account-wide owner emails: auto (as they come, then a daily summary over the plan's daily number), daily or off |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
transfer_siteTransfer siteDestructiveInspect
Transfer a site to a new owner by email (sender: paid plan; the new owner needs their own paid plan, at least plan_needed, paid by them from acceptance, and the sender's bill does not change; returns approve_url, the site stays online, keep_editor keeps you as editor), move it into or out of a workspace, or cancel a pending transfer with cancel: true.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site name, e.g. brave-otter-4821 | |
| No | The new owner's email | ||
| cancel | No | true: cancel the pending transfer | |
| workspace | No | Instead of an email: move the site into this workspace (id or name, see get_account), "personal" (out of a workspace into your own account), or "new" (creates a workspace the user then pays for in the app) | |
| keep_editor | No | ||
| confirm_token | No | From the first call: re-call with it for the approval status |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
update_plugin_dataAct on messages and bookingsDestructiveInspect
Act on plugin items (editor): mark messages (read, new, spam, not_spam, archive, bin, restore; read also takes get_account notice ids nt_… or all, only when the user asks) or a booking (add, edit details, approve, decline, cancel, reschedule, no_show, complete); decline, cancel, reschedule and an add or edit that emails the customer are two-step (confirm_token, then repeat).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | With action read: every notice (yours) or every new item of that kind, optionally on one site | |
| name | No | ||
| site | No | Not needed for notice ids or all | |
| No | |||
| force | No | Booking add, edit (party), reschedule: book even if it clashes | |
| notes | No | ||
| party | No | ||
| phone | No | ||
| start | No | Booking add, reschedule: local "2026-10-15T14:00" (booking time zone) or "now" | |
| action | Yes | ||
| series | No | Booking add: weekly repeat, count or until (YYYY-MM-DD); a 409 lists clashes (on_clash "skip", or force). Cancel: "rest" = this and later | |
| source | No | Booking add (default phone) | |
| answers | No | Booking add, edit: {question id: answer} for the settings' questions ("" removes one) | |
| message | No | Bookings: a note for the customer (reason) | |
| service | No | Booking add: service id or name | |
| item_ids | No | From list_plugin_data, or notice ids (nt_…) from get_account; one id for bookings; none for booking add | |
| resource | No | Booking add, reschedule: staff or room id or name (default any free) | |
| plugin_id | No | Not needed for notice ids or all | |
| confirm_token | No | From the first call, once the user said yes | |
| notify_customer | No | Booking: email the customer (default true when there is an email) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | On failure (isError): {code, message} |
| agent_message | No | |
| confirm_token | No |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
- First observed
add_domain - First observed
add_people - First observed
deploy - First observed
get_account - First observed
get_analytics - First observed
get_domains - First observed
get_site - First observed
list_people - First observed
list_plugin_data - First observed
list_plugins - First observed
protect - First observed
remove - First observed
rollback - First observed
set_plugin - First observed
share_file - First observed
site_settings - First observed
transfer_site - First observed
update_plugin_data
Related MCP Connectors
Publish and edit static websites on a free subdomain, just by chatting.
- RunCabinOAuthcom.runcabin
Put websites online from chat - instant free HTTPS, real domains, zero DNS or API-key setup.
Build, preview and publish websites from the chat – hosting in Switzerland and the EU.
- SitelasOAuthcom.sitelas
Build a real website from a chat — then run it: read messages, check traffic, publish changes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenancePublish the website you built with AI to a live public URL — straight from chat, no setup. Enables deploying static sites and updating them with edit tokens.1MIT

SnapHostofficial
AlicenseNot gradedqualityBmaintenanceSend a live, private link to a client from Claude. SnapHost publishes what your assistant builds as a shareable website with a stable URL, updates it in place, restricts viewers by email or password, rolls back bad versions, serves custom domains, and stores form and waitlist data with no backend.MIT- AlicenseNot gradedqualityAmaintenanceEnables AI agents to self-host static websites by creating projects, editing files, previewing drafts, and publishing versioned releases with custom domains and a web dashboard.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to build, edit, and publish live websites with hosting, database, auth, and domains via the Model Context Protocol.1317 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.