Skip to main content
Glama

Server Details

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

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
89.9% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

B3/5.0

Scored across 68 tools

Disambiguation3/5

The tools cover many distinct resources, but several clusters overlap: site lists vs. app lists (save_list vs. save_app_list, add_list_items vs. add_app_row), people vs. users (add_people vs. invite_users), and groups (save_group vs. save_user_group). Descriptions help, but with 68 tools an agent must read carefully to avoid misselection.

Naming Consistency4/5

Most names follow a predictable snake_case verb_noun pattern (add_booking, get_site, remove_plugin, update_plugin). A few deviations like deploy, protect, unprotect, and site_settings are minor but keep it from being fully consistent.

Tool Count1/5

68 tools is far beyond a well-scoped set and is an extreme mismatch even for a broad website platform. Many operations could be consolidated, and the sheer surface area increases selection burden substantially.

Completeness3/5

The surface covers many domains (sites, deploys, versions, domains, lists, bookings, plugins, people, analytics, orders). However, notable gaps remain, such as listing or retrieving orders and listing webhooks, which may cause dead ends for common workflows.

Available Tools

68 tools
add_app_rowAdd an entry for a userC
Destructive
Inspect

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.

NameRequiredDescriptionDefault
listYes
siteYes
groupNo
memberYes
valuesYes
confirm_tokenNo

Output Schema

NameRequiredDescription
agent_messageNo
confirm_tokenNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is non-read-only, destructive, non-idempotent, and open-world. The description adds some useful context beyond that with "two-step" and the owner opt-in requirement, but it does not explain what the destructive aspect means, what happens on duplicate entries, or how confirm_token is obtained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, and the verb is front-loaded, but the parenthetical is syntactically awkward and obscures the intended workflow. The content is concise without being clear, so structure is only marginally adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a six-parameter mutation tool with a nested values object, a required confirm_token flow, and destructive behavior. Even with an output schema present, the description does not provide enough operational context to call it safely and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 parameters, so the description must carry parameter meaning. It only vaguely gestures at values and group sharing; it says nothing about site, list, member, or confirm_token, leaving most required inputs unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says it "Adds an entry for a user," which gives a verb and a rough target, but it never clearly states that this entry goes into a list/app row or how that differs from siblings like add_list_items. The parenthetical "to read (values; group shares it with the group, two-step)" muddies rather than sharpens the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "two-step" hints at a confirmation flow, but there is no explicit when-to-use guidance, no exclusion against add_list_items or update_app_rows, and no stated prerequisites beyond the vague "Needs the owner's opt-in." An agent would have to infer when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_app_webhookAdd an app webhookA
Destructive
Inspect

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

NameRequiredDescriptionDefault
urlYeshttps:// address
siteYes
eventsNodefault all; e.g. row.created, member.joined
confirm_tokenNo

Output Schema

NameRequiredDescription
eventsNo
url_hostNo
agent_messageNo
confirm_tokenNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (destructiveHint=true, openWorldHint=true, non-idempotent), and the description adds genuinely new context: the webhook is signed, the signing secret is never returned by the API (Dashboard only), and the operation is a two-step flow. It stops short of explaining what happens to existing webhooks or what the intermediate step returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded clauses with no filler; the verb and resource come first and the caveats follow. Density is high, though 'ids only' is terse to the point of ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, and the destructive/open-world profile is covered by annotations. The unresolved gap is the two-step flow: the description names it but never explains how confirm_token is obtained or used, which is the one thing an agent must know to complete the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: url and events are documented in-schema (including default-all and event name examples), while site and confirm_token are bare. The description partially compensates by implying site takes an ID ('ids only') and that confirm_token belongs to the two-step flow, but it never explains the token's origin or lifetime.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Adds a signed app-event webhook') and adds a distinguishing trait (signed events, ids only), so an agent can tell it apart from remove_app_webhook. The phrase 'ids only' is cryptic and could mean either input or output is ID-based, which blunts the precision slightly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Two-step' combined with the confirm_token parameter implies a two-call confirmation flow, which is useful implied guidance. However, it never says when to prefer this over remove_app_webhook or other add_* siblings, nor what the first step actually requires or returns to trigger the second.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_bookingAdd a bookingA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
nameNo
siteYes
emailNo
forceNo
notesNo
partyNo
phoneNo
startNoLocal "2026-10-15T14:00" (booking time zone) or "now"
seriesNoWeekly repeat: {every: week|fortnight, count 2-52 or until YYYY-MM-DD, on_clash: "skip"}
sourceNoDefault phone
answersNo{question id: answer} ("" removes one)
serviceNoService id or name
resourceNoStaff or room id or name (default any free)
plugin_idNoDefault: booking page
confirm_tokenNo
notify_customerNoEmail the customer (default true)

Output Schema

NameRequiredDescription
item_idNo
agent_messageNo
confirm_tokenNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false, so the safety profile is carried by structured data; the description adds genuinely new behavior: clash handling returns 409, force bypasses the conflict check (i.e. double-booking is possible), and confirm_token is a prerequisite for notifying the customer. It does not describe side effects like notifications defaulting on or what a series creates, leaving a small gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with the purpose front-loaded, followed by the mutating edge cases (clash/force) and the prerequisite (confirm_token). No filler; every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-param, nested-object mutation tool, the description covers the creation flow, series behavior, conflict semantics, and the notification prerequisite, and an output schema exists so return values need no explanation. The remaining gaps are secondary optional fields, not blockers to correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 16 params at 50% schema coverage, the description does real compensatory work: it maps 'service, start, customer details', explains the weekly series semantics, characterizes resource as 'staff or a room', and covers force and confirm_token. Unmentioned params such as party, notes, answers, and plugin_id remain undocumented anywhere, so it is helpful but not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Adds a booking') and immediately narrows scope to owner-taken bookings (phone, walk-in), which distinguishes it from the customer-facing booking flow and from edit_booking/approve_booking siblings. The clause listing service, start, customer details, weekly series, and staff/room resource tells an agent exactly what kind of record is created.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use ('a booking the owner took (phone, walk-in)') and names two conditional paths: clashes return 409 and force:true overrides it, and emailing the customer requires confirm_token first. It does not explicitly say when to prefer edit_booking or get_free_slots instead, so it stops short of full when/when-not/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_domainConnect a domainAInspect

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.

NameRequiredDescriptionDefault
siteYes
claimNotrue: prove a reserved domain or one another account holds with a DNS TXT record; call again to check
domainNoSame as hostname
hostnameNoThe domain, e.g. www.example.com (no https://)
confirm_rootNotrue: the root domain anyway (not www)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing what the call produces (DNS records, one-click apply_url, share_url for the DNS operator) and the re-call-to-check-status pattern, which is consistent with idempotentHint=false. It also surfaces the owner/paid-plan precondition and the claim workflow. Missing only failure modes (what happens on an unverified or conflicting domain).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, which is good, but the body is a dense semicolon chain with terse fragments like "again: its status" and "claim: true proves..." that read like notes rather than prose. Every clause carries information, but the structure makes it harder to parse than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be spelled out, yet the description helpfully names the key artifacts (DNS records, apply_url, share_url). Prerequisites, the www default and the claim loop are all covered. A brief note on failure/conflict behavior would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so the schema already documents claim, hostname, domain and confirm_root; the description restates the claim semantics and hints at the www-vs-root choice. It adds no clarification of the domain/hostname duplication or of confirm_root specifically, so it neither compensates for nor meaningfully exceeds the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: "Connects the user's own domain to a site." The parenthetical adds scope (owner, paid plans, www is easiest), making the action distinguishable from remove_domain or get_domains. It stops short of explicitly naming the sibling tools, so it's clear but not maximally differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real usage context: only the site owner can do this, it requires a paid plan, and www is the easiest hostname form. The claim=true branch is scoped to reserved domains or domains held by another account. There are no explicit exclusions or named alternatives (e.g. use get_domains to inspect first), which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_list_itemsAdd list itemsAInspect

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.

NameRequiredDescriptionDefault
copyNo{field: form reply field}
fromNoOr copy this form reply (itm_…)
listYes
siteYes
itemsNo{field: value} each
consentNoThe person agreed to be shown
positionNoInsert at (1 = first; default: end)
confirm_tokenNo

Output Schema

NameRequiredDescription
itemsNo
change_idNo
agent_messageNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It adds crucial behavioral context beyond annotations, specifying functional limits (up to 500 items), performance characteristics ('within seconds'), and the complex business logic of using form replies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is dense but highly efficient, packing functional limits, performance metrics, and a specific usage workflow into two succinct sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (8 parameters, nested objects), the description provides enough operational logic and workflow constraints for an agent to confidently determine when and how to execute the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 63%, the description significantly helps define the usage of complex fields, particularly clarifying that parameters like 'copy' and 'from' relate to form replies and their required workflow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the primary function (adding items to a list). While it doesn't explicitly define the scope relative to all other list manipulation tools, the verb 'Adds' distinguishes it from delete or update operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a highly specific workflow guideline for usage, detailing the necessary sequence of events involving form replies: preview, consent, and confirmation token required after user agreement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_peopleAdd peopleB
Destructive
Inspect

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.

NameRequiredDescriptionDefault
roleNodeveloper, viewer, member, admin or custom. An audience (students, clients) is member
siteYes
groupNo
emailsNoEmails; for member also company domains (required unless confirm_token)
notifyNomember: email each new address (default true)
permissionsNoTicks, personal site
confirm_tokenNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that this is a destructive, non-idempotent, open-world mutation. The description adds some role context and mentions returning approve_url, but it does not explain approval flow, notification behavior, or what access changes entail beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. However, the role list is dense and somewhat cryptic, especially 'developer (workspace: a seat)' and 'custom+group'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive access-granting tool with seven parameters, the description is minimally adequate. It covers the core purpose and role values, but omits key usage distinctions and parameter details, even though the output schema covers return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 57%, so the description must help with the undocumented parameters. It clarifies role values such as developer, viewer, admin, custom+group, and member, but leaves site, group, emails, notify, permissions, and confirm_token largely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: giving people access or setting a workspace person's role. It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools such as invite_users or remove_people.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Gives people access, or sets a workspace person's role' implies the usage context, but there is no explicit when-to-use guidance, no exclusions, and no comparison to alternatives like invite_users.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_pluginAdd a pluginAInspect

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.

NameRequiredDescriptionDefault
kindNo
langNoThe page's <html lang>, e.g. de (one snippet per language)
nameNoe.g. "Contact form"
siteYes
formsNoTyped: fields, success_message, redirect, submit_label, notify, store, auto_reply
settingsNoAs list_plugins settings_help
form_htmlNoForms: the page's <form>
confirm_tokenNo

Output Schema

NameRequiredDescription
plugin_idNo
snippet_htmlNo
agent_messageNo
confirm_tokenNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare this is a non-read-only, open-world, non-destructive, non-idempotent operation. The description adds meaningful behavior beyond annotations: the first call returns setup_summary, confirm_token is what saves the plugin, and snippet_html is returned after confirmation. It does not cover error cases, token expiry, or permissions beyond the paid-plan note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core action and paid-plan scope. The parenthetical and semicolon-heavy phrasing is terse and slightly cryptic, but it packs substantial workflow information without wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with nested objects and an output schema, the description covers the essential add-plugin workflow and confirmation behavior. It leaves some gaps around the payments kind and the relationship to update_plugin, but the schema and annotations carry much of the remaining detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 63% schema description coverage, the description compensates well for the most important gaps: it explains the kind/settings/forms/form_html branching and gives confirm_token special meaning. It still does not clarify lang, name, or the payments/booking-specific parameter expectations beyond the high-level workflow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action and resource: 'Adds a plugin to a site (paid plans)'. It also signals variant behavior for settings versus forms/form_html, though it does not explicitly distinguish this tool from update_plugin or remove_plugin.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful usage context: paid plans, a reference to list_plugins settings_help for settings, the forms/form_html path when kind is forms, and the multi-step setup_summary/confirm_token/test_plugin flow. It lacks an explicit statement of when to use this instead of update_plugin, but the add-versus-update distinction is relatively clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

approve_bookingApprove a bookingA
DestructiveIdempotent
Inspect

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.

NameRequiredDescriptionDefault
siteYes
item_idYes
messageNoA note for the customer
plugin_idNoDefault: booking page

Output Schema

NameRequiredDescription
item_idNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds the customer email side effect and the waitlist-conversion behavior, but says nothing about reversibility (whether an approval can be undone via cancel_booking), failure modes, or what the plugin_id toggle changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core action and its side effect front-loaded and the special-case input mode immediately after. Every clause carries information an agent cannot get from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover safety. What remains thin is recovery behavior (can an approved booking be reverted?) and the effect of plugin_id defaulting to the booking page, both relevant for a destructive mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 50% schema description coverage, the description meaningfully compensates for item_id by revealing it also accepts wl_ waitlist entry ids — a non-obvious format constraint. It says nothing about the required site parameter or the message field beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (approve a booking) plus its immediate side effect (emails the customer), and clarifies a second mode where a waitlist entry_id is accepted as item_id. It is clearly distinguishable from add_booking, cancel_booking and edit_booking by name semantics, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The waitlist sentence gives a concrete usage context that an agent would otherwise not infer: passing a wl_… id books that person in immediately rather than performing a plain approval. What is missing is an exclusion rule against nearby siblings such as edit_booking or set_booking_outcome, so routing depends partly on inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bind_listMake page content a listA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
listYes
pathYesPage, e.g. menu.html
siteYes
fieldsYes{field: selector in a block; "": the block}
importNoAdd items to a list that has some
selectorYesRepeated blocks, e.g. ".menu li"
confirm_tokenNo

Output Schema

NameRequiredDescription
blocksNo
agent_messageNo
confirm_tokenNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint, non-idempotent and open-world, so safety is partly covered; the description adds the crucial two-step behavior (first call only previews items and markup, repeat with confirm_token to actually create and publish). That is real context beyond the annotations, though it does not say whether the publish step is reversible or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence front-loads the core transformation, then the two-mode behavior, with no filler. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the preview/confirm flow plus publish side effect are disclosed. Still, for a destructive 7-parameter mutation, it omits what the preview returns, whether the publish can be undone (undo_list_change exists), and the role of import/list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 57%; selector, fields and path are documented in the schema, and the description adds the meaning of confirm_token (triggering creation rather than preview). But list, import and site get no explanation in either place, so it does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and outcome: turns repeated blocks (a menu) on a page into a list, and names the exact input shape (repeated blocks). The two-phase preview/confirm behavior further distinguishes it from list-creation siblings like save_list or add_list_items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when it applies (only when content is repeated blocks such as a menu) and explains the confirm_token sequence, which is useful usage context. However, it never explicitly contrasts with add_list_items, import_list_items, or save_list, so an agent must infer which list tool to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bring_back_sitesBring sites back to a workspaceB
Destructive
Inspect

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

NameRequiredDescriptionDefault
sitesNo
confirmNo
declineNo
workspaceYes
confirm_tokenNo

Output Schema

NameRequiredDescription
sitesNo
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotent, so the safety profile is covered structurally. The description adds genuinely new context: a confirmation flow where 'confirm: true returns approve_url'. It omits what happens without confirmation, what approve_url is for, and how confirm_token is obtained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the listing behavior before the restore action. Nothing is padding, though the parenthetical about approve_url is slightly buried at the end where it matters most.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Given five parameters and a destructive, open-world mutation, the description covers the essential scenario and the confirmation mechanism; the remaining gaps (decline semantics, token sourcing) are real but secondary for a correct first call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It explains 'confirm' and implies 'sites' (the chosen ones), but leaves 'decline', 'confirm_token' and 'workspace' entirely undocumented in both schema and text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names both a list operation and a restore operation on 'sites that left a workspace', which is more specific than the title but conflates two behaviors into one tool. It never states which sibling to use instead (move_sites, transfer_site, get_site), so the boundary is only inferrable from the frozen-workspace scenario.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a triggering condition ('when it froze' / 'once it is paid again'), which implies when the tool applies. But it never says when not to use it, and it doesn't tell the agent to call it once to list versus again to restore.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_bookingCancel a bookingA
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
refundNoPaid booking; default full
seriesNo"this" (default) or "rest" (this date and every later one)
item_idYes
messageNoA note for the customer
plugin_idNoDefault: booking page
confirm_tokenNo
notify_customerNoEmail the customer (default true)

Output Schema

NameRequiredDescription
agent_messageNo
confirm_tokenNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the destructive, non-idempotent, open-world profile, so the bar is lower; the description still adds real context — that cancellation is a two-step flow that emails the customer, one email per action, and that a paid booking is refunded in full by default. It stops short of spelling out irreversibility or permission requirements, but the side effects are well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded — the core action and its two branches lead, with consequences trailing. The trailing '(approve_url)' is cryptic and slightly muddies the close, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with 8 params, the description covers the consequences an agent most needs (email side effect, refund policy, two-step flow), and an output schema exists so return values needn't be explained. Minor gaps remain around series scope and the confirm_token purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 63%, and the description compensates for the biggest gap by explaining that item_id accepts either a waitlist wl_ id or a class cl_ id and what each does. It also confirms the refund default, though it leaves series, message, plugin_id, and confirm_token unaddressed beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Cancels a booking or declines a request') and immediately qualifies the resource variants: a wl_ entry_id removes a waitlist person, a cl_ class_id cancels the class. That level of specificity lets an agent distinguish this from edit_booking or approve_booking without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives conditional behavior tied to item_id prefixes, which implicitly tells the agent which mode applies, but it never names an alternative tool or states when to prefer approve_booking, refuse_order, or edit_booking instead. Usage is inferable rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_transferCancel a transferA
DestructiveIdempotent
Inspect

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

NameRequiredDescriptionDefault
siteYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds useful behavioral context beyond those flags: the recipient's link stops working and the site itself is unchanged, clarifying the scope of the destructive effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the operation and then states the effect. Every clause adds useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with an output schema and rich annotations, the description provides the key operational context and effect. The main remaining gap is input parameter format, which is a minor deficiency rather than a fundamental omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter ('site') with 0% schema description coverage, so the description must compensate but does not. It does not explain whether 'site' expects an ID, domain, or name, leaving the input format ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Cancels a site's pending transfer') and implicitly distinguishes itself from sibling 'transfer_site'. It also states the target condition ('pending transfer'), so an agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is clear from the phrase 'pending transfer', which indicates the applicable state, and the effect clarifies the intended operation. It does not explicitly name alternatives such as transfer_site or state when not to use it, but the context is sufficiently clear for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_siteCheck a siteA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
pathNoOne page
siteYes
areasNoAny of: seo, ai_search, links, accessibility, speed, privacy_security, features, basics.
site_tokenNoFrom an anonymous deploy (secret)

Output Schema

NameRequiredDescription
moreNo
totalNo
checksNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe, idempotent, read-only operation, so the description's added value is the output contract: severity ordering, per-problem pages/why/fix, and a readable checklist. What it omits is operational behaviour — that it fetches the live site (latency, possible failures) and when site_token is required for anonymous deploys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence that front-loads the verb and resource, then enumerates the output shape without filler. Every clause carries information an agent needs to decide to call it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values needn't be re-explained, and the description is adequate on scope. It is still thin for a live-site fetch: no note about cost/latency, authentication via site_token, or how a single-page path interacts with the area-based scan.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so the schema largely documents the parameters. 'Measured problems by area' loosely ties to the areas enum list, but the description adds no meaning for path (single-page scoping) or site_token (secret for anonymous deploys) beyond what the schema already states — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Checks a live site') followed by a precise account of the returned artifact: problems by area, severity-ordered, with pages, rationale and fix, plus a checklist. This clearly separates it from retrieval siblings like get_site or get_analytics, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'live site' and 'checklist to judge by reading', suggesting an audit of a deployed site rather than stored metadata. There is no explicit when-to-use/when-not statement and no pointer to alternatives such as get_site or get_analytics for plain data retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_listDelete a listC
Destructive
Inspect

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

NameRequiredDescriptionDefault
listYes
siteYes
confirm_tokenNo

Output Schema

NameRequiredDescription
itemsNo
pagesNo
change_idNo
agent_messageNo
confirm_tokenNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark this as destructive and non-idempotent. The description adds useful context that deleting a list also deletes its items, implying a cascade, but it does not explain the confirm_token, irreversibility, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no wasted text. The parenthetical is awkward, but the core destructive action is stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with an undocumented confirm_token and zero parameter descriptions, the description is too sparse. The output schema means return values need not be explained, but safety and parameter requirements are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters. It does not clarify what 'site' or 'list' should contain, and it completely omits the presence and purpose of 'confirm_token'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: it deletes a list and its items. That distinguishes it from save_list and remove_list_items, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives no guidance on when to use this tool versus remove_list_items, undo_list_change, or save_list. The parenthetical '(a list with items: two steps)' is cryptic and does not clarify the usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_siteDelete siteA
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
site_tokenNoFrom an anonymous deploy (secret)
confirm_tokenNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: deletion is permanent and requires an approve_url/confirm_token confirmation round-trip. The second sentence is grammatically unclear, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is short, but the second sentence ('Again with confirm_token: its status.') is cryptic and poorly structured. It is concise without being clear, which is a structural flaw rather than excess length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained in depth, and the annotations cover the destructive profile. Still, for a destructive open-world tool with low schema coverage, the description should more clearly explain the confirmation flow, site_token usage, and what happens on a failed or missing confirmation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, so the description must carry more weight. It partially explains confirm_token (used on a second call to get status) and implies the 'site' value is the site address typed by the user, but it never mentions site_token, which is documented only in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Deletes a site permanently'), and the word 'permanently' signals scope beyond a generic delete. It does not explicitly contrast with the sibling 'bring_back_sites', so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies a two-step procedure: first call returns approve_url for the user to type the site address, then call again with confirm_token to get status. However, it never states when to choose this tool over alternatives or what prerequisites must be met before starting the flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deployPublish siteA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
siteNo
filesNo
patchNotrue: only the changed files
deletedNopatch: paths to remove
previewNotrue: save a private preview, not live
stagingNo
templateNoTemplate, e.g. "brasa" (files sent replace its paths)
workspaceNoNew sites: workspace id or name, or "private"
site_tokenNoFrom an anonymous deploy (secret)
base_revisionNoUpdate: the live revision id last read
confirm_tokenNo
idempotency_keyNoNew sites: a UUID (retries replay)

Output Schema

NameRequiredDescription
siteNo
revisionNo
claim_urlNo
site_tokenNo
agent_messageNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so safety burden is partly covered. The description adds behavioral context by implying that an update requires base_revision (a concurrency guard) and that patch mode needs deleted paths, but it never states that publishing overwrites the live site, how conflicts are handled, or what preview/staging do. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action, and zero filler. The telegraphic 'New: ... Update: ...' phrasing is dense but readable, though a couple of fragments are cryptic enough to cost a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter destructive publish tool with an output schema present, the description covers the mode selection that actually determines whether a call succeeds. The remaining gaps (auth requirements, conflict semantics on base_revision mismatch) are genuine but modest given annotations and an output schema. If strict, a 4 could be argued, but the mode routing is the load-bearing information and it is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 12 parameters and only 67% schema coverage, the description earns credit for tying parameters into coherent bundles ('Update: site and base_revision', 'patch: true with changed files and deleted paths'), which the schema does not express. It leaves patch/preview/staging/workspace/site_token/confirm_token relationships largely unexplained, so it is not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Publishes a new static site or version') and splits the operation into New vs Update modes, which is more precise than the title 'Publish site'. It does not name any sibling (rollback, list_versions, delete_site) to differentiate itself, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditional guidance for choosing between invocation modes: 'New: every file, or a template' and 'Update: site and base_revision with every file, or patch: true with changed files and deleted paths.' That is real when-to-use guidance, but it is scoped to internal modes and says nothing about when to prefer this over rollback, preview_as_user, or list_versions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_bookingChange a bookingA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
nameNo
siteYes
emailNo
forceNo
notesNo
partyNo
phoneNo
startNoNew local time, e.g. "2026-10-15T14:00"
answersNo{question id: answer} ("" removes one)
item_idYes
messageNoA note for the customer
resourceNoWith start: staff or room
waitlistNoClass time or wl_ entry: close (bookings stay; those waiting are emailed) or re-open
plugin_idNoDefault: booking page
confirm_tokenNo
notify_customerNoEmail the customer (default true)

Output Schema

NameRequiredDescription
bookingsNo
agent_messageNo
confirm_tokenNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=true. On top of that the description discloses the two-step confirm_token confirmation flow for moves/emailing changes and the clash-override behavior of force:true, which are meaningful behavioral facts not in the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences covering the main purpose first, then edge cases. Extremely dense but nearly every clause carries information; only the compressed phrasing of the confirm_token sentence borders on cryptic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema and annotations are rich, lowering the burden, and the description handles the tricky interactions. But for a 16-parameter mutation tool with 44% schema coverage, several parameters still lack any documented semantics, leaving the definition short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 44%, so the description must compensate. It adds real meaning for item_id's cl_ convention, the start+resource pairing, confirm_token, and force, but leaves customer-detail fields (name, email, phone, notes, party, site) unexplained, so compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Changes one booking') and enumerates what can change: customer details, or start+resource to move. It also disambiguates item_id (a cl_ prefix means a class). Sibling routing (vs add_booking, cancel_booking, set_booking_outcome) is implied but never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives invocation-level guidance for tricky parameters ('A move or a change that emails someone asks first (confirm_token); force: true books a clash'), which is real when-to-use context. However, it does not state when to choose this over cancel_booking or set_booking_outcome, leaving the main routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

email_usersDraft an email to app usersA
Destructive
Inspect

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

NameRequiredDescriptionDefault
bodyYesPlain text
planNoPlan id; default all
siteYes
subjectYes
confirm_tokenNo

Output Schema

NameRequiredDescription
daysNo
recipientsNo
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds important behavior beyond the annotations: it returns approve_url and nothing is sent until the Site Owner approves. This approval workflow is valuable context. The only gap is that it does not reconcile the draft-only behavior with the destructiveHint annotation or explain permissions beyond Site Owner approval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded, with no wasted text. The scope and approval constraint are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema means return values need not be fully explained, and the annotations cover the safety profile. Still, for a 5-parameter mutation-style tool with low schema coverage, the description should explain the confirm_token and site parameters more fully to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, so the description should compensate. It clarifies that plan can mean all users or one plan, but it leaves site, subject, and especially confirm_token unexplained, even though confirm_token is likely central to the approval flow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: drafts an email to the app's users, with scope limited to all users or one plan. This is clear and specific enough for an agent to distinguish it from unrelated sibling tools such as invite_users or remove_user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It indicates that the tool creates a draft and that sending requires Site Owner approval, which is useful usage context. However, it does not explain when to choose this over alternatives, nor does it mention prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_app_dataExport app dataA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
listNo
siteYes

Output Schema

NameRequiredDescription
export_idNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag the operation as non-read-only, non-idempotent, open-world, and destructive, but the description adds substantial behavioral detail beyond that: the result is emailed to the owner, the link is one-use and valid for 24 hours, the archive contains CSV and files, and the link is not returned through this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads the action and outcome. Every clause adds useful information: delivery method, link lifetime, archive contents, scope, authentication, and the fact that the link is not returned here.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description does not need to document return values. Annotations cover the safety profile, and the description covers delivery, link validity, contents, and scope. The main gap is the unexplained required 'site' parameter, but otherwise the definition is rich enough to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for both parameters. It explains the optional 'list' scope ('one list or all') but does not explain the required 'site' parameter at all. With only half of the small parameter set clarified, the description leaves a meaningful gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and outcome: emails the owner a one-use link to a zip export of one list or all. It clearly distinguishes this tool from direct data retrieval siblings like get_app_data by emphasizing the emailed link and the fact that the link never comes back through this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an implicit use case (requesting an emailed export link) and a prerequisite ('signed in only'), but it does not explicitly say when to use this instead of get_app_data, create_upload_link, or other export-related siblings. The agent can infer the intended use, but alternatives are not addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_visitor_recordsFind a person's recordsA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
siteNo
emailYes
limitNo
scopeNoNo site: all, personal or workspace:<id>
cursorNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds crucial operational context beyond the annotations. Mentioning that the results are 'with copies shown on the site' and that it functions as a 'privacy request' adds necessary behavioral context for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and efficiently communicates the tool's main function and constraints in a single, well-structured sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is clearly defined as read-only, it is not contextually complete for an AI agent because it fails to clarify how the filtering parameters (site, scope) affect the output or the search behavior. The low parameter coverage requires the description to do more work than it does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite having 5 parameters defined in the schema, the description only mentions the primary identifier ('email'). Given the low schema description coverage (20%), the description fails to provide any semantic meaning or context for the filtering parameters like 'site', 'scope', 'limit', or 'cursor'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: finding records based on an email address. It distinguishes its scope by specifying that this is related to a 'privacy request,' which helps differentiate it from general record retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides helpful constraints regarding the tool's scope by noting that functions like 'Export and erase' are explicitly handled by the dedicated application, guiding the agent toward correct tool selection for mutation tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fulfil_orderMark an order sentB
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
item_idYes
messageNoA note for the customer, e.g. tracking
plugin_idYes
confirm_tokenNo

Output Schema

NameRequiredDescription
agent_messageNo
confirm_tokenNo

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare a destructive, non-idempotent, open-world write operation. The description adds useful context by naming the external side effect (emails the customer) and the optional note, though it does not explain irreversibility or the meaning of the two-step/confirm_token flow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single front-loaded sentence with no wasted words. The parenthetical '(two steps)' is slightly cryptic without follow-up, but the overall brevity is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema and rich annotations reduces what the description must cover. However, for a destructive five-parameter mutation with 20% schema coverage, the description leaves important gaps around confirm_token and the required identifiers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 20%, so the description should compensate for undocumented parameters. It mentions only the optional note, which the schema already describes, and leaves site, plugin_id, item_id, and especially confirm_token unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it marks an order sent and emails the customer. That is clearly distinguishable from sibling operations like refund_order and refuse_order, though it does not explicitly route the agent away from those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies the tool is for fulfilling an order, but gives no explicit guidance on when to use it versus refund_order, refuse_order, or other order-related siblings. There are no stated preconditions, exclusions, or alternative-selection rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_accountGet sites and planB
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
includeNoAny of: billing, usage, storage, downgrade, notifications, all. Extra sections
sites_limitNoSites per call (default 20)
sites_queryNoFilter by name, title or workspace
sites_cursorNonext_sites_cursor from the last call

Output Schema

NameRequiredDescription
newNo
sitesNo
noticesNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds one genuinely new fact, that sites are returned 20 at a time and are searchable, but says nothing about the cursor round-trip or what 'notices' and 'new-item counts' actually contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the payload list packed into parenthetical groups. No filler, though the comma-separated enumeration is dense and slightly hard to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich output schema and full param coverage, the description does not need to explain return values, and it doesn't. What is missing is routing context, i.e. why an agent would pick this over the many narrower sibling getters, which matters for a tool whose payload overlaps several of them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, documenting `include` values, `sites_limit` default 20, `sites_query` filter fields, and `sites_cursor`. The description's '20 at a time, searchable' merely restates the limit and query params without adding format or interaction detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the signed-in account') and enumerates the payload sections (plan, workspaces, sites, notices, counts, programs). It is clearly distinguishable from single-resource siblings like get_site or get_domains, though it never names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to call this versus get_site, get_activity, or get_domains, and no signal about when the extra `include` sections are worth requesting. The agent must infer that this is the 'everything about my account' entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_activityRead the activity logA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
siteNo
typeNo
limitNoDefault 50
beforeNonext_before from the last call
personNoEmail or id
workspaceNoWorkspace id or name (default: own account)

Output Schema

NameRequiredDescription
entriesNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive safety. The description adds real context beyond them: newest-first ordering and role-based visibility (Owner sees all, Admin all but billing, others only their own) plus the paid-plan prerequisite.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense, front-loaded sentences with no filler; the scope/permission detail follows the core purpose. Slightly compressed ('who did what ... where and when') but readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only log tool with annotations and an output schema, the description supplies the key non-schema facts: ordering, event categories, and per-role visibility. Remaining gaps (site/person filter semantics) are covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% with an output schema present. The description usefully maps the `type` enum categories (publishing, rollbacks, people, domains, settings, protection, visitor data, AI apps, billing) and the newest-first ordering clarifies how `before` pagination works, adding meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Returns the activity log') and enumerates the event categories it covers, so an agent knows this is the audit/event feed rather than analytics. No explicit distinction from siblings like get_analytics, keeping it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains access scoping (personal paid account vs. workspace roles) which implies when results differ, but it gives no explicit when-to-use-this-vs-alternatives guidance or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analyticsGet visitor numbersA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
daysNoDays back, today included (default 7)
siteYes
recentNoAlso counts per event, last 30 minutes
compareNoAlso the previous period (paid plans)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: the data is cookieless, retention is limited by plan ('for the days the plan keeps'), some metrics are paid-plan-only, and taps outside the UK are excluded (taps_not_counted). These are real caveats that affect interpretation of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the headline result and then the metric inventory and the caveats. The nested parenthetical is dense but every element (metrics, plan gating, UK exclusion) carries information. Slightly heavy in one clause, so a 4 rather than a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values; it instead spends its budget on data limitations and plan gating, which is the right choice for a 4-param read tool. Minor gap: it never mentions the required `site` parameter or the default 7-day window, leaving those entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 75% schema coverage the schema documents days, recent, and compare. The description still adds meaning by tying the `days` window to plan retention limits and by marking the extra metrics (and implicitly `compare`) as paid-plan features. It does not restate the `site` or `recent` semantics, which the schema already handles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Returns') plus resource ('cookieless visitor numbers') with an explicit enumeration of the metrics returned (views, visitors, contacts, and paid-plan extras). It clearly describes the output domain. It does not explicitly differentiate from the closest sibling, find_visitor_records, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to use this tool versus alternatives such as find_visitor_records or get_activity, nor any prerequisites. The only contextual hint is the parenthetical retention phrase 'for the days the plan keeps', which implies a data-availability constraint but is not framed as usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_appRead the appB
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
siteYes
checkNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent, closed-world read, so the bar is lower. The description still adds real value by noting the diagnostic behavior of check=true and that the "needs attention" section is counts-only, but it omits that check=true is a heavier scan and doesn't clarify the odd const-true constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence front-loads the resource and then lists return contents with no filler. It reads as a run-on, with the check clause tacked on the end, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be described, and annotations cover the safety profile. Given a two-parameter read tool, the description supplies the payload overview and the check behavior — the only real gap is `site` format, which keeps this from being flawless but is minor in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It gives partial meaning for `check` (checks pages and settings) but says nothing about the required `site` parameter — no expected format (subdomain, ID, or domain) — and never explains why `check` is constrained to the literal true rather than a boolean flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Reads a site's app") and enumerates the payload (on/off, sign-up, path, plans, user counts, lists with row counts), so an agent knows exactly what comes back. It does not differentiate itself from close siblings such as get_site, get_app_data, or check_site, and the embedded check semantics overlap with check_site.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: "check: true checks pages and settings" hints at when to enable the extra scan, but there is no statement of when to call this versus get_site, get_app_data, or check_site, and no prerequisites or exclusions. An agent must infer selection from the payload list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_app_dataRead users' entriesB
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
listNo
siteYes
groupNo
queryNo
sinceNo
cursorNo
memberNo
statusNo
file_idNo
item_idNo
membersNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond them: pagination is 50 per call with a 'next' mechanism, an owner-opt-in requirement, and a warning that user text is untrusted. It does not cover error behavior or full rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is very short and front-loads the main resource, but it is telegraphic and fragmented ('next' is ambiguous). For an 11-parameter tool it is under-specified rather than appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return formatting needn't be explained, and annotations cover safety. However, with 11 parameters and no schema descriptions, the description leaves most parameters undocumented and the tool's usage contexts incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 11 parameters, so the description must carry the burden. It explains only members, item_id, file_id, and vaguely the list parameter; site, group, query, since, cursor, member, and status receive no explanation at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (users' entries of a list) and distinguishes several modes: list entries, members: true, item_id for a single entry with comments, and file_id for a file. It is specific about what gets returned, though it never contrasts the tool with siblings like get_lists or export_app_data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a prerequisite ('Needs the owner's opt-in') and hints at modes, but gives no guidance on when to choose this tool over alternatives such as get_lists or export_app_data. The agent is left to infer the selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_domainsCheck or find domainsA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
siteNo
tldsNoWith query: endings to check, e.g. ["com","co.uk"]
queryNoA name, idea or domain to find, e.g. Maison Cafe

Output Schema

NameRequiredDescription
domainsNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still adds real value by disclosing that pending domains are re-checked live (latency/side-effect nuance) and that no domain can actually be purchased here. It says nothing about result limits or what an empty lookup returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with zero filler, front-loaded with the object of the operation before the two mode branches. The telegraphic 'with site, the ones on it' phrasing is efficient but slightly clipped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description still flags status and DNS records as payload. For a three-param, no-required-param read tool this is nearly sufficient; only the tlds interaction and multi-param combination behavior are left open.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description gives meaning to 'site' (which the schema leaves undocumented) and to 'query'. However it never mentions 'tlds', the third parameter, so the agent must infer from the schema that it only applies alongside 'query' and what happens if both 'site' and 'query' are supplied. With 67% schema coverage this is roughly baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists custom domains') and immediately splits the tool into its two distinct modes, tied to the 'site' and 'query' parameters. An agent can tell this apart from the mutation siblings add_domain/remove_domain without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: pass 'site' to inspect domains already on a site, pass 'query' to discover names available to buy. The parenthetical '(Page Lemon sells none)' heads off a wrong assumption about purchasing. It does not name the mutation siblings it should be paired with when the intent is to add or remove.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_free_slotsFind free booking timesA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD
siteYes
partyNo
serviceYesId or name
resourceNoStaff or room
plugin_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still adds real behavioral value beyond them: 'as customers see them' signals that returned slots respect customer-facing booking rules rather than an admin view, and the default-date behavior is not encoded anywhere in the schema. Remaining gaps (timezone, whether slots are live, result granularity) are partly mitigated by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb and scope first and the default behavior parenthetically appended. No filler, nothing redundant with the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema and annotations remove the burden of describing return values and safety, and the core query is explained. But for a six-parameter tool, the required 'site' parameter is never mentioned and the party/resource filters — which materially alter availability — are left completely unexplained, leaving the agent to infer their effect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: site, party, resource and plugin_id carry no descriptions. The description only speaks to service and date, and never explains that party size or resource (staff/room) meaningfully change which slots are returned — the most important semantic for an availability query. It does not compensate for the gaps the schema leaves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Finds the free booking times') scoped to a service and a date, which is far more precise than the title alone. It implicitly distinguishes itself from the mutation siblings (add_booking, edit_booking, cancel_booking) by being the read-side availability lookup, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(default: the first with any)' explains what happens when date is omitted, which is useful usage guidance. However, there is no statement of when to prefer this tool over a direct booking attempt, no prerequisite context (e.g. check availability before calling add_booking), and no guidance on when to pass party or resource filters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listsRead listsB
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
qNoText anywhere
toNo
sumNoNumbers: {op, field, by}
fromNo
listNoIts items
siteNo
viewNoSaved filter
limitNo
scopeNoNo site: all, personal, workspace:<id>
sinceNo
stateNoBookings: upcoming|…|all
whereNo{column: value}
cursorNo
expandNoLinked items' fields
exportNoA download link
statusNoForm replies: new|read|spam|archived|binned|all
serviceNo
resourceNo

Output Schema

NameRequiredDescription
itemsNo
next_cursorNo

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), so the bar is lower, and the description still adds two real behavioral traits: entity visibility ('shown on its pages' vs 'private') and 'Marks nothing read', which tells the agent this read has no side effects on form-reply status, distinguishing it from mark_form_replies. Pagination and filtering behavior are still undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loads the resource, but the sentence-fragment style ('No site: counts for every site.', 'Marks nothing read.') sacrifices parseability for brevity. For an 18-parameter polymorphic tool it is under-specified rather than efficiently concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape needn't be explained, but the tool has 18 optional parameters and multiple modes, and the description omits pagination, filtering (where/view/q), export formats, and how mode interacts with scope. An agent could not reliably compose a valid call from this text alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 56%, so the schema documents roughly half the parameters and the description must carry more weight. It adds meaning for site, list, and scope ('No site: all, personal, workspace:<id>' pattern) and ties status/state to form replies and bookings, but says nothing about q, where, sum, expand, export, limit/cursor, or service/resource, leaving roughly a dozen parameters semantically thin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does state the resource (lists, form replies, bookings) and encodes three distinct modes: no site -> per-site counts, site -> that site's lists, list -> its items. However, the telegraphic phrasing ('Reads Lists: a site's lists (menu, team; shown on its pages)') forces the agent to decode intent, and no sibling is named or excluded (e.g. get_site, export_app_data, save_list).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides mode-selection conditions ('No site: counts for every site', 'With list: its items, filtered'), which is genuine routing guidance for a polymorphic tool. But it never states when to prefer this over overlapping siblings, and prerequisites or required parameter combinations per mode are left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_siteRead siteA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
pathNoOne file (live unless as_of or version)
siteYes
as_ofNoWith path(s): as live at this ISO date-time
pathsNoUp to 20 files, 512 KB in all
cursorNo
prefixNo
stagingNo
versionNoWith path(s): from this version number
downloadNotrue: 1-hour zip links (one per GB)
site_tokenNoFrom an anonymous deploy (secret)

Output Schema

NameRequiredDescription
filesNo
contentNo
live_revisionNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful context such as files being returned 200 at a time and older copies being available via as_of/version, but it does not explain pagination via cursor or other operational behavior beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with front-loaded purpose and semicolon-separated clauses for the main modes. There is essentially no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover safety. Still, for a 10-parameter read tool with only 60% schema description coverage, the description leaves important operational concepts such as cursor-based pagination, prefix, and staging unclear, so it is only partially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, and the description adds some meaning for path, paths, as_of, version, and site_token. However, several parameters, notably cursor, prefix, staging, and the required site parameter, receive no useful semantic explanation in either the description or schema, leaving notable gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: it “reads a site” and enumerates status, files, single-file mode, multi-file mode, older copies, and claim status. This is clear enough for an agent to know what the tool does, though it does not explicitly distinguish itself from nearby siblings such as check_site or list_versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains mode selection within the tool — path for one file, paths for several, as_of/version for older copies, site_token for claimed status. However, it gives no guidance on when to use this tool instead of alternatives like check_site or list_versions, and includes no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_list_itemsImport list itemsA
Destructive
Inspect

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

NameRequiredDescriptionDefault
csvNoWith a header row
listYes
rowsNoOr {field: value} each (id: change it)
siteYes
confirm_tokenNo
create_missingNoLink fields: add unknown names

Output Schema

NameRequiredDescription
addNo
addedNo
previewNo
change_idNo
agent_messageNo
confirm_tokenNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, openWorld=true, and non-idempotency. The description adds important behavioral context beyond annotations: the first call is a preview, and confirm_token commits the import as one change, which partially mitigates the destructive profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It conveys purpose and the most important two-phase behavior immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema and annotations carry return values and safety signals, and the description covers the essential preview/confirm flow. Still, for a destructive six-parameter import tool, key parameters such as site, list, and create_missing remain unexplained, leaving meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 50% schema description coverage, the description clarifies that csv and rows are alternative input formats and that confirm_token switches from preview to save. It does not explain site, list, or create_missing, so it only partially compensates for the schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Imports CSV or rows into a list.' This clearly distinguishes bulk import from sibling tools like add_list_items or update_list_items, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the two-step preview/confirm workflow, which is useful invocation guidance. However, it does not say when to use this tool instead of add_list_items, update_list_items, or save_list, so usage is implied rather than fully framed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invite_usersInvite app usersB
Destructive
Inspect

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.

NameRequiredDescriptionDefault
planNoA plan id the invite is for
siteYes
emailsYes
confirm_tokenNo

Output Schema

NameRequiredDescription
requestsNo
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true, non-idempotent, open-world. The description adds real behavioral context beyond them: a 50-recipient cap per call, that invitation emails are dispatched, that it can serve as approval for pending join requests, and the three result buckets returned. It does not mention permission/authorization requirements, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact clauses with the core action front-loaded and no filler; the 50-item cap and return buckets each earn their space. Slightly terse to the point of leaving key parameters unaddressed, but structurally sound.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is optional and the brief 'returns invited, already and refused' is a bonus. However, for a destructive, non-idempotent mutation with 4 params at 25% coverage, the missing explanation of site, emails, and especially confirm_token leaves an agent under-informed about correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%: site and emails are undocumented, and confirm_token — an unexplained, behaviorally significant parameter for a mutation — is never addressed in the description either. Only 'plan' is documented, and only in the schema. The description does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource (invite people to a site's app) and adds scope detail (up to 50 per call, invitation email sent). It does not differentiate itself from the close sibling add_people or email_users, which could plausibly overlap, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The one usage-like statement — naming someone who asked to join approves them in two steps — is genuinely useful context about an alternate effect. But there is no explicit guidance on when to prefer this over add_people or email_users, and no prerequisites or exclusions stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

leave_workspaceLeave a workspace planB
Destructive
Inspect

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.

NameRequiredDescriptionDefault
takeNo
offerNo
confirmNo
bookingsNo
workspaceYes
keep_editorsNo
confirm_tokenNo

Output Schema

NameRequiredDescription
sitesNo
questionsNo
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true and readOnly=false, so the safety profile is covered. The description adds meaningful behavior beyond annotations: the workspace freezes 14 days after the plan ends, and confirm: true returns approve_url. It still omits auth requirements and does not explicitly discuss irreversibility, but it adds solid operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose before the confirm behavior. The phrase 'Without confirm: the questions' is terse to the point of ambiguity, but overall there is little wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with 7 parameters and no schema descriptions, the definition leaves substantial gaps: it does not adequately explain the parameters or the distinction between take, offer, keep_editors, and confirm_token. The output schema reduces the need to explain return values, and the freeze/confirm notes help, but the parameter documentation is not complete enough for confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% with 7 parameters, so the description must carry the burden of explaining them. It gestures at concepts such as site migration, editor retention, bookings, and confirm, but does not map those concepts to the actual parameter names take, offer, keep_editors, confirm_token, or workspace clearly enough for reliable use.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource and action: preparing to end a workspace plan, including site migration, editor retention, bookings, and the post-plan freeze. It does not explicitly differentiate this tool from siblings such as save_plan, move_sites, or transfer_site, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains a two-step confirm flow: call without confirm to get questions, then use confirm: true to receive approve_url. That is useful invocation guidance, but it does not state when to choose this tool over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_peopleList peopleB
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
siteYes

Output Schema

NameRequiredDescription
peopleNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value by naming what the listing surfaces (roles, pending invites, pending transfer, protection), but says nothing about access requirements for the call or how large result sets are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the enumeration of contents following. Slightly list-heavy but no wasted clauses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape needn't be described, and the tool is low complexity with one parameter. The remaining gap is the site identifier format and any prerequisite access level, which the description leaves unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain what form the 'site' value takes (ID vs. domain vs. workspace-qualified name), which is the one thing an agent could get wrong here. With a single undocumented required parameter, the description had the burden and did not carry it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (lists) and resource (who has access to a site) and enumerates the contents: roles, pending invites, users, pending transfer, protection. That distinguishes it from sibling mutations like add_people, remove_people, and invite_users, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives such as get_site, invite_users, or remove_people. An agent must infer from the verb 'lists' that this is the read path and the others are the write paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pluginsList pluginsA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
langNoThe page's <html lang>, e.g. de (one snippet per language)
siteNo
plugin_idNo

Output Schema

NameRequiredDescription
pluginsNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds mode-dependent behavior and enumerates return contents for the plugin_id case, but does not discuss pagination, limits, or permissions; with an output schema present, the return-field list adds less unique value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that conveys several modes efficiently. The semicolon-separated clauses are dense but each carries meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given annotations covering safety and an existing output schema, the description supplies the main missing context: the three query modes and the richer return shape when plugin_id is supplied. Minor gaps around pagination or auth are acceptable here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, with site and plugin_id undocumented in the schema. The description compensates well for those two parameters by explaining what omitting site does and what plugin_id retrieves; lang is left to the schema, which does document it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (lists plugins) and distinguishes modes by site/plugin_id. It does not explicitly contrast with siblings like add_plugin or update_plugin, but the purpose is clear from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the parameter-driven modes (no site = per-site listing, plugin_id = full detail) which implies when each form is useful. It does not say when to use this versus alternatives such as update_plugin or remove_plugin, so guidance remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_versionsList versionsA
Read-onlyIdempotent
Inspect

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

NameRequiredDescriptionDefault
byNoBy this person (part of name or email)
siteYes
sinceNoAfter this ISO date-time
beforeNoOlder than this version number
since_daysNo
site_tokenNoFrom an anonymous deploy (secret)

Output Schema

NameRequiredDescription
versionsNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety traits: readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds useful behavioral context beyond annotations: newest-first ordering, a page size of 200, and which fields are returned. It stops short of explaining authentication or pagination continuation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It puts the core action first, then adds ordering, pagination, and return-field detail efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only listing tool with rich annotations and an output schema, so the description does not need to explain return values in depth. It is nearly complete, though it omits how the optional filters and pagination are meant to be used.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, so the schema carries most parameter meaning for 'by', 'since', 'before', and 'site_token'. The description adds no filter semantics beyond the implicit site scope, and 'since_days' plus the required 'site' parameter remain undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Lists a site's versions,' and adds scope, ordering, and returned fields. It is clear what the tool does, but it does not explicitly distinguish itself from the related sibling rollback tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool returns but gives no explicit guidance on when to use it versus alternatives such as rollback. There are no stated exclusions, prerequisites, or workflows.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_form_repliesMark inbox itemsB
DestructiveIdempotent
Inspect

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.

NameRequiredDescriptionDefault
allNoWith mark read: every notice (yours) or every new item of that kind
markYes
siteNoNot needed for notice ids or all
item_idsNoFrom get_lists, or notice ids (nt_…) from get_account
plugin_idNoFound from item_ids

Output Schema

NameRequiredDescription
updatedNo

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds the critical detail that 'bin' means deletion after 30 days, which annotations do not convey, giving an agent real consequence information before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but it is a dense semicolon chain that is hard to parse. The first sentence is front-loaded with the core action, but the second sentence crams several conditional behaviors into one run-on clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and annotations cover return values and safety, and the description supplies the 30-day deletion note. It still leaves ambiguity about parameter combinations, such as whether item_ids are required for all mark values and how plugin_id relates, so an agent may hesitate on edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the schema already documents most parameters. The description adds combinational semantics such as 'with mark read, also account notice ids' and 'all: every notice, or every new form reply', but these are terse and partially redundant with the enum descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause states a specific verb and resource ('Marks form replies or bookings'), but the scope quickly expands to notices, orders, and account notice ids, making the actual domain muddled. An agent can infer it is a bulk-marking tool, but the jargon ('mark', 'bin', 'nt_…') obscures the precise purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'only when the user asks' gives one explicit guardrail, and the description implies use with specific mark values. However, it names no alternatives and does not state when not to use this versus other mutation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_sitesMove sites to a workspaceB
Destructive
Inspect

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.

NameRequiredDescriptionDefault
modeNo
planNo
sitesNo
peopleNoSite Developer emails to invite
confirmNo
workspaceNoA paid workspace id; omit for a new one
confirm_tokenNo
personal_planNo

Output Schema

NameRequiredDescription
move_urlNo
questionsNo
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark this as destructive, open-world, and non-idempotent, and the description adds important behavioral detail: the two-step confirmation flow and the immediate access loss for Site Developers who are not invited. It does not cover auth or rate-limit behavior, but it does disclose the key destructive consequence beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences and front-loads the core action before explaining the confirmation flow and access-loss warning. The phrasing around 'Without confirm: the questions...' is somewhat compressed, but there is little wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 8-parameter destructive tool, it covers purpose, confirmation behavior, and the critical access-loss effect, and an output schema exists. Still, the low schema coverage and absence of alternative guidance or parameter explanations leave meaningful gaps for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 8 parameters and only 25% schema description coverage, the description must compensate but largely does not. It mentions confirm: true and implies people/sites handling, but leaves mode, plan, personal_plan, confirm_token, workspace, and site-selection semantics unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it moves personal sites and their Site Developers into a paid workspace. The scope is clear enough to distinguish it from generic site operations, but it does not name related siblings like transfer_site or bring_back_sites.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives procedural guidance for the confirmation flow: without confirm it returns questions, a recommendation, and move_url, then confirm: true uses approve_url. However, it does not say when to choose this tool over alternatives such as transfer_site or bring_back_sites, nor does it state prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_as_userPreview as a userAInspect

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.

NameRequiredDescriptionDefault
planNo
siteYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint false, destructiveHint false), but the description adds meaningful behavior beyond them: the test user is one-hour, is never counted, and its rows and files are deleted afterward. It does not cover permissions or rate limits, but the ephemeral lifecycle and cleanup are well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficiently structured sentence that front-loads the action and uses a concise parenthetical for the important lifecycle caveats. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return value needn't be fully explained, but the description still helpfully names signin_url. However, for a two-parameter tool with 0% schema description coverage, the missing meaning of 'site' and 'plan' leaves a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are two parameters with 0% schema description coverage, so the description carries the full burden of explaining them. It does not define what 'site' identifies or what 'plan' controls; it only describes the tool's overall effect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Makes a one-hour test user') plus the outcome ('returns signin_url to see the app as a user'). It is clearly distinct from read/list tools, but it does not explicitly name alternatives such as invite_users to rule them out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'to see the app as a user' implies the use case, but there is no explicit when-to-use guidance, no exclusions, and no comparison against sibling tools like invite_users or email_users. Usage is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protectProtect siteA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
modeNoRequired unless confirm_token
pathNo"/" (default, whole site) or a part such as /students
siteYes
emailsNomembers on a path: everyone who may see it (omit: the site's list)
confirm_tokenNo

Output Schema

NameRequiredDescription
protectedNo
approve_urlNo
members_onlyNo
agent_messageNo
confirm_tokenNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is known. The description adds important operational context: passcodes are set via protect_url and never in chat, and member lists are managed through add_people. It does not explain the 'internal' mode, but overall adds value beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence with nested parentheses and semicolons; it is front-loaded and contains no filler, but the structure is cramped and harder to parse than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a destructive mutation with annotations covering safety and an output schema, the description covers the main modes and security-sensitive passcode handling. However, the unexplained 'internal' mode and confirm_token leave the agent with gaps for a 5-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60% and the description clarifies the mode choices (passcode vs members) and the meaning of path ('/' whole site or a part) and emails. It omits the 'internal' mode and the confirm_token parameter, leaving gaps that the schema also does not fully cover.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Protects') and resource ('site or one path'), and distinguishes the passcode and members modes with concrete constraints. It does not explicitly contrast with the sibling 'unprotect', but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to choose passcode (set via protect_url, never in chat) vs members (invite-only via add_people on '/', or emails on a path), and points to list_people for verification. Lacks explicit when-not guidance, but mode selection is well covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refund_orderRefund an orderB
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
amountNoSmallest unit (default all)
item_idYes
messageNoA note for the customer
restockNoPut stock back (default true)
plugin_idYes
confirm_tokenNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value by disclosing the asynchronous owner-approval step and status token, but omits practical behavior such as what happens if approval is never granted or whether an approval expires.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the operation stated first and the workflow caveat second; no filler. It is dense but not padded, though 'in full or amount' reads slightly awkwardly and references approve_url, which is not a parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the approval flow is surfaced. Still, for a destructive money-moving tool the description leaves the required identifiers and the approval lifecycle vague, which is the main remaining hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 43%, and the description compensates for just two fields: amount (full vs. partial) and confirm_token (status lookup). The three required identifiers site, plugin_id and item_id are explained nowhere, which is a material gap for an agent constructing a call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Refunds an order') plus the scope nuance of full vs. partial amount. It does not distinguish itself from the closely related siblings fulfil_order and refuse_order, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete precondition — the refund only resolves once the owner approves the money on approve_url — and explains what confirm_token is for. It says nothing about when to prefer this over refuse_order or fulfil_order, so no explicit alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refuse_orderRefuse an orderA
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
item_idYes
messageNoA note for the customer
restockNoPut stock back (default true)
plugin_idYes
confirm_tokenNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true, idempotent=false and openWorld=true; the description adds genuinely new behavioral context: the refund is full, it is gated on owner approval at approve_url, and status is later checked via confirm_token. It stops short of saying what happens if approval never arrives or whether the order becomes unrecoverable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the action, then the approval gate, then the status check. No filler and nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the approval flow is covered. Still, for a destructive multi-site mutation with three required but undocumented identifiers, the description leaves the agent guessing how to supply site/plugin_id/item_id and what state the order ends in.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 33%, with message and restock self-documented, and the description clarifies the role of confirm_token (status check). But site, plugin_id and item_id are unexplained, and approve_url is referenced as if it were a parameter although it is absent from the schema, which can confuse the caller.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource ('Refuses an order') and adds the refund consequence, so the effect is unambiguous. It does not explicitly contrast with the sibling refund_order or cancel_transfer, so differentiation is partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The workflow is implied ('once the owner approves the money on approve_url'), which tells the agent this is a multi-step, non-immediate action. However, it never states when to pick this over refund_order or how to handle an unapproved order, leaving exclusions to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_app_webhookRemove an app webhookB
DestructiveIdempotent
Inspect

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

NameRequiredDescriptionDefault
idYesmwh_ id
siteYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new behavioral context — that removal is immediate and that pending deliveries are discarded — which an agent cannot derive from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact clause with no filler; the destructive consequence is placed directly after the action so it is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations carry the safety profile, so return values and reversibility need not be spelled out. However, the undocumented 'site' parameter leaves a real gap that the description does not close.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: 'id' is documented as an 'mwh_ id' but 'site' has no description anywhere. The description adds nothing about either parameter, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Removes an app-event webhook'), which cleanly separates it from the sibling add_app_webhook. It does not explicitly name the counterpart, but the add/remove pairing makes intent unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives, no prerequisites or permission requirements, and no mention of what to do instead if the webhook should merely be disabled. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_domainDisconnect a domainB
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
hostnameYese.g. www.example.com
confirm_tokenNo

Output Schema

NameRequiredDescription
agent_messageNo
confirm_tokenNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is known. The description adds useful context that the domain remains with its registrar and that the operation takes two steps, but it does not explain what those two steps are, whether site downtime occurs, or what confirmation is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with no wasted wording. The core action is front-loaded, followed by the key caveat that the domain stays with its registrar.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. For a destructive three-parameter mutation, the description gives the high-level effect and one important caveat, but it omits the two-step confirmation process and confirm_token semantics, leaving key operational details to be inferred.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, with only hostname having a description. The description adds no meaning for site or confirm_token, and does not explain how confirm_token relates to the 'two steps' despite that being the most important parameter for a destructive operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: disconnecting a custom domain from a site. It is clearly distinct from add_domain and get_domains, though it does not explicitly contrast with transfer_site or other domain-related siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'disconnects a custom domain from a site' and the note that the domain stays with its registrar, which suggests retaining ownership while detaching from the site. However, it does not explicitly say when to use this versus transfer_site or other alternatives, nor does it state prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_list_itemsRemove list itemsA
Destructive
Inspect

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

NameRequiredDescriptionDefault
idsYes
listYes
siteYes

Output Schema

NameRequiredDescription
change_idNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavior: the change surfaces on the site within seconds (propagation delay) and is reversible via undo_list_change. Permissions and partial-failure behavior remain undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with the action front-loaded and the two most decision-relevant facts (latency, undo path) appended. No filler, nothing repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (3 required scalars), an output schema exists so return values need no prose, and annotations cover the destructive/idempotent profile. The remaining gap is failure semantics — what happens when an id does not exist — which is minor for this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden for three required parameters. It implies that `ids` are list-item identifiers and that `list` scopes them, but the `site` parameter is never mentioned and it never says multiple ids can be passed in one call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Removes items from a list") plus the lookup key ("by id"), which cleanly separates it from add_list_items, update_list_items and delete_list. It does not name those siblings explicitly, but the remove-vs-add/update distinction is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical points to undo_list_change as the recovery path, which is a genuine usage signal, but there is no statement of when to prefer this over update_list_items or delete_list, and no prerequisites. Usage is implied by the verb rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_peopleRemove peopleA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
siteYes
entriesYesEmails or company domains
confirm_tokenNo

Output Schema

NameRequiredDescription
agent_messageNo
confirm_tokenNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructive annotation, the description discloses concrete effects: Site Developers and Viewers lose access, workspace Viewers lose access to every workspace site, and users are signed out. It also clarifies the permission boundary that non-owners can only remove themselves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted framing. It is slightly dense due to nested parentheses and the compressed '(owner; two steps)' phrase, which could be easier to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the destructive consequences and permission model well, and output-schema richness means return values need not be explained. But for a destructive two-step operation, it leaves confirm_token and the confirmation workflow unexplained, which is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%. The description implies the site target but does not explain entries or confirm_token, and 'two steps' does not clarify how confirm_token is used. Most parameter meaning must be inferred from the schema, which itself documents only entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Removes people from a site.' The site scope and role effects distinguish it from siblings such as remove_user, leave_workspace, and add_people without needing to name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear permission context: owners can remove people, while others may remove only themselves. However, it does not explicitly name alternative tools or state when not to use this versus remove_user or leave_workspace.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_pluginRemove a pluginB
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
plugin_idYes
confirm_tokenNo

Output Schema

NameRequiredDescription
agent_messageNo
confirm_tokenNo
upcoming_bookingsNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true and non-idempotent behavior, so the description adds valuable context: the two-step nature of the operation and the 30-day exportable data retention. It does not cover permissions or error behavior, but the added details are meaningful beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the action and then add a key behavioral note. Every sentence earns its place with no unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core action, the two-step process, and data retention, which are important for a destructive tool. However, with no parameter descriptions and no explanation of how the confirm_token fits into the two steps, an agent lacks enough information to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the three parameters. It mentions 'two steps' but never clarifies the roles of 'site', 'plugin_id', or 'confirm_token', leaving the agent without any semantic guidance for constructing the call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Removes a plugin from a site.' This clearly distinguishes it from add_plugin, update_plugin, and list_plugins, though it does not explicitly name alternatives or scope constraints for the site.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies a two-step removal process and notes that data remains exportable for 30 days, giving some context for when and how to use it. However, it provides no explicit guidance on when to use this tool versus update_plugin or other sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_userRemove an app userB
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
emailYes
confirm_tokenNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-idempotent behavior. The description adds meaningful context beyond annotations: removal requires Site Owner confirmation via approve_url, paid memberships end with their period, and pending join requests are declined instead with an email flow. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action. The second sentence packs useful behavioral details, though phrases like 'they are emailed; two steps' are slightly cryptic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values need not be described. However, the description leaves gaps in parameter semantics and does not clarify how this tool differs from remove_people. It is adequate for behavioral context but incomplete for a destructive tool with a confirmation token.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for three parameters. The description hints at a confirmation flow via 'approve_url,' but it does not explain what site, email, or confirm_token mean or how confirm_token is obtained. It does not compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Removes a user.' It is clear what the tool does, but it does not explicitly distinguish this from sibling tools like remove_people, leaving some ambiguity about which user-removal tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through conditions like 'once the Site Owner confirms on approve_url' and 'a pending join request is declined instead,' but it does not explicitly state when to use this tool versus remove_people or other alternatives. Usage guidance is present but indirect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollbackRestore a version or previewA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
siteYes
discardNoWith a preview id: delete it
revisionYesRevision id or version number (list_versions), or a preview id (get_site previews)
site_tokenNoFrom an anonymous deploy (secret)
base_revisionYesThe live revision id you last saw

Output Schema

NameRequiredDescription
revisionNo
agent_messageNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds valuable non-obvious behavior: versions are never deleted, a conflict occurs if the site changed since base_revision, and discard=true deletes a preview. This is meaningful context beyond the annotations, though auth details for site_token are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with no wasted words. The core mutation and non-deletion guarantee are front-loaded, followed by the two operational caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with an output schema and annotations, the description supplies the key behavioral facts an agent needs: non-deletion, conflict semantics, and preview discard. It does not cover the site_token secret or return format, but the output schema and parameter schema reduce the need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high at 80%, so the baseline is 3. The description still adds consequence-level semantics for base_revision ('conflict if the site changed since base_revision') and for discard ('deletes a preview'), which goes beyond the schema's terse parameter notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Makes ... live as a new version') and resource ('an earlier version or a preview'), clearly distinguishing rollback from list_versions or get_site. It does not explicitly name a sibling alternative, which keeps it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage via the conflict condition ('a conflict if the site changed since base_revision') and the discard flag for previews. However, it does not state when to choose rollback versus deploy, preview_as_user, or list_versions, leaving alternatives unaddressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_app_ai_promptSave an AI promptC
DestructiveIdempotent
Inspect

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.

NameRequiredDescriptionDefault
kindYes
nameYes
siteYes
fieldNo
listsNo
scopeNo
periodNo
audienceNo
templateYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true and openWorld=true, and the description adds useful context: the block changes at once, execution uses the owner's AI key or a trial, and the result is markup. This complements the annotations without contradicting them. It stops short of richer details such as permissions or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loads the action, and adds behavioral context without wasted sentences. The phrasing 'a block of that name changes at once' is slightly awkward but still purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter mutation tool, the definition leaves required fields like site, kind, and template unexplained and gives no semantics for optional parameters. The output schema and annotations reduce some burden, but the description does not fill the schema-description gap an agent needs to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across nine parameters, and the description does not explain site, name, kind, template, field, lists, scope, period, or audience. The phrase 'block of that name' weakly hints at the name parameter, but this is far from enough to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: saves an AI block prompt. The parenthetical about the named block changing at once further clarifies the object. It does not explicitly distinguish itself from sibling save_* tools, but the AI-block wording is enough to identify the core operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It does not say when to use this tool instead of siblings such as save_app_list or save_list, nor does it state when not to use it. The AI-key/trial note is execution context, not routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_app_listCreate or change an app listB
Destructive
Inspect

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.

NameRequiredDescriptionDefault
listYesApp list name, e.g. expenses
scanNoScan actions: {label, values} adds a row; {label, redeem: n} uses n; form: a list
siteYes
labelNo
replyNo
shareNo
fieldsYes1-30 of {name, type, label, required, options}; types text, long_text, number, date, choice (options), photo
commentsNo
group_readNo
plan_rulesNo{add:[plan],fields:{f:[plan]},limit:{plan:n},per}
group_writeNo
lead_statusNo
confirm_tokenNo
status_optionsNo

Output Schema

NameRequiredDescription
rowsNo
peopleNo
agent_messageNo
confirm_tokenNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotent. The description adds visibility semantics (own rows vs group) and notes it returns markup, which is useful context beyond the annotations. However it does not warn about what 'replaces its fields' destroys on an existing list, which is the critical destructive behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler, and the create/replace behavior is front-loaded. The parenthetical 'their group too; two steps' is dense but not wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter, destructive, non-idempotent mutation tool, the description leaves most parameters and their interactions unexplained. An output schema exists, so return-value explanation is not required, but the input side is significantly under-documented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only 29% of the 14 parameters have schema descriptions. The description covers only share partially and adds nothing about the many undocumented params: scan, plan_rules, group_read, group_write, lead_status, confirm_token, status_options, reply, comments, label. At this coverage level the description needed to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Creates an app list or replaces its fields.' That distinguishes it from delete_list, get_lists, and add_app_row. It does not explicitly differentiate it from the sibling save_list, which is the closest overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives behavioral context about per-user rows and share: group, and mentions 'two steps' for group sharing, which implies sequencing. But it never says when to call this versus save_list or save_app_ai_prompt, and the 'two steps' hint is too vague to act on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_groupSave a workspace groupC
Destructive
Inspect

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

NameRequiredDescriptionDefault
nameNo
siteYes
groupNo
sitesNo
deleteNo
peopleNo
permissionsNo
confirm_tokenNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is partly covered. The description adds real value by stating the Owner/Admin requirement and that an approve_url is returned, implying an approval flow, but it never explains what deletion actually destroys, whether confirm_token is required for it, or why the operation is non-idempotent. Consistent with annotations, no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and the purpose leads, which is good, but the parenthetical notation is compressed to the point of ambiguity and a sentence of real explanation is missing. Brevity here trades against usability rather than trimming waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not needed, but for a destructive, non-idempotent, 8-parameter write with zero schema coverage the description is far too thin. The approval/confirm_token mechanic and the effect of delete=true are the critical missing pieces.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, and the description only gestures at two of them (group, delete) in shorthand. name, site, sites, people, permissions, and especially confirm_token are entirely undocumented anywhere, leaving the agent to guess at required semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Saves a workspace group" gives a clear verb and resource, but the parenthetical "(group: change; delete: true)" is cryptic and the description never distinguishes this from the sibling save_user_group, which an agent will almost certainly confuse it with. An agent can guess the purpose but not the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Owner or Admin" is a useful precondition, but there is no guidance on when to use this instead of save_user_group, delete_site, or the various save_list/save_plan siblings. Nothing is said about when the delete flag should be set versus calling a dedicated delete tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_listCreate or change a listC
Destructive
Inspect

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

NameRequiredDescriptionDefault
listYes
siteYes
formsNoForm list: plugin ids filling it
labelNoName shown in the app
fieldsNoAll 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), choice; internal also choices, email, phone, person, money, file; internal: rules
internalNo
public_jsonNoPublic JSON feed {fields, where}; null: off

Output Schema

NameRequiredDescription
fieldsNo
agent_messageNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, openWorld=true, and idempotent=false, so the safety bar is lower. The description adds useful replacement semantics ('replaces its fields') and an owner-column constraint, but it does not explain what destruction means for existing values or list items beyond what the schema notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in two short sentences. However, 'pages show it with data-pl-list and data-pl-field' is implementation detail that does not help an agent invoke the tool, and the second sentence is terse to the point of ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex, destructive mutation tool with seven parameters, nested objects, and an output schema. The description omits create-vs-update behavior, the meaning of site/list/internal/public_json, and how list items are affected, leaving significant gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 57%, and the description does not clarify the required 'site' and 'list' parameters or the nested 'internal' object. The brief mention of owners' columns relates loosely to 'fields' but adds little executable meaning beyond the schema's own field documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Creates a list or replaces its fields.' It is clear what the tool does at a high level, but the resource 'list' is ambiguous in this API and there is no explicit differentiation from siblings such as save_app_list or get_lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Apart from a narrow scope restriction for form or bookings lists ('only the owner's own columns'), it offers no guidance on when to use this versus save_app_list, delete_list, or update_list_items. The agent must infer selection from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_planCreate or change an app planA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
freeNo
nameNoAs users see it
planYesPlan id, e.g. monthly
siteYes
priceNo{amount (cents or pence), currency gbp|usd|eur, interval month|year}
archiveNo

Output Schema

NameRequiredDescription
planNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: payment is processed through the owner's own Stripe, archive permanently retires the plan (consistent with destructiveHint=true), and the call returns one of three stripe states including an onboarding_url. That last detail is useful routing information an agent could not infer from readOnlyHint=false / destructiveHint=true alone. It stops short of explaining what happens to existing subscribers when a price changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences that front-load the action and the modes, with zero filler. The telegraphic fragments ('archive retires it') trade a little readability for density, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so the brief return note is a bonus rather than a requirement, and the mutation semantics are signaled by annotations. Still, for a destructive, non-idempotent billing tool with a nested price object, the description omits the required site/plan inputs and any statement about the effect on already-subscribed users or how to proceed after needs_onboarding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, and the description does clarify the intent of three params: free (the free plan), price (paid via the owner's Stripe, monthly or yearly), and archive (retires the plan). But the required 'site' and 'plan' parameters and 'name' get no elaboration, and the cents-vs-pence currency unit hint lives only in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb pair ('creates or changes') plus a specific resource ('an app plan'), enumerating the three plan shapes (free, monthly/yearly price, archive). It is clearly distinct from near-name siblings like save_list, save_group, and save_app_list because the resource is named, though it never explicitly contrasts with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the enumerated modes (free plan, priced plan, archive to retire), which lets an agent infer roughly when to call it. There is no explicit when-to-use/when-not-to-use statement, no prerequisite or permission guidance, and no named alternative for related operations such as setup_app.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_user_groupSave a user groupC
Destructive
Inspect

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

NameRequiredDescriptionDefault
addNo
nameNo
siteYes
groupYese.g. north
leadsNo
deleteNo
removeNo
confirm_tokenNo

Output Schema

NameRequiredDescription
rowsNo
peopleNo
agent_messageNo
confirm_tokenNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the bar is lower. The description does add genuine context beyond that — 'leads is the whole list' warns of replacement semantics, and 'two-step' warns that add/delete are not single-call — but it never explains the confirm_token parameter that presumably carries the second step, leaving the destructive flow underspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and kept to a single sentence, so it is efficient. But the telegraphic field list ('name, add, remove, leads ..., or delete: true') reads as an unordered run-on and sacrifices clarity for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, non-idempotent, 8-parameter mutation with a confirmation handshake and a near-duplicate sibling, and the definition leaves the two-step mechanics, the required site argument, and the sibling choice all unaddressed. The output schema is present, so return values need not be covered, but the input-side gaps are substantial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 13%, so the description must carry the parameter burden. It clarifies leads and delete and lists add/remove/name, but omits the required 'site' parameter entirely, gives no format for 'group', never clarifies that add/remove take emails (only leads is annotated as 'emails'), and leaves the critical confirm_token completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Saves a user group') and enumerates the mutable fields, so an agent can tell it is a membership/group write operation. It never differentiates itself from the sibling tool 'save_group', leaving the agent to guess which of the two near-identically named tools to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus 'save_group', 'save_list', or 'remove_user', and no prerequisites or exclusions. The only guidance-like sentence ('Adding and deleting are two-step') hints at a workflow but does not say how to complete it or when to prefer add/remove over re-sending the whole group.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_booking_outcomeMark a booking done or missedA
DestructiveIdempotent
Inspect

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

NameRequiredDescriptionDefault
siteYes
item_idYes
outcomeYes
plugin_idNoDefault: booking page

Output Schema

NameRequiredDescription
item_idNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=true, idempotent=true, closed-world, and the description adds genuinely new context: no notification emails are sent, and the value is switchable between the two states. That side-effect and reversibility disclosure is exactly what an agent needs before mutating a booking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with a colon-separated enumeration; the operation and its two outcomes are front-loaded and every clause carries information. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and annotations plus the 'emails nobody / changeable' note cover the safety profile. Still missing is any explanation of the required site/item_id identifiers and what precisely counts as 'started', which is where an agent is most likely to call this wrongly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (only plugin_id is documented as defaulting to the booking page). The description explains the outcome enum semantics ('completed (done) or no_show'), but says nothing about what 'site' and 'item_id' identify or their accepted formats, leaving the two most important required parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Records how a booking ... went') plus the two allowed end states, so it is clearly distinct from approve_booking/cancel_booking/edit_booking in intent. It does not explicitly name those siblings, but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'a booking that has started' sets a usable precondition that implicitly excludes future/pending bookings. However, it never says what to use instead for pending bookings (approve_booking, edit_booking, cancel_booking) or what happens if the booking hasn't started yet.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_appSet up an appA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
pathNoApp pages path (default /app)
siteYes
signupNoinvite, open, or request (owner approves)
ai_readNo{lists: up to 10 names or "all", members}; answers approve_url
templateNoMakes its app lists and plans
retentionNoKept after a user leaves: member (not), 1y, 2y, 5y; shorter erases
plan_switchNoUsers switch plans
request_noteNo
sign_out_allNotrue: signs every user out
confirm_tokenNo
display_fieldNoProfile field shown to group peers
notify_membersNo{status,reply,comments}: bool
profile_fieldsNoSign-up fields {name, type, label, required, options}; types text, long_text, number, date, choice, phone, url

Output Schema

NameRequiredDescription
statusNo
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true and openWorld=true, but the description adds genuinely non-obvious context: it returns markup plus an approve_url that a Site Owner must act on, and that retention shortening erases data and sign_out_all / ai_read require asking first. That approval-gated disclosure adds real value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded: the core action comes first, then the return value, then the risky options, then constraints. The telegraphic phrasing ("retention (shorter erases)... ask first") is dense and slightly cryptic but consistently information-bearing with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter destructive mutation the description covers the return/approval flow well, and an output schema exists so return values needn't be explained. But the "ask first" confirmation mechanic is not tied to confirm_token, and several optional params are silent, leaving the agent to infer how to complete a call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 77%, so most params are already documented. The description reinforces the highest-risk ones (retention erasing data, sign_out_all, ai_read, template-driven lists) but adds little mechanics, and several params (confirm_token, request_note, notify_members) get no mention anywhere. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Sets up an app") and enumerates the three things it provisions: user sign-in, private records under one path, and lists from a template. This clearly distinguishes it from data-manipulation siblings like add_app_row or save_app_list, though it does not name any sibling tool explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Owner only; Free plan: testing" gives audience and plan constraints, and it notes the Site Owner must turn it on via approve_url. However, there is no explicit guidance on when to choose this over alternatives (e.g., get_app, preview_as_user) or what prerequisites must exist first, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

share_fileShare a fileAInspect

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.

NameRequiredDescriptionDefault
nameNoWith content: e.g. menu.pdf
contentNoThe file, base64-encoded (no data: prefix)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-destructive, open-world and non-idempotent, and the description stays consistent with them while adding substantive context: a 10 MB ceiling, base64 without data: prefix, and the fact that the result is a site with a viewer and Download button. It does not address whether repeating a publish creates a duplicate site (relevant given idempotentHint=false), which is the one behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the core action and format constraints front-loaded, followed by the two-mode behavior. Nothing is filler, though the packing of formats, size limit and both modes into one sentence makes it slightly harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two optional parameters, full schema coverage, an output schema to carry return values, and annotations covering the safety profile, the description supplies everything an agent needs: accepted types, the SVG exclusion, the size cap, encoding, and what gets created in each mode.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond it by explaining that 'name' only matters when content is supplied and that content is capped at 10 MB and must be bare base64. That mode-dependency is not obvious from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Shares one image ... or PDF as a new site') and enumerates supported formats plus an explicit exclusion (not SVG), so the agent knows exactly what the tool produces. It stops short of naming the closest sibling (create_upload_link) whose territory the 'link where the user drops their file' mode arguably overlaps, so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly lays out the two invocation modes: omit content to get a drop-link, or supply name+content to publish immediately. That is actionable conditional guidance, but there is no statement of when to prefer this over create_upload_link or other site-creating siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

site_settingsChange site settingsC
Destructive
Inspect

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

NameRequiredDescriptionDefault
nameNoNew address; old one stops
rowsNo
siteYes
titleNoApp label (null: the page <title>)
searchNoai_training, ai_answers (allow|block), primary_domain, domain_redirect, review_url, steps
insteadNoSite to freeze instead
stagingNo
archivedNotrue: offline, two steps
analyticsNoClick counting: clicks, kinds, labels, hidden
time_zoneNo
workspaceNoMove a private site in: workspace id, name or "new"
ai_invitesNo
sender_nameNo
base_revisionNopromote: staging revision
confirm_tokenNo
notificationsNoOwn emails: forms, bookings, health (auto, daily, off, {email, in_app}); domain_live, domain_reminder, product_news; count_usage; scope site|all
sender_addressNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true, and non-idempotent, so the safety bar is lower; the description adds little beyond that. Fragments like 'archived: true - offline, two steps' and 'New address; old one stops' hint at consequences but are terse schema echoes, and there is no mention of permissions, confirm_token being required for destructive changes, or irreversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but not concise in the useful sense: a single run-on fragment list with inconsistent semicolons and parentheses that obscures the one thing an agent needs first (what changes and what the risks are). The information is present but poorly structured and front-loaded with a confusing 'kept site' phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter destructive mutation with nested objects and an open-world hint, the description says almost nothing about side effects, required permissions, or confirm_token/base_revision flow. An output schema exists so return values need not be explained, but the mutation's behavior is significantly under-described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 53% with 17 parameters, so some compensation is needed, and the description does enumerate most parameter names plus small clues like '(approve_url)' and 'promote: staging revision'. However, it largely restates parameter names without explaining the nested objects (search, notifications, analytics) or undocumented fields like rows, instead, sender_address, or confirm_token.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Changes a kept site" gives a verb and resource, and the following list signals the mutable settings, but the phrase "kept site" is unexplained jargon and the mangled punctuation makes it hard to read as a purpose statement. It does not explicitly distinguish itself from siblings like get_site, move_sites, or transfer_site, even though workspace moving overlaps with move_sites.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites (permissions, ownership), and no mention of alternatives. The parenthetical hints like 'staging (promote: live)' hint at a workflow but do not say when an agent should pick this tool over move_sites, transfer_site, or delete_site.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sort_list_itemsSort list itemsB
Destructive
Inspect

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

NameRequiredDescriptionDefault
idsNoOr item ids, first to last (the rest follow)
listYes
siteYes
sort_byNo
descendingNo

Output Schema

NameRequiredDescription
change_idNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety bar is lower. The description adds a genuinely useful behavioral detail — the change is visible on the site within seconds — but never warns that existing ordering is overwritten or clarifies what happens when both sort_by and ids are supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the 'site shows it within seconds' clause earns its place as timing context. Minor ambiguity in 'the site' keeps it short of perfect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need no explanation. But with 5 parameters at 20% schema coverage, a destructive, non-idempotent tool should do more: descending direction and sort_by value domain are unaddressed, and the overwrite of prior ordering isn't stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 20%, so the description does real work by explaining the key mutual-exclusion semantics (sort items by a field versus by given ids) and by noting the 'rest follow' behavior. However, it says nothing about 'descending', how 'sort_by' values are named, or what site/list expect, leaving several parameters undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Sorts a list's items') and explains the two ordering modes: by a field or by explicit ids. That distinguishes it reasonably from update_list_items and add_list_items, though it never names those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: you infer you'd use it when you want a custom or field-based order. There is no explicit when-to-use versus update_list_items, no statement about what happens if ids don't cover all items (beyond 'the rest follow'), and no preconditions such as needing existing list permissions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_pluginTest a pluginAInspect

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.

NameRequiredDescriptionDefault
siteYes
plugin_idYes

Output Schema

NameRequiredDescription
plugin_idNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as non-read-only, non-idempotent and non-destructive, and the description adds substance to that: the call creates one persisted test item, is excluded from counts and emails, and returns a pass indication plus affected pages. What it does not say is whether test items accumulate or how to clean them up after repeated calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the action front-loaded and qualifications trailing. It is slightly run-on but every clause (scope, side effects, return signal) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The write-side effects and the shape of the result are conveyed, and an output schema exists to cover return details. However, for a mutation tool whose two required identifiers are completely undocumented, the description leaves a real gap an agent cannot fill from structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both required parameters, so the description must carry the burden — but it never mentions 'site' or 'plugin_id' or their expected format (site name vs. domain, plugin slug vs. numeric id). An agent must guess parameter values from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (sends one test submission to a form or booking page) plus the outcome (reports success and which published pages carry it). The parenthetical 'not payments; never counted or emailed; kept as a test item' separates it from real-submission siblings like add_booking and add_people.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear context for use — verify a plugin works and see where it is live — and explicitly excludes payment plugins from scope. It stops short of naming a sibling to use instead (e.g., add_booking for a real submission, update_plugin for configuration), so the alternative path is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transfer_siteTransfer siteA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
siteYes
emailNoThe new Site Owner's email (required unless confirm_token)
keep_editorNo
confirm_tokenNo

Output Schema

NameRequiredDescription
recipientNo
approve_urlNo
agent_messageNo
confirm_tokenNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations that already flag destruction, open-world behavior, and non-idempotency, the description discloses the invitation/acceptance workflow, return fields, unchanged billing for the sender, the keep_editor default, and workspace eligibility constraints. These are meaningful behavioral details an agent would not get from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core action and workflow before details. The parenthetical about what the site needs beyond Free is slightly dense, but every sentence contributes relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and annotations covering safety and return behavior, the description supplies the operational context an agent needs for the main flow. The remaining gap is confirm_token's conditional purpose, which is not explained even though the schema makes it relevant when email is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, so the description must compensate. It usefully explains keep_editor's default and effect, and implies email's role, but it leaves the site parameter and especially confirm_token unexplained, so the coverage gap is only partly filled.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — offering a site to a new Site Owner by email — plus the acceptance flow where the recipient chooses where the site lives. This clearly separates it from immediate operations like move_sites and is understandable without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: the site is offered to a new owner who must accept, and workspace sites can only go to the Site Owner or someone in the workspace. It does not explicitly name alternatives such as move_sites or cancel_transfer, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undo_list_changeUndo a list changeC
Destructive
Inspect

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

NameRequiredDescriptionDefault
siteYes
change_idYes

Output Schema

NameRequiredDescription
change_idNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral detail beyond that — that change_id must be taken from the original change's reply — but it does not warn that the undo itself is non-idempotent, irreversible, or what happens if the change is stale.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence, front-loaded with the action. It is efficient, though the brevity borders on under-specification for a destructive two-parameter tool rather than being genuinely tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, but for a destructive, non-idempotent operation the description should at minimum explain 'site' and state the reversal preconditions. As written, an agent knows only the vague action and one parameter's provenance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load. It clarifies where change_id comes from ('from its reply'), which is real added meaning, but the required 'site' parameter is completely unexplained in both schema and description, leaving half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb phrase "takes back one list change" conveys an undo of a single list mutation, which is more specific than the title alone and implies a scoped, single-item reversal. However, 'takes back' is loose wording, and the description does not distinguish this from the sibling tool 'rollback' or from 'update_list_items' / 'remove_list_items'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the 'rollback' sibling, no prerequisites, and no note that only the most recent (or a specific) change can be reverted. The only hint is that change_id comes from a prior reply, which is about provenance rather than usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unprotectRemove protectionA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
pathNo"/" (default, whole site) or a protected part such as /students
siteYes
confirm_tokenNo

Output Schema

NameRequiredDescription
protectedNo
approve_urlNo
members_onlyNo
agent_messageNo
confirm_tokenNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the description only needs to add context — it does: owner-level auth is required and an approve_url is returned, implying the removal may go through an approval flow rather than applying instantly. It stops short of stating whether the removed passcode is recoverable or what happens to already-authenticated visitors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the action front-loaded and the scope/auth/return facts packed in. 'Each protected path opens on its own' is slightly telegraphic and could be phrased more plainly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with only 33% schema coverage, key operational facts are absent: the origin of confirm_token, whether the returned approve_url must be visited to complete the change, and whether the operation is reversible. The output schema exists, so return-value detail is not required here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so the description must compensate. It does explain the path/site dichotomy (whole site vs. one protected part, matching the '/'-default in the schema), but confirm_token — arguably the most opaque parameter — is never mentioned, leaving the agent to guess how it is obtained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb ('removes') and object ('passcode or invite-only setting' / 'protection from one path'), and clarifies two scopes: whole site vs. a single path. It does not explicitly reference the inverse sibling 'protect' or 'site_settings', which would have made the differentiation airtight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'(owner; ...)' states the permission prerequisite, and 'Each protected path opens on its own' warns the agent that unprotecting the site will not clear per-path protection, so repeated per-path calls may be required. No explicit when-not or named alternative is given, but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_app_rowsUpdate app entriesB
Destructive
Inspect

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

NameRequiredDescriptionDefault
listYes
noteNo
siteYes
groupNo
replyNoEmailed to the user
assignNo
statusNo
commentNo
item_idsYes
confirm_tokenNo

Output Schema

NameRequiredDescription
agent_messageNo
confirm_tokenNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as destructive, open-world, and non-idempotent, so the safety profile is covered. The description adds meaningful context beyond annotations: it says users' values are never changed, describes the two-step trigger for emailing or widening, and notes that an empty assign clears the field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the field-setting behavior before the two-step constraint. It is somewhat telegraphic, but every clause carries useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a 10-parameter destructive mutation with email side effects and a confirm_token parameter, but the description does not explain how the two-step flow works or what confirm_token is for. The output schema covers return values, but the invocation-critical context is still incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 10%, so the description needs to carry most parameter meaning. It names several optional fields and explains that assign with an empty string clears the field, but it omits the semantics of required site, list, and item_ids, and does not explain confirm_token or the two-step flow concretely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and enumerates the row fields it sets (status, reply, note, group, assign, comment), so the purpose is clear. It does not explicitly distinguish this from sibling tools such as update_list_items, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Two-step if it emails or widens' gives a conditional usage rule, which is useful, but there is no explicit guidance on when to use this tool versus update_list_items or other update/add siblings. Usage is implied rather than fully routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_list_itemsChange list itemsA
Destructive
Inspect

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

NameRequiredDescriptionDefault
listYes
siteYes
itemsYesGiven fields change; null clears. {id, values, if_updated_at; internal: was}

Output Schema

NameRequiredDescription
itemsNo
change_idNo
agent_messageNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotency=false, but the description adds useful context: changes propagate in seconds and form-reply/booking updates are limited to owner columns and are not undoable. It does not fully explain broader destructive behavior or permissions, but it meaningfully supplements the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, moving from core behavior to propagation and restrictions without filler. Every clause adds information relevant to invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema available and annotations covering safety, the description supplies the key behavioral notes: propagation timing and restrictions for form replies/bookings. It could say more about site/list parameters or general undo behavior, but it is mostly complete for this mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, and the description adds little parameter detail beyond 'by id'. It does not explain the 'site' or 'list' parameters and only partially clarifies the items payload, leaving the low schema coverage uncompensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Changes list items by id'. It is clearly distinct from siblings like add_list_items, remove_list_items, and sort_list_items, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Changes list items by id' and the note about form replies and bookings. However, it gives no explicit when-to-use guidance versus siblings such as update_app_rows or undo_list_change.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_pluginChange a pluginA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
langNoThe page's <html lang>, e.g. de (one snippet per language)
nameNo
siteYes
formsNoForms: as settings
patchNoMerged onto the settings, e.g. {"approval":"always"}; null removes a key, arrays are replaced
statusNo
settingsNoThe whole object, as list_plugins settings_help (forms too)
form_htmlNo
plugin_idYes
recipientsNo{add: email} (needs Manage)
confirm_tokenNo

Output Schema

NameRequiredDescription
approve_urlNo
agent_messageNo
confirm_tokenNo
setup_summaryNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose destructive, non-idempotent, open-world behavior, so the description usefully adds operational context: settings are replaced wholesale, patch is merged, recipients adds an inbox per site, and certain changes return setup_summary, reply_to_email, or approve_url. It does not contradict the annotations, though it does not explain confirm_token or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core operation before covering field behavior and return effects. The semicolon-heavy second half is dense and slightly awkward, but every clause carries useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter destructive update tool, the description covers the main mutation semantics and some output behavior. It still leaves meaningful gaps around confirm_token, permissions/confirmation expectations, and less central parameters like lang and forms, though the output schema and annotations reduce the overall burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 45% schema description coverage, the description partially compensates by clarifying the important distinction between settings (whole) and patch (merged), the recipients semantics, and the status values. However, parameters such as lang, forms, confirm_token, site, and plugin_id remain undocumented in the description beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Changes a plugin'. It also enumerates the main mutable fields, making clear this tool modifies an existing plugin rather than adding, removing, or listing one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied by 'Changes a plugin' and the listed fields, but there is no explicit guidance on when to choose this over siblings like add_plugin, remove_plugin, or list_plugins. It lacks when-not-to-use or prerequisite guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • Changedadd_domain1 field changed
      • addedInput schema / properties / claim
        Added value: +{
        +  "description": "true: prove a reserved domain or one another account holds with a DNS TXT record; call again to check",
        +  "type": "boolean"
        +}
    • Changeddeploy1 field changed
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"New sites: a UUID; a retry replays the result"New value: +"New sites: a UUID (retries replay)"
    • Changedget_lists3 fields changed
      • addedInput schema / properties / sum
        Added value: +{
        +  "description": "Numbers: {op, field, by}",
        +  "type": "object"
        +}
      • addedInput schema / properties / where / anyOf
        Added value: +[
        +  {
        +    "type": "object"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / where / type
        Removed value: -"object"
    • Changedget_site4 fields changed
      • removedInput schema / properties / cursor / description
        Removed value: -"next_cursor from the last call"
      • changedInput schema / properties / download / description
        Previous value: -"true: 1-hour zip links to the live site (one per GB)"New value: +"true: 1-hour zip links (one per GB)"
      • changedInput schema / properties / paths / description
        Previous value: -"Up to 20 files, 512 KB in all (the rest say not_read)"New value: +"Up to 20 files, 512 KB in all"
      • removedInput schema / properties / prefix / description
        Removed value: -"Only files under this path"
    • Changedprotect1 field changed
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "passcode",
        -  "members"
        -]New value: +[
        +  "passcode",
        +  "members",
        +  "internal"
        +]
    • Changedsave_list2 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"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"New value: +"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), choice; internal also choices, email, phone, person, money, file; internal: rules"
      • addedInput schema / properties / internal
        Added value: +{
        +  "type": "object"
        +}
    • Changedsetup_app1 field changed
      • addedInput schema / properties / plan_switch
        Added value: +{
        +  "description": "Users switch plans",
        +  "type": "boolean"
        +}
    • Changedupdate_list_items1 field changed
      • changedInput schema / properties / items / description
        Previous value: -"Given fields change; null clears. {id, values, if_updated_at}"New value: +"Given fields change; null clears. {id, values, if_updated_at; internal: was}"
  2. 30 tool updates
    • Changedadd_app_row1 field changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
    • Changedadd_app_webhook3 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / events
        Added value: +{
        +  "type": "array"
        +}
      • addedOutput schema / properties / url_host
        Added value: +{
        +  "type": "string"
        +}
    • Changedadd_people2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
    • Changedbind_list2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / blocks
        Added value: +{
        +  "type": "number"
        +}
    • Changedbring_back_sites3 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / sites
        Added value: +{
        +  "type": "array"
        +}
    • Changeddelete_list4 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / change_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / items
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / pages
        Added value: +{
        +  "type": "array"
        +}
    • Changeddelete_site2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
    • Changededit_booking2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / bookings
        Added value: +{
        +  "type": "number"
        +}
    • Changedemail_users4 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / days
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / recipients
        Added value: +{
        +  "type": "number"
        +}
    • Changedfulfil_order1 field changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
    • Changedimport_list_items5 fields changed
      • addedOutput schema / properties / add
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / added
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / change_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / preview
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedinvite_users3 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / requests
        Added value: +{
        +  "type": "number"
        +}
    • Changedleave_workspace4 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / questions
        Added value: +{
        +  "type": "array"
        +}
      • addedOutput schema / properties / sites
        Added value: +{
        +  "type": "array"
        +}
    • Changedmove_sites4 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / move_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / questions
        Added value: +{
        +  "type": "array"
        +}
    • Changedprotect4 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / members_only
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / protected
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedrefund_order2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
    • Changedrefuse_order2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
    • Changedremove_domain1 field changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
    • Changedremove_people1 field changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
    • Changedremove_plugin2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / upcoming_bookings
        Added value: +{
        +  "type": "number"
        +}
    • Changedremove_user2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
    • Changedsave_app_list4 fields changed
      • changedInput schema / properties / list / description
        Previous value: -"Member list name, e.g. expenses"New value: +"App list name, e.g. expenses"
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / people
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / rows
        Added value: +{
        +  "type": "number"
        +}
    • Changedsave_group2 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
    • Changedsave_plan1 field changed
      • changedInput schema / properties / name / description
        Previous value: -"As members see it"New value: +"As users see it"
    • Changedsave_user_group3 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / people
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / rows
        Added value: +{
        +  "type": "number"
        +}
    • Changedsetup_app5 fields changed
      • changedInput schema / properties / path / description
        Previous value: -"Member pages path (default /app)"New value: +"App pages path (default /app)"
      • changedInput schema / properties / template / description
        Previous value: -"Makes its member lists and plans"New value: +"Makes its app lists and plans"
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "type": "string"
        +}
    • Changedtransfer_site3 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / recipient
        Added value: +{
        +  "type": "object"
        +}
    • Changedunprotect4 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / members_only
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / protected
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedupdate_app_rows1 field changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
    • Changedupdate_plugin3 fields changed
      • addedOutput schema / properties / agent_message
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / approve_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / setup_summary
        Added value: +{
        +  "type": "array"
        +}
  3. 25 tool updates
    • Changedadd_domain1 field changed
      • changedInput schema / properties / confirm_root / description
        Previous value: -"true: connect a root domain anyway (after add_domain recommended www)"New value: +"true: the root domain anyway (not www)"
    • Changedadd_list_items2 fields changed
      • changedInput schema / properties / copy / description
        Previous value: -"{field: message field}"New value: +"{field: form reply field}"
      • changedInput schema / properties / from / description
        Previous value: -"Or copy this message (itm_…)"New value: +"Or copy this form reply (itm_…)"
    • Changedadd_people1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call (site only): approval status"
    • Changedcancel_booking1 field changed
      • changedInput schema / properties / refund / description
        Previous value: -"A paid booking (default full; returns a refund approve link)"New value: +"Paid booking; default full"
    • Changedcheck_site1 field changed
      • addedInput schema / properties / site_token / description
        Added value: +"From an anonymous deploy (secret)"
    • Changedcreate_upload_link2 fields changed
      • changedInput schema / properties / replace_site / description
        Previous value: -"true: a one-use link for a zip that replaces the whole site"New value: +"true: a one-use link for a whole-site zip"
      • addedInput schema / properties / site_token / description
        Added value: +"From an anonymous deploy (secret)"
    • Changeddelete_site1 field changed
      • addedInput schema / properties / site_token / description
        Added value: +"From an anonymous deploy (secret)"
    • Changeddeploy4 fields changed
      • addedInput schema / properties / base_revision / description
        Added value: +"Update: the live revision id last read"
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"New sites: a random UUID; a retry with the same files replays the result"New value: +"New sites: a UUID; a retry replays the result"
      • addedInput schema / properties / site_token / description
        Added value: +"From an anonymous deploy (secret)"
      • changedInput schema / properties / workspace / description
        Previous value: -"New sites: workspace id or name, or \"private\" (omitted with several, the reply asks)"New value: +"New sites: workspace id or name, or \"private\""
    • Changedfind_visitor_records1 field changed
      • addedInput schema / properties / scope / description
        Added value: +"No site: all, personal or workspace:<id>"
    • Changedget_account2 fields changed
      • changedInput schema / properties / include / description
        Previous value: -"Any of: billing, usage, storage, downgrade, notifications, referrals, all. 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"New value: +"Any of: billing, usage, storage, downgrade, notifications, all. Extra sections"
      • changedInput schema / properties / sites_query / description
        Previous value: -"Only sites whose name, title or workspace contains this"New value: +"Filter by name, title or workspace"
    • Changedget_activity1 field changed
      • changedInput schema / properties / workspace / description
        Previous value: -"Workspace id or name; leave out for the person's own account"New value: +"Workspace id or name (default: own account)"
    • Changedget_analytics3 fields changed
      • changedInput schema / properties / compare / description
        Previous value: -"Also return the previous period of the same length (paid plans)"New value: +"Also the previous period (paid plans)"
      • changedInput schema / properties / days / description
        Previous value: -"Days back from today, today included (default 7)"New value: +"Days back, today included (default 7)"
      • changedInput schema / properties / recent / description
        Previous value: -"Also recent_events: counts per event, last 30 minutes (to check a test tap)"New value: +"Also counts per event, last 30 minutes"
    • Changedget_domains1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Finding one: a name, idea or domain, e.g. Maison Cafe or maisoncafe.co.uk"New value: +"A name, idea or domain to find, e.g. Maison Cafe"
    • Changedget_lists2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"None: every site, counts only"
      • changedInput schema / properties / status / description
        Previous value: -"Messages: new|read|spam|archived|binned|all"New value: +"Form replies: new|read|spam|archived|binned|all"
    • Changedget_site3 fields changed
      • removedInput schema / properties / check
        Removed value: -{
        -  "enum": [
        -    "accessibility"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / properties / download / description
        Previous value: -"true: 1-hour links to the whole live site as zips (one per GB)"New value: +"true: 1-hour zip links to the live site (one per GB)"
      • addedInput schema / properties / site_token / description
        Added value: +"From an anonymous deploy (secret)"
    • Changedlist_versions1 field changed
      • addedInput schema / properties / site_token / description
        Added value: +"From an anonymous deploy (secret)"
    • Changedmark_form_replies1 field changed
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Optional: found from item_ids"New value: +"Found from item_ids"
    • Changedprotect1 field changed
      • changedInput schema / properties / emails / description
        Previous value: -"members on a path: the full list who may see it (shared plans: omit to reuse the site's list)"New value: +"members on a path: everyone who may see it (omit: the site's list)"
    • Changedrollback2 fields changed
      • changedInput schema / properties / discard / description
        Previous value: -"With a preview id: deletes that preview instead"New value: +"With a preview id: delete it"
      • addedInput schema / properties / site_token / description
        Added value: +"From an anonymous deploy (secret)"
    • Changedsave_app_list1 field changed
      • changedInput schema / properties / scan / description
        Previous value: -"Scan actions: {label, values} adds a row; {label, redeem: n} uses n; form: a list (guide #scan)"New value: +"Scan actions: {label, values} adds a row; {label, redeem: n} uses n; form: a list"
    • Changedsetup_app2 fields changed
      • changedInput schema / properties / retention / description
        Previous value: -"member, 1y, 2y, 5y"New value: +"Kept after a user leaves: member (not), 1y, 2y, 5y; shorter erases"
      • addedInput schema / properties / sign_out_all / description
        Added value: +"true: signs every user out"
    • Changedshare_file1 field changed
      • changedInput schema / properties / name / description
        Previous value: -"With content: file name with extension, e.g. menu.pdf"New value: +"With content: e.g. menu.pdf"
    • Changedsite_settings6 fields changed
      • addedInput schema / properties / archived / description
        Added value: +"true: offline, two steps"
      • addedInput schema / properties / base_revision / description
        Added value: +"promote: staging revision"
      • addedInput schema / properties / name / description
        Added value: +"New address; old one stops"
      • changedInput schema / properties / search / description
        Previous value: -"ai_training, ai_answers (allow or block), primary_domain, domain_redirect, review_url, steps"New value: +"ai_training, ai_answers (allow|block), primary_domain, domain_redirect, review_url, steps"
      • changedInput schema / properties / title / description
        Previous value: -"Shown in the app (null: the page <title>)"New value: +"App label (null: the page <title>)"
      • changedInput schema / properties / workspace / description
        Previous value: -"Moves a private site in: workspace id or name, or \"new\""New value: +"Move a private site in: workspace id, name or \"new\""
    • Changedupdate_app_rows1 field changed
      • addedInput schema / properties / reply / description
        Added value: +"Emailed to the user"
    • Changedupdate_plugin3 fields changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the person's yes to setup_summary, or for the approve_url status"
      • changedInput schema / properties / recipients / description
        Previous value: -"{add: an extra inbox, for every site on the plan (needs Manage)}"New value: +"{add: email} (needs Manage)"
      • changedInput schema / properties / settings / description
        Previous value: -"The whole settings object, shaped as list_plugins settings_help (forms too)"New value: +"The whole object, as list_plugins settings_help (forms too)"
  4. 13 tool updates
    • Changedapprove_booking1 field changed
      • removedInput schema / properties / item_id / description
        Removed value: -"From get_lists"
    • Changedcancel_booking1 field changed
      • removedInput schema / properties / item_id / description
        Removed value: -"From get_lists"
    • Addedcheck_site
    • Changededit_booking1 field changed
      • removedInput schema / properties / item_id / description
        Removed value: -"From get_lists"
    • Changedfulfil_order2 fields changed
      • removedInput schema / properties / item_id / description
        Removed value: -"From get_lists"
      • removedInput schema / properties / plugin_id / description
        Removed value: -"From list_plugins"
    • Changedget_site1 field changed
      • removedInput schema / properties / check / description
        Removed value: -"The full Accessibility check of the live pages (problems, fixes)"
    • Changedlist_plugins1 field changed
      • removedInput schema / properties / plugin_id / description
        Removed value: -"From list_plugins"
    • Changedrefund_order2 fields changed
      • removedInput schema / properties / item_id / description
        Removed value: -"From get_lists"
      • removedInput schema / properties / plugin_id / description
        Removed value: -"From list_plugins"
    • Changedrefuse_order2 fields changed
      • removedInput schema / properties / item_id / description
        Removed value: -"From get_lists"
      • removedInput schema / properties / plugin_id / description
        Removed value: -"From list_plugins"
    • Changedremove_plugin1 field changed
      • removedInput schema / properties / plugin_id / description
        Removed value: -"From list_plugins"
    • Changedset_booking_outcome1 field changed
      • removedInput schema / properties / item_id / description
        Removed value: -"From get_lists"
    • Changedtest_plugin1 field changed
      • removedInput schema / properties / plugin_id / description
        Removed value: -"From list_plugins"
    • Changedupdate_plugin1 field changed
      • removedInput schema / properties / plugin_id / description
        Removed value: -"From list_plugins"
  5. 59 tool updates
    • Changedadd_app_row1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedadd_app_webhook1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedadd_domain1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedadd_list_items1 field changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
    • Changedadd_people1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedapprove_booking1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "item_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbind_list2 fields changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbring_back_sites1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcancel_transfer1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedcreate_upload_link1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changeddelete_list2 fields changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddelete_site2 fields changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call: the deletion status"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changededit_booking1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedemail_users1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedexport_app_data1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "export_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfind_visitor_records1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedfulfil_order1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_account3 fields changed
      • changedInput schema / properties / include / description
        Previous value: -"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"New value: +"Any of: billing, usage, storage, downgrade, notifications, referrals, all. 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"
      • removedInput schema / properties / include / items / enum
        Removed value: -[
        -  "billing",
        -  "usage",
        -  "storage",
        -  "downgrade",
        -  "notifications",
        -  "referrals",
        -  "all"
        -]
      • removedOutput schema / properties / notices / items / properties
        Removed value: -{}
    • Changedget_activity3 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • removedInput schema / properties / type / description
        Removed value: -"Kind of action"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "entries": {
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_analytics1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedget_app2 fields changed
      • removedInput schema / properties / check / description
        Removed value: -"Setup checks"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedget_app_data1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedget_domains1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "domains": {
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_free_slots1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedimport_list_items2 fields changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinvite_users1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedleave_workspace1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_people1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "people": {
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_plugins1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "plugins": {
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_versions2 fields changed
      • removedInput schema / properties / since_days / description
        Removed value: -"The last N days"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "versions": {
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmark_form_replies1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "updated": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmove_sites1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpreview_as_user1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedprotect1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrefund_order1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrefuse_order1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedremove_app_webhook1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedremove_domain1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedremove_list_items2 fields changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "change_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedremove_people1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedremove_plugin1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedremove_user1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsave_app_ai_prompt1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedsave_app_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsave_group1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsave_list1 field changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
    • Changedsave_plan1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "plan": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsave_user_group1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedset_booking_outcome1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "item_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsetup_app1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedshare_file1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "type": "object"
        +}
    • Changedsort_list_items3 fields changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
      • removedInput schema / properties / sort_by / description
        Removed value: -"A field to sort by"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "change_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtest_plugin1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "plugin_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedtransfer_site2 fields changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call: approval status"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedundo_list_change1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "change_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedunprotect1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedupdate_app_rows1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedupdate_list_items1 field changed
      • removedInput schema / properties / list / description
        Removed value: -"List name"
    • Changedupdate_plugin1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  6. 30 tool updates
    • Addedadd_app_row
    • Addedadd_app_webhook
    • Removedadd_member_row
    • Removedadd_member_webhook
    • Removedemail_members
    • Addedemail_users
    • Addedexport_app_data
    • Removedexport_member_data
    • Addedget_app
    • Addedget_app_data
    • Removedget_member_app
    • Removedget_member_data
    • Removedinvite_members
    • Addedinvite_users
    • Addedmark_form_replies
    • Removedmark_messages
    • Removedpreview_as_member
    • Addedpreview_as_user
    • Addedremove_app_webhook
    • Removedremove_member
    • Removedremove_member_webhook
    • Addedremove_user
    • Addedsave_app_list
    • Removedsave_member_group
    • Removedsave_member_list
    • Addedsave_user_group
    • Addedsetup_app
    • Removedsetup_member_app
    • Addedupdate_app_rows
    • Removedupdate_member_rows
  7. 2 tool updates
    • Changedadd_domain1 field changed
      • removedInput schema / properties / confirm_token
        Removed value: -{
        -  "description": "After the user's yes (hostname optional then)",
        -  "type": "string"
        -}
    • Changedadd_list_items1 field changed
      • addedInput schema / properties / confirm_token
        Added value: +{
        +  "type": "string"
        +}
  8. 27 tool updates
    • Changedadd_booking2 fields changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the user's yes"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the booking page"New value: +"Default: booking page"
    • Changedadd_member_webhook1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changedadd_plugin3 fields changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the user's yes"
      • changedInput schema / properties / kind / enum
        Previous value: -[
        -  "forms",
        -  "booking"
        -]New value: +[
        +  "forms",
        +  "payments",
        +  "booking"
        +]
      • changedInput schema / properties / lang / description
        Previous value: -"The snippet page's <html lang>, e.g. de (one snippet per language)"New value: +"The page's <html lang>, e.g. de (one snippet per language)"
    • Changedapprove_booking1 field changed
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the booking page"New value: +"Default: booking page"
    • Changedbind_list1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changedcancel_booking3 fields changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the user's yes"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the booking page"New value: +"Default: booking page"
      • addedInput schema / properties / refund
        Added value: +{
        +  "description": "A paid booking (default full; returns a refund approve link)",
        +  "enum": [
        +    "full",
        +    "deposit_kept",
        +    "none"
        +  ],
        +  "type": "string"
        +}
    • Changeddelete_list1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changeddeploy1 field changed
      • changedInput schema / properties / workspace / description
        Previous value: -"New sites: workspace id or name, or \"private\"; omitted with several places, the reply asks which"New value: +"New sites: workspace id or name, or \"private\" (omitted with several, the reply asks)"
    • Changededit_booking2 fields changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the user's yes"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the booking page"New value: +"Default: booking page"
    • Changedemail_members1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Addedfulfil_order
    • Changedget_account1 field changed
      • changedInput schema / properties / include / description
        Previous value: -"Extra sections (\"all\": every one but referrals). referrals: the person's own invite link (and invite seats left), only when they ask for it; never suggest it"New value: +"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"
    • Changedimport_list_items1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changedinvite_members1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changedlist_plugins1 field changed
      • changedInput schema / properties / lang / description
        Previous value: -"The snippet page's <html lang>, e.g. de (one snippet per language)"New value: +"The page's <html lang>, e.g. de (one snippet per language)"
    • Changedmark_messages1 field changed
      • changedInput schema / properties / all / enum
        Previous value: -[
        -  "notices",
        -  "forms",
        -  "bookings"
        -]New value: +[
        +  "notices",
        +  "forms",
        +  "bookings",
        +  "orders"
        +]
    • Changedprotect1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Addedrefund_order
    • Addedrefuse_order
    • Changedremove_domain1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the user's yes"
    • Changedremove_member1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changedremove_people1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the user's yes"
    • Changedremove_plugin1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"After the user's yes"
    • Changedset_booking_outcome1 field changed
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the booking page"New value: +"Default: booking page"
    • Changedsite_settings1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changedunprotect1 field changed
      • removedInput schema / properties / confirm_token / description
        Removed value: -"From the first call"
    • Changedupdate_plugin1 field changed
      • changedInput schema / properties / lang / description
        Previous value: -"The snippet page's <html lang>, e.g. de (one snippet per language)"New value: +"The page's <html lang>, e.g. de (one snippet per language)"
  9. 17 tool updates
    • Addedadd_member_row
    • Addedadd_member_webhook
    • Addedemail_members
    • Addedexport_member_data
    • Addedget_member_app
    • Addedget_member_data
    • Addedinvite_members
    • Addedpreview_as_member
    • Addedremove_member
    • Addedremove_member_webhook
    • Addedsave_app_ai_prompt
    • Addedsave_member_group
    • Addedsave_member_list
    • Addedsave_plan
    • Addedsetup_member_app
    • Changedsite_settings1 field changed
      • addedInput schema / properties / sender_address
        Added value: +{
        +  "type": "string"
        +}
    • Addedupdate_member_rows
  10. 43 tool updates
    • Changedadd_booking2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "confirm_token": {
        +      "type": "string"
        +    },
        +    "item_id": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedadd_domain1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedadd_list_items2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "change_id": {
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedadd_people7 fields changed
      • changedInput schema / properties / emails / description
        Previous value: -"Email addresses; for visitor also company domains, e.g. acme.com (required unless confirm_token)"New value: +"Emails; for member also company domains (required unless confirm_token)"
      • addedInput schema / properties / group
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / permissions / description
        Previous value: -"collaborator: exactly these ticks; for existing collaborators, changes theirs"New value: +"Ticks, personal site"
      • removedInput schema / properties / permissions / items / enum
        Removed value: -[
        -  "edit_site",
        -  "members_view",
        -  "members_edit",
        -  "ai_key",
        -  "scan"
        -]
      • changedInput schema / properties / role / description
        Previous value: -"Required unless confirm_token. An audience (students, clients) is member. viewer also sees versions and people"New value: +"developer, viewer, member, admin or custom. An audience (students, clients) is member"
      • removedInput schema / properties / role / enum
        Removed value: -[
        -  "editor",
        -  "collaborator",
        -  "viewer",
        -  "visitor",
        -  "member",
        -  "workspace_visitor",
        -  "workspace_viewer"
        -]
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedadd_plugin3 fields changed
      • changedInput schema / properties / lang / description
        Previous value: -"The <html lang> of the snippet's page (e.g. de); one snippet per language"New value: +"The snippet page's <html lang>, e.g. de (one snippet per language)"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "confirm_token": {
        +      "type": "string"
        +    },
        +    "plugin_id": {
        +      "type": "string"
        +    },
        +    "snippet_html": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedapprove_booking1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedbind_list2 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: approval status"New value: +"From the first call"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedcancel_booking2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcancel_transfer1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedcreate_upload_link2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • removedInput schema / properties / site_token / description
        Removed value: -"From the first deploy (no account)"
    • Changeddelete_list2 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: approval status"New value: +"From the first call"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changeddelete_site2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • removedInput schema / properties / site_token / description
        Removed value: -"From the first deploy (no account)"
    • Changeddeploy4 fields changed
      • addedInput schema / properties / confirm_token
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • removedInput schema / properties / site_token / description
        Removed value: -"From the first deploy (no account)"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "claim_url": {
        +      "type": "string"
        +    },
        +    "revision": {
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "number": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "site": {
        +      "properties": {
        +        "name": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "site_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changededit_booking1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedfind_visitor_records1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedget_account8 fields changed
      • removedOutput schema / properties / agent_message
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / confirm_token
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "description": "On failure (isError): {code, message}"
        -}
      • addedOutput schema / properties / new / additionalProperties
        Added value: +{
        +  "type": "number"
        +}
      • removedOutput schema / properties / new / description
        Removed value: -"Counts of new items needing attention, by kind"
      • removedOutput schema / properties / new / properties
        Removed value: -{}
      • removedOutput schema / properties / notices / description
        Removed value: -"Problems and unread notices (at most 10); mention a problem first; reading marks nothing"
      • addedOutput schema / properties / sites
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_analytics1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedget_domains1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedget_free_slots1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedget_lists1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "values": {
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "next_cursor": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_site3 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • removedInput schema / properties / site_token / description
        Removed value: -"From the first deploy (no account)"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "files": {
        +      "items": {
        +        "properties": {
        +          "path": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "live_revision": {
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "number": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedimport_list_items2 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: approval status"New value: +"From the first call"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedlist_people1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedlist_plugins2 fields changed
      • changedInput schema / properties / lang / description
        Previous value: -"The <html lang> of the snippet's page (e.g. de); one snippet per language"New value: +"The snippet page's <html lang>, e.g. de (one snippet per language)"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedlist_versions2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • removedInput schema / properties / site_token / description
        Removed value: -"From the first deploy (no account)"
    • Changedmove_sites2 fields changed
      • removedInput schema / properties / members_read
        Removed value: -{
        -  "description": "New workspace: every member reads form messages",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / people / description
        Previous value: -"Site Collaborator emails to invite"New value: +"Site Developer emails to invite"
    • Changedprotect2 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: approval status"New value: +"From the first call"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedremove_domain1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedremove_list_items1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedremove_people1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedremove_plugin1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedrollback3 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • removedInput schema / properties / site_token / description
        Removed value: -"From the first deploy (no account)"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "revision": {
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "number": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedsave_group
    • Changedsave_list2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "fields": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "type": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedset_booking_outcome1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedsite_settings4 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • addedInput schema / properties / time_zone
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / workspace / description
        Previous value: -"Moves a private site in: a workspace id or name, or \"new\""New value: +"Moves a private site in: workspace id or name, or \"new\""
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "approve_url": {
        +      "type": "string"
        +    },
        +    "confirm_token": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsort_list_items1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedtest_plugin1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedtransfer_site1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedundo_list_change1 field changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedunprotect2 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: approval status"New value: +"From the first call"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
    • Changedupdate_list_items2 fields changed
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "agent_message": {
        +      "type": "string"
        +    },
        +    "change_id": {
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedupdate_plugin2 fields changed
      • changedInput schema / properties / lang / description
        Previous value: -"The <html lang> of the snippet's page (e.g. de); one snippet per language"New value: +"The snippet page's <html lang>, e.g. de (one snippet per language)"
      • removedInput schema / properties / site / description
        Removed value: -"Site name"
  11. 1 tool update
    • Changedsite_settings1 field changed
      • changedInput schema / properties / notifications / description
        Previous value: -"Own emails: forms, bookings, health (auto, daily, off or {email, in_app}); domain_live, domain_reminder, product_news; scope (site or all)"New value: +"Own emails: forms, bookings, health (auto, daily, off, {email, in_app}); domain_live, domain_reminder, product_news; count_usage; scope site|all"
  12. 47 tool updates
    • Changedadd_booking15 fields changed
      • removedInput schema / properties / answers / additionalProperties
        Removed value: -{
        -  "maxLength": 500,
        -  "type": "string"
        -}
      • changedInput schema / properties / answers / description
        Previous value: -"{question id: answer} for the settings' questions (\"\" removes one)"New value: +"{question id: answer} (\"\" removes one)"
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, after the user's yes"New value: +"After the user's yes"
      • removedInput schema / properties / email / maxLength
        Removed value: -254
      • removedInput schema / properties / force / description
        Removed value: -"Book even if it clashes"
      • removedInput schema / properties / name / maxLength
        Removed value: -100
      • removedInput schema / properties / notes / maxLength
        Removed value: -1000
      • changedInput schema / properties / notify_customer / description
        Previous value: -"Email the customer (default true when there is an email)"New value: +"Email the customer (default true)"
      • removedInput schema / properties / phone / maxLength
        Removed value: -40
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the site's booking page"New value: +"Default: the booking page"
      • removedInput schema / properties / resource / maxLength
        Removed value: -60
      • changedInput schema / properties / series / description
        Previous value: -"Weekly repeat: count or until (YYYY-MM-DD); on_clash \"skip\" leaves out the dates that clash"New value: +"Weekly repeat: {every: week|fortnight, count 2-52 or until YYYY-MM-DD, on_clash: \"skip\"}"
      • removedInput schema / properties / series / properties
        Removed value: -{
        -  "count": {
        -    "maximum": 52,
        -    "minimum": 2,
        -    "type": "integer"
        -  },
        -  "every": {
        -    "enum": [
        -      "week",
        -      "fortnight"
        -    ],
        -    "type": "string"
        -  },
        -  "on_clash": {
        -    "const": "skip",
        -    "type": "string"
        -  },
        -  "until": {
        -    "type": "string"
        -  }
        -}
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedadd_domain4 fields changed
      • changedInput schema / properties / confirm_root / description
        Previous value: -"true: connect a root domain (example.com) anyway, after add_domain recommended www"New value: +"true: connect a root domain anyway (after add_domain recommended www)"
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, once the user said yes (hostname may then be left out)"New value: +"After the user's yes (hostname optional then)"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedadd_list_items4 fields changed
      • removedInput schema / properties / items / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / items / maxItems
        Removed value: -500
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedadd_people6 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: re-call with it (site only) for the approval status"New value: +"From the first call (site only): approval status"
      • removedInput schema / properties / emails / maxItems
        Removed value: -50
      • addedInput schema / properties / permissions
        Added value: +{
        +  "description": "collaborator: exactly these ticks; for existing collaborators, changes theirs",
        +  "items": {
        +    "enum": [
        +      "edit_site",
        +      "members_view",
        +      "members_edit",
        +      "ai_key",
        +      "scan"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / role / description
        Previous value: -"Required unless confirm_token. collaborator (old name editor): a Site Collaborator, edits. An audience (students, clients) is member (old name visitor; a Site Member): sees only the invite-only site. viewer: a Site Viewer, also sees versions and people. workspace_viewer (old name workspace_visitor): a Workspace Viewer, views every site of the workspace in the app, read-only"New value: +"Required unless confirm_token. An audience (students, clients) is member. viewer also sees versions and people"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedadd_plugin27 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, after the user's yes"New value: +"After the user's yes"
      • changedInput schema / properties / form_html / description
        Previous value: -"Forms: the page's <form>; declares the fields"New value: +"Forms: the page's <form>"
      • removedInput schema / properties / form_html / maxLength
        Removed value: -204800
      • removedInput schema / properties / forms / additionalProperties
        Removed value: -false
      • changedInput schema / properties / forms / description
        Previous value: -"Typed settings for a forms plugin (implies kind forms)"New value: +"Typed: fields, success_message, redirect, submit_label, notify, store, auto_reply"
      • removedInput schema / properties / forms / properties / auto_reply
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "message": {
        -      "type": "string"
        -    },
        -    "subject": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "message"
        -  ],
        -  "type": "object"
        -}
      • addedInput schema / properties / forms / properties / fields / description
        Added value: +"1-30 of: name, type, label, required, options, max_length, required_if {field, value}"
      • removedInput schema / properties / forms / properties / fields / items / additionalProperties
        Removed value: -false
      • removedInput schema / properties / forms / properties / fields / items / properties / label
        Removed value: -{
        -  "maxLength": 100,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / forms / properties / fields / items / properties / max_length
        Removed value: -{
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / forms / properties / fields / items / properties / options
        Removed value: -{
        -  "items": {
        -    "maxLength": 200,
        -    "minLength": 1,
        -    "type": "string"
        -  },
        -  "maxItems": 50,
        -  "minItems": 1,
        -  "type": "array"
        -}
      • removedInput schema / properties / forms / properties / fields / items / properties / required
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedInput schema / properties / forms / properties / fields / items / properties / required_if
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "field": {
        -      "type": "string"
        -    },
        -    "value": {
        -      "anyOf": [
        -        {
        -          "type": "string"
        -        },
        -        {
        -          "items": {
        -            "type": "string"
        -          },
        -          "type": "array"
        -        }
        -      ]
        -    }
        -  },
        -  "required": [
        -    "field",
        -    "value"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / properties / forms / properties / fields / maxItems
        Removed value: -30
      • removedInput schema / properties / forms / properties / fields / minItems
        Removed value: -1
      • removedInput schema / properties / forms / properties / notify
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedInput schema / properties / forms / properties / redirect
        Removed value: -{
        -  "maxLength": 300,
        -  "pattern": "^\\/(?![/\\\\])[^\\s\\\\]*$",
        -  "type": "string"
        -}
      • removedInput schema / properties / forms / properties / store
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedInput schema / properties / forms / properties / submit_label
        Removed value: -{
        -  "maxLength": 40,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / forms / properties / success_message
        Removed value: -{
        -  "maxLength": 300,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / kind / description
        Removed value: -"Which plugin (forms is implied by forms)"
      • changedInput schema / properties / lang / description
        Previous value: -"The <html lang> of the page the snippet goes on (e.g. de): snippet_html then speaks it. One snippet per language on a multilingual site"New value: +"The <html lang> of the snippet's page (e.g. de); one snippet per language"
      • changedInput schema / properties / name / description
        Previous value: -"A name for the owner, e.g. \"Contact form\""New value: +"e.g. \"Contact form\""
      • removedInput schema / properties / settings / additionalProperties
        Removed value: -{}
      • changedInput schema / properties / settings / description
        Previous value: -"Shaped as list_plugins settings_help for the kind (booking too)"New value: +"As list_plugins settings_help"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedapprove_booking4 fields changed
      • removedInput schema / properties / message / maxLength
        Removed value: -500
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the site's booking page"New value: +"Default: the booking page"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedbind_list4 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: re-call with it for the approval status"New value: +"From the first call: approval status"
      • removedInput schema / properties / selector / maxLength
        Removed value: -200
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedbring_back_sites3 fields changed
      • removedInput schema / properties / decline / maxItems
        Removed value: -250
      • removedInput schema / properties / sites / maxItems
        Removed value: -250
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedcancel_booking7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -{}
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, after the user's yes"New value: +"After the user's yes"
      • removedInput schema / properties / message / maxLength
        Removed value: -500
      • changedInput schema / properties / notify_customer / description
        Previous value: -"Email the customer (default true when there is an email)"New value: +"Email the customer (default true)"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the site's booking page"New value: +"Default: the booking page"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedcancel_transfer2 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedcreate_upload_link3 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedInput schema / properties / site_token / description
        Previous value: -"site_token from the first deploy (anonymous sites only)"New value: +"From the first deploy (no account)"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changeddelete_list3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: re-call with it for the approval status"New value: +"From the first call: approval status"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changeddelete_site3 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedInput schema / properties / site_token / description
        Previous value: -"site_token from the first deploy (anonymous sites only)"New value: +"From the first deploy (no account)"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changeddeploy13 fields changed
      • changedInput schema / properties / deleted / description
        Previous value: -"patch only: paths to remove"New value: +"patch: paths to remove"
      • changedInput schema / properties / files / items / properties / encoding / description
        Previous value: -"utf8 (default) for text, base64 for images and other binaries"New value: +"utf8 (default), or base64 for binaries"
      • changedInput schema / properties / files / items / properties / path / description
        Previous value: -"Relative path, e.g. index.html or assets/app.js"New value: +"e.g. img/a.png"
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"New sites: a fresh random value (e.g. a UUID); a retry with the same key and files replays the first result"New value: +"New sites: a random UUID; a retry with the same files replays the result"
      • removedInput schema / properties / idempotency_key / maxLength
        Removed value: -128
      • changedInput schema / properties / patch / description
        Previous value: -"true: files are only the changed ones"New value: +"true: only the changed files"
      • addedInput schema / properties / preview
        Added value: +{
        +  "description": "true: save a private preview, not live",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedInput schema / properties / site_token / description
        Previous value: -"site_token from the first deploy (anonymous sites only)"New value: +"From the first deploy (no account)"
      • addedInput schema / properties / staging
        Added value: +{
        +  "type": "boolean"
        +}
      • changedInput schema / properties / template / description
        Previous value: -"Template name, e.g. \"brasa\": its files become the site (files given replace those paths); then patch-deploy edits"New value: +"Template, e.g. \"brasa\" (files sent replace its paths)"
      • changedInput schema / properties / workspace / description
        Previous value: -"New sites: this workspace (id or name from get_account) or \"private\" (the person's own personal site). Omitted: the only place the site can go; when it could be personal or in a workspace (or one of several), nothing is published and the reply asks the user which"New value: +"New sites: workspace id or name, or \"private\"; omitted with several places, the reply asks which"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changededit_booking18 fields changed
      • removedInput schema / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / answers / additionalProperties
        Removed value: -{
        -  "maxLength": 500,
        -  "type": "string"
        -}
      • changedInput schema / properties / answers / description
        Previous value: -"{question id: answer} for the settings' questions (\"\" removes one)"New value: +"{question id: answer} (\"\" removes one)"
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, after the user's yes"New value: +"After the user's yes"
      • removedInput schema / properties / email / maxLength
        Removed value: -254
      • removedInput schema / properties / force / description
        Removed value: -"Book even if it clashes"
      • removedInput schema / properties / message / maxLength
        Removed value: -500
      • removedInput schema / properties / name / maxLength
        Removed value: -100
      • removedInput schema / properties / notes / maxLength
        Removed value: -1000
      • changedInput schema / properties / notify_customer / description
        Previous value: -"Email the customer (default true when there is an email)"New value: +"Email the customer (default true)"
      • removedInput schema / properties / phone / maxLength
        Removed value: -40
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the site's booking page"New value: +"Default: the booking page"
      • changedInput schema / properties / resource / description
        Previous value: -"With start: staff or room id or name"New value: +"With start: staff or room"
      • removedInput schema / properties / resource / maxLength
        Removed value: -60
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedInput schema / properties / start / description
        Previous value: -"A new time: local \"2026-10-15T14:00\" (booking time zone)"New value: +"New local time, e.g. \"2026-10-15T14:00\""
      • changedInput schema / properties / waitlist / description
        Previous value: -"A class time (cl_…) or wl_ entry: close its waitlist (bookings stay; the people waiting are emailed) or re-open it"New value: +"Class time or wl_ entry: close (bookings stay; those waiting are emailed) or re-open"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedfind_visitor_records3 fields changed
      • removedInput schema / properties / limit / maximum
        Removed value: -50
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedget_account5 fields changed
      • removedInput schema / properties / sites_limit / maximum
        Removed value: -100
      • removedInput schema / properties / sites_query / maxLength
        Removed value: -100
      • removedOutput schema / additionalProperties
        Removed value: -{}
      • removedOutput schema / properties / new / additionalProperties
        Removed value: -{}
      • removedOutput schema / properties / notices / items / additionalProperties
        Removed value: -{}
    • Changedget_activity5 fields changed
      • removedInput schema / properties / limit / maximum
        Removed value: -100
      • removedInput schema / properties / person / maxLength
        Removed value: -320
      • removedInput schema / properties / site / maxLength
        Removed value: -100
      • removedInput schema / properties / workspace / maxLength
        Removed value: -100
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedget_analytics4 fields changed
      • removedInput schema / properties / days / maximum
        Removed value: -1095
      • changedInput schema / properties / recent / description
        Previous value: -"Also return recent_events, counts per event over the last 30 minutes (to check a test tap)"New value: +"Also recent_events: counts per event, last 30 minutes (to check a test tap)"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedget_domains2 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedget_free_slots2 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedget_lists3 fields changed
      • removedInput schema / properties / limit / maximum
        Removed value: -1000
      • removedInput schema / properties / where / additionalProperties
        Removed value: -{}
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedget_site6 fields changed
      • changedInput schema / properties / check / description
        Previous value: -"accessibility: the full Accessibility check of the live pages (problems, where, how to fix)"New value: +"The full Accessibility check of the live pages (problems, fixes)"
      • removedInput schema / properties / paths / maxItems
        Removed value: -20
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedInput schema / properties / site_token / description
        Previous value: -"site_token from the first deploy (anonymous sites only)"New value: +"From the first deploy (no account)"
      • addedInput schema / properties / staging
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedimport_list_items6 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: re-call with it for the approval status"New value: +"From the first call: approval status"
      • removedInput schema / properties / csv / maxLength
        Removed value: -5000000
      • removedInput schema / properties / rows / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / rows / maxItems
        Removed value: -20000
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedleave_workspace4 fields changed
      • changedInput schema / properties / keep_editors / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "all",
        -      "none"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "maxItems": 250,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "all",
        +      "none"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / offer / maxItems
        Removed value: -250
      • removedInput schema / properties / take / maxItems
        Removed value: -250
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedlist_people2 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedlist_plugins3 fields changed
      • changedInput schema / properties / lang / description
        Previous value: -"The <html lang> of the page the snippet goes on (e.g. de): snippet_html then speaks it. One snippet per language on a multilingual site"New value: +"The <html lang> of the snippet's page (e.g. de); one snippet per language"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedlist_versions4 fields changed
      • removedInput schema / properties / since_days / maximum
        Removed value: -3650
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedInput schema / properties / site_token / description
        Previous value: -"site_token from the first deploy (anonymous sites only)"New value: +"From the first deploy (no account)"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedmark_messages2 fields changed
      • removedInput schema / properties / item_ids / maxItems
        Removed value: -50
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedmove_sites1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedprotect3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: re-call with it for the approval status"New value: +"From the first call: approval status"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedremove_domain3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, once the user said yes"New value: +"After the user's yes"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedremove_list_items3 fields changed
      • removedInput schema / properties / ids / maxItems
        Removed value: -500
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedremove_people4 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, once the user said yes"New value: +"After the user's yes"
      • removedInput schema / properties / entries / maxItems
        Removed value: -50
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedremove_plugin3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call, once the user said yes"New value: +"After the user's yes"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedrollback5 fields changed
      • addedInput schema / properties / discard
        Added value: +{
        +  "description": "With a preview id: deletes that preview instead",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / revision / description
        Previous value: -"Revision id or version number (list_versions)"New value: +"Revision id or version number (list_versions), or a preview id (get_site previews)"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedInput schema / properties / site_token / description
        Previous value: -"site_token from the first deploy (anonymous sites only)"New value: +"From the first deploy (no account)"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedsave_list9 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"All fields, first to last; one left out loses its values. Form or bookings list: owner columns only"New value: +"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"
      • removedInput schema / properties / fields / items
        Removed value: -{
        -  "properties": {
        -    "from": {
        -      "description": "Old name: rename, keeping values",
        -      "type": "string"
        -    },
        -    "label": {
        -      "maxLength": 80,
        -      "type": "string"
        -    },
        -    "list": {
        -      "description": "reference(s): linked list",
        -      "type": "string"
        -    },
        -    "name": {
        -      "description": "data-pl-field name",
        -      "type": "string"
        -    },
        -    "options": {
        -      "items": {
        -        "type": "string"
        -      },
        -      "maxItems": 50,
        -      "type": "array"
        -    },
        -    "type": {
        -      "enum": [
        -        "text",
        -        "long_text",
        -        "number",
        -        "price",
        -        "date",
        -        "image",
        -        "link",
        -        "yes_no",
        -        "rich_text",
        -        "reference",
        -        "references",
        -        "choice"
        -      ],
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "name",
        -    "type"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / properties / fields / maxItems
        Removed value: -30
      • removedInput schema / properties / label / maxLength
        Removed value: -80
      • removedInput schema / properties / public_json / anyOf
        Removed value: -[
        -  {
        -    "properties": {
        -      "fields": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "where": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "fields"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / public_json / description
        Previous value: -"Public JSON feed of these fields; null: off"New value: +"Public JSON feed {fields, where}; null: off"
      • addedInput schema / properties / public_json / type
        Added value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedset_booking_outcome3 fields changed
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Default: the site's booking page"New value: +"Default: the booking page"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedshare_file2 fields changed
      • removedInput schema / properties / name / maxLength
        Removed value: -255
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedsite_settings16 fields changed
      • removedInput schema / properties / ai_invites / description
        Removed value: -"Whether an AI may invite people (default on; each invite needs the owner's approval)"
      • changedInput schema / properties / analytics / description
        Previous value: -"Click counting (clicks), kinds on or off (contact = phone, email and messaging), labels {event key or name: display name, null removes}, hidden (replaces the list)"New value: +"Click counting: clicks, kinds, labels, hidden"
      • removedInput schema / properties / analytics / properties
        Removed value: -{
        -  "clicks": {
        -    "type": "boolean"
        -  },
        -  "hidden": {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "kinds": {
        -    "properties": {
        -      "contact": {
        -        "type": "boolean"
        -      },
        -      "downloads": {
        -        "type": "boolean"
        -      },
        -      "named": {
        -        "type": "boolean"
        -      },
        -      "outbound": {
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "labels": {
        -    "additionalProperties": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    },
        -    "type": "object"
        -  }
        -}
      • addedInput schema / properties / base_revision
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / instead / description
        Previous value: -"With archived false on a frozen site: a live site to freeze in its place"New value: +"Site to freeze instead"
      • changedInput schema / properties / notifications / description
        Previous value: -"The caller's own emails: per category auto (as they come), daily (one summary) or off, or {email, in_app}; health = site alerts: down/up, traffic drop (auto or off); domain_live/domain_reminder (Site Owner); product_news (opt-in); scope site (this site) or all (default)"New value: +"Own emails: forms, bookings, health (auto, daily, off or {email, in_app}); domain_live, domain_reminder, product_news; scope (site or all)"
      • removedInput schema / properties / notifications / properties
        Removed value: -{
        -  "bookings": {
        -    "anyOf": [
        -      {
        -        "enum": [
        -          "auto",
        -          "daily",
        -          "off"
        -        ],
        -        "type": "string"
        -      },
        -      {
        -        "properties": {
        -          "email": {
        -            "enum": [
        -              "auto",
        -              "daily",
        -              "off"
        -            ],
        -            "type": "string"
        -          },
        -          "in_app": {
        -            "type": "boolean"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  "domain_live": {
        -    "type": "boolean"
        -  },
        -  "domain_reminder": {
        -    "type": "boolean"
        -  },
        -  "forms": {
        -    "anyOf": [
        -      {
        -        "enum": [
        -          "auto",
        -          "daily",
        -          "off"
        -        ],
        -        "type": "string"
        -      },
        -      {
        -        "properties": {
        -          "email": {
        -            "enum": [
        -              "auto",
        -              "daily",
        -              "off"
        -            ],
        -            "type": "string"
        -          },
        -          "in_app": {
        -            "type": "boolean"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  "health": {
        -    "anyOf": [
        -      {
        -        "enum": [
        -          "auto",
        -          "daily",
        -          "off"
        -        ],
        -        "type": "string"
        -      },
        -      {
        -        "properties": {
        -          "email": {
        -            "enum": [
        -              "auto",
        -              "daily",
        -              "off"
        -            ],
        -            "type": "string"
        -          },
        -          "in_app": {
        -            "type": "boolean"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  "product_news": {
        -    "type": "boolean"
        -  },
        -  "scope": {
        -    "enum": [
        -      "site",
        -      "all"
        -    ],
        -    "type": "string"
        -  }
        -}
      • addedInput schema / properties / rows
        Added value: +{
        +  "type": "boolean"
        +}
      • changedInput schema / properties / search / description
        Previous value: -"Search: ai_training, ai_answers (robots.txt requests; default allow), primary_domain (main custom domain; null: first connected), domain_redirect (default false), review_url, steps (Get found ticks)"New value: +"ai_training, ai_answers (allow or block), primary_domain, domain_redirect, review_url, steps"
      • removedInput schema / properties / search / properties
        Removed value: -{
        -  "ai_answers": {
        -    "enum": [
        -      "allow",
        -      "block"
        -    ],
        -    "type": "string"
        -  },
        -  "ai_training": {
        -    "enum": [
        -      "allow",
        -      "block"
        -    ],
        -    "type": "string"
        -  },
        -  "domain_redirect": {
        -    "type": "boolean"
        -  },
        -  "primary_domain": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "review_url": {
        -    "type": [
        -      "string",
        -      "null"
        -    ]
        -  },
        -  "steps": {
        -    "properties": {
        -      "apple": {
        -        "type": "boolean"
        -      },
        -      "bing": {
        -        "type": "boolean"
        -      },
        -      "gbp": {
        -        "type": "boolean"
        -      },
        -      "review_link": {
        -        "type": "boolean"
        -      },
        -      "search_console": {
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  }
        -}
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • addedInput schema / properties / staging
        Added value: +{
        +  "enum": [
        +    "on",
        +    "off",
        +    "refresh",
        +    "promote"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / title / anyOf
        Previous value: -[
        -  {
        -    "maxLength": 200,
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / title / description
        Previous value: -"The title shown in the app (1-120 chars; null: the page <title>)"New value: +"Shown in the app (null: the page <title>)"
      • changedInput schema / properties / workspace / description
        Previous value: -"Move a private site into this workspace (id or name from get_account), or \"new\""New value: +"Moves a private site in: a workspace id or name, or \"new\""
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedsort_list_items3 fields changed
      • removedInput schema / properties / ids / maxItems
        Removed value: -500
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedtest_plugin2 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedtransfer_site3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: re-call with it for the approval status"New value: +"From the first call: approval status"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedundo_list_change2 fields changed
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedunprotect3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: re-call with it for the approval status"New value: +"From the first call: approval status"
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedupdate_list_items7 fields changed
      • changedInput schema / properties / items / description
        Previous value: -"Given fields change; null clears"New value: +"Given fields change; null clears. {id, values, if_updated_at}"
      • removedInput schema / properties / items / items / properties / if_updated_at
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / items / items / properties / values / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / items / maxItems
        Removed value: -500
      • removedInput schema / properties / items / minItems
        Removed value: -1
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedupdate_plugin12 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: after the person's yes to setup_summary, or the approve_url status"New value: +"After the person's yes to setup_summary, or for the approve_url status"
      • removedInput schema / properties / form_html / maxLength
        Removed value: -204800
      • removedInput schema / properties / forms / additionalProperties
        Removed value: -{}
      • changedInput schema / properties / forms / description
        Previous value: -"Forms: the whole settings, as add_plugin forms (same as settings)"New value: +"Forms: as settings"
      • changedInput schema / properties / lang / description
        Previous value: -"The <html lang> of the page the snippet goes on (e.g. de): snippet_html then speaks it. One snippet per language on a multilingual site"New value: +"The <html lang> of the snippet's page (e.g. de); one snippet per language"
      • removedInput schema / properties / patch / additionalProperties
        Removed value: -{}
      • addedInput schema / properties / recipients / description
        Added value: +"{add: an extra inbox, for every site on the plan (needs Manage)}"
      • removedInput schema / properties / recipients / properties
        Removed value: -{
        -  "add": {
        -    "description": "An extra inbox for this kind of notification, for every site on the plan (needs permission to change access and settings)",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / recipients / required
        Removed value: -[
        -  "add"
        -]
      • removedInput schema / properties / settings / additionalProperties
        Removed value: -{}
      • changedInput schema / properties / site / description
        Previous value: -"Site name, e.g. brave-otter-4821"New value: +"Site name"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": {},
        -  "properties": {
        -    "agent_message": {
        -      "type": "string"
        -    },
        -    "confirm_token": {
        -      "type": "string"
        -    },
        -    "error": {
        -      "description": "On failure (isError): {code, message}"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
  13. 2 tool updates
    • Changedadd_people3 fields changed
      • changedInput schema / properties / notify / description
        Previous value: -"visitor: email each new address (default true)"New value: +"member: email each new address (default true)"
      • changedInput schema / properties / role / description
        Previous value: -"Required unless confirm_token. An audience (students, clients) is visitor (an invited visitor): sees only the invite-only site. viewer is a collaborator: also sees versions and people. workspace_visitor: views every site of the workspace in the app, read-only"New value: +"Required unless confirm_token. collaborator (old name editor): a Site Collaborator, edits. An audience (students, clients) is member (old name visitor; a Site Member): sees only the invite-only site. viewer: a Site Viewer, also sees versions and people. workspace_viewer (old name workspace_visitor): a Workspace Viewer, views every site of the workspace in the app, read-only"
      • changedInput schema / properties / role / enum
        Previous value: -[
        -  "editor",
        -  "viewer",
        -  "visitor",
        -  "workspace_visitor"
        -]New value: +[
        +  "editor",
        +  "collaborator",
        +  "viewer",
        +  "visitor",
        +  "member",
        +  "workspace_visitor",
        +  "workspace_viewer"
        +]
    • Changedmove_sites1 field changed
      • changedInput schema / properties / people / description
        Previous value: -"Site Editor emails to invite"New value: +"Site Collaborator emails to invite"
  14. 25 tool updates
    • Changedadd_booking2 fields changed
      • changedInput schema / properties / plugin_id / description
        Previous value: -"From list_plugins"New value: +"Default: the site's booking page"
      • changedInput schema / required
        Previous value: -[
        -  "site",
        -  "plugin_id"
        -]New value: +[
        +  "site"
        +]
    • Addedadd_list_items
    • Changedadd_people2 fields changed
      • changedInput schema / properties / role / description
        Previous value: -"Required unless confirm_token. An audience (students, clients) is visitor (an invited visitor): sees only the invite-only site. viewer is a collaborator: also sees versions and people"New value: +"Required unless confirm_token. An audience (students, clients) is visitor (an invited visitor): sees only the invite-only site. viewer is a collaborator: also sees versions and people. workspace_visitor: views every site of the workspace in the app, read-only"
      • changedInput schema / properties / role / enum
        Previous value: -[
        -  "editor",
        -  "viewer",
        -  "visitor"
        -]New value: +[
        +  "editor",
        +  "viewer",
        +  "visitor",
        +  "workspace_visitor"
        +]
    • Changedapprove_booking3 fields changed
      • changedInput schema / properties / item_id / description
        Previous value: -"From list_plugin_data"New value: +"From get_lists"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"From list_plugins"New value: +"Default: the site's booking page"
      • changedInput schema / required
        Previous value: -[
        -  "site",
        -  "plugin_id",
        -  "item_id"
        -]New value: +[
        +  "site",
        +  "item_id"
        +]
    • Addedbind_list
    • Changedcancel_booking6 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • removedInput schema / properties / close_waitlist
        Removed value: -{
        -  "description": "A class booking: nobody waiting is offered the place; they are told no place will open",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / item_id / description
        Previous value: -"From list_plugin_data"New value: +"From get_lists"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"From list_plugins"New value: +"Default: the site's booking page"
      • removedInput schema / properties / whole_class
        Removed value: -{
        -  "description": "A class booking: cancel this class time for everyone booked in, in one step",
        -  "type": "boolean"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "site",
        -  "plugin_id",
        -  "item_id"
        -]New value: +[
        +  "site",
        +  "item_id"
        +]
    • Addeddelete_list
    • Changededit_booking5 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / item_id / description
        Previous value: -"From list_plugin_data"New value: +"From get_lists"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"From list_plugins"New value: +"Default: the site's booking page"
      • addedInput schema / properties / waitlist
        Added value: +{
        +  "description": "A class time (cl_…) or wl_ entry: close its waitlist (bookings stay; the people waiting are emailed) or re-open it",
        +  "enum": [
        +    "closed",
        +    "open"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "site",
        -  "plugin_id",
        -  "item_id"
        -]New value: +[
        +  "site",
        +  "item_id"
        +]
    • Addedfind_visitor_records
    • Changedget_account2 fields changed
      • changedInput schema / properties / include / description
        Previous value: -"Extra sections"New value: +"Extra sections (\"all\": every one but referrals). referrals: the person's own invite link (and invite seats left), only when they ask for it; never suggest it"
      • changedInput schema / properties / include / items / enum
        Previous value: -[
        -  "billing",
        -  "usage",
        -  "storage",
        -  "downgrade",
        -  "all"
        -]New value: +[
        +  "billing",
        +  "usage",
        +  "storage",
        +  "downgrade",
        +  "notifications",
        +  "referrals",
        +  "all"
        +]
    • Addedget_free_slots
    • Addedget_lists
    • Changedget_site1 field changed
      • addedInput schema / properties / check
        Added value: +{
        +  "description": "accessibility: the full Accessibility check of the live pages (problems, where, how to fix)",
        +  "enum": [
        +    "accessibility"
        +  ],
        +  "type": "string"
        +}
    • Addedimport_list_items
    • Removedlist_plugin_data
    • Changedmark_messages2 fields changed
      • changedInput schema / properties / item_ids / description
        Previous value: -"From list_plugin_data, or notice ids (nt_…) from get_account"New value: +"From get_lists, or notice ids (nt_…) from get_account"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"Not needed for notice ids or all"New value: +"Optional: found from item_ids"
    • Addedremove_list_items
    • Changedrollback2 fields changed
      • addedInput schema / properties / revision / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "exclusiveMinimum": 0,
        +    "type": "integer"
        +  }
        +]
      • removedInput schema / properties / revision / type
        Removed value: -"string"
    • Addedsave_list
    • Changedset_booking_outcome3 fields changed
      • changedInput schema / properties / item_id / description
        Previous value: -"From list_plugin_data"New value: +"From get_lists"
      • changedInput schema / properties / plugin_id / description
        Previous value: -"From list_plugins"New value: +"Default: the site's booking page"
      • changedInput schema / required
        Previous value: -[
        -  "site",
        -  "plugin_id",
        -  "item_id",
        -  "outcome"
        -]New value: +[
        +  "site",
        +  "item_id",
        +  "outcome"
        +]
    • Changedsite_settings12 fields changed
      • changedInput schema / properties / notifications / description
        Previous value: -"Emails to the account for every site on the plan: auto (as they come, then a daily summary over the plan's daily number), daily or off"New value: +"The caller's own emails: per category auto (as they come), daily (one summary) or off, or {email, in_app}; health = site alerts: down/up, traffic drop (auto or off); domain_live/domain_reminder (Site Owner); product_news (opt-in); scope site (this site) or all (default)"
      • addedInput schema / properties / notifications / properties / bookings / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "auto",
        +      "daily",
        +      "off"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "email": {
        +        "enum": [
        +          "auto",
        +          "daily",
        +          "off"
        +        ],
        +        "type": "string"
        +      },
        +      "in_app": {
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / notifications / properties / bookings / enum
        Removed value: -[
        -  "auto",
        -  "daily",
        -  "off"
        -]
      • removedInput schema / properties / notifications / properties / bookings / type
        Removed value: -"string"
      • addedInput schema / properties / notifications / properties / domain_live
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / notifications / properties / domain_reminder
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / notifications / properties / forms / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "auto",
        +      "daily",
        +      "off"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "email": {
        +        "enum": [
        +          "auto",
        +          "daily",
        +          "off"
        +        ],
        +        "type": "string"
        +      },
        +      "in_app": {
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / notifications / properties / forms / enum
        Removed value: -[
        -  "auto",
        -  "daily",
        -  "off"
        -]
      • removedInput schema / properties / notifications / properties / forms / type
        Removed value: -"string"
      • addedInput schema / properties / notifications / properties / health
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "auto",
        +        "daily",
        +        "off"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "properties": {
        +        "email": {
        +          "enum": [
        +            "auto",
        +            "daily",
        +            "off"
        +          ],
        +          "type": "string"
        +        },
        +        "in_app": {
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  ]
        +}
      • addedInput schema / properties / notifications / properties / product_news
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / notifications / properties / scope
        Added value: +{
        +  "enum": [
        +    "site",
        +    "all"
        +  ],
        +  "type": "string"
        +}
    • Addedsort_list_items
    • Addedundo_list_change
    • Addedupdate_list_items
    • Changedupdate_plugin1 field changed
      • addedInput schema / properties / forms
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Forms: the whole settings, as add_plugin forms (same as settings)",
        +  "type": "object"
        +}
  15. 2 tool updates
    • Changedcancel_booking1 field changed
      • addedInput schema / properties / whole_class
        Added value: +{
        +  "description": "A class booking: cancel this class time for everyone booked in, in one step",
        +  "type": "boolean"
        +}
    • Changeddeploy1 field changed
      • changedInput schema / properties / workspace / description
        Previous value: -"New sites: this workspace (id or name from get_account) or \"private\" (the person's own private site). Omitted: the only paid workspace, else private; required when the person is in several"New value: +"New sites: this workspace (id or name from get_account) or \"private\" (the person's own personal site). Omitted: the only place the site can go; when it could be personal or in a workspace (or one of several), nothing is published and the reply asks the user which"
  16. 1 tool update
    • Changedsite_settings1 field changed
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search: ai_training, ai_answers (robots.txt requests; default allow), primary_domain (main custom domain; null: first connected), domain_redirect (default false), review_url, steps (Get found ticks)",
        +  "properties": {
        +    "ai_answers": {
        +      "enum": [
        +        "allow",
        +        "block"
        +      ],
        +      "type": "string"
        +    },
        +    "ai_training": {
        +      "enum": [
        +        "allow",
        +        "block"
        +      ],
        +      "type": "string"
        +    },
        +    "domain_redirect": {
        +      "type": "boolean"
        +    },
        +    "primary_domain": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "review_url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "steps": {
        +      "properties": {
        +        "apple": {
        +          "type": "boolean"
        +        },
        +        "bing": {
        +          "type": "boolean"
        +        },
        +        "gbp": {
        +          "type": "boolean"
        +        },
        +        "review_link": {
        +          "type": "boolean"
        +        },
        +        "search_console": {
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
  17. 3 tool updates
    • Changedcancel_booking1 field changed
      • addedInput schema / properties / close_waitlist
        Added value: +{
        +  "description": "A class booking: nobody waiting is offered the place; they are told no place will open",
        +  "type": "boolean"
        +}
    • Changedget_analytics1 field changed
      • addedInput schema / properties / recent
        Added value: +{
        +  "description": "Also return recent_events, counts per event over the last 30 minutes (to check a test tap)",
        +  "type": "boolean"
        +}
    • Changedsite_settings1 field changed
      • addedInput schema / properties / analytics
        Added value: +{
        +  "description": "Click counting (clicks), kinds on or off (contact = phone, email and messaging), labels {event key or name: display name, null removes}, hidden (replaces the list)",
        +  "properties": {
        +    "clicks": {
        +      "type": "boolean"
        +    },
        +    "hidden": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "kinds": {
        +      "properties": {
        +        "contact": {
        +          "type": "boolean"
        +        },
        +        "downloads": {
        +          "type": "boolean"
        +        },
        +        "named": {
        +          "type": "boolean"
        +        },
        +        "outbound": {
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "labels": {
        +      "additionalProperties": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
  18. 4 tool updates
    • Addedbring_back_sites
    • Addedleave_workspace
    • Addedmove_sites
    • Changedupdate_plugin1 field changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"From the first call: the approve_url status"New value: +"From the first call: after the person's yes to setup_summary, or the approve_url status"

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables users to build, publish, share, and manage websites, dashboards, reports, and small web tools through chat, including updating content and design, managing access and custom domains, and restoring deployments.
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Send a live, private link to a client from Claude. SnapHost publishes what your assistant builds as a shareable website with a stable URL, updates it in place, restricts viewers by email or password, rolls back bad versions, serves custom domains, and stores form and waitlist data with no backend.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Lets AI assistants publish and edit pages, components, media and blog posts on a hosted RedStudio website, with shop, Stripe payments, bookings and event tickets included. Site settings, redirects, booking hours and revisions are all managed through the assistant instead of a separate backend.
    29
    24 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources