# Page Lemon (remote · mcp.pagelemon.com)

Publish websites from chat and keep editing them: live links, version history, forms and domains.

- Trust score: 26/100 (low)
- Change this week: −44
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `mcp.pagelemon.com`: 26/100 (this document), [markdown](https://verifymcp.io/servers/com-pagelemon-pagelemon/mcp.md), [page](https://verifymcp.io/servers/com-pagelemon-pagelemon/mcp)

## Channel facts

- Endpoint: `https://mcp.pagelemon.com`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint returned HTTP 404.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the Page Lemon MCP server?

Page Lemon is a hosted endpoint at https://mcp.pagelemon.com/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-pagelemon-pagelemon 'https://mcp.pagelemon.com/'
```

### Cursor

```json
{
  "mcpServers": {
    "com-pagelemon-pagelemon": {
      "url": "https://mcp.pagelemon.com/"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-pagelemon-pagelemon": {
      "type": "http",
      "url": "https://mcp.pagelemon.com/"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-pagelemon-pagelemon]
url = "https://mcp.pagelemon.com/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-pagelemon-pagelemon": {
      "type": "remote",
      "url": "https://mcp.pagelemon.com/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-pagelemon-pagelemon --url 'https://mcp.pagelemon.com/' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-pagelemon-pagelemon:
    url: "https://mcp.pagelemon.com/"
```

### Netclaw

```json
{
  "McpServers": {
    "com-pagelemon-pagelemon": {
      "Transport": "http",
      "Url": "https://mcp.pagelemon.com/"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-pagelemon-pagelemon -t streamable-http -u 'https://mcp.pagelemon.com/'
```

### Other

```json
{
  "mcpServers": {
    "com-pagelemon-pagelemon": {
      "type": "http",
      "url": "https://mcp.pagelemon.com/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-02 (score 26, −45)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: fail → unverified
- [security regression] Authorization: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Transport: pass → fail
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 31 to 34.

### 2026-10-30 (score 70, 0)

- [security] Tool “deploy” rewrote its description, which is the text the model reads
- [security] Tool “site_settings” rewrote its description, which is the text the model reads
- [functional] Server version: 2.3.2 → 2.5.0
- [cosmetic] “get_lists” added an optional parameter “sum”
- [cosmetic] “save_list” added an optional parameter “internal”
- [cosmetic] “deploy” reworded the description of “idempotency_key”
- [cosmetic] “get_site” reworded the description of “cursor”
- [cosmetic] “get_site” reworded the description of “download”
- [cosmetic] “get_site” reworded the description of “paths”
- [cosmetic] “get_site” reworded the description of “prefix”
- [cosmetic] “save_list” reworded the description of “fields”
- [cosmetic] “update_list_items” reworded the description of “items”

### 2026-10-29 (score 70, +1)

- [cosmetic] “setup_app” added an optional parameter “plan_switch”

### 2026-10-28 (score 69, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “add_domain” rewrote its description, which is the text the model reads
- [security] Tool “add_people” rewrote its description, which is the text the model reads
- [security] Tool “list_people” rewrote its description, which is the text the model reads
- [security] Tool “protect” rewrote its description, which is the text the model reads
- [security] Tool “remove_people” rewrote its description, which is the text the model reads
- [functional] New prompt “get_help”
- [functional] Server version: 2.3.0 → 2.3.2
- [cosmetic] “add_domain” added an optional parameter “claim”
- [cosmetic] “save_app_list” reworded the description of “list”
- [cosmetic] “save_plan” reworded the description of “name”
- [cosmetic] “setup_app” reworded the description of “path”
- [cosmetic] “setup_app” reworded the description of “template”

### 2026-10-27 (score 69, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “add_app_webhook” rewrote its description, which is the text the model reads
- [security] Tool “add_booking” rewrote its description, which is the text the model reads
- [security] Tool “add_domain” rewrote its description, which is the text the model reads
- [security] Tool “add_list_items” rewrote its description, which is the text the model reads
- [security] Tool “add_plugin” rewrote its description, which is the text the model reads
- [security] Tool “approve_booking” rewrote its description, which is the text the model reads
- [security] Tool “bind_list” rewrote its description, which is the text the model reads
- [security] Tool “cancel_booking” rewrote its description, which is the text the model reads
- [security] Tool “create_upload_link” rewrote its description, which is the text the model reads
- [security] Tool “delete_list” rewrote its description, which is the text the model reads
- [security] Tool “delete_site” rewrote its description, which is the text the model reads
- [security] Tool “deploy” rewrote its description, which is the text the model reads
- [security] Tool “edit_booking” rewrote its description, which is the text the model reads
- [security] Tool “export_app_data” rewrote its description, which is the text the model reads
- [security] Tool “fulfil_order” rewrote its description, which is the text the model reads
- [security] Tool “get_account” rewrote its description, which is the text the model reads
- [security] Tool “get_activity” rewrote its description, which is the text the model reads
- [security] Tool “get_analytics” rewrote its description, which is the text the model reads
- [security] Tool “get_app” rewrote its description, which is the text the model reads
- [security] Tool “get_app_data” rewrote its description, which is the text the model reads
- [security] Tool “get_lists” rewrote its description, which is the text the model reads
- [security] Tool “get_site” rewrote its description, which is the text the model reads
- [security] Tool “import_list_items” rewrote its description, which is the text the model reads
- [security] Tool “invite_users” rewrote its description, which is the text the model reads
- [security] Tool “leave_workspace” rewrote its description, which is the text the model reads
- [security] Tool “list_people” rewrote its description, which is the text the model reads
- [security] Tool “list_plugins” rewrote its description, which is the text the model reads
- [security] Tool “list_versions” rewrote its description, which is the text the model reads
- [security] Tool “mark_form_replies” rewrote its description, which is the text the model reads
- [security] Tool “move_sites” rewrote its description, which is the text the model reads
- [security] Tool “preview_as_user” rewrote its description, which is the text the model reads
- [security] Tool “protect” rewrote its description, which is the text the model reads
- [security] Tool “refund_order” rewrote its description, which is the text the model reads
- [security] Tool “refuse_order” rewrote its description, which is the text the model reads
- [security] Tool “remove_domain” rewrote its description, which is the text the model reads
- [security] Tool “remove_people” rewrote its description, which is the text the model reads
- [security] Tool “remove_plugin” rewrote its description, which is the text the model reads
- [security] Tool “remove_user” rewrote its description, which is the text the model reads
- [security] Tool “rollback” rewrote its description, which is the text the model reads
- [security] Tool “save_app_ai_prompt” rewrote its description, which is the text the model reads
- [security] Tool “save_app_list” rewrote its description, which is the text the model reads
- [security] Tool “save_list” rewrote its description, which is the text the model reads
- [security] Tool “save_plan” rewrote its description, which is the text the model reads
- [security] Tool “setup_app” rewrote its description, which is the text the model reads
- [security] Tool “share_file” rewrote its description, which is the text the model reads
- [security] Tool “site_settings” rewrote its description, which is the text the model reads
- [security] Tool “test_plugin” rewrote its description, which is the text the model reads
- [security] Tool “transfer_site” rewrote its description, which is the text the model reads
- [security] Tool “unprotect” rewrote its description, which is the text the model reads
- [security] Tool “update_app_rows” rewrote its description, which is the text the model reads
- [security] Tool “update_plugin” rewrote its description, which is the text the model reads
- [security] Tool “add_app_webhook” is now declared destructive
- [security] Tool “email_users” is now declared destructive
- [security] Tool “export_app_data” is now declared destructive
- [security] Tool “fulfil_order” is now declared destructive
- [security] Tool “set_booking_outcome” is now declared destructive
- [security] Tool “setup_app” is now declared destructive
- [security] Tool “sort_list_items” is now declared destructive
- [security] Tool “update_list_items” is now declared destructive
- [functional] Server version: 2.1.0 → 2.3.0
- [functional] New tool “check_site”
- [cosmetic] “add_domain” reworded the description of “confirm_root”
- [cosmetic] “add_list_items” reworded the description of “copy”
- [cosmetic] “add_list_items” reworded the description of “from”
- [cosmetic] “add_people” reworded the description of “confirm_token”
- [cosmetic] “approve_booking” reworded the description of “item_id”
- [cosmetic] “cancel_booking” reworded the description of “item_id”
- [cosmetic] “cancel_booking” reworded the description of “refund”
- [cosmetic] “create_upload_link” reworded the description of “replace_site”
- [cosmetic] “create_upload_link” reworded the description of “site_token”
- [cosmetic] “delete_site” reworded the description of “site_token”
- [cosmetic] “deploy” reworded the description of “base_revision”
- [cosmetic] “deploy” reworded the description of “idempotency_key”
- [cosmetic] “deploy” reworded the description of “site_token”
- [cosmetic] “deploy” reworded the description of “workspace”
- [cosmetic] “edit_booking” reworded the description of “item_id”
- [cosmetic] “find_visitor_records” reworded the description of “scope”
- [cosmetic] “fulfil_order” reworded the description of “item_id”
- [cosmetic] “fulfil_order” reworded the description of “plugin_id”
- [cosmetic] “get_account” reworded the description of “include”
- [cosmetic] “get_account” reworded the description of “sites_query”
- [cosmetic] “get_activity” reworded the description of “workspace”
- [cosmetic] “get_analytics” reworded the description of “compare”
- [cosmetic] “get_analytics” reworded the description of “days”
- [cosmetic] “get_analytics” reworded the description of “recent”
- [cosmetic] “get_domains” reworded the description of “query”
- [cosmetic] “get_lists” reworded the description of “site”
- [cosmetic] “get_lists” reworded the description of “status”
- [cosmetic] “get_site” reworded the description of “download”
- [cosmetic] “get_site” reworded the description of “site_token”
- [cosmetic] “list_plugins” reworded the description of “plugin_id”
- [cosmetic] “list_versions” reworded the description of “site_token”
- [cosmetic] “mark_form_replies” reworded the description of “plugin_id”
- [cosmetic] “protect” reworded the description of “emails”
- [cosmetic] “refund_order” reworded the description of “item_id”
- [cosmetic] “refund_order” reworded the description of “plugin_id”
- [cosmetic] “refuse_order” reworded the description of “item_id”
- [cosmetic] “refuse_order” reworded the description of “plugin_id”
- [cosmetic] “remove_plugin” reworded the description of “plugin_id”
- [cosmetic] “rollback” reworded the description of “discard”
- [cosmetic] “rollback” reworded the description of “site_token”
- [cosmetic] “save_app_list” reworded the description of “scan”
- [cosmetic] “set_booking_outcome” reworded the description of “item_id”
- [cosmetic] “setup_app” reworded the description of “retention”
- [cosmetic] “setup_app” reworded the description of “sign_out_all”
- [cosmetic] “share_file” reworded the description of “name”
- [cosmetic] “site_settings” reworded the description of “archived”
- [cosmetic] “site_settings” reworded the description of “base_revision”
- [cosmetic] “site_settings” reworded the description of “name”
- [cosmetic] “site_settings” reworded the description of “search”
- [cosmetic] “site_settings” reworded the description of “title”
- [cosmetic] “site_settings” reworded the description of “workspace”
- [cosmetic] “test_plugin” reworded the description of “plugin_id”
- [cosmetic] “update_app_rows” reworded the description of “reply”
- [cosmetic] “update_plugin” reworded the description of “confirm_token”
- [cosmetic] “update_plugin” reworded the description of “plugin_id”
- [cosmetic] “update_plugin” reworded the description of “recipients”
- [cosmetic] “update_plugin” reworded the description of “settings”
- [cosmetic] “get_site” dropped the optional parameter “check”
- [cosmetic] Tool “add_app_webhook” changed its title: Add a webhook → Add an app webhook
- [cosmetic] Tool “email_users” changed its title: Email users → Draft an email to app users
- [cosmetic] Tool “invite_users” changed its title: Invite users → Invite app users
- [cosmetic] Tool “mark_form_replies” changed its title: Mark form replies → Mark inbox items
- [cosmetic] Tool “remove_app_webhook” changed its title: Remove a webhook → Remove an app webhook
- [cosmetic] Tool “remove_user” changed its title: Remove a user → Remove an app user
- [cosmetic] Tool “rollback” changed its title: Restore a version → Restore a version or preview
- [cosmetic] Tool “save_group” changed its title: Save a group → Save a workspace group
- [cosmetic] Tool “save_user_group” changed its title: Save a group → Save a user group
- [cosmetic] Tool “update_app_rows” changed its title: Update entries → Update app entries

### 2026-10-26 (score 68, +2)

We did not load change detail this far back for this component, so this day may have recorded more than is shown.

- [security regression] Tool “add_member_row” was removed
- [security regression] Tool “add_member_webhook” was removed
- [security regression] Tool “email_members” was removed
- [security regression] Tool “export_member_data” was removed
- [security] Tool “bind_list” rewrote its description, which is the text the model reads
- [security] Tool “create_upload_link” rewrote its description, which is the text the model reads
- [security] Tool “delete_site” rewrote its description, which is the text the model reads
- [security] Tool “deploy” rewrote its description, which is the text the model reads
- [security] Tool “get_account” rewrote its description, which is the text the model reads
- [functional improvement] Tool coverage: 18% → 100%
- [functional improvement] Tool “add_domain” now declares an output schema
- [functional improvement] Tool “add_people” now declares an output schema
- [functional improvement] Tool “approve_booking” now declares an output schema
- [functional improvement] Tool “bind_list” now declares an output schema
- [functional improvement] Tool “bring_back_sites” now declares an output schema
- [functional improvement] Tool “cancel_transfer” now declares an output schema
- [functional improvement] Tool “create_upload_link” now declares an output schema
- [functional improvement] Tool “delete_list” now declares an output schema
- [functional improvement] Tool “delete_site” now declares an output schema
- [functional improvement] Tool “edit_booking” now declares an output schema
- [functional improvement] Tool “find_visitor_records” now declares an output schema
- [functional improvement] Tool “fulfil_order” now declares an output schema
- [functional improvement] Tool “get_activity” now declares an output schema
- [functional improvement] Tool “get_analytics” now declares an output schema
- [functional improvement] Tool “get_domains” now declares an output schema
- [cosmetic] “add_list_items” reworded the description of “list”
- [cosmetic] “bind_list” reworded the description of “list”
- [cosmetic] “delete_list” reworded the description of “list”
- [cosmetic] “delete_site” reworded the description of “confirm_token”
- [cosmetic] “get_account” reworded the description of “include”
- [cosmetic] “get_activity” reworded the description of “site”
- [cosmetic] “get_activity” reworded the description of “type”

### 2026-10-24 (score 66, +3)

We did not load change detail this far back for this component, so this day may have recorded more than is shown.

## MCP tools (68)

### `deploy` (~205 tokens)

Publish site

Publishes a new static site or version. New: every file, or a template. Update: site and base_revision with every file, or patch: true with changed files and deleted paths.

Input parameters:

- `base_revision` (string): Update: the live revision id last read
- `confirm_token` (string)
- `deleted` (array): patch: paths to remove
- `files` (array)
- `idempotency_key` (string): New sites: a UUID (retries replay)
- `patch` (boolean): true: only the changed files
- `preview` (boolean): true: save a private preview, not live
- `site` (string)
- `site_token` (string): From an anonymous deploy (secret)
- `staging` (boolean)
- `template` (string): Template, e.g. "brasa" (files sent replace its paths)
- `workspace` (string): New sites: workspace id or name, or "private"

Output parameters:

- `agent_message` (string)
- `claim_url` (string)
- `revision` (object)
- `site` (object)
- `site_token` (string)

### `create_upload_link` (~116 tokens)

Get an upload link

Returns a 1-hour link where the user uploads photos and files into a site folder; each upload goes live at once as a new version (get_site lists them). replace_site, only when the user asks: a zip that replaces every file.

Input parameters:

- `folder` (string): Target folder (default images); not with replace_site
- `replace_site` (boolean): true: a one-use link for a whole-site zip
- `site` (string, required)
- `site_token` (string): From an anonymous deploy (secret)

### `share_file` (~104 tokens)

Share a file

Shares one image (PNG, JPEG, GIF, WebP, AVIF; not SVG) or PDF as a new site with a viewer and Download button: without content, a link where the user drops their file; with name and content (base64, up to 10 MB), published at once.

Input parameters:

- `content` (string): The file, base64-encoded (no data: prefix)
- `name` (string): With content: e.g. menu.pdf

### `get_site` (~175 tokens)

Read site

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

Input parameters:

- `as_of` (string): With path(s): as live at this ISO date-time
- `cursor` (string)
- `download` (boolean): true: 1-hour zip links (one per GB)
- `path` (string): One file (live unless as_of or version)
- `paths` (array): Up to 20 files, 512 KB in all
- `prefix` (string)
- `site` (string, required)
- `site_token` (string): From an anonymous deploy (secret)
- `staging` (boolean)
- `version` (integer): With path(s): from this version number

Output parameters:

- `content` (string)
- `files` (array)
- `live_revision` (object)

### `check_site` (~95 tokens)

Check a site

Checks a live site: measured problems by area, most serious first, each with pages, why and fix; plus a checklist to judge by reading.

Input parameters:

- `areas` (array): Any of: seo, ai_search, links, accessibility, speed, privacy_security, features, basics.
- `path` (string): One page
- `site` (string, required)
- `site_token` (string): From an anonymous deploy (secret)

Output parameters:

- `checks` (array)
- `more` (string)
- `total` (number)

### `list_versions` (~102 tokens)

List versions

Lists a site's versions, newest first, 200 at a time: number, time, who published and which files changed.

Input parameters:

- `before` (integer): Older than this version number
- `by` (string): By this person (part of name or email)
- `since` (string): After this ISO date-time
- `since_days` (number)
- `site` (string, required)
- `site_token` (string): From an anonymous deploy (secret)

Output parameters:

- `versions` (array)

### `get_account` (~109 tokens)

Get sites and plan

Returns the signed-in account: plan, workspaces, sites (20 at a time, searchable), notices, new-item counts, programs (student, startup).

Input parameters:

- `include` (array): Any of: billing, usage, storage, downgrade, notifications, all. Extra sections
- `sites_cursor` (string): next_sites_cursor from the last call
- `sites_limit` (integer): Sites per call (default 20)
- `sites_query` (string): Filter by name, title or workspace

Output parameters:

- `new` (object)
- `notices` (array)
- `sites` (array)

### `rollback` (~114 tokens)

Restore a version or preview

Makes an earlier version or a preview live as a new version (versions are never deleted); a conflict if the site changed since base_revision. discard: true deletes a preview.

Input parameters:

- `base_revision` (string, required): The live revision id you last saw
- `discard` (boolean): With a preview id: delete it
- `revision` (required): Revision id or version number (list_versions), or a preview id (get_site previews)
- `site` (string, required)
- `site_token` (string): From an anonymous deploy (secret)

Output parameters:

- `agent_message` (string)
- `revision` (object)

### `site_settings` (~285 tokens)

Change site settings

Changes a kept site: title; Site Owner: workspace, name, sender_name, ai_invites (approve_url), archived, notifications, analytics, search, time_zone, staging (promote: live)

Input parameters:

- `ai_invites` (boolean)
- `analytics` (object): Click counting: clicks, kinds, labels, hidden
- `archived` (boolean): true: offline, two steps
- `base_revision` (string): promote: staging revision
- `confirm_token` (string)
- `instead` (string): Site to freeze instead
- `name` (string): New address; old one stops
- `notifications` (object): Own emails: forms, bookings, health (auto, daily, off, {email, in_app}); domain_live, domain_reminder, product_news; count_usage; scope site|all
- `rows` (boolean)
- `search` (object): ai_training, ai_answers (allow|block), primary_domain, domain_redirect, review_url, steps
- `sender_address` (string)
- `sender_name` (string|null)
- `site` (string, required)
- `staging` (string)
- `time_zone` (string)
- `title`: App label (null: the page <title>)
- `workspace` (string): Move a private site in: workspace id, name or "new"

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)

### `protect` (~131 tokens)

Protect site

Protects a site or one path (owner): passcode (protect_url, where the user sets it, never in chat) or members ("/": invite-only, users via add_people; a path: the emails who may see it). list_people shows it.

Input parameters:

- `confirm_token` (string)
- `emails` (array): members on a path: everyone who may see it (omit: the site's list)
- `mode` (string): Required unless confirm_token
- `path` (string): "/" (default, whole site) or a part such as /students
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `members_only` (boolean)
- `protected` (boolean)

### `unprotect` (~78 tokens)

Remove protection

Removes the passcode or invite-only setting from a whole site or the protection from one path (owner; returns approve_url). Each protected path opens on its own.

Input parameters:

- `confirm_token` (string)
- `path` (string): "/" (default, whole site) or a protected part such as /students
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `members_only` (boolean)
- `protected` (boolean)

### `delete_site` (~62 tokens)

Delete site

Deletes a site permanently: returns approve_url, where the user types the site address. Again with confirm_token: its status.

Input parameters:

- `confirm_token` (string)
- `site` (string, required)
- `site_token` (string): From an anonymous deploy (secret)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)

### `remove_domain` (~55 tokens)

Disconnect a domain

Disconnects a custom domain from a site (two steps). The domain stays with its registrar.

Input parameters:

- `confirm_token` (string)
- `hostname` (string, required): e.g. www.example.com
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)

### `remove_plugin` (~54 tokens)

Remove a plugin

Removes a plugin from a site (two steps). Its data stays exportable in the app for 30 days.

Input parameters:

- `confirm_token` (string)
- `plugin_id` (string, required)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)
- `upcoming_bookings` (number)

### `remove_people` (~72 tokens)

Remove people

Removes people from a site (owner; two steps): Site Developers and Viewers lose access (a workspace Viewer: every workspace site), users are signed out. Others may remove only themselves.

Input parameters:

- `confirm_token` (string)
- `entries` (array, required): Emails or company domains
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)

### `get_lists` (~236 tokens)

Read lists

Reads Lists: a site's lists (menu, team; shown on its pages) and its form replies and bookings (private). No site: counts for every site. With list: its items, filtered. Marks nothing read.

Input parameters:

- `cursor` (string)
- `expand` (boolean): Linked items' fields
- `export` (string): A download link
- `from` (string)
- `limit` (integer)
- `list` (string): Its items
- `q` (string): Text anywhere
- `resource` (string)
- `scope` (string): No site: all, personal, workspace:<id>
- `service` (string)
- `since` (string)
- `site` (string)
- `state` (string): Bookings: upcoming|…|all
- `status` (string): Form replies: new|read|spam|archived|binned|all
- `sum` (object): Numbers: {op, field, by}
- `to` (string)
- `view` (string): Saved filter
- `where`: {column: value}

Output parameters:

- `items` (array)
- `next_cursor` (string)

### `save_list` (~190 tokens)

Create or change a list

Creates 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).

Input parameters:

- `fields` (array): All fields in order (one left out loses its values): {name, type, label, options, list, from (old name)}; type text, long_text, number, price, date, image, link, yes_no, rich_text, reference(s), choi…
- `forms` (array): Form list: plugin ids filling it
- `internal` (object)
- `label` (string): Name shown in the app
- `list` (string, required)
- `public_json` (object|null): Public JSON feed {fields, where}; null: off
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `fields` (array)

### `delete_list` (~45 tokens)

Delete a list

Deletes a list and its items (a list with items: two steps).

Input parameters:

- `confirm_token` (string)
- `list` (string, required)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `change_id` (string)
- `confirm_token` (string)
- `items` (number)
- `pages` (array)

### `add_list_items` (~141 tokens)

Add list items

Adds items to a list (up to 500); the site shows them within seconds. from copies a form reply: a preview first, then consent and confirm_token after the person's yes.

Input parameters:

- `confirm_token` (string)
- `consent` (boolean): The person agreed to be shown
- `copy` (object): {field: form reply field}
- `from` (string): Or copy this form reply (itm_…)
- `items` (array): {field: value} each
- `list` (string, required)
- `position` (integer): Insert at (1 = first; default: end)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `change_id` (string)
- `items` (array)

### `update_list_items` (~78 tokens)

Change list items

Changes list items by id; the site shows it within seconds. On form replies and bookings: only the owner's own columns (not undoable).

Input parameters:

- `items` (array, required): Given fields change; null clears. {id, values, if_updated_at; internal: was}
- `list` (string, required)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `change_id` (string)
- `items` (array)

### `remove_list_items` (~52 tokens)

Remove list items

Removes items from a list by id; the site shows it within seconds (undo_list_change takes it back).

Input parameters:

- `ids` (array, required)
- `list` (string, required)
- `site` (string, required)

Output parameters:

- `change_id` (string)

### `sort_list_items` (~81 tokens)

Sort list items

Sorts a list's items by a field or in the order of the given ids; the site shows it within seconds.

Input parameters:

- `descending` (boolean)
- `ids` (array): Or item ids, first to last (the rest follow)
- `list` (string, required)
- `site` (string, required)
- `sort_by` (string)

Output parameters:

- `change_id` (string)

### `import_list_items` (~97 tokens)

Import list items

Imports CSV or rows into a list: the first call previews; with confirm_token it saves as one change.

Input parameters:

- `confirm_token` (string)
- `create_missing` (array): Link fields: add unknown names
- `csv` (string): With a header row
- `list` (string, required)
- `rows` (array): Or {field: value} each (id: change it)
- `site` (string, required)

Output parameters:

- `add` (number)
- `added` (number)
- `agent_message` (string)
- `change_id` (string)
- `confirm_token` (string)
- `preview` (boolean)

### `undo_list_change` (~36 tokens)

Undo a list change

Takes back one list change (change_id from its reply).

Input parameters:

- `change_id` (string, required)
- `site` (string, required)

Output parameters:

- `change_id` (string)

### `bind_list` (~133 tokens)

Make page content a list

Turns repeated blocks on a page (a menu) into a list: the first call previews items and markup; with confirm_token it creates the list, adds the items and publishes the page.

Input parameters:

- `confirm_token` (string)
- `fields` (object, required): {field: selector in a block; "": the block}
- `import` (boolean): Add items to a list that has some
- `list` (string, required)
- `path` (string, required): Page, e.g. menu.html
- `selector` (string, required): Repeated blocks, e.g. ".menu li"
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `blocks` (number)
- `confirm_token` (string)

### `get_free_slots` (~85 tokens)

Find free booking times

Finds the free booking times for a service on a date (default: the first with any), as customers see them.

Input parameters:

- `date` (string): YYYY-MM-DD
- `party` (integer)
- `plugin_id` (string)
- `resource` (string): Staff or room
- `service` (string, required): Id or name
- `site` (string, required)

### `find_visitor_records` (~81 tokens)

Find a person's records

Finds one person's records by email (a privacy request), with copies shown on the site. Export and erase are in the app.

Input parameters:

- `cursor` (string)
- `email` (string, required)
- `limit` (integer)
- `scope` (string): No site: all, personal or workspace:<id>
- `site` (string)

### `setup_app` (~287 tokens)

Set up an app

Sets up an app: user sign-in, private records under one path, lists from a template. Returns markup and approve_url (the Site Owner turns it on). retention (shorter erases), sign_out_all and ai_read (this AI reads entries) ask first. Owner only; Free plan: testing.

Input parameters:

- `ai_read` (object): {lists: up to 10 names or "all", members}; answers approve_url
- `confirm_token` (string)
- `display_field` (string|null): Profile field shown to group peers
- `notify_members`: {status,reply,comments}: bool
- `path` (string): App pages path (default /app)
- `plan_switch` (boolean): Users switch plans
- `profile_fields` (array): Sign-up fields {name, type, label, required, options}; types text, long_text, number, date, choice, phone, url
- `request_note` (string)
- `retention` (string): Kept after a user leaves: member (not), 1y, 2y, 5y; shorter erases
- `sign_out_all` (boolean): true: signs every user out
- `signup` (string): invite, open, or request (owner approves)
- `site` (string, required)
- `template` (string): Makes its app lists and plans

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `status` (string)

### `save_app_list` (~230 tokens)

Create or change an app list

Creates an app list or replaces its fields. Each user sees only their own rows, unless share: group (their group too; two steps). Returns the list and add-form markup.

Input parameters:

- `comments` (boolean)
- `confirm_token` (string)
- `fields` (array, required): 1-30 of {name, type, label, required, options}; types text, long_text, number, date, choice (options), photo
- `group_read` (string)
- `group_write` (string)
- `label` (string)
- `lead_status` (boolean)
- `list` (string, required): App list name, e.g. expenses
- `plan_rules`: {add:[plan],fields:{f:[plan]},limit:{plan:n},per}
- `reply` (boolean)
- `scan` (array): Scan actions: {label, values} adds a row; {label, redeem: n} uses n; form: a list
- `share` (string)
- `site` (string, required)
- `status_options` (array)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)
- `people` (number)
- `rows` (number)

### `get_app` (~61 tokens)

Read the app

Reads a site's app: on or off, sign-up, path, plans, user counts, lists with row counts, what needs attention (counts only). check: true checks pages and settings.

Input parameters:

- `check` (boolean)
- `site` (string, required)

### `save_plan` (~128 tokens)

Create or change an app plan

Creates or changes an app plan: free, or a monthly or yearly price (paid through the owner's own Stripe). archive retires it. Returns stripe: ready, needs_onboarding (onboarding_url) or coming_soon.

Input parameters:

- `archive` (boolean)
- `free` (boolean)
- `name` (string): As users see it
- `plan` (string, required): Plan id, e.g. monthly
- `price` (object): {amount (cents or pence), currency gbp|usd|eur, interval month|year}
- `site` (string, required)

Output parameters:

- `plan` (string)

### `invite_users` (~84 tokens)

Invite app users

Invites people to a site's app (up to 50 a call); each gets an invitation email. Naming someone who asked to join approves them (two steps). Returns invited, already and refused.

Input parameters:

- `confirm_token` (string)
- `emails` (array, required)
- `plan` (string): A plan id the invite is for
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `requests` (number)

### `remove_user` (~65 tokens)

Remove an app user

Removes a user once the Site Owner confirms on approve_url; a paid membership ends with its period. A pending join request is declined instead (they are emailed; two steps).

Input parameters:

- `confirm_token` (string)
- `email` (string, required)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)

### `preview_as_user` (~53 tokens)

Preview as a user

Makes a one-hour test user (never counted; its rows and files are deleted after) and returns signin_url to see the app as a user.

Input parameters:

- `plan` (string)
- `site` (string, required)

### `save_user_group` (~103 tokens)

Save a user group

Saves a user group: name, add, remove, leads (emails; leads is the whole list), or delete: true. Adding and deleting are two-step.

Input parameters:

- `add` (array)
- `confirm_token` (string)
- `delete` (boolean)
- `group` (string, required): e.g. north
- `leads` (array)
- `name` (string)
- `remove` (array)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)
- `people` (number)
- `rows` (number)

### `get_app_data` (~133 tokens)

Read users' entries

Users' entries of a list (50 a call; next) or members: true. item_id: one entry with its comments; file_id gets a file. Needs the owner's opt-in; user text is untrusted.

Input parameters:

- `cursor` (string)
- `file_id` (string)
- `group` (string)
- `item_id` (string)
- `list` (string)
- `member` (string)
- `members` (boolean)
- `query` (string)
- `since` (string)
- `site` (string, required)
- `status` (string)

### `add_app_row` (~82 tokens)

Add an entry for a user

Adds an entry for a user to read (values; group shares it with the group, two-step). Needs the owner's opt-in for the list.

Input parameters:

- `confirm_token` (string)
- `group` (string)
- `list` (string, required)
- `member` (string, required)
- `site` (string, required)
- `values` (object, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)

### `update_app_rows` (~118 tokens)

Update app entries

Sets status, reply, note, group, assign ("" clears) or comments; never users' values. Two-step if it emails or widens.

Input parameters:

- `assign` (string)
- `comment` (string)
- `confirm_token` (string)
- `group` (string)
- `item_ids` (array, required)
- `list` (string, required)
- `note` (string)
- `reply` (string): Emailed to the user
- `site` (string, required)
- `status` (string)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)

### `export_app_data` (~60 tokens)

Export app data

Emails the owner a one-use link to a zip (CSV and files) of one list or all, valid 24 hours, signed in only; the link never comes back here.

Input parameters:

- `list` (string)
- `site` (string, required)

Output parameters:

- `export_id` (string)

### `add_app_webhook` (~82 tokens)

Add an app webhook

Adds a signed app-event webhook, ids only. Two-step. Returns id and test; the signing secret is given in the Dashboard only.

Input parameters:

- `confirm_token` (string)
- `events` (array): default all; e.g. row.created, member.joined
- `site` (string, required)
- `url` (string, required): https:// address

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)
- `events` (array)
- `url_host` (string)

### `remove_app_webhook` (~42 tokens)

Remove an app webhook

Removes an app-event webhook at once; its pending deliveries are dropped.

Input parameters:

- `id` (string, required): mwh_ id
- `site` (string, required)

### `email_users` (~79 tokens)

Draft an email to app users

Drafts an email to the app's users (all or one plan). Returns approve_url: nothing is sent until the Site Owner approves.

Input parameters:

- `body` (string, required): Plain text
- `confirm_token` (string)
- `plan` (string): Plan id; default all
- `site` (string, required)
- `subject` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `days` (number)
- `recipients` (number)

### `save_app_ai_prompt` (~115 tokens)

Save an AI prompt

Saves an AI block prompt (a block of that name changes at once); it runs on the owner's AI key (added in the Dashboard) or a small trial for the owner and test users. Returns markup.

Input parameters:

- `audience` (string)
- `field` (string)
- `kind` (string, required)
- `lists` (array)
- `name` (string, required)
- `period` (string)
- `scope` (string)
- `site` (string, required)
- `template` (string, required)

### `list_plugins` (~93 tokens)

List plugins

Lists a site's plugins and what can be added (settings_help per kind); without site, those on each site; with plugin_id, that plugin in full (settings, snippet_html, test_steps, recipients, payouts, checkout_fee).

Input parameters:

- `lang` (string): The page's <html lang>, e.g. de (one snippet per language)
- `plugin_id` (string)
- `site` (string)

Output parameters:

- `plugins` (array)

### `add_plugin` (~170 tokens)

Add a plugin

Adds a plugin to a site (paid plans): kind and settings (list_plugins settings_help), or forms or form_html (kind forms). Forms and booking: the first call returns setup_summary; confirm_token saves it and returns snippet_html; then test_plugin.

Input parameters:

- `confirm_token` (string)
- `form_html` (string): Forms: the page's <form>
- `forms` (object): Typed: fields, success_message, redirect, submit_label, notify, store, auto_reply
- `kind` (string)
- `lang` (string): The page's <html lang>, e.g. de (one snippet per language)
- `name` (string): e.g. "Contact form"
- `settings` (object): As list_plugins settings_help
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)
- `plugin_id` (string)
- `snippet_html` (string)

### `update_plugin` (~215 tokens)

Change a plugin

Changes a plugin: name, settings (whole), patch (merged), form_html, status active or paused, or recipients {add: email} (an extra inbox for every site on the plan). A changed form or booking setup returns setup_summary first; a new inbox or AI-set reply_to_email, approve_url.

Input parameters:

- `confirm_token` (string)
- `form_html` (string)
- `forms` (object): Forms: as settings
- `lang` (string): The page's <html lang>, e.g. de (one snippet per language)
- `name` (string)
- `patch` (object): Merged onto the settings, e.g. {"approval":"always"}; null removes a key, arrays are replaced
- `plugin_id` (string, required)
- `recipients` (object): {add: email} (needs Manage)
- `settings` (object): The whole object, as list_plugins settings_help (forms too)
- `site` (string, required)
- `status` (string)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `setup_summary` (array)

### `test_plugin` (~60 tokens)

Test a plugin

Sends one test submission to a form or booking page (not payments; never counted or emailed; kept as a test item) and says whether it worked and which published pages carry it.

Input parameters:

- `plugin_id` (string, required)
- `site` (string, required)

Output parameters:

- `plugin_id` (string)

### `mark_form_replies` (~144 tokens)

Mark inbox items

Marks form replies or bookings (mark; bin: deleted after 30 days). With mark read, also account notice ids (nt_…), or all: every notice, or every new form reply, booking or order (optionally one site); only when the user asks.

Input parameters:

- `all` (string): With mark read: every notice (yours) or every new item of that kind
- `item_ids` (array): From get_lists, or notice ids (nt_…) from get_account
- `mark` (string, required)
- `plugin_id` (string): Found from item_ids
- `site` (string): Not needed for notice ids or all

Output parameters:

- `updated` (number)

### `add_booking` (~260 tokens)

Add a booking

Adds a booking the owner took (phone, walk-in): service, start, customer details; series repeats weekly; resource: staff or a room. A clash is a 409 (force: true books anyway). Emailing the customer takes confirm_token first.

Input parameters:

- `answers` (object): {question id: answer} ("" removes one)
- `confirm_token` (string)
- `email` (string)
- `force` (boolean)
- `name` (string)
- `notes` (string)
- `notify_customer` (boolean): Email the customer (default true)
- `party` (integer)
- `phone` (string)
- `plugin_id` (string): Default: booking page
- `resource` (string): Staff or room id or name (default any free)
- `series` (object): Weekly repeat: {every: week|fortnight, count 2-52 or until YYYY-MM-DD, on_clash: "skip"}
- `service` (string): Service id or name
- `site` (string, required)
- `source` (string): Default phone
- `start` (string): Local "2026-10-15T14:00" (booking time zone) or "now"

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)
- `item_id` (string)

### `edit_booking` (~258 tokens)

Change a booking

Changes 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 asks first (confirm_token); force: true books a clash.

Input parameters:

- `answers` (object): {question id: answer} ("" removes one)
- `confirm_token` (string)
- `email` (string)
- `force` (boolean)
- `item_id` (string, required)
- `message` (string): A note for the customer
- `name` (string)
- `notes` (string)
- `notify_customer` (boolean): Email the customer (default true)
- `party` (integer)
- `phone` (string)
- `plugin_id` (string): Default: booking page
- `resource` (string): With start: staff or room
- `site` (string, required)
- `start` (string): New local time, e.g. "2026-10-15T14:00"
- `waitlist` (string): Class time or wl_ entry: close (bookings stay; those waiting are emailed) or re-open

Output parameters:

- `agent_message` (string)
- `bookings` (number)
- `confirm_token` (string)

### `approve_booking` (~79 tokens)

Approve a booking

Approves a booking request and emails the customer. A class waitlist entry_id (wl_…) as item_id books that person in now and emails them.

Input parameters:

- `item_id` (string, required)
- `message` (string): A note for the customer
- `plugin_id` (string): Default: booking page
- `site` (string, required)

Output parameters:

- `item_id` (string)

### `cancel_booking` (~168 tokens)

Cancel a booking

Cancels a booking or declines a request (two steps; then the customer is emailed). A waitlist entry_id (wl_…) takes that person off; a class_id (cl_…) cancels the class, one email each. A paid booking is refunded in full unless refund says otherwise (approve_url).

Input parameters:

- `confirm_token` (string)
- `item_id` (string, required)
- `message` (string): A note for the customer
- `notify_customer` (boolean): Email the customer (default true)
- `plugin_id` (string): Default: booking page
- `refund` (string): Paid booking; default full
- `series` (string): "this" (default) or "rest" (this date and every later one)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)

### `set_booking_outcome` (~72 tokens)

Mark a booking done or missed

Records how a booking that has started went: completed (done) or no_show. Emails nobody; it can be changed between the two.

Input parameters:

- `item_id` (string, required)
- `outcome` (string, required)
- `plugin_id` (string): Default: booking page
- `site` (string, required)

Output parameters:

- `item_id` (string)

### `fulfil_order` (~73 tokens)

Mark an order sent

Marks an order sent and emails the customer, with an optional note (two steps).

Input parameters:

- `confirm_token` (string)
- `item_id` (string, required)
- `message` (string): A note for the customer, e.g. tracking
- `plugin_id` (string, required)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `confirm_token` (string)

### `refuse_order` (~91 tokens)

Refuse an order

Refuses an order and refunds it in full once the owner approves the money on approve_url; confirm_token then gives its status.

Input parameters:

- `confirm_token` (string)
- `item_id` (string, required)
- `message` (string): A note for the customer
- `plugin_id` (string, required)
- `restock` (boolean): Put stock back (default true)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)

### `refund_order` (~105 tokens)

Refund an order

Refunds an order, in full or amount, once the owner approves the money on approve_url; confirm_token then gives its status.

Input parameters:

- `amount` (integer): Smallest unit (default all)
- `confirm_token` (string)
- `item_id` (string, required)
- `message` (string): A note for the customer
- `plugin_id` (string, required)
- `restock` (boolean): Put stock back (default true)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)

### `get_analytics` (~114 tokens)

Get visitor numbers

Returns cookieless visitor numbers (views, visitors, contacts; paid plans: taps on buttons and links, top pages, sources, countries, devices) for the days the plan keeps. Taps outside the UK aren't counted (taps_not_counted).

Input parameters:

- `compare` (boolean): Also the previous period (paid plans)
- `days` (integer): Days back, today included (default 7)
- `recent` (boolean): Also counts per event, last 30 minutes
- `site` (string, required)

### `get_domains` (~101 tokens)

Check or find domains

Lists 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).

Input parameters:

- `query` (string): A name, idea or domain to find, e.g. Maison Cafe
- `site` (string)
- `tlds` (array): With query: endings to check, e.g. ["com","co.uk"]

Output parameters:

- `domains` (array)

### `add_domain` (~157 tokens)

Connect a domain

Connects 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: its status. claim: true proves a reserved domain or one another account holds by a TXT record.

Input parameters:

- `claim` (boolean): true: prove a reserved domain or one another account holds with a DNS TXT record; call again to check
- `confirm_root` (boolean): true: the root domain anyway (not www)
- `domain` (string): Same as hostname
- `hostname` (string): The domain, e.g. www.example.com (no https://)
- `site` (string, required)

### `transfer_site` (~119 tokens)

Transfer site

Offers a site to a new Site Owner by email, who accepts and picks where it lives. Returns approve_url and recipient (what the site needs beyond Free, the same for any address); the sender's bill doesn't change. keep_editor (default true): the sender stays Site Developer. A workspace site goes to its Site Owner or someone in it.

Input parameters:

- `confirm_token` (string)
- `email` (string): The new Site Owner's email (required unless confirm_token)
- `keep_editor` (boolean)
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `recipient` (object)

### `cancel_transfer` (~35 tokens)

Cancel a transfer

Cancels a site's pending transfer: the recipient's link stops working and nothing changes on the site.

Input parameters:

- `site` (string, required)

### `leave_workspace` (~108 tokens)

Leave a workspace plan

Prepares the end of a workspace 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.

Input parameters:

- `bookings` (string)
- `confirm` (boolean)
- `confirm_token` (string)
- `keep_editors`
- `offer` (array)
- `take` (array)
- `workspace` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `questions` (array)
- `sites` (array)

### `bring_back_sites` (~76 tokens)

Bring sites back to a workspace

Lists 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).

Input parameters:

- `confirm` (boolean)
- `confirm_token` (string)
- `decline` (array)
- `sites` (array)
- `workspace` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `sites` (array)

### `move_sites` (~129 tokens)

Move sites to a workspace

Moves the person's personal sites and their Site Developers into a paid workspace. Without confirm: the questions, a recommendation and move_url (the plan is set up in the Dashboard). Then confirm: true (approve_url). Site Developers not invited lose access at once.

Input parameters:

- `confirm` (boolean)
- `confirm_token` (string)
- `mode` (string)
- `people`: Site Developer emails to invite
- `personal_plan` (string)
- `plan` (string)
- `sites`
- `workspace` (string): A paid workspace id; omit for a new one

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)
- `move_url` (string)
- `questions` (array)

### `list_people` (~47 tokens)

List people

Lists who has access to a site: people with roles (owner, Site Developers, Site Viewers), pending invites, users, a pending transfer and protection.

Input parameters:

- `site` (string, required)

Output parameters:

- `people` (array)

### `add_people` (~141 tokens)

Add people

Gives people access, or sets a workspace person's role (Owner or Admin). developer (workspace: a seat), viewer, admin, custom+group, member (users). Returns approve_url.

Input parameters:

- `confirm_token` (string)
- `emails` (array): Emails; for member also company domains (required unless confirm_token)
- `group` (string)
- `notify` (boolean): member: email each new address (default true)
- `permissions` (array): Ticks, personal site
- `role` (string): developer, viewer, member, admin or custom. An audience (students, clients) is member
- `site` (string, required)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)

### `save_group` (~86 tokens)

Save a workspace group

Saves a workspace group (group: change; delete: true). Owner or Admin. Returns approve_url.

Input parameters:

- `confirm_token` (string)
- `delete` (boolean)
- `group` (string)
- `name` (string)
- `people` (array)
- `permissions` (array)
- `site` (string, required)
- `sites` (array)

Output parameters:

- `agent_message` (string)
- `approve_url` (string)
- `confirm_token` (string)

### `get_activity` (~131 tokens)

Read the activity log

Returns the activity log, newest first: who did what (publishing, rollbacks, people, domains, settings, protection, visitor data, AI apps, billing), where and when. Personal account (paid plans), or a workspace: Owner all, Admin all but billing, others their own.

Input parameters:

- `before` (integer): next_before from the last call
- `limit` (integer): Default 50
- `person` (string): Email or id
- `site` (string)
- `type` (string)
- `workspace` (string): Workspace id or name (default: own account)

Output parameters:

- `entries` (array)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-pagelemon-pagelemon/mcp#diagnostics

## Score history

- 2026-11-05: 26
- 2026-11-04: 26
- 2026-11-03: 26
- 2026-11-02: 26
- 2026-11-01: 71
- 2026-10-31: 71
- 2026-10-30: 70
- 2026-10-29: 70
- 2026-10-28: 69
- 2026-10-27: 69
- 2026-10-26: 68
- 2026-10-25: 66
- 2026-10-24: 66
- 2026-10-23: 63
- 2026-10-22: 64
- 2026-10-21: 65
- 2026-10-20: 65
- 2026-10-19: 64
- 2026-10-18: 65
- 2026-10-17: 65
- 2026-10-16: 65
- 2026-10-15: 64
- 2026-10-14: 63

## Common questions

### What is the Page Lemon MCP server?

Page Lemon is an MCP server listed in the public MCP registry as com.pagelemon/pagelemon. Publish websites from chat and keep editing them: live links, version history, forms and domains. This page covers its hosted endpoint (https://mcp.pagelemon.com).

### Is the Page Lemon MCP server safe to use?

Page Lemon scores 26 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Page Lemon MCP server expose?

Page Lemon exposes 68 tools: deploy, create_upload_link, share_file, get_site, check_site, and 63 more. Their descriptions and schemas cost roughly 7,766 tokens of context every time the server is loaded.

### Does the Page Lemon MCP server require authentication?

Its publisher declares no required credentials for Page Lemon. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the Page Lemon MCP server still maintained?

Page Lemon is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.pagelemon.com/
- Website: https://pagelemon.com/docs/mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-pagelemon-pagelemon/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-pagelemon-pagelemon/mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-pagelemon-pagelemon/mcp
