Page Lemon
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Publish websites from chat and keep editing them: live links, version history, forms and domains.
| Author | com.pagelemon |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 225 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Page Lemon": {
"url": "https://mcp.pagelemon.com",
"transport": "streamable-http"
}
}
}
Measured tools (67)
deploydestructivePublishes a new static site or a new version. New: every file, or a template. Update: site and base_revision with every file, or patch: true with changed files and deleted paths. Without an account, returns site_token and claim_url. Resize photos to the size shown (~2000 px), WebP/JPEG 80%.
Parameters:
site— stringfiles— arraypatch— boolean — true: only the changed filesdeleted— array — patch: paths to removepreview— boolean — true: save a private preview, not livestaging— booleantemplate— string — Template, e.g. "brasa" (files sent replace its paths)workspace— string — New sites: workspace id or name, or "private" (omitted with several, the reply asks)site_token— stringbase_revision— stringconfirm_token— stringidempotency_key— string — New sites: a random UUID; a retry with the same files replays the result
Hints: read-only no · destructive yes · idempotent no · open-world yes
create_upload_linkdestructiveReturns a 1-hour link where the user uploads photos and files into a folder of a site (get_site lists them). replace_site: only when the user asks to replace the whole site. Publishes nothing until then.
Parameters:
site(required) — stringfolder— string — Target folder (default images); not with replace_sitesite_token— stringreplace_site— boolean — true: a one-use link for a zip that replaces the whole site
Hints: read-only no · destructive yes · idempotent no · open-world yes
share_fileShares one image (PNG, JPEG, GIF, WebP, AVIF; not SVG) or PDF as a new site with a viewer and a Download button: without content, returns a link where the user drops their file; with name and content (base64, up to 10 MB; resize and compress photos first) it is published at once.
Parameters:
name— string — With content: file name with extension, e.g. menu.pdfcontent— string — The file, base64-encoded (no data: prefix)
Hints: read-only no · destructive no · idempotent no · open-world yes
get_siteread-onlyReads a site: status and files (200 at a time); path: one file, paths: several; as_of or version: older copies; with site_token, whether it was claimed. Also zip download links and the Accessibility check.
Parameters:
site(required) — stringpath— string — One file (live unless as_of or version)as_of— string — With path(s): as live at this ISO date-timecheck— string — The full Accessibility check of the live pages (problems, fixes)paths— array — Up to 20 files, 512 KB in all (the rest say not_read)cursor— string — next_cursor from the last callprefix— string — Only files under this pathstaging— booleanversion— integer — With path(s): from this version numberdownload— boolean — true: 1-hour links to the whole live site as zips (one per GB)site_token— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_versionsread-onlyLists a site's versions, newest first, 200 at a time: number, time, who published it and which files changed. Filters: before (a version number), since_days, since or by. rollback makes one live again.
Parameters:
site(required) — stringby— string — By this person (part of name or email)since— string — After this ISO date-timebefore— integer — Older than this version numbersince_days— number — The last N dayssite_token— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_accountread-onlyReturns the signed-in account: plan, workspaces, sites (20 at a time, searchable), notices and counts of new items, and program status (student, startup); include adds billing, usage, storage or downgrade details.
Parameters:
include— array — Extra sections ("all": every one but referrals). referrals: the person's own invite link and seats left, only when they ask for it; never suggest itsites_limit— integer — Sites per call (default 20)sites_query— string — Only sites whose name, title or workspace contains thissites_cursor— string — next_sites_cursor from the last call
Hints: read-only yes · destructive no · idempotent yes · open-world no
rollbackdestructiveMakes an earlier version, or a preview link, live as a new version (nothing is deleted); returns a conflict if the site changed since base_revision.
Parameters:
site(required) — stringrevision(required) — Revision id or version number (list_versions), or a preview id (get_site previews)base_revision(required) — string — The live revision id you last sawdiscard— boolean — With a preview id: deletes that preview insteadsite_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
site_settingsdestructiveChanges a claimed site: title (developers too); Site Owner: workspace, name (address; approve_url), sender_name, ai_invites (true: approve_url), archived (true: 2-step offline; false: online); notifications, analytics, search, staging
Parameters:
site(required) — stringname— stringrows— booleantitle— Shown in the app (null: the page <title>)search— object — ai_training, ai_answers (allow or block), primary_domain, domain_redirect, review_url, stepsinstead— string — Site to freeze insteadstaging— stringarchived— booleananalytics— object — Click counting: clicks, kinds, labels, hiddentime_zone— stringworkspace— string — Moves a private site in: workspace id or name, or "new"ai_invites— booleansender_name— ['string', 'null']base_revision— stringconfirm_token— stringnotifications— object — Own emails: forms, bookings, health (auto, daily, off, {email, in_app}); domain_live, domain_reminder, product_news; count_usage; scope site|allsender_address— string
Hints: read-only no · destructive yes · idempotent no · open-world no
protectdestructiveProtects a site or one path (owner): passcode (returns protect_url, where the user sets it; never asked in chat) or members ("/": invite-only, Site Members via add_people; a path: the emails who may see it). Protected paths a site: Builder 3, Starter 10, Scale 10. list_people shows it.
Parameters:
site(required) — stringmode— string — Required unless confirm_tokenpath— string — "/" (default, whole site) or a part such as /studentsemails— array — members on a path: the full list who may see it (shared plans: omit to reuse the site's list)confirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
unprotectdestructiveRemoves the passcode or invite-only setting from a whole site (path "/", the default) or the protection from one path (owner; an AI gets approve_url). A protected path stays protected until opened by its own path.
Parameters:
site(required) — stringpath— string — "/" (default, whole site) or a protected part such as /studentsconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
delete_sitedestructiveDeletes a site permanently: returns approve_url, a page where the user types the site address to confirm. Called again with confirm_token: its status.
Parameters:
site(required) — stringsite_token— stringconfirm_token— string — From the first call: the deletion status
Hints: read-only no · destructive yes · idempotent no · open-world no
remove_domaindestructiveDisconnects a custom domain from a site (two steps: confirm_token and what stops working first). The domain itself stays with its registrar.
Parameters:
site(required) — stringhostname(required) — string — e.g. www.example.comconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
remove_plugindestructiveRemoves a plugin from a site (two steps: confirm_token and what is lost first). Its data stays exportable in the app for 30 days.
Parameters:
site(required) — stringplugin_id(required) — string — From list_pluginsconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
remove_peopledestructiveRemoves people from a site (owner; two steps: confirm_token and who loses what first): Site Developers and Site Viewers lose their rights, Site Members are signed out. A Site Developer or Site Viewer may remove only themselves.
Parameters:
site(required) — stringentries(required) — array — Emails or company domainsconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
get_listsread-onlyReads Lists: a site's lists (menu, team; shown on its pages) and its form messages and bookings (private). No site: counts. With list: its items, filtered. Marks nothing read.
Parameters:
q— string — Text anywhereto— stringfrom— stringlist— string — Its itemssite— string — None: every site, counts onlyview— string — Saved filterlimit— integerscope— string — No site: all, personal, workspace:<id>since— stringstate— string — Bookings: upcoming|…|allwhere— object — {column: value}cursor— stringexpand— boolean — Linked items' fieldsexport— string — A download linkstatus— string — Messages: new|read|spam|archived|binned|allservice— stringresource— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
save_listdestructiveCreates a list or replaces its fields (pages show it with data-pl-list and data-pl-field). Form or bookings list: only the owner's own columns (notes, tags). Lists are optional: only when the user asks for one.
Parameters:
site(required) — stringlist(required) — string — List nameforms— array — Form list: plugin ids filling itlabel— string — Name shown in the appfields— array — All fields, first to last (one left out loses its values): {name, type, label, options, list (reference), from (old name)}; type text, long_text, number, price, date, image, link, yes_no, rich_text, reference(s), choicepublic_json— ['object', 'null'] — Public JSON feed {fields, where}; null: off
Hints: read-only no · destructive yes · idempotent no · open-world yes
delete_listdestructiveDeletes a list and its items (a list with items: two steps, confirm_token after the user agrees).
Parameters:
site(required) — stringlist(required) — string — List nameconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
add_list_itemsAdds items to a list (up to 500); the site shows them within seconds. from copies a form message: a preview first (confirm_token), then with consent after the person's yes.
Parameters:
site(required) — stringlist(required) — string — List namecopy— object — {field: message field}from— string — Or copy this message (itm_…)items— array — {field: value} eachconsent— boolean — The person agreed to be shownposition— integer — Insert at (1 = first; default: end)confirm_token— string
Hints: read-only no · destructive no · idempotent no · open-world yes
update_list_itemsChanges list items by id; the site shows it within seconds. On form messages and bookings: only the owner's own columns (not undoable).
Parameters:
site(required) — stringlist(required) — string — List nameitems(required) — array — Given fields change; null clears. {id, values, if_updated_at}
Hints: read-only no · destructive no · idempotent no · open-world yes
remove_list_itemsdestructiveRemoves items from a list by id; the site shows it within seconds (undo_list_change takes it back).
Parameters:
site(required) — stringlist(required) — string — List nameids(required) — array
Hints: read-only no · destructive yes · idempotent no · open-world yes
sort_list_itemsSorts a list's items by a field, or puts them in the sequence of the given ids; the site shows it within seconds.
Parameters:
site(required) — stringlist(required) — string — List nameids— array — Or item ids, first to last (the rest follow)sort_by— string — A field to sort bydescending— boolean
Hints: read-only no · destructive no · idempotent no · open-world yes
import_list_itemsdestructiveImports CSV or rows into a list: the first call previews (confirm_token); with it, after the user agrees, it saves as one change.
Parameters:
site(required) — stringlist(required) — string — List namecsv— string — With a header rowrows— array — Or {field: value} each (id: change it)confirm_token— stringcreate_missing— array — Link fields: add unknown names
Hints: read-only no · destructive yes · idempotent no · open-world yes
undo_list_changedestructiveTakes back one list change (change_id from its reply).
Parameters:
site(required) — stringchange_id(required) — string
Hints: read-only no · destructive yes · idempotent no · open-world yes
bind_listdestructiveTurns repeated blocks on a page (a menu) into a list: the first call previews items and markup (confirm_token); with it, it creates the list, adds the items and publishes the page. Only when the user asks for a list.
Parameters:
site(required) — stringpath(required) — string — Page, e.g. menu.htmllist(required) — string — List nameselector(required) — string — Repeated blocks, e.g. ".menu li"fields(required) — object — {field: selector in a block; "": the block}import— boolean — Add items to a list that has someconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
get_free_slotsread-onlyFinds the free booking times for a service on a date (default: the first with any), as customers see them.
Parameters:
site(required) — stringservice(required) — string — Id or namedate— string — YYYY-MM-DDparty— integerresource— string — Staff or roomplugin_id— string
Hints: read-only yes · destructive no · idempotent yes · open-world yes
find_visitor_recordsread-onlyFinds one person's records by email (a privacy request), with copies shown on the site. Export and erase are in the app.
Parameters:
email(required) — stringsite— stringlimit— integerscope— stringcursor— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
setup_member_appSets up an app: member sign-in, private records under one path, lists from a template. Returns markup and approve_url (the Site Owner turns it on). Owner only; Free: testing.
Parameters:
site(required) — stringpath— string — Member pages path (default /app)signup— string — invite, open, or request (owner approves)ai_read— object — {lists: up to 10 names or "all", members}; answers approve_urltemplate— string — Makes its member lists and plansretention— string — member, 1y, 2y, 5yrequest_note— stringsign_out_all— booleanconfirm_token— stringdisplay_field— ['string', 'null'] — Profile field shown to group peersnotify_members— {status,reply,comments}: boolprofile_fields— array — Sign-up fields {name, type, label, required, options}; types text, long_text, number, date, choice, phone, url
Hints: read-only no · destructive no · idempotent no · open-world no
save_member_listdestructiveCreates a member list or replaces its fields. Each member sees only their own rows. Returns the list and add-form markup.
Parameters:
site(required) — stringlist(required) — string — Member list name, e.g. expensesfields(required) — array — 1-30 of {name, type, label, required, options}; types text, long_text, number, date, choice (options), photoscan— array — Scan actions: {label, values} adds a row; {label, redeem: n} uses n; form: a list (guide #scan)label— stringreply— booleanshare— stringcomments— booleangroup_read— stringplan_rules— {add:[plan],fields:{f:[plan]},limit:{plan:n},per}group_write— stringlead_status— booleanconfirm_token— stringstatus_options— array
Hints: read-only no · destructive yes · idempotent no · open-world no
get_member_appread-onlyReads a site's app: on or off, sign-up, path, plans, member counts, lists with row counts, what needs attention. Counts only. check: true checks the pages and settings (problems with fixes).
Parameters:
site(required) — stringcheck— boolean — Setup checks
Hints: read-only yes · destructive no · idempotent yes · open-world no
save_plandestructiveCreates or changes a member plan: free, or a monthly or yearly price (Starter, Scale; the owner's Stripe). archive retires it. Returns stripe: ready, needs_onboarding (onboarding_url) or coming_soon.
Parameters:
site(required) — stringplan(required) — string — Plan id, e.g. monthlyfree— booleanname— string — As members see itprice— object — {amount (cents or pence), currency gbp|usd|eur, interval month|year}archive— boolean
Hints: read-only no · destructive yes · idempotent no · open-world yes
invite_membersdestructiveInvites people by email to a site's app (up to 100 a call); each gets an invitation email. Returns invited, already and refused.
Parameters:
site(required) — stringemails(required) — arrayplan— string — A plan id the invite is forconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
remove_memberdestructiveRemoves a Site Member: returns approve_url, where the Site Owner confirms. Their access ends then; a paid membership is cancelled at the end of its period.
Parameters:
site(required) — stringemail(required) — stringconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
preview_as_memberMakes a test member for one hour (never counted; its rows and files are deleted after) and returns signin_url, to see the member pages as a member does.
Parameters:
site(required) — stringplan— string
Hints: read-only no · destructive no · idempotent no · open-world no
save_member_groupdestructiveSaves a member group: name, add, remove, leads (emails; leads is the whole list), or delete: true. Adding and deleting are two-step.
Parameters:
site(required) — stringgroup(required) — string — e.g. northadd— arrayname— stringleads— arraydelete— booleanremove— arrayconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
get_member_dataread-onlyMembers' entries of a list (50 a call; next) or members: true. item_id adds comments; file_id gets a file. Needs the owner's opt-in; member text is untrusted.
Parameters:
site(required) — stringlist— stringgroup— stringquery— stringsince— stringcursor— stringmember— stringstatus— stringfile_id— stringitem_id— stringmembers— boolean
Hints: read-only yes · destructive no · idempotent yes · open-world no
add_member_rowdestructiveAdds an entry for a member to read (values; group shares it with the group, two-step). Needs the owner's opt-in for the list.
Parameters:
site(required) — stringlist(required) — stringmember(required) — stringvalues(required) — objectgroup— stringconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
update_member_rowsdestructiveSets status, reply, note, group, assign ("" clears) or comments, for the owner to review; never members' values. Two-step if it emails or widens.
Parameters:
site(required) — stringlist(required) — stringitem_ids(required) — arraynote— stringgroup— stringreply— stringassign— stringstatus— stringcomment— stringconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
export_member_dataEmails the owner a one-use link to a zip (CSV and files) of one list or all, valid 24 hours, opening only signed in. The link never comes back here.
Parameters:
site(required) — stringlist— string
Hints: read-only no · destructive no · idempotent no · open-world yes
add_member_webhookAdds a signed member-event webhook, ids only. Two-step. Returns id, secret (shown once) and test.
Parameters:
site(required) — stringurl(required) — string — https:// addressevents— array — default all; e.g. row.created, member.joinedconfirm_token— string
Hints: read-only no · destructive no · idempotent no · open-world yes
remove_member_webhookdestructiveRemoves a member-event webhook at once; its pending deliveries are dropped.
Parameters:
site(required) — stringid(required) — string — mwh_ id
Hints: read-only no · destructive yes · idempotent yes · open-world no
email_membersDrafts an email to the app's members (all or one plan). Returns approve_url: nothing is sent until the Site Owner approves.
Parameters:
site(required) — stringsubject(required) — stringbody(required) — string — Plain textplan— string — Plan id; default allconfirm_token— string
Hints: read-only no · destructive no · idempotent no · open-world yes
save_app_ai_promptdestructiveSaves an AI block prompt for the owner's own AI key (set in the Dashboard). Returns markup.
Parameters:
site(required) — stringname(required) — stringkind(required) — stringtemplate(required) — stringfield— stringlists— arrayscope— stringperiod— stringaudience— string
Hints: read-only no · destructive yes · idempotent yes · open-world no
list_pluginsread-onlyLists the plugins on a site and what can be added (settings_help per kind); without site, those on each of the account's sites; with plugin_id, that plugin in full (settings, snippet_html, test_steps, recipients, calendar feed_url, payouts, checkout_fee).
Parameters:
lang— string — The page's <html lang>, e.g. de (one snippet per language)site— stringplugin_id— string — From list_plugins
Hints: read-only yes · destructive no · idempotent yes · open-world no
add_pluginAdds a plugin to a site (paid plans): kind and settings (list_plugins settings_help), or forms or form_html (kind forms). The first call returns setup_summary; with confirm_token it saves and returns snippet_html for a page; then test_plugin.
Parameters:
site(required) — stringkind— stringlang— string — The page's <html lang>, e.g. de (one snippet per language)name— string — e.g. "Contact form"forms— object — Typed: fields, success_message, redirect, submit_label, notify, store, auto_replysettings— object — As list_plugins settings_helpform_html— string — Forms: the page's <form>confirm_token— string
Hints: read-only no · destructive no · idempotent no · open-world yes
update_plugindestructiveChanges a plugin: name, settings (whole), patch (merged), form_html, status active or paused, or recipients {add: email}. A changed form or booking setup returns setup_summary and confirm_token first; a new inbox or an AI-set booking reply_to_email, approve_url.
Parameters:
site(required) — stringplugin_id(required) — string — From list_pluginslang— string — The page's <html lang>, e.g. de (one snippet per language)name— stringforms— object — Forms: as settingspatch— object — Merged onto the settings, e.g. {"approval":"always"}; null removes a key, arrays are replacedstatus— stringsettings— object — The whole settings object, shaped as list_plugins settings_help (forms too)form_html— stringrecipients— object — {add: an extra inbox, for every site on the plan (needs Manage)}confirm_token— string — After the person's yes to setup_summary, or for the approve_url status
Hints: read-only no · destructive yes · idempotent no · open-world yes
test_pluginSends one test submission to a plugin (never counted or emailed; kept as a test item) and says whether it worked and which published pages carry it.
Parameters:
site(required) — stringplugin_id(required) — string — From list_plugins
Hints: read-only no · destructive no · idempotent no · open-world no
mark_messagesdestructiveMarks form messages (mark; bin: deleted after 30 days). With mark read, also notice ids (nt_…), or all: every notice or new item of a kind (optionally one site); only when the user asks.
Parameters:
mark(required) — stringall— string — With mark read: every notice (yours) or every new item of that kindsite— string — Not needed for notice ids or allitem_ids— array — From get_lists, or notice ids (nt_…) from get_accountplugin_id— string — Optional: found from item_ids
Hints: read-only no · destructive yes · idempotent yes · open-world no
add_bookingdestructiveAdds a booking the owner took (phone, walk-in): service, start, customer details; series repeats it weekly; resource picks staff or a room. A clash is a 409 (force: true books anyway). Emailing the customer takes confirm_token first.
Parameters:
site(required) — stringname— stringemail— stringforce— booleannotes— stringparty— integerphone— stringstart— string — Local "2026-10-15T14:00" (booking time zone) or "now"series— object — Weekly repeat: {every: week|fortnight, count 2-52 or until YYYY-MM-DD, on_clash: "skip"}source— string — Default phoneanswers— object — {question id: answer} ("" removes one)service— string — Service id or nameresource— string — Staff or room id or name (default any free)plugin_id— string — Default: booking pageconfirm_token— stringnotify_customer— boolean — Email the customer (default true)
Hints: read-only no · destructive yes · idempotent no · open-world yes
edit_bookingdestructiveChanges one booking: customer details, or start (and resource) to move it. A class_id (cl_…) as item_id: start moves the class; waitlist closes or re-opens it. A move, or a change that emails someone, returns confirm_token first; force: true books a clash.
Parameters:
site(required) — stringitem_id(required) — string — From get_listsname— stringemail— stringforce— booleannotes— stringparty— integerphone— stringstart— string — New local time, e.g. "2026-10-15T14:00"answers— object — {question id: answer} ("" removes one)message— string — A note for the customerresource— string — With start: staff or roomwaitlist— string — Class time or wl_ entry: close (bookings stay; those waiting are emailed) or re-openplugin_id— string — Default: booking pageconfirm_token— stringnotify_customer— boolean — Email the customer (default true)
Hints: read-only no · destructive yes · idempotent no · open-world yes
approve_bookingdestructiveApproves a booking request and emails the customer. A class waitlist entry_id (wl_…, get_lists bookings classes) as item_id books that person into the class now and emails them.
Parameters:
site(required) — stringitem_id(required) — string — From get_listsmessage— string — A note for the customerplugin_id— string — Default: booking page
Hints: read-only no · destructive yes · idempotent yes · open-world yes
cancel_bookingdestructiveCancels a booking or declines a request (two steps: confirm_token, then the customer is emailed). A waitlist entry_id (wl_…) takes that person off; a class_id (cl_…) cancels the class, one email each.
Parameters:
site(required) — stringitem_id(required) — string — From get_listsrefund— string — A paid booking (default full; returns a refund approve link)series— string — "this" (default) or "rest" (this date and every later one)message— string — A note for the customerplugin_id— string — Default: booking pageconfirm_token— stringnotify_customer— boolean — Email the customer (default true)
Hints: read-only no · destructive yes · idempotent no · open-world yes
set_booking_outcomeRecords how a booking that has started went: completed (done) or no_show. Emails nobody; it can be changed between the two.
Parameters:
site(required) — stringitem_id(required) — string — From get_listsoutcome(required) — stringplugin_id— string — Default: booking page
Hints: read-only no · destructive no · idempotent yes · open-world no
fulfil_orderMarks an order sent and emails the customer, with an optional note (two steps: the first call returns confirm_token).
Parameters:
site(required) — stringplugin_id(required) — string — From list_pluginsitem_id(required) — string — From get_listsmessage— string — A note for the customer, e.g. trackingconfirm_token— string
Hints: read-only no · destructive no · idempotent no · open-world yes
refuse_orderdestructiveRefuses an order and refunds it in full: returns approve_url, where the owner approves the money moving; confirm_token then reports its status.
Parameters:
site(required) — stringplugin_id(required) — string — From list_pluginsitem_id(required) — string — From get_listsmessage— string — A note for the customerrestock— boolean — Put stock back (default true)confirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
refund_orderdestructiveRefunds an order, in full or amount: returns approve_url, where the owner approves the money moving; confirm_token then reports its status.
Parameters:
site(required) — stringplugin_id(required) — string — From list_pluginsitem_id(required) — string — From get_listsamount— integer — Smallest unit (default all)message— string — A note for the customerrestock— boolean — Put stock back (default true)confirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
get_analyticsread-onlyReturns cookieless visitor numbers for a site (views, visitors, contacts; paid plans: taps on buttons and links, top pages, sources, countries, devices), as many days back as the plan keeps. Taps count only UK visitors (taps_not_counted).
Parameters:
site(required) — stringdays— integer — Days back from today, today included (default 7)recent— boolean — Also recent_events: counts per event, last 30 minutes (to check a test tap)compare— boolean — Also return the previous period of the same length (paid plans)
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_domainsread-onlyLists 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 sells none).
Parameters:
site— stringtlds— array — With query: endings to check, e.g. ["com","co.uk"]query— string — Finding one: a name, idea or domain, e.g. Maison Cafe or maisoncafe.co.uk
Hints: read-only yes · destructive no · idempotent yes · open-world yes
add_domainConnects the user's own domain to a site (owner; paid plans; www 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; again for one already added: its status. get_domains checks it.
Parameters:
site(required) — stringdomain— string — Same as hostnamehostname— string — The domain, e.g. www.example.com (no https://)confirm_root— boolean — true: connect a root domain anyway (after add_domain recommended www)
Hints: read-only no · destructive no · idempotent no · open-world yes
transfer_sitedestructiveOffers a site to a new Site Owner by email; they accept and pick where it lives. recipient: what the site needs beyond Free, same for any address. The sender's bill doesn't change. Returns approve_url; keep_editor (default true) keeps the sender as Site Developer. A workspace site: its Site Owner sends to themselves or someone in it.
Parameters:
site(required) — stringemail— string — The new Site Owner's email (required unless confirm_token)keep_editor— booleanconfirm_token— string — From the first call: approval status
Hints: read-only no · destructive yes · idempotent no · open-world yes
cancel_transferdestructiveCancels a site's pending transfer: the recipient's link stops working and nothing changes on the site.
Parameters:
site(required) — string
Hints: read-only no · destructive yes · idempotent yes · open-world no
leave_workspacedestructivePrepares the end of a Starter or Scale plan: which sites move to the personal plan, who stays as Site Developer, bookings, before the workspace freezes (14 days after the plan ends). Without confirm: the questions. confirm: true returns approve_url.
Parameters:
workspace(required) — stringtake— arrayoffer— arrayconfirm— booleanbookings— stringkeep_editorsconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
bring_back_sitesdestructiveLists the sites that left a workspace when it froze and, once it is paid again, brings the chosen ones back (confirm: true returns approve_url).
Parameters:
workspace(required) — stringsites— arrayconfirm— booleandecline— arrayconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
move_sitesdestructiveMoves the person's personal sites and their Site Developers into a Starter or Scale workspace. Without confirm: the questions and a recommendation, or move_url to pick a plan and pay. Once paid: confirm: true (approve_url). Site Developers not invited lose access at once.
Parameters:
mode— stringplan— stringsitespeople— Site Developer emails to inviteconfirm— booleanworkspace— string — A paid workspace id; omit for a new oneconfirm_token— stringpersonal_plan— string
Hints: read-only no · destructive yes · idempotent no · open-world yes
list_peopleread-onlyLists who has access to a site: its people with roles (owner, Site Developers, Site Viewers), pending invites, Site Members, a pending transfer and its protection.
Parameters:
site(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
add_peopledestructiveGives people access, or sets a workspace person's role (Owner or Admin). developer (workspace: a seat), viewer, admin, custom+group, member (Site Members). Returns approve_url.
Parameters:
site(required) — stringrole— string — developer, viewer, member, admin or custom. An audience (students, clients) is membergroup— stringemails— array — Emails; for member also company domains (required unless confirm_token)notify— boolean — member: email each new address (default true)permissions— array — Ticks, personal siteconfirm_token— string — From the first call (site only): approval status
Hints: read-only no · destructive yes · idempotent no · open-world yes
save_groupdestructiveSaves a workspace group (group: change; delete: true). Owner or Admin. Returns approve_url.
Parameters:
site(required) — stringname— stringgroup— stringsites— arraydelete— booleanpeople— arraypermissions— arrayconfirm_token— string
Hints: read-only no · destructive yes · idempotent no · open-world no
get_activityread-onlyReturns the activity log, newest first: who published, rolled back, or changed people, domains, settings, protection, visitor data, AI apps or billing, where and when. Personal: own account (paid plans); a workspace: Owner all, Admin all but billing, others their own.
Parameters:
site— string — Site nametype— string — Kind of actionlimit— integer — Default 50before— integer — next_before from the last callperson— string — Email or idworkspace— string — Workspace id or name; leave out for the person's own account
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.