Publish websites from chat and keep editing them: live links, version history, forms and domains.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Adds 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.
Local "2026-10-15T14:00" (booking time zone) or "now"
Weekly repeat: {every: week|fortnight, count 2-52 or until YYYY-MM-DD, on_clash: "skip"}
Default phone
{question id: answer} ("" removes one)
Service id or name
Staff or room id or name (default any free)
Default: booking page
Email the customer (default true)
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Tool list last changed Oct 25, 2026.
Adds 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.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| site* | string | |
| string | ||
| force | boolean | |
| notes | string | |
| party | integer | |
| phone | string | |
| start | 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 phone |
| answers | object | {question id: answer} ("" removes one) |
| service | string | Service id or name |
| resource | string | Staff or room id or name (default any free) |
| plugin_id | string | Default: booking page |
| confirm_token | string | |
| notify_customer | boolean | Email the customer (default true) |
{
"type": "object",
"required": [
"site"
],
"properties": {
"name": {
"type": "string"
},
"site": {
"type": "string"
},
"email": {
"type": "string"
},
"force": {
"type": "boolean"
},
"notes": {
"type": "string"
},
"party": {
"type": "integer",
"minimum": 1
},
"phone": {
"type": "string"
},
"start": {
"type": "string",
"description": "Local \"2026-10-15T14:00\" (booking time zone) or \"now\""
},
"series": {
"type": "object",
"description": "Weekly repeat: {every: week|fortnight, count 2-52 or until YYYY-MM-DD, on_clash: \"skip\"}"
},
"source": {
"enum": [
"phone",
"walk_in",
"owner"
],
"type": "string",
"description": "Default phone"
},
"answers": {
"type": "object",
"description": "{question id: answer} (\"\" removes one)"
},
"service": {
"type": "string",
"description": "Service id or name"
},
"resource": {
"type": "string",
"description": "Staff or room id or name (default any free)"
},
"plugin_id": {
"type": "string",
"description": "Default: booking page"
},
"confirm_token": {
"type": "string"
},
"notify_customer": {
"type": "boolean",
"description": "Email the customer (default true)"
}
}
}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 for one already added: its status. get_domains checks it.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| domain | string | Same as hostname |
| hostname | string | The domain, e.g. www.example.com (no https://) |
| confirm_root | boolean | true: connect a root domain anyway (after add_domain recommended www) |
{
"type": "object",
"required": [
"site"
],
"properties": {
"site": {
"type": "string"
},
"domain": {
"type": "string",
"description": "Same as hostname"
},
"hostname": {
"type": "string",
"description": "The domain, e.g. www.example.com (no https://)"
},
"confirm_root": {
"type": "boolean",
"description": "true: connect a root domain anyway (after add_domain recommended www)"
}
}
}Adds 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.
| Argument | Type | Description |
|---|---|---|
| copy | object | {field: message field} |
| from | string | Or copy this message (itm_…) |
| list* | string | List name |
| site* | string | |
| items | array | {field: value} each |
| consent | boolean | The person agreed to be shown |
| position | integer | Insert at (1 = first; default: end) |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"list"
],
"properties": {
"copy": {
"type": "object",
"description": "{field: message field}",
"additionalProperties": {
"type": "string"
}
},
"from": {
"type": "string",
"description": "Or copy this message (itm_…)"
},
"list": {
"type": "string",
"description": "List name"
},
"site": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object"
},
"minItems": 1,
"description": "{field: value} each"
},
"consent": {
"type": "boolean",
"description": "The person agreed to be shown"
},
"position": {
"type": "integer",
"minimum": 1,
"description": "Insert at (1 = first; default: end)"
},
"confirm_token": {
"type": "string"
}
}
}Adds 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.
| Argument | Type | Description |
|---|---|---|
| list* | string | |
| site* | string | |
| group | string | |
| member* | string | |
| values* | object | |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"list",
"member",
"values"
],
"properties": {
"list": {
"type": "string"
},
"site": {
"type": "string"
},
"group": {
"type": "string"
},
"member": {
"type": "string"
},
"values": {
"type": "object"
},
"confirm_token": {
"type": "string"
}
}
}Adds a signed member-event webhook, ids only. Two-step. Returns id, secret (shown once) and test.
| Argument | Type | Description |
|---|---|---|
| url* | string | https:// address |
| site* | string | |
| events | array | default all; e.g. row.created, member.joined |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "https:// address"
},
"site": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "default all; e.g. row.created, member.joined"
},
"confirm_token": {
"type": "string"
}
}
}Gives 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.
| Argument | Type | Description |
|---|---|---|
| role | string | developer, viewer, member, admin or custom. An audience (students, clients) is member |
| site* | string | |
| group | string | |
| emails | array | Emails; for member also company domains (required unless confirm_token) |
| notify | boolean | member: email each new address (default true) |
| permissions | array | Ticks, personal site |
| confirm_token | string | From the first call (site only): approval status |
{
"type": "object",
"required": [
"site"
],
"properties": {
"role": {
"type": "string",
"description": "developer, viewer, member, admin or custom. An audience (students, clients) is member"
},
"site": {
"type": "string"
},
"group": {
"type": "string"
},
"emails": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Emails; for member also company domains (required unless confirm_token)"
},
"notify": {
"type": "boolean",
"description": "member: email each new address (default true)"
},
"permissions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Ticks, personal site"
},
"confirm_token": {
"type": "string",
"description": "From the first call (site only): approval status"
}
}
}Adds 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.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| lang | string | The page's <html lang>, e.g. de (one snippet per language) |
| name | string | e.g. "Contact form" |
| site* | string | |
| forms | object | Typed: fields, success_message, redirect, submit_label, notify, store, auto_reply |
| settings | object | As list_plugins settings_help |
| form_html | string | Forms: the page's <form> |
| confirm_token | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"kind": {
"enum": [
"forms",
"payments",
"booking"
],
"type": "string"
},
"lang": {
"type": "string",
"description": "The page's <html lang>, e.g. de (one snippet per language)"
},
"name": {
"type": "string",
"description": "e.g. \"Contact form\""
},
"site": {
"type": "string"
},
"forms": {
"type": "object",
"required": [
"fields"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,39}$"
},
"type": {
"enum": [
"text",
"email",
"tel",
"textarea",
"select",
"choices",
"checkbox",
"date",
"time",
"number",
"url",
"hidden"
],
"type": "string"
}
}
},
"description": "1-30 of: name, type, label, required, options, max_length, required_if {field, value}"
}
},
"description": "Typed: fields, success_message, redirect, submit_label, notify, store, auto_reply"
},
"settings": {
"type": "object",
"description": "As list_plugins settings_help"
},
"form_html": {
"type": "string",
"description": "Forms: the page's <form>"
},
"confirm_token": {
"type": "string"
}
}
}Approves 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| item_id* | string | From get_lists |
| message | string | A note for the customer |
| plugin_id | string | Default: booking page |
{
"type": "object",
"required": [
"site",
"item_id"
],
"properties": {
"site": {
"type": "string"
},
"item_id": {
"type": "string",
"description": "From get_lists"
},
"message": {
"type": "string",
"description": "A note for the customer"
},
"plugin_id": {
"type": "string",
"description": "Default: booking page"
}
}
}Turns 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.
| Argument | Type | Description |
|---|---|---|
| list* | string | List name |
| path* | string | Page, e.g. menu.html |
| site* | string | |
| fields* | object | {field: selector in a block; "": the block} |
| import | boolean | Add items to a list that has some |
| selector* | string | Repeated blocks, e.g. ".menu li" |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"path",
"list",
"selector",
"fields"
],
"properties": {
"list": {
"type": "string",
"description": "List name"
},
"path": {
"type": "string",
"description": "Page, e.g. menu.html"
},
"site": {
"type": "string"
},
"fields": {
"type": "object",
"description": "{field: selector in a block; \"\": the block}",
"additionalProperties": {
"type": "string"
}
},
"import": {
"type": "boolean",
"description": "Add items to a list that has some"
},
"selector": {
"type": "string",
"description": "Repeated blocks, e.g. \".menu li\""
},
"confirm_token": {
"type": "string"
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| sites | array | |
| confirm | boolean | |
| decline | array | |
| workspace* | string | |
| confirm_token | string |
{
"type": "object",
"required": [
"workspace"
],
"properties": {
"sites": {
"type": "array",
"items": {
"type": "string"
}
},
"confirm": {
"type": "boolean"
},
"decline": {
"type": "array",
"items": {
"type": "string"
}
},
"workspace": {
"type": "string"
},
"confirm_token": {
"type": "string"
}
}
}Cancels 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| refund | string | A paid booking (default full; returns a refund approve link) |
| series | string | "this" (default) or "rest" (this date and every later one) |
| item_id* | string | From get_lists |
| message | string | A note for the customer |
| plugin_id | string | Default: booking page |
| confirm_token | string | |
| notify_customer | boolean | Email the customer (default true) |
{
"type": "object",
"required": [
"site",
"item_id"
],
"properties": {
"site": {
"type": "string"
},
"refund": {
"enum": [
"full",
"deposit_kept",
"none"
],
"type": "string",
"description": "A paid booking (default full; returns a refund approve link)"
},
"series": {
"enum": [
"this",
"rest"
],
"type": "string",
"description": "\"this\" (default) or \"rest\" (this date and every later one)"
},
"item_id": {
"type": "string",
"description": "From get_lists"
},
"message": {
"type": "string",
"description": "A note for the customer"
},
"plugin_id": {
"type": "string",
"description": "Default: booking page"
},
"confirm_token": {
"type": "string"
},
"notify_customer": {
"type": "boolean",
"description": "Email the customer (default true)"
}
}
}Cancels a site's pending transfer: the recipient's link stops working and nothing changes on the site.
| Argument | Type | Description |
|---|---|---|
| site* | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"site": {
"type": "string"
}
}
}Returns 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| folder | string | Target folder (default images); not with replace_site |
| site_token | string | |
| replace_site | boolean | true: a one-use link for a zip that replaces the whole site |
{
"type": "object",
"required": [
"site"
],
"properties": {
"site": {
"type": "string"
},
"folder": {
"type": "string",
"description": "Target folder (default images); not with replace_site"
},
"site_token": {
"type": "string"
},
"replace_site": {
"type": "boolean",
"description": "true: a one-use link for a zip that replaces the whole site"
}
}
}Deletes a list and its items (a list with items: two steps, confirm_token after the user agrees).
| Argument | Type | Description |
|---|---|---|
| list* | string | List name |
| site* | string | |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"list"
],
"properties": {
"list": {
"type": "string",
"description": "List name"
},
"site": {
"type": "string"
},
"confirm_token": {
"type": "string"
}
}
}Deletes a site permanently: returns approve_url, a page where the user types the site address to confirm. Called again with confirm_token: its status.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| site_token | string | |
| confirm_token | string | From the first call: the deletion status |
{
"type": "object",
"required": [
"site"
],
"properties": {
"site": {
"type": "string"
},
"site_token": {
"type": "string"
},
"confirm_token": {
"type": "string",
"description": "From the first call: the deletion status"
}
}
}Publishes 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%.
| Argument | Type | Description |
|---|---|---|
| site | string | |
| files | array | |
| patch | boolean | true: only the changed files |
| deleted | array | patch: paths to remove |
| preview | boolean | true: save a private preview, not live |
| staging | boolean | |
| template | 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 | string | |
| base_revision |
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, returns confirm_token first; force: true books a clash.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| site* | string | |
| string | ||
| force | boolean | |
| notes | string | |
| party | integer | |
| phone | string | |
| start | string | New local time, e.g. "2026-10-15T14:00" |
| answers | object | {question id: answer} ("" removes one) |
| item_id* | string | From get_lists |
Drafts an email to the app's members (all or one plan). Returns approve_url: nothing is sent until the Site Owner approves.
| Argument | Type | Description |
|---|---|---|
| body* | string | Plain text |
| plan | string | Plan id; default all |
| site* | string | |
| subject* | string | |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"subject",
"body"
],
"properties": {
"body": {
"type": "string",
"description": "Plain text"
},
"plan": {
"type": "string",
"description": "Plan id; default all"
},
"site": {
"type": "string"
},
"subject": {
"type": "string"
},
"confirm_token": {
"type": "string"
}
}
}Emails 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.
| Argument | Type | Description |
|---|---|---|
| list | string | |
| site* | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"list": {
"type": "string"
},
"site": {
"type": "string"
}
}
}Finds one person's records by email (a privacy request), with copies shown on the site. Export and erase are in the app.
| Argument | Type | Description |
|---|---|---|
| site | string | |
| email* | string | |
| limit | integer | |
| scope | string | |
| cursor | string |
{
"type": "object",
"required": [
"email"
],
"properties": {
"site": {
"type": "string"
},
"email": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1
},
"scope": {
"type": "string"
},
"cursor": {
"type": "string"
}
}
}Marks an order sent and emails the customer, with an optional note (two steps: the first call returns confirm_token).
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| item_id* | string | From get_lists |
| message | string | A note for the customer, e.g. tracking |
| plugin_id* | string | From list_plugins |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"plugin_id",
"item_id"
],
"properties": {
"site": {
"type": "string"
},
"item_id": {
"type": "string",
"description": "From get_lists"
},
"message": {
"type": "string",
"description": "A note for the customer, e.g. tracking"
},
"plugin_id": {
"type": "string",
"description": "From list_plugins"
},
"confirm_token": {
"type": "string"
}
}
}Returns 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.
| Argument | Type | Description |
|---|---|---|
| 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 it |
| sites_limit | integer | Sites per call (default 20) |
| sites_query | string | Only sites whose name, title or workspace contains this |
| sites_cursor | string | next_sites_cursor from the last call |
{
"type": "object",
"properties": {
"include": {
"type": "array",
"items": {
"enum": [
"billing",
"usage",
"storage",
"downgrade",
"notifications",
"referrals",
"all"
],
"type": "string"
},
"description": "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 it"
},
"sites_limit": {
"type": "integer",
"minimum": 1,
"description": "Sites per call (default 20)"
},
"sites_query": {
"type": "string",
"description": "Only sites whose name, title or workspace contains this"
},
"sites_cursor": {
"type": "string",
"description": "next_sites_cursor from the last call"
}
}
}Returns 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.
| Argument | Type | Description |
|---|---|---|
| site | string | Site name |
| type | string | Kind of action |
| limit | integer | Default 50 |
| before | integer | next_before from the last call |
| person | string | Email or id |
| workspace | string | Workspace id or name; leave out for the person's own account |
{
"type": "object",
"properties": {
"site": {
"type": "string",
"description": "Site name"
},
"type": {
"enum": [
"publish",
"people",
"sites",
"domains",
"settings",
"protection",
"data",
"ai",
"billing"
],
"type": "string",
"description": "Kind of action"
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Default 50"
},
"before": {
"type": "integer",
"minimum": 1,
"description": "next_before from the last call"
},
"person": {
"type": "string",
"description": "Email or id"
},
"workspace": {
"type": "string",
"description": "Workspace id or name; leave out for the person's own account"
}
}
}Returns 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).
| Argument | Type | Description |
|---|---|---|
| days | integer | Days back from today, today included (default 7) |
| site* | string | |
| 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) |
{
"type": "object",
"required": [
"site"
],
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"description": "Days back from today, today included (default 7)"
},
"site": {
"type": "string"
},
"recent": {
"type": "boolean",
"description": "Also recent_events: counts per event, last 30 minutes (to check a test tap)"
},
"compare": {
"type": "boolean",
"description": "Also return the previous period of the same length (paid plans)"
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| site | string | |
| tlds | 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 |
{
"type": "object",
"properties": {
"site": {
"type": "string"
},
"tlds": {
"type": "array",
"items": {
"type": "string"
},
"description": "With query: endings to check, e.g. [\"com\",\"co.uk\"]"
},
"query": {
"type": "string",
"description": "Finding one: a name, idea or domain, e.g. Maison Cafe or maisoncafe.co.uk"
}
}
}Finds the free booking times for a service on a date (default: the first with any), as customers see them.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD |
| site* | string | |
| party | integer | |
| service* | string | Id or name |
| resource | string | Staff or room |
| plugin_id | string |
{
"type": "object",
"required": [
"site",
"service"
],
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"site": {
"type": "string"
},
"party": {
"type": "integer",
"minimum": 1
},
"service": {
"type": "string",
"description": "Id or name"
},
"resource": {
"type": "string",
"description": "Staff or room"
},
"plugin_id": {
"type": "string"
}
}
}Reads 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.
| Argument | Type | Description |
|---|---|---|
| q | string | Text anywhere |
| to | string | |
| from | string | |
| list | string | Its items |
| site | string | None: every site, counts only |
| view | string | Saved filter |
| limit | integer | |
| scope | string | No site: all, personal, workspace:<id> |
| since | string | |
| state | string | Bookings: upcoming|…|all |
| where | object |
Reads 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).
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| check | boolean | Setup checks |
{
"type": "object",
"required": [
"site"
],
"properties": {
"site": {
"type": "string"
},
"check": {
"type": "boolean",
"const": true,
"description": "Setup checks"
}
}
}Members' 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.
| Argument | Type | Description |
|---|---|---|
| list | string | |
| site* | string | |
| group | string | |
| query | string | |
| since | string | |
| cursor | string | |
| member | string | |
| status | string | |
| file_id | string | |
| item_id | string | |
| members | boolean |
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. Also zip download links and the Accessibility check.
| Argument | Type | Description |
|---|---|---|
| path | string | One file (live unless as_of or version) |
| site* | string | |
| as_of | string | With path(s): as live at this ISO date-time |
| check | 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 call |
| prefix | string | Only files under this path |
| staging | boolean | |
| version | integer | With path(s): from this version number |
| download |
Imports CSV or rows into a list: the first call previews (confirm_token); with it, after the user agrees, it saves as one change.
| Argument | Type | Description |
|---|---|---|
| csv | string | With a header row |
| list* | string | List name |
| rows | array | Or {field: value} each (id: change it) |
| site* | string | |
| confirm_token | string | |
| create_missing | array | Link fields: add unknown names |
{
"type": "object",
"required": [
"site",
"list"
],
"properties": {
"csv": {
"type": "string",
"description": "With a header row"
},
"list": {
"type": "string",
"description": "List name"
},
"rows": {
"type": "array",
"items": {
"type": "object"
},
"description": "Or {field: value} each (id: change it)"
},
"site": {
"type": "string"
},
"confirm_token": {
"type": "string"
},
"create_missing": {
"type": "array",
"items": {
"type": "string"
},
"description": "Link fields: add unknown names"
}
}
}Invites people by email to a site's app (up to 100 a call); each gets an invitation email. Returns invited, already and refused.
| Argument | Type | Description |
|---|---|---|
| plan | string | A plan id the invite is for |
| site* | string | |
| emails* | array | |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"emails"
],
"properties": {
"plan": {
"type": "string",
"description": "A plan id the invite is for"
},
"site": {
"type": "string"
},
"emails": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"confirm_token": {
"type": "string"
}
}
}Prepares 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.
| Argument | Type | Description |
|---|---|---|
| take | array | |
| offer | array | |
| confirm | boolean | |
| bookings | string | |
| workspace* | string | |
| keep_editors | any | |
| confirm_token | string |
{
"type": "object",
"required": [
"workspace"
],
"properties": {
"take": {
"type": "array",
"items": {
"type": "string"
}
},
"offer": {
"type": "array",
"items": {
"type": "string"
}
},
"confirm": {
"type": "boolean"
},
"bookings": {
"enum": [
"keep",
"cancel"
],
"type": "string"
},
"workspace": {
"type": "string"
},
"keep_editors": {
"anyOf": [
{
"enum": [
"all",
"none"
],
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"confirm_token": {
"type": "string"
}
}
}Lists 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.
| Argument | Type | Description |
|---|---|---|
| site* | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"site": {
"type": "string"
}
}
}Lists 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).
| Argument | Type | Description |
|---|---|---|
| lang | string | The page's <html lang>, e.g. de (one snippet per language) |
| site | string | |
| plugin_id | string | From list_plugins |
{
"type": "object",
"properties": {
"lang": {
"type": "string",
"description": "The page's <html lang>, e.g. de (one snippet per language)"
},
"site": {
"type": "string"
},
"plugin_id": {
"type": "string",
"description": "From list_plugins"
}
}
}Lists 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.
| Argument | Type | Description |
|---|---|---|
| by | string | By this person (part of name or email) |
| site* | string | |
| since | string | After this ISO date-time |
| before | integer | Older than this version number |
| since_days | number | The last N days |
| site_token | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"by": {
"type": "string",
"description": "By this person (part of name or email)"
},
"site": {
"type": "string"
},
"since": {
"type": "string",
"description": "After this ISO date-time"
},
"before": {
"type": "integer",
"description": "Older than this version number"
},
"since_days": {
"type": "number",
"description": "The last N days",
"exclusiveMinimum": 0
},
"site_token": {
"type": "string"
}
}
}Marks 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.
| Argument | Type | Description |
|---|---|---|
| all | string | With mark read: every notice (yours) or every new item of that kind |
| mark* | string | |
| site | string | Not needed for notice ids or all |
| item_ids | array | From get_lists, or notice ids (nt_…) from get_account |
| plugin_id | string | Optional: found from item_ids |
{
"type": "object",
"required": [
"mark"
],
"properties": {
"all": {
"enum": [
"notices",
"forms",
"bookings",
"orders"
],
"type": "string",
"description": "With mark read: every notice (yours) or every new item of that kind"
},
"mark": {
"enum": [
"read",
"new",
"spam",
"not_spam",
"archive",
"bin",
"restore"
],
"type": "string"
},
"site": {
"type": "string",
"description": "Not needed for notice ids or all"
},
"item_ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "From get_lists, or notice ids (nt_…) from get_account"
},
"plugin_id": {
"type": "string",
"description": "Optional: found from item_ids"
}
}
}Moves 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.
| Argument | Type | Description |
|---|---|---|
| mode | string | |
| plan | string | |
| sites | any | |
| people | any | Site Developer emails to invite |
| confirm | boolean | |
| workspace | string | A paid workspace id; omit for a new one |
| confirm_token | string | |
| personal_plan | string |
{
"type": "object",
"properties": {
"mode": {
"enum": [
"recommended",
"custom"
],
"type": "string"
},
"plan": {
"enum": [
"team",
"company"
],
"type": "string"
},
"sites": {
"anyOf": [
{
"type": "string",
"const": "all"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"people": {
"anyOf": [
{
"enum": [
"all",
"none"
],
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Site Developer emails to invite"
},
"confirm": {
"type": "boolean"
},
"workspace": {
"type": "string",
"description": "A paid workspace id; omit for a new one"
},
"confirm_token": {
"type": "string"
},
"personal_plan": {
"enum": [
"keep",
"end"
],
"type": "string"
}
}
}Makes 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.
| Argument | Type | Description |
|---|---|---|
| plan | string | |
| site* | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"plan": {
"type": "string"
},
"site": {
"type": "string"
}
}
}Protects 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.
| Argument | Type | Description |
|---|---|---|
| mode | string | Required unless confirm_token |
| path | string | "/" (default, whole site) or a part such as /students |
| site* | string | |
| emails | array | members on a path: the full list who may see it (shared plans: omit to reuse the site's list) |
| confirm_token | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"mode": {
"enum": [
"passcode",
"members"
],
"type": "string",
"description": "Required unless confirm_token"
},
"path": {
"type": "string",
"description": "\"/\" (default, whole site) or a part such as /students"
},
"site": {
"type": "string"
},
"emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "members on a path: the full list who may see it (shared plans: omit to reuse the site's list)"
},
"confirm_token": {
"type": "string"
}
}
}Refunds an order, in full or amount: returns approve_url, where the owner approves the money moving; confirm_token then reports its status.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| amount | integer | Smallest unit (default all) |
| item_id* | string | From get_lists |
| message | string | A note for the customer |
| restock | boolean | Put stock back (default true) |
| plugin_id* | string | From list_plugins |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"plugin_id",
"item_id"
],
"properties": {
"site": {
"type": "string"
},
"amount": {
"type": "integer",
"minimum": 1,
"description": "Smallest unit (default all)"
},
"item_id": {
"type": "string",
"description": "From get_lists"
},
"message": {
"type": "string",
"description": "A note for the customer"
},
"restock": {
"type": "boolean",
"description": "Put stock back (default true)"
},
"plugin_id": {
"type": "string",
"description": "From list_plugins"
},
"confirm_token": {
"type": "string"
}
}
}Refuses an order and refunds it in full: returns approve_url, where the owner approves the money moving; confirm_token then reports its status.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| item_id* | string | From get_lists |
| message | string | A note for the customer |
| restock | boolean | Put stock back (default true) |
| plugin_id* | string | From list_plugins |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"plugin_id",
"item_id"
],
"properties": {
"site": {
"type": "string"
},
"item_id": {
"type": "string",
"description": "From get_lists"
},
"message": {
"type": "string",
"description": "A note for the customer"
},
"restock": {
"type": "boolean",
"description": "Put stock back (default true)"
},
"plugin_id": {
"type": "string",
"description": "From list_plugins"
},
"confirm_token": {
"type": "string"
}
}
}Disconnects a custom domain from a site (two steps: confirm_token and what stops working first). The domain itself stays with its registrar.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| hostname* | string | e.g. www.example.com |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"hostname"
],
"properties": {
"site": {
"type": "string"
},
"hostname": {
"type": "string",
"description": "e.g. www.example.com"
},
"confirm_token": {
"type": "string"
}
}
}Removes items from a list by id; the site shows it within seconds (undo_list_change takes it back).
| Argument | Type | Description |
|---|---|---|
| ids* | array | |
| list* | string | List name |
| site* | string |
{
"type": "object",
"required": [
"site",
"list",
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"list": {
"type": "string",
"description": "List name"
},
"site": {
"type": "string"
}
}
}Removes 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| email* | string | |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"email"
],
"properties": {
"site": {
"type": "string"
},
"email": {
"type": "string"
},
"confirm_token": {
"type": "string"
}
}
}Removes a member-event webhook at once; its pending deliveries are dropped.
| Argument | Type | Description |
|---|---|---|
| id* | string | mwh_ id |
| site* | string |
{
"type": "object",
"required": [
"site",
"id"
],
"properties": {
"id": {
"type": "string",
"description": "mwh_ id"
},
"site": {
"type": "string"
}
}
}Removes 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| entries* | array | Emails or company domains |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"entries"
],
"properties": {
"site": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Emails or company domains"
},
"confirm_token": {
"type": "string"
}
}
}Removes a plugin from a site (two steps: confirm_token and what is lost first). Its data stays exportable in the app for 30 days.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| plugin_id* | string | From list_plugins |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"plugin_id"
],
"properties": {
"site": {
"type": "string"
},
"plugin_id": {
"type": "string",
"description": "From list_plugins"
},
"confirm_token": {
"type": "string"
}
}
}Makes 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| discard | boolean | With a preview id: deletes that preview instead |
| revision* | any | Revision id or version number (list_versions), or a preview id (get_site previews) |
| site_token | string | |
| base_revision* | string | The live revision id you last saw |
{
"type": "object",
"required": [
"site",
"revision",
"base_revision"
],
"properties": {
"site": {
"type": "string"
},
"discard": {
"type": "boolean",
"description": "With a preview id: deletes that preview instead"
},
"revision": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer",
"exclusiveMinimum": 0
}
],
"description": "Revision id or version number (list_versions), or a preview id (get_site previews)"
},
"site_token": {
"type": "string"
},
"base_revision": {
"type": "string",
"description": "The live revision id you last saw"
}
}
}Saves an AI block prompt for the owner's own AI key (set in the Dashboard). Returns markup.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| name* | string | |
| site* | string | |
| field | string | |
| lists | array | |
| scope | string | |
| period | string | |
| audience | string | |
| template* | string |
{
"type": "object",
"required": [
"site",
"name",
"kind",
"template"
],
"properties": {
"kind": {
"enum": [
"summarise",
"categorise",
"read_image",
"chat"
],
"type": "string"
},
"name": {
"type": "string"
},
"site": {
"type": "string"
},
"field": {
"type": "string"
},
"lists": {
"type": "array",
"items": {
"type": "string"
}
},
"scope": {
"type": "string"
},
"period": {
"type": "string"
},
"audience": {
"type": "string"
},
"template": {
"type": "string"
}
}
}Saves a workspace group (group: change; delete: true). Owner or Admin. Returns approve_url.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| site* | string | |
| group | string | |
| sites | array | |
| delete | boolean | |
| people | array | |
| permissions | array | |
| confirm_token | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"name": {
"type": "string"
},
"site": {
"type": "string"
},
"group": {
"type": "string"
},
"sites": {
"type": "array",
"items": {
"type": "string"
}
},
"delete": {
"type": "boolean"
},
"people": {
"type": "array",
"items": {
"type": "string"
}
},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"confirm_token": {
"type": "string"
}
}
}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). Lists are optional: only when the user asks for one.
| Argument | Type | Description |
|---|---|---|
| list* | string | List name |
| site* | string | |
| forms | array | Form list: plugin ids filling it |
| label | string | Name shown in the app |
| fields | 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), choice |
| public_json | object | null | Public JSON feed {fields, where}; null: off |
{
"type": "object",
"required": [
"site",
"list"
],
"properties": {
"list": {
"type": "string",
"description": "List name"
},
"site": {
"type": "string"
},
"forms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Form list: plugin ids filling it"
},
"label": {
"type": "string",
"description": "Name shown in the app"
},
"fields": {
"type": "array",
"description": "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), choice"
},
"public_json": {
"type": [
"object",
"null"
],
"description": "Public JSON feed {fields, where}; null: off"
}
}
}Saves a member group: name, add, remove, leads (emails; leads is the whole list), or delete: true. Adding and deleting are two-step.
| Argument | Type | Description |
|---|---|---|
| add | array | |
| name | string | |
| site* | string | |
| group* | string | e.g. north |
| leads | array | |
| delete | boolean | |
| remove | array | |
| confirm_token | string |
{
"type": "object",
"required": [
"site",
"group"
],
"properties": {
"add": {
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"type": "string"
},
"site": {
"type": "string"
},
"group": {
"type": "string",
"description": "e.g. north"
},
"leads": {
"type": "array",
"items": {
"type": "string"
}
},
"delete": {
"type": "boolean",
"const": true
},
"remove": {
"type": "array",
"items": {
"type": "string"
}
},
"confirm_token": {
"type": "string"
}
}
}Creates a member list or replaces its fields. Each member sees only their own rows. Returns the list and add-form markup.
| Argument | Type | Description |
|---|---|---|
| list* | string | Member list name, e.g. expenses |
| scan | array | Scan actions: {label, values} adds a row; {label, redeem: n} uses n; form: a list (guide #scan) |
| site* | string | |
| label | string | |
| reply | boolean | |
| share | string | |
| fields* | array | 1-30 of {name, type, label, required, options}; types text, long_text, number, date, choice (options), photo |
| comments | boolean | |
| group_read | string | |
| plan_rules | any |
Creates 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.
| Argument | Type | Description |
|---|---|---|
| free | boolean | |
| name | string | As members see it |
| plan* | string | Plan id, e.g. monthly |
| site* | string | |
| price | object | {amount (cents or pence), currency gbp|usd|eur, interval month|year} |
| archive | boolean |
{
"type": "object",
"required": [
"site",
"plan"
],
"properties": {
"free": {
"type": "boolean"
},
"name": {
"type": "string",
"description": "As members see it"
},
"plan": {
"type": "string",
"description": "Plan id, e.g. monthly"
},
"site": {
"type": "string"
},
"price": {
"type": "object",
"description": "{amount (cents or pence), currency gbp|usd|eur, interval month|year}"
},
"archive": {
"type": "boolean"
}
}
}Records how a booking that has started went: completed (done) or no_show. Emails nobody; it can be changed between the two.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| item_id* | string | From get_lists |
| outcome* | string | |
| plugin_id | string | Default: booking page |
{
"type": "object",
"required": [
"site",
"item_id",
"outcome"
],
"properties": {
"site": {
"type": "string"
},
"item_id": {
"type": "string",
"description": "From get_lists"
},
"outcome": {
"enum": [
"completed",
"no_show"
],
"type": "string"
},
"plugin_id": {
"type": "string",
"description": "Default: booking page"
}
}
}Sets 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.
| Argument | Type | Description |
|---|---|---|
| path | string | Member pages path (default /app) |
| site* | string | |
| signup | string | invite, open, or request (owner approves) |
| ai_read | object | {lists: up to 10 names or "all", members}; answers approve_url |
| template | string | Makes its member lists and plans |
| retention | string | member, 1y, 2y, 5y |
| request_note | string | |
| sign_out_all | boolean | |
| confirm_token | string | |
| display_field | string | null | Profile field shown to group peers |
Shares 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.
| Argument | Type | Description |
|---|---|---|
| name | string | With content: file name with extension, e.g. menu.pdf |
| content | string | The file, base64-encoded (no data: prefix) |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "With content: file name with extension, e.g. menu.pdf"
},
"content": {
"type": "string",
"description": "The file, base64-encoded (no data: prefix)"
}
}
}Changes 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
| Argument | Type | Description |
|---|---|---|
| name | string | |
| rows | boolean | |
| site* | string | |
| title | any | Shown in the app (null: the page <title>) |
| search | object | ai_training, ai_answers (allow or block), primary_domain, domain_redirect, review_url, steps |
| instead | string | Site to freeze instead |
| staging | string | |
| archived | boolean | |
| analytics | object | Click counting: clicks, kinds, labels, hidden |
| time_zone | string |
Sorts a list's items by a field, or puts them in the sequence of the given ids; the site shows it within seconds.
| Argument | Type | Description |
|---|---|---|
| ids | array | Or item ids, first to last (the rest follow) |
| list* | string | List name |
| site* | string | |
| sort_by | string | A field to sort by |
| descending | boolean |
{
"type": "object",
"required": [
"site",
"list"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Or item ids, first to last (the rest follow)"
},
"list": {
"type": "string",
"description": "List name"
},
"site": {
"type": "string"
},
"sort_by": {
"type": "string",
"description": "A field to sort by"
},
"descending": {
"type": "boolean"
}
}
}Sends 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| plugin_id* | string | From list_plugins |
{
"type": "object",
"required": [
"site",
"plugin_id"
],
"properties": {
"site": {
"type": "string"
},
"plugin_id": {
"type": "string",
"description": "From list_plugins"
}
}
}Offers 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.
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| string | The new Site Owner's email (required unless confirm_token) | |
| keep_editor | boolean | |
| confirm_token | string | From the first call: approval status |
{
"type": "object",
"required": [
"site"
],
"properties": {
"site": {
"type": "string"
},
"email": {
"type": "string",
"description": "The new Site Owner's email (required unless confirm_token)"
},
"keep_editor": {
"type": "boolean"
},
"confirm_token": {
"type": "string",
"description": "From the first call: approval status"
}
}
}Takes back one list change (change_id from its reply).
| Argument | Type | Description |
|---|---|---|
| site* | string | |
| change_id* | string |
{
"type": "object",
"required": [
"site",
"change_id"
],
"properties": {
"site": {
"type": "string"
},
"change_id": {
"type": "string"
}
}
}Removes 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.
| Argument | Type | Description |
|---|---|---|
| path | string | "/" (default, whole site) or a protected part such as /students |
| site* | string | |
| confirm_token | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"path": {
"type": "string",
"description": "\"/\" (default, whole site) or a protected part such as /students"
},
"site": {
"type": "string"
},
"confirm_token": {
"type": "string"
}
}
}Changes list items by id; the site shows it within seconds. On form messages and bookings: only the owner's own columns (not undoable).
| Argument | Type | Description |
|---|---|---|
| list* | string | List name |
| site* | string | |
| items* | array | Given fields change; null clears. {id, values, if_updated_at} |
{
"type": "object",
"required": [
"site",
"list",
"items"
],
"properties": {
"list": {
"type": "string",
"description": "List name"
},
"site": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"values"
],
"properties": {
"id": {
"type": "string"
},
"values": {
"type": "object"
}
}
},
"description": "Given fields change; null clears. {id, values, if_updated_at}"
}
}
}Sets status, reply, note, group, assign ("" clears) or comments, for the owner to review; never members' values. Two-step if it emails or widens.
| Argument | Type | Description |
|---|---|---|
| list* | string | |
| note | string | |
| site* | string | |
| group | string | |
| reply | string | |
| assign | string | |
| status | string | |
| comment | string | |
| item_ids* | array | |
| confirm_token | string |
Changes 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.
| Argument | Type | Description |
|---|---|---|
| lang | string | The page's <html lang>, e.g. de (one snippet per language) |
| name | string | |
| site* | string | |
| forms | object | Forms: as settings |
| patch | object | Merged onto the settings, e.g. {"approval":"always"}; null removes a key, arrays are replaced |
| status | string | |
| settings | object | The whole settings object, shaped as list_plugins settings_help (forms too) |
| form_html | string | |
| plugin_id* | string | From list_plugins |
| string |
| confirm_token | string |
| idempotency_key | string | New sites: a random UUID; a retry with the same files replays the result |
{
"type": "object",
"properties": {
"site": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "e.g. img/a.png"
},
"content": {
"type": "string"
},
"encoding": {
"enum": [
"utf8",
"base64"
],
"type": "string",
"description": "utf8 (default), or base64 for binaries"
}
}
}
},
"patch": {
"type": "boolean",
"description": "true: only the changed files"
},
"deleted": {
"type": "array",
"items": {
"type": "string"
},
"description": "patch: paths to remove"
},
"preview": {
"type": "boolean",
"description": "true: save a private preview, not live"
},
"staging": {
"type": "boolean"
},
"template": {
"type": "string",
"description": "Template, e.g. \"brasa\" (files sent replace its paths)"
},
"workspace": {
"type": "string",
"description": "New sites: workspace id or name, or \"private\" (omitted with several, the reply asks)"
},
"site_token": {
"type": "string"
},
"base_revision": {
"type": "string"
},
"confirm_token": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"description": "New sites: a random UUID; a retry with the same files replays the result"
}
}
}| message | string | A note for the customer |
| resource | string | With start: staff or room |
| waitlist | string | Class time or wl_ entry: close (bookings stay; those waiting are emailed) or re-open |
| plugin_id | string | Default: booking page |
| confirm_token | string |
| notify_customer | boolean | Email the customer (default true) |
{
"type": "object",
"required": [
"site",
"item_id"
],
"properties": {
"name": {
"type": "string"
},
"site": {
"type": "string"
},
"email": {
"type": "string"
},
"force": {
"type": "boolean"
},
"notes": {
"type": "string"
},
"party": {
"type": "integer",
"minimum": 1
},
"phone": {
"type": "string"
},
"start": {
"type": "string",
"description": "New local time, e.g. \"2026-10-15T14:00\""
},
"answers": {
"type": "object",
"description": "{question id: answer} (\"\" removes one)"
},
"item_id": {
"type": "string",
"description": "From get_lists"
},
"message": {
"type": "string",
"description": "A note for the customer"
},
"resource": {
"type": "string",
"description": "With start: staff or room"
},
"waitlist": {
"enum": [
"closed",
"open"
],
"type": "string",
"description": "Class time or wl_ entry: close (bookings stay; those waiting are emailed) or re-open"
},
"plugin_id": {
"type": "string",
"description": "Default: booking page"
},
"confirm_token": {
"type": "string"
},
"notify_customer": {
"type": "boolean",
"description": "Email the customer (default true)"
}
}
}| {column: value} |
| cursor | string |
| expand | boolean | Linked items' fields |
| export | string | A download link |
| status | string | Messages: new|read|spam|archived|binned|all |
| service | string |
| resource | string |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Text anywhere"
},
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"list": {
"type": "string",
"description": "Its items"
},
"site": {
"type": "string",
"description": "None: every site, counts only"
},
"view": {
"type": "string",
"description": "Saved filter"
},
"limit": {
"type": "integer",
"minimum": 1
},
"scope": {
"type": "string",
"description": "No site: all, personal, workspace:<id>"
},
"since": {
"type": "string"
},
"state": {
"type": "string",
"description": "Bookings: upcoming|…|all"
},
"where": {
"type": "object",
"description": "{column: value}"
},
"cursor": {
"type": "string"
},
"expand": {
"type": "boolean",
"description": "Linked items' fields"
},
"export": {
"enum": [
"csv",
"json",
"ics"
],
"type": "string",
"description": "A download link"
},
"status": {
"type": "string",
"description": "Messages: new|read|spam|archived|binned|all"
},
"service": {
"type": "string"
},
"resource": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"site"
],
"properties": {
"list": {
"type": "string"
},
"site": {
"type": "string"
},
"group": {
"type": "string"
},
"query": {
"type": "string"
},
"since": {
"type": "string"
},
"cursor": {
"type": "string"
},
"member": {
"type": "string"
},
"status": {
"type": "string"
},
"file_id": {
"type": "string"
},
"item_id": {
"type": "string"
},
"members": {
"type": "boolean",
"const": true
}
}
}| boolean |
| true: 1-hour links to the whole live site as zips (one per GB) |
| site_token | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"path": {
"type": "string",
"description": "One file (live unless as_of or version)"
},
"site": {
"type": "string"
},
"as_of": {
"type": "string",
"description": "With path(s): as live at this ISO date-time"
},
"check": {
"enum": [
"accessibility"
],
"type": "string",
"description": "The full Accessibility check of the live pages (problems, fixes)"
},
"paths": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Up to 20 files, 512 KB in all (the rest say not_read)"
},
"cursor": {
"type": "string",
"description": "next_cursor from the last call"
},
"prefix": {
"type": "string",
"description": "Only files under this path"
},
"staging": {
"type": "boolean"
},
"version": {
"type": "integer",
"description": "With path(s): from this version number",
"exclusiveMinimum": 0
},
"download": {
"type": "boolean",
"description": "true: 1-hour links to the whole live site as zips (one per GB)"
},
"site_token": {
"type": "string"
}
}
}| {add:[plan],fields:{f:[plan]},limit:{plan:n},per} |
| group_write | string |
| lead_status | boolean |
| confirm_token | string |
| status_options | array |
{
"type": "object",
"required": [
"site",
"list",
"fields"
],
"properties": {
"list": {
"type": "string",
"description": "Member list name, e.g. expenses"
},
"scan": {
"type": "array",
"description": "Scan actions: {label, values} adds a row; {label, redeem: n} uses n; form: a list (guide #scan)"
},
"site": {
"type": "string"
},
"label": {
"type": "string"
},
"reply": {
"type": "boolean"
},
"share": {
"enum": [
"private",
"group"
],
"type": "string"
},
"fields": {
"type": "array",
"description": "1-30 of {name, type, label, required, options}; types text, long_text, number, date, choice (options), photo"
},
"comments": {
"type": "boolean"
},
"group_read": {
"enum": [
"members",
"leads"
],
"type": "string"
},
"plan_rules": {
"description": "{add:[plan],fields:{f:[plan]},limit:{plan:n},per}"
},
"group_write": {
"enum": [
"owner",
"members"
],
"type": "string"
},
"lead_status": {
"type": "boolean"
},
"confirm_token": {
"type": "string"
},
"status_options": {
"type": "array",
"items": {
"type": "string"
}
}
}
}| notify_members |
| any |
| {status,reply,comments}: bool |
| profile_fields | array | Sign-up fields {name, type, label, required, options}; types text, long_text, number, date, choice, phone, url |
{
"type": "object",
"required": [
"site"
],
"properties": {
"path": {
"type": "string",
"description": "Member pages path (default /app)"
},
"site": {
"type": "string"
},
"signup": {
"enum": [
"invite",
"open",
"request"
],
"type": "string",
"description": "invite, open, or request (owner approves)"
},
"ai_read": {
"type": "object",
"description": "{lists: up to 10 names or \"all\", members}; answers approve_url"
},
"template": {
"enum": [
"expense-log",
"handoff",
"syllabus",
"stacks",
"streak",
"intake",
"loyalty"
],
"type": "string",
"description": "Makes its member lists and plans"
},
"retention": {
"type": "string",
"description": "member, 1y, 2y, 5y"
},
"request_note": {
"type": "string"
},
"sign_out_all": {
"type": "boolean"
},
"confirm_token": {
"type": "string"
},
"display_field": {
"type": [
"string",
"null"
],
"description": "Profile field shown to group peers"
},
"notify_members": {
"description": "{status,reply,comments}: bool"
},
"profile_fields": {
"type": "array",
"items": {
"type": "object"
},
"description": "Sign-up fields {name, type, label, required, options}; types text, long_text, number, date, choice, phone, url"
}
}
}| workspace | string | Moves a private site in: workspace id or name, or "new" |
| ai_invites | boolean |
| sender_name | string | null |
| base_revision | string |
| confirm_token | string |
| notifications | object | Own emails: forms, bookings, health (auto, daily, off, {email, in_app}); domain_live, domain_reminder, product_news; count_usage; scope site|all |
| sender_address | string |
{
"type": "object",
"required": [
"site"
],
"properties": {
"name": {
"type": "string"
},
"rows": {
"type": "boolean"
},
"site": {
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Shown in the app (null: the page <title>)"
},
"search": {
"type": "object",
"description": "ai_training, ai_answers (allow or block), primary_domain, domain_redirect, review_url, steps"
},
"instead": {
"type": "string",
"description": "Site to freeze instead"
},
"staging": {
"enum": [
"on",
"off",
"refresh",
"promote"
],
"type": "string"
},
"archived": {
"type": "boolean"
},
"analytics": {
"type": "object",
"description": "Click counting: clicks, kinds, labels, hidden"
},
"time_zone": {
"type": "string"
},
"workspace": {
"type": "string",
"description": "Moves a private site in: workspace id or name, or \"new\""
},
"ai_invites": {
"type": "boolean"
},
"sender_name": {
"type": [
"string",
"null"
]
},
"base_revision": {
"type": "string"
},
"confirm_token": {
"type": "string"
},
"notifications": {
"type": "object",
"description": "Own emails: forms, bookings, health (auto, daily, off, {email, in_app}); domain_live, domain_reminder, product_news; count_usage; scope site|all"
},
"sender_address": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"site",
"list",
"item_ids"
],
"properties": {
"list": {
"type": "string"
},
"note": {
"type": "string"
},
"site": {
"type": "string"
},
"group": {
"type": "string"
},
"reply": {
"type": "string"
},
"assign": {
"type": "string"
},
"status": {
"type": "string"
},
"comment": {
"type": "string"
},
"item_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"confirm_token": {
"type": "string"
}
}
}| recipients | 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 |
{
"type": "object",
"required": [
"site",
"plugin_id"
],
"properties": {
"lang": {
"type": "string",
"description": "The page's <html lang>, e.g. de (one snippet per language)"
},
"name": {
"type": "string"
},
"site": {
"type": "string"
},
"forms": {
"type": "object",
"description": "Forms: as settings"
},
"patch": {
"type": "object",
"description": "Merged onto the settings, e.g. {\"approval\":\"always\"}; null removes a key, arrays are replaced"
},
"status": {
"enum": [
"active",
"paused"
],
"type": "string"
},
"settings": {
"type": "object",
"description": "The whole settings object, shaped as list_plugins settings_help (forms too)"
},
"form_html": {
"type": "string"
},
"plugin_id": {
"type": "string",
"description": "From list_plugins"
},
"recipients": {
"type": "object",
"description": "{add: an extra inbox, for every site on the plan (needs Manage)}"
},
"confirm_token": {
"type": "string",
"description": "After the person's yes to setup_summary, or for the approve_url status"
}
}
}