simplepages
Server Details
Build and edit landing pages and websites from your AI assistant, and pull how they are performing.
- Status
- Healthy
- Uptime
- 99.1% over 83 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 20 tools
Each tool targets a distinct resource+action, and the descriptions explicitly resolve the few near-overlaps (create_page vs add_page_to_site, get_page_analytics vs get_site_analytics vs get_workspace_analytics). The three analytics tools and the add/list/remove triads for scripts, webhooks and redirects are cleanly separated by scope.
The dominant verb_noun pattern is readable, but two systematic inconsistencies exist: creation uses both create_ (create_page, create_site, create_redirect) and add_ (add_page_to_site, add_script, add_webhook), and removal uses both delete_redirect and remove_script/remove_webhook. An agent must guess which verb family applies to a given resource.
Twenty tools cover six coherent sub-domains (pages, sites, redirects, scripts, webhooks, analytics/leads), so each earns its place, though the count sits at the high end of comfortable. A few reads (e.g. get_site, get_redirect) are absent while list variants proliferate, so it is slightly heavier than strictly needed.
Creation, listing, editing and analytics are well covered, but there is no publish tool at all despite nearly every write description deferring to 'publishing is a separate step', which leaves a dead end in the core workflow. There is also no delete_page, no delete_site, no update_site, and redirects have create/list/delete but no update.
Available Tools
20 toolsadd_page_to_siteAdd a page to a websiteAInspect
Generate a new page inside an existing website and save it as a draft. The home page is created in the published state so site publishing includes it; the site itself is not published by this call. Use this rather than create_page whenever the page belongs to a site, so it inherits the site's brand and is served under the site's domain. The home page is the one with slug "index"; on a new site add it first, since later pages reuse its header, footer and theme and are linked from its menu. Find site ids with list_sites.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | URL slug, e.g. "about" or "blog/launch". Lowercase words and hyphens; may nest with "/". Derived from the title when omitted, and de-duplicated against existing pages. Use "index" for the home page: it is honoured only while the site has no home page (or, on a site built with the html/v2 page engine, to retry a home page whose build failed); otherwise the call fails and you should edit the existing page instead. | |
| brief | Yes | What the page should contain: its purpose, audience, sections, and call to action. The richer this is, the better the page. Ignored when retrying a failed home page with slug "index": that rebuild reuses the page's original brief (use edit_page to change it). | |
| title | Yes | Page title, e.g. "About us". Shown in the dashboard. A home page retry keeps the page's original name, and the result reports that. | |
| siteId | Yes | The site to add the page to (id from list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| path | Yes | Path within the site, e.g. "/about". |
| slug | Yes | The slug actually used, which may differ from the one requested: it is normalised and de-duplicated against existing pages. |
| title | Yes | |
| pageId | Yes | Page UUID. Pass to get_page / edit_page. |
| siteId | Yes | |
| status | Yes | The home page (slug "index") starts published, so publishing the site includes it; other pages start as drafts. Neither means the site is live. |
| editUrl | Yes | |
| finalized | Yes | False when the page generated and saved but its dashboard record didn't finish updating. The page itself is fine; the list may lag. |
| previewUrl | Yes | Shareable link. When previewCurrent is false it may not show the new page for a moment. |
| previewCurrent | No | Whether previewUrl already serves the new page. False means it is saved but the preview may lag a moment; editUrl shows it now. Absent on pages built by the older engine, which serve it at once. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, so the description carries the meaningful burden: the page is saved as a draft, the home page is created in published state, and the site itself is NOT published by this call. It also discloses inheritance behavior (brand, domain, shared header/footer/theme), which the agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and draft state, followed by the sibling routing and the home-page ordering rule. The "index"/home-page concept is explained across two clauses, a mild redundancy, but every sentence otherwise adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with an output schema and full schema descriptions, the remaining unknowns an agent needs are side effects and state changes, which are all covered (draft vs published home page, site not published, inheritance). Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains slug, brief, title and siteId in detail, including the "index" home-page rule. The description mostly restates the slug "index" semantics rather than adding new parameter meaning, so baseline 3 applies; ordering context is the only marginal addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Generate a new page inside an existing website and save it as a draft") and immediately distinguishes itself from the sibling create_page by scope (page belongs to a site). An agent can route correctly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative ("Use this rather than create_page whenever the page belongs to a site") and gives an ordering rule for new sites: add the home page (slug "index") first because later pages reuse its header/footer/theme. It also points to list_sites for obtaining a siteId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_scriptAdd a third-party script to a pageAInspect
Attach a third-party script to a page, either by URL or as inline code. Use this for analytics, pixels, chat widgets and similar integrations rather than editing the page HTML, so the script survives page edits. Scripts are injected when the page is next saved in the editor or published; the change is not live on an already-published page until then.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL of an external script to load. Give either this or code, not both. | |
| code | No | Inline JavaScript to embed. Give either this or url, not both. Paste the code itself; a wrapping <script> tag is unwrapped. Limit 64000 characters — host anything larger at a URL and use url instead. | |
| label | Yes | What this script is, for the dashboard, e.g. "Meta Pixel". Not shown to visitors. | |
| pageId | Yes | The page to act on (id from list_pages / list_sites). | |
| enabled | No | Whether the script is active. Defaults to true. | |
| placement | No | Where it goes: "head" for anything that must run before the page renders (most analytics), "body" for everything else, just before </body>. Defaults to "body". |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | States when the script actually reaches the live page. |
| count | Yes | Scripts on the page after this one. |
| pageId | Yes | |
| script | Yes | |
| verified | Yes | False when the write reported success but the confirming read did not match. The change is probably saved; re-read with list_scripts to be sure. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the description carries the burden of behavioral disclosure. It fully discloses that the script is injected when the page is next saved or published, not immediately on already-published pages, and notes the unwrapping of a script tag for inline code. This is transparent and goes beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and purpose, followed by usage context and a behavioral caveat. Every clause adds meaningful information without redundancy or fluff, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and an output schema (which covers return values), the description sufficiently covers purpose, timing, and rationale. It references other tools in schema (list_pages/list_sites) and provides enough context for an agent to decide when to use it. The description is complete for a mutation tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters with detailed explanations (e.g., character limit, defaults, enum choices). The description adds minimal parameter-specific value; it mentions 'either by URL or as inline code' which aligns with url/code, but does not introduce new semantics. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool attaches a third-party script to a page via URL or inline code, with a specific resource (page) and action (add). It also differentiates from editing page HTML by emphasizing the script survives page edits, which distinguishes it from sibling tools like edit_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Use this for analytics, pixels, chat widgets and similar integrations rather than editing the page HTML' and clarifies that the change takes effect on next save or publish, so it's clear when live. It also implies a contraindication: not for scripts that need immediate effect or are too large, as the code param mentions hosting larger scripts via URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_webhookForward captured leads to a webhookAInspect
Forward every lead captured on a page (pageId) or across a whole website (siteId) to a URL, for Zapier, Make, a CRM or your own endpoint. Enabling a webhook sends a test POST to it first and only enables it if that succeeds, so a URL that isn't reachable is saved disabled rather than silently dropping leads. Use this instead of adding fetch() to the page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public https:// endpoint to POST each lead to. It must answer a test POST with a 2xx before it will be enabled. Leads are sent in full, so plain http, localhost and private addresses are all refused. | |
| pageId | No | Attach to a single page (id from list_pages). Give this or siteId. | |
| siteId | No | Attach to a whole website, so every page in it forwards leads there (id from list_sites). Give this or pageId. Usually the right choice for a CRM or automation that should cover the whole website. | |
| enabled | No | Whether to activate it now (default true, which triggers the test POST). Pass false to save it switched off without testing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| count | Yes | Webhooks on the page after this one. |
| scope | Yes | Whether this concerns one page or a whole website. |
| pageId | Yes | Set when scope is page. |
| siteId | Yes | Set when scope is site. |
| webhook | Yes | |
| testStatusCode | Yes | HTTP status the test POST received, or null if the request could not be made at all. |
| verificationFailed | Yes | True when enabling was requested but the test POST did not return 2xx, so it was saved DISABLED and no leads will be sent to it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only specify readOnlyHint: falseainer, so the description carries the burden of behavioral disclosure. It clearly explains the test POST on enabling, the conditional activation (only if test succeeds), and the refusal of unsafe URLs. It does not mention side effects like rate limits or data format, but the core behavior is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loads the main purpose, then adds a critical behavioral caveat (test on enable) and a practical alternative. Every word adds value, with no unnecessary repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's purpose, usage context, alternatives, and the critical enable-test behavior. It slots well alongside sibling tools by clarifying what this one does (add webhook) and how it differs from the fetch approach. The output schema exists elsewhere, so no need to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter is already well-documented in the input schema (e.g., url's test requirement, siteId's choice guidance). The tool description adds minimal extra semantic value beyond the schema, only reiterating the test behavior and the URL constraint already present in schema. Thus, baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: forwarding captured leads to a URL, with specific scope (page or site) and target (Zapier, Make, CRM, or own endpoint). It is specific and distinguishes from sibling tools by focusing on webhook creation rather than pages or redirects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'Use this instead of adding fetch() to the page,' offering a direct alternative. It also provides context on when to use siteId vs pageId, noting 'siteId... Usually the right choice for a CRM or automation that should cover the whole website.' This covers both when to use and how to choose parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pageCreate a landing pageAInspect
Generate a new landing page from a description. Creates a real page in the workspace (HTML with copy, layout, and imagery), saved as a draft you can open in the editor or publish. Returns the page id, a shareable preview URL to view the result, and its edit URL. Publishing is a separate step.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional page name shown in the dashboard. Defaults to a title derived from the description. | |
| outline | No | Optional explicit section outline (markdown or plain text). When omitted, the page is structured from the description. | |
| description | Yes | What the page is for: the business/offer, audience, key sections, and the primary call to action. The richer this is, the better the page. | |
| workspace_id | No | Which workspace to act in. Only meaningful when this connection can access more than one workspace: omit it and you get an error listing the available workspace ids (also available from list_sites) to choose from. On a single-workspace connection, omit it or pass that workspace's own id; a different id is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| note | Yes | Human-readable summary of what to do next. |
| pageId | Yes | UUID of the new page. |
| status | Yes | |
| editUrl | Yes | |
| finalized | Yes | False when the page generated and saved but its dashboard record didn't finish updating. The page itself is fine; the list may lag. |
| truncated | Yes | True if generation hit the output cap and may be cut short. |
| previewUrl | Yes | Shareable link. When previewCurrent is false it may not show the new page for a moment. |
| imagesFailed | Yes | |
| previewCurrent | No | Whether previewUrl already serves the new page. False means it is saved but the preview may lag a moment; editUrl shows it now. Absent on pages built by the older engine, which serve it at once. |
| imagesGenerated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only state that this is not read-only, while the description adds meaningful behavioral context: it creates a real page in the workspace, saves it as a draft, allows opening/publishing later, and returns preview and edit URLs. This goes well beyond the annotation and clearly indicates mutation and draft-state behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the action, subsequent sentences explain output, draft state, and the separate publishing step. Every sentence adds useful information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and full parameter schema coverage, the description is complete enough for an agent to call the tool correctly. It also adds the important context that creation results in a draft rather than a published page, which is not captured by the minimal annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the input schema, including name, outline, description, and workspace_id semantics. The description adds only a high-level reference to generating from a description and does not add parameter-specific detail beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: generate/create a new landing page from a description, and it clarifies that a real workspace page is produced. It does not explicitly differentiate itself from sibling tools such as add_page_to_site or create_site, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating a new landing page and notes that publishing is a separate step, which gives some usage context. However, it does not explicitly say when to use this tool versus add_page_to_site, create_site, or edit_page, leaving alternatives to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_redirectAdd a website redirectAInspect
Add a URL redirect rule to a website, sending one path to another. Use this when a page moves or a URL changes, so existing links keep working. Redirect rules take effect when the site is next published; publishing is a separate step.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The website these redirects belong to (id from list_sites). | |
| toPath | Yes | Where to send it: a path like "/pricing", or a full https:// URL for another site. With a wildcard source, ":splat" in this value is replaced by the matched remainder. | |
| fromPath | Yes | The path to redirect FROM, starting with "/", e.g. "/old-pricing". May end in "/*" to match everything beneath it, e.g. "/blog/*". | |
| statusCode | No | 301 for a permanent move (the default, and what search engines should follow), 302 for a temporary one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Always states that the rule is not live until the site is published. |
| siteId | Yes | |
| toPath | Yes | |
| fromPath | Yes | The stored path, after normalisation. |
| wildcard | Yes | True when the source path ends in "/*", so it matches everything beneath it rather than one exact path. |
| redirectId | Yes | |
| statusCode | Yes | 301 permanent, 302 temporary. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the key behavioral trait that redirects only take effect after the next publish, which is a separate step. This adds important context for the agent. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the primary action and then provide usage guidance and a key caveat. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 params, output schema present), the description covers purpose, usage, and the deferred publication effect. Parameter details are handled by the schema, and the output schema covers return format. It lacks only explicit mention of potential conflicts or idempotency, which are not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed parameter descriptions for all fields, including wildcard and status code semantics. The description adds no additional parameter information, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it adds a URL redirect rule to a website, with the specific purpose of handling moved pages or changed URLs. Distinguishes from sibling tools like add_page_to_site or delete_redirect by focusing on redirect creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case: 'Use this when a page moves or a URL changes, so existing links keep working.' Also notes that redirects take effect on next publish, implying when to expect activation. Does not explicitly list alternatives or exclusions, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_siteCreate a websiteAInspect
Create a new multi-page website in the workspace. The site starts empty: use add_page_to_site to build its pages, starting with the home page (slug "index"). To make a single standalone landing page instead, use create_page — that does not need a site.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the website, shown in the dashboard. Not the domain. | |
| workspace_id | No | Which workspace to act in. Only meaningful when this connection can access more than one workspace: omit it and you get an error listing the available workspace ids (also available from list_sites) to choose from. On a single-workspace connection, omit it or pass that workspace's own id; a different id is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| note | Yes | What to do next. |
| siteId | Yes | Pass to add_page_to_site / get_site_analytics. |
| createdAt | Yes | |
| pageCount | Yes | Always 0: a new site starts empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (only readOnlyHint=false), so the description carries the burden. It discloses key behavioral traits: the site starts empty, pages must be added via a sibling tool, and the home page convention (slug 'index') is documented. Could mention persistence/auth/rate-limit side effects of a mutation, but for a create operation the workflow disclosure is strong value-add beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core verb+object, then two bits of high-value context (workflow next step, alternative tool). Zero waste — every clause adds information an agent couldn't infer from the name or schema alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter creation tool with an output schema and readOnlyHint=false annotation, the description is complete: purpose, workflow, and alternative tool are covered. The output schema covers return values, so no redundancy is needed there. Nothing material is missing for an agent to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself is unusually rich (name is 'not the domain', workspace_id explains single vs. multi-workspace error behavior). The description text doesn't repeat params, which is correct — with complete rich schema coverage, the baseline of 3 applies and the schema's own quality elevates it to a 4 since the agent gets complete param semantics from the combined picture.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Create a new multi-page website in the workspace.' The description explicitly distinguishes it from siblings by calling out multi-page vs. standalone landing page, naming create_page and add_page_to_site as the alternatives. This is exactly what a purpose statement should do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when/when-not/alternatives guidance: 'use add_page_to_site to build its pages' explains the forward workflow, and 'To make a single standalone landing page instead, use create_page' gives a direct alternative with reasoning. No ambiguity about which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_redirectRemove a website redirectAInspect
Delete a redirect rule from a website. Get the redirectId from list_redirects. Once removed, the old path stops redirecting and will 404 unless a page exists there. Redirect rules take effect when the site is next published; publishing is a separate step.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The website these redirects belong to (id from list_sites). | |
| redirectId | Yes | The rule to delete (redirectId from list_redirects). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| siteId | Yes | |
| deleted | Yes | Always true here: a delete that matched nothing is an error result, not a success with deleted:false. |
| redirectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the description carries the burden of disclosing effects. It clearly states that the old path stops redirecting and may 404, and that changes apply on next publish—valuable behavioral context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and includes only necessary details about consequences and timing. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two well-documented parameters, the description covers purpose, prerequisite, effect, and timing. It lacks potential edge cases (e.g., non-existent redirect) but the output schema likely addresses that. Overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters already have descriptions including source (id from list_sites, redirectId from list_redirects). The description repeats 'Get the redirectId from list_redirects' without adding new semantic information, so it meets the baseline without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Delete a redirect rule from a website' with a specific verb and resource, and distinguishes from siblings like create_redirect and list_redirects. It also clarifies that the redirectId comes from list_redirects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a prerequisite ('Get the redirectId from list_redirects') and explains the consequence (404 unless a page exists) and timing (takes effect on next publish). This gives clear context for when to use the tool, though it doesn't explicitly mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_pageEdit a landing pageAInspect
Change an existing landing page by describing what to change in plain language (e.g. "change the headline to X", "add a pricing section", "make the hero button say Book now"). Edits the page's current content in place and saves it to the draft. The change is not published until you publish separately. Works for both standalone pages and pages inside a site. Use get_page / list_pages / list_sites to find the page id.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page UUID (id from list_pages / get_page). | |
| instructions | Yes | What to change, in plain language. Be specific about the target (which section, text, or button) and the desired result. The page's existing style, layout, and images are preserved. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| pageId | Yes | |
| status | No | Present only when something changed. |
| changed | Yes | False when the edit didn't apply (see `summary` for why). |
| changes | No | One line per edit, in the editor's own words. Present only for pages whose editor reports per-edit detail; absent is not a failure, and `editsApplied` is the count either way. |
| editUrl | Yes | |
| summary | Yes | One line on what changed, or why nothing did. |
| opsApplied | Yes | Deprecated alias of `editsApplied`. Prefer that field. |
| previewUrl | Yes | |
| editsApplied | Yes | How many edits were written. Always present; 0 if none. |
| previewCurrent | No | Whether previewUrl already reflects this edit. False means the edit is saved but the preview may lag, so open editUrl to see it now. Absent means we cannot say, not that it is stale. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the readOnlyHint annotation by explaining edits happen in place, results go to a draft, the change is not published until separately published, and existing style/layout/images are preserved. This is meaningful behavioral context not derivable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four focused sentences lead from purpose to examples to behavior to prerequisites. Each sentence adds distinct information, and there is no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only two parameters, existing annotations, and an output schema, the description fully covers what tool does, what happens to the draft, publish semantics, page types supported, and how to locate the required pageId. It is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters thoroughly (100% coverage), so the baseline is 3. The tool description adds value with plain-language instruction examples for the instructions parameter and extends page ID lookup guidance to list_sites, raising it slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's exact function: changing an existing landing page using plain-language instructions, with concrete examples. It clearly distinguishes from sibling create_page by emphasizing 'existing' and 'change in place'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this is for editing existing pages, explains that changes are saved to draft and not published, and tells users to find the page id via get_page/list_pages/list_sites. However, it does not explicitly name create_page as the alternative for new pages, so it stops short of an explicit when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageGet page detailsARead-onlyInspect
Get details for a single landing page or site page by its id (the page UUID). Returns name, status, edit URL, and live URL.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page UUID (id from list_pages / list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| slug | Yes | Set for site pages; null standalone. |
| siteId | Yes | Owning site, or null standalone. |
| status | Yes | Publish state. A standalone page is `published` once it has gone live. A site page that is `published` is included when its site is published (a site's home page starts that way), which does not mean the site is live yet. |
| editUrl | Yes | |
| liveUrl | Yes | |
| createdAt | Yes | |
| generated | Yes | False until the page has been built. A page whose FIRST build is still running also reports false; that is not a failure or a stalled build. A page whose first build recorded a timestamp keeps reporting true while it is rebuilt, but an older page that never recorded one reports false for the duration of a rebuild. False does not always mean the page has never been built. |
| description | Yes | The prompt text the page was generated from. |
| publishedAt | Yes | Null if never published. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read, so the bar is lower. The description adds the returned field set, but since an output schema exists that information is largely duplicated rather than adding new behavioral context such as not-found handling or pagination/rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core action and lookup key front-loaded and the return payload summarized after. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-record read with a fully documented one-parameter schema, readOnlyHint, and an output schema, the description covers everything needed to invoke it correctly. Minor gap: no note on behavior when the UUID is unknown or belongs to a different workspace.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema already describing pageId as 'the page UUID (id from list_pages / list_sites)'. The description's mention of 'page UUID' reinforces but does not extend the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Get details for a single landing page or site page by its id' — and names what comes back (name, status, edit URL, live URL). It implicitly contrasts with list_pages by emphasizing 'single ... by its id', but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch one record when you already hold a UUID. There is no statement of when to prefer this over list_pages, get_page_analytics, or edit_page, and no prerequisites or failure conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_analyticsGet page analyticsARead-onlyInspect
Get analytics for one page: visitors and views (with traffic sources, devices, countries) plus leads, revenue, and blocked spam submissions.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page UUID to fetch analytics for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| leads | Yes | Form submissions. Always present; zeroed if none. |
| pageId | Yes | |
| revenue | Yes | |
| traffic | Yes | Visitor analytics. Check `available` first: when false the only other field is `reason` and no counts are present. |
| spamBlockedLast7Days | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the safe read-only nature is known. The description adds detail about the returned data, but does not disclose additional behavioral context such as date-range defaults, pagination, or permission requirements. It is accurate and does not contradict the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, lists the main content types in a readable serialized format, and includes no filler. It is front-loaded with the tool's action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only analytics tool with a full schema and output schema, the description is largely complete: it names the object and the metrics. It could be slightly stronger by clarifying the time window or any default behavior, but no major information gap exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes pageId as 'The page UUID to fetch analytics for', with 100% schema description coverage. The tool description adds only the general idea of 'one page', so its parameter-level contribution is minimal; the schema carries the weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb and resource: 'Get analytics for one page'. It enumerates the exact metric categories (visitors, views, traffic sources, devices, countries, leads, revenue, blocked spam submissions), making its scope unambiguous and distinguishing it from sibling analytics tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one page' clearly signals page-level scope, which naturally separates it from the sibling tools get_site_analytics and get_workspace_analytics. It does not explicitly state when not to use it or name alternatives, but the scope language is enough to guide correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_analyticsGet website analyticsARead-onlyInspect
Get analytics for one website: visitors and views across all its pages, top traffic sources, a per-page breakdown, and total leads and revenue. For a single standalone page use get_page_analytics instead.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The site to fetch analytics for (id from list_sites). | |
| source | No | Optional: restrict to one traffic source, e.g. "google.com". Use "Direct" for visits with no referrer. Values come from the trafficSources list in an unfiltered call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| leads | Yes | Form submissions. Always present; zeroed if none. |
| siteId | Yes | |
| revenue | Yes | |
| traffic | Yes | |
| pageCount | Yes | Non-archived pages in the site. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, establishing this is a safe read operation. The description adds behavioral context by detailing the analytics dimensions returned, which helps the agent anticipate the tool's output and scope. It does not cover potential rate limits or aggregation delays, but those are not critical given the annotation and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and scope, followed by a useful sibling alternative. Every clause earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema already covers return values, so the description need not enumerate them. The provided description adequately conveys scope, the distinction from a sibling tool, and the key data categories, making it complete enough for a tool with only two parameters and a read-only annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters thoroughly documented: siteId references list_sites, and source explains 'Direct', example values, and where to get valid values (trafficSources). The description itself adds little parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Get analytics for one website') and enumerates the returned metrics: visitors, views, traffic sources, per-page breakdown, leads, and revenue. It also distinguishes itself from sibling tools by noting the website-level scope and directing page-level needs to get_page_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives an alternative for a different use case: 'For a single standalone page use get_page_analytics instead.' The 'one website' scope also implicitly distinguishes it from get_workspace_analytics, making it clear 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.
get_workspace_analyticsGet workspace analyticsARead-onlyInspect
Get a workspace-wide analytics overview: total visitors and views, top traffic sources, and a per-page ranking by visitors and leads.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | Which workspace to act in. Only meaningful when this connection can access more than one workspace: omit it and you get an error listing the available workspace ids (also available from list_sites) to choose from. On a single-workspace connection, omit it or pass that workspace's own id; a different id is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | |
| available | Yes | |
| fetchedAt | No | |
| pageCount | No | |
| totalViews | No | |
| viewsByDay | No | |
| pageRanking | No | |
| totalVisitors | No | |
| trafficSources | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds context on the scope (workspace-wide) and the type of metrics returned, but provides no further behavioral details such as time ranges or aggregation methods. This adds moderate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and scope, then lists the specific analytics components. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, output schema exists), the description adequately states what the tool returns. It lists key metrics but doesn't mention potential limitations like time frame or granularity; however, these are likely covered by the output schema. Overall, it is complete enough for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the workspace_id parameter is already fully described in the schema with guidance on omitting vs passing different IDs. The description itself adds no parameter-related information, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get a workspace-wide analytics overview' and lists specific metrics (total visitors and views, top traffic sources, per-page ranking). This distinguishes it from sibling get_page_analytics, which focuses on individual pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for workspace-wide analytics by using 'workspace-wide' and listing aggregated metrics. It does not explicitly mention alternatives or when not to use it, but the context and contrast with get_page_analytics are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_leadsList captured leadsARead-onlyInspect
List the people who submitted a form, newest activity first. Scope to one page with pageId, to a whole website with siteId, or omit both for every lead in the workspace. Returns their contact details, which page they came from, and the fields they submitted. Spam that was already blocked is excluded by default.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum leads to return (default 50, max 100). | |
| offset | No | How many to skip, for paging through a long list. Compare with `total` in the result to know whether more remain. | |
| pageId | No | Only leads who submitted a form on this page (id from list_pages). | |
| search | No | Match against name, email, or phone. Phone matching ignores formatting, so "(901) 555" finds "9015550001". | |
| siteId | No | Only leads who submitted on any page of this website (id from list_sites). Ignored when pageId is given. | |
| workspace_id | No | Which workspace to act in. Only meaningful when this connection can access more than one workspace: omit it and you get an error listing the available workspace ids (also available from list_sites) to choose from. On a single-workspace connection, omit it or pass that workspace's own id; a different id is rejected. | |
| includeBlocked | No | Include contacts marked as spam. Off by default; turn it on only when reviewing what was blocked. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Leads in this response. |
| leads | Yes | |
| total | Yes | Total matching the filters, ignoring paging. |
| hasMore | Yes | True when more leads match than were returned. Page with `offset`. |
| scopeTruncated | Yes | True when the page or site had more submissions than could be read in one pass, so some leads are missing from this list entirely. Paging will not recover them; narrow the scope instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates safe read operation. The description adds value by clarifying that spam is excluded by default, results are ordered newest first, and that the return includes contact details, page source, and submitted fields. It does not contradict annotations; it complements them nicely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one focused paragraph, efficiently conveying the use, scoping options, return content, and spam filter. Every sentence adds value, and the whole description is easy to scan using plain language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and the description covering read-only behavior, scoping, sorting, and return fields, the description is quite complete. It could mention pagination limits but the schema covers limit/offset. It adequately compensates for the tool's complexity and sibling context, hence a 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is well-documented. The description reinforces the meaning of pageId, siteId, and the omission of both, adding contextual explanation (e.g., siteId's precedence over pageId). It also adds insight into includeBlocked usage, which the schema notes but the description clarifies. Since the description adds beyond the schema, a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists people who submitted a form (i.e., leads), and specifies the ordering (newest activity first) and the optional scoping (page, site, or all). This distinguishes it from sibling list tools by focusing on lead capture, not pages, scripts, or redirects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states how to scope the query: use pageId for one page, siteId for a whole website, or omit both for all workspace leads. It also mentions the default exclusion of spam and suggests turning on includeBlocked only when reviewing blocked items. This provides clear context for when to use this tool and what parameters to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesList landing pagesARead-onlyInspect
List the standalone landing pages in the workspace, with their publish status, edit URL, and live custom domain (if connected).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum pages to return (default 50, max 250). | |
| workspace_id | No | Which workspace to act in. Only meaningful when this connection can access more than one workspace: omit it and you get an error listing the available workspace ids (also available from list_sites) to choose from. On a single-workspace connection, omit it or pass that workspace's own id; a different id is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of pages returned. |
| pages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, and the description usefully adds what each result carries (publish status, edit URL, live custom domain). It does not cover ordering, pagination beyond the schema's limit, or what 'standalone' excludes, so the added behavioral value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource and scope first and the return payload second — no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, readOnly annotations, and fully documented params, the description covers what an agent needs to call it. The only gap is the undefined scope of 'standalone' (whether site-attached pages are excluded), which could affect result expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the workspace_id fallback behavior, so the description need not restate parameters. It adds nothing beyond the schema, which is the expected baseline when structured fields are complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List the standalone landing pages in the workspace') and enumerates the returned fields, which lets an agent separate it from get_page or list_sites. It stops short of explicitly stating the boundary with sibling listing tools, so it lands at a strong 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the discovery call before get_page/edit_page, but nothing states when to prefer it over list_sites or get_page. No exclusions or prerequisites are given beyond the workspace_id note that lives in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_redirectsList website redirectsARead-onlyInspect
List the URL redirect rules on a website, in source-path order. Each rule sends one path to another, permanently (301) or temporarily (302).
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The website these redirects belong to (id from list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| siteId | Yes | |
| redirects | Yes | Ordered by source path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds detail about the ordering (source-path order) and redirect types (301 vs 302), which goes beyond the readOnlyHint annotation. It also clarifies the scope per site, adding useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are concise and front-loaded with the main purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 param, read-only, has output schema), the description is sufficient. It explains the ordering and redirect types, but could mention that no pagination or filtering is supported, though unlikely needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter siteId is fully described in the schema (coverage 100%). The description adds minimal extra meaning but doesn't need to compensate. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing URL redirect rules on a website, sorted by source-path order. It distinguishes itself from create_redirect and delete_redirect by focusing on listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for viewing redirects, but it doesn't explicitly mention when to use it versus alternatives like list_sites or create_redirect. Context is clear but no exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scriptsList third-party scripts on a pageARead-onlyInspect
List the third-party scripts attached to a page: analytics, chat widgets, pixels and the like. Inline code is summarised by length rather than returned in full.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page to act on (id from list_pages / list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| pageId | Yes | |
| scripts | Yes | |
| maxScripts | Yes | Per-page limit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds meaningful behavior: inline code is summarized by length rather than returned in full. This helps the agent set expectations about response content beyond what 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and uses examples efficiently. No wasted words or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter, a read-only annotation, and an output schema. The description covers the core scope and the notable inline-code behavior, making it complete for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents pageId with full coverage, including a helpful reference to list_pages / list_sites. The description does not add parameter-specific detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists third-party scripts attached to a page, with concrete examples (analytics, chat widgets, pixels). It distinguishes itself from siblings like list_webhooks and add_script by focusing specifically on scripts and the list action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you need to see third-party scripts on a page. It does not explicitly name alternatives or exclusions, but the scope is evident from the examples and the sibling tool set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesList websitesARead-onlyInspect
List the multi-page websites in the workspace, including each site's pages and live custom domain (if connected).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | Which workspace to act in. Only meaningful when this connection can access more than one workspace: omit it and you get an error listing the available workspace ids (also available from list_sites) to choose from. On a single-workspace connection, omit it or pass that workspace's own id; a different id is rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of sites returned. |
| sites | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates that this is a safe read operation. The description adds some value by noting the output includes pages and custom domain, but it does not disclose additional behavioral details such as pagination, permissions, or listing order.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. It communicates the tool's function and key output details immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-parameter listing tool with an output schema, the description is complete. It states what is listed and the relevant output fields, while the schema covers the workspace_id behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is already well-documented. The tool description adds no additional parameter-level meaning beyond the existing schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('multi-page websites in the workspace') and specifies the output ('each site's pages and live custom domain'). This clearly distinguishes it from sibling tools like list_pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context of what the tool returns, and the schema adds useful guidance on when to omit or provide workspace_id. It does not explicitly mention alternatives or when-not-to-use cases, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksList lead webhooksARead-onlyInspect
List the webhook URLs that captured leads are forwarded to, for one page (pageId) or for a whole website (siteId). Only enabled webhooks receive deliveries. Asking about a page also reports the site-level webhooks it inherits, which is usually the answer to "why are my leads going there".
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | No | Attach to a single page (id from list_pages). Give this or siteId. | |
| siteId | No | Attach to a whole website, so every page in it forwards leads there (id from list_sites). Give this or pageId. Usually the right choice for a CRM or automation that should cover the whole website. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Webhooks attached at this level. |
| scope | Yes | Whether this concerns one page or a whole website. |
| pageId | Yes | Set when scope is page. |
| siteId | Yes | Set when scope is site. |
| webhooks | Yes | |
| maxWebhooks | Yes | Limit per page or per site. |
| inheritedWebhooks | Yes | Site-level webhooks that also receive this page's leads. Always empty for a site-scoped query. Remove one with siteId, not pageId. |
| inheritedFromSiteId | Yes | The site a page inherits webhooks from, or null if it has no site or the query was site-scoped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds meaningful behavioral detail: only enabled webhooks receive deliveries, and page-scoped queries include inherited site-level webhooks. This goes beyond the annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all purposeful. The first sentence states the core operation and scope; the second adds an important delivery condition; the third explains inherited behavior and a likely use case. No filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a read-only annotation, a full output schema, and 100% schema coverage for both parameters, the description completes the picture by explaining scope options, inheritance, and enabled-webhook behavior. Nothing essential is missing for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents pageId and siteId with full descriptions, so the baseline is 3. The description adds extra semantic meaning by explaining the inheritance behavior for pageId queries and clarifying that siteId is the broader coverage choice, which enriches the schema's 'Give this or siteId' guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the exact resource ('webhook URLs that captured leads are forwarded to'). It clearly distinguishes the tool from sibling mutators like add_webhook and remove_webhook by focusing on listing existing webhooks with page/site scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear guidance is given for choosing between pageId and siteId, including that siteId is 'usually the right choice for a CRM or automation'. The description also adds practical context about inherited site-level webhooks and why someone would ask this ('why are my leads going there'). No explicit exclusions or alternative tool names are mentioned, but the usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_scriptRemove a third-party script from a pageAInspect
Detach a third-party script from a page. Get the scriptId from list_scripts. Scripts are injected when the page is next saved in the editor or published; the change is not live on an already-published page until then.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page to act on (id from list_pages / list_sites). | |
| scriptId | Yes | The script to remove (scriptId from list_scripts). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| pageId | Yes | |
| removed | Yes | Always true here: removing a script that wasn't there is an error result, not a success with removed:false. |
| scriptId | Yes | |
| verified | Yes | False when the write reported success but the confirming read did not match. The change is probably saved; re-read with list_scripts to be sure. |
| remaining | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals a non-obvious behavior: "Scripts are injected when the page is next saved in the editor or published; the change is not live on an already-published page until then." This deferred effect is critical for the agent to know, and since annotations only provide readOnlyHint: false, this addition is valuable and non-redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all essential, with the core action up front and zero fluff. The information about list_scripts and the injection timing are both high-value additions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with a clear output schema, the description covers the key context: how to get the ID, and the behavioral timing. No critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that scriptId should come from list_scripts, which aligns with the schema information but adds no substantial new semantics beyond what's already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: "Detach a third-party script from a page." This action is distinct from sibling tools like remove_webhook, and the title reinforces the operation clearly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage hint by directing the user to obtain scriptId from list_scripts. However, it does not explicitly state when to use this tool versus alternatives (e.g., when to remove a webhook instead), though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_webhookStop forwarding leads to a webhookAInspect
Remove a webhook from a page (pageId) or from a whole website (siteId) so leads stop being forwarded to it. The leads themselves are still captured and remain available via list_leads. A page cannot remove a webhook it inherits from its site; remove that one with siteId.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webhook URL to remove (from list_webhooks). | |
| pageId | No | Attach to a single page (id from list_pages). Give this or siteId. | |
| siteId | No | Attach to a whole website, so every page in it forwards leads there (id from list_sites). Give this or pageId. Usually the right choice for a CRM or automation that should cover the whole website. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The stored URL that was removed. |
| note | Yes | |
| scope | Yes | Whether this concerns one page or a whole website. |
| pageId | Yes | Set when scope is page. |
| siteId | Yes | Set when scope is site. |
| removed | Yes | Always true; a miss is an error result. |
| remaining | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation (false), the description explains side effects (leads remain captured) and the inheritance constraint, giving the agent a full understanding of what happens during removal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences cover purpose, side effects, and usage guidance without redundancy. The main action is stated first, and all additional info is relevant and compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the optional parameters and subtle inheritance rule, the description is complete. It covers the action, the scope options, the side effect on leads, and the special case for inherited webhooks. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema already describes each parameter, the description adds critical nuance: the distinction between page-level and site-level removal and the rule that inherited webhooks require siteId. This goes beyond basic schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (remove a webhook) and the target (page or website) with specific parameters. It distinguishes from sibling tools like add_webhook and list_webhooks by focusing on removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use pageId vs siteId, including the important rule that inherited webhooks must be removed via siteId. It also clarifies that removal does not delete leads, which helps set expectations.
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.
2 tool updates
- Changed
add_page_to_site5 fields changed- changed
Input schema / properties / brief / descriptionPrevious value: -"What the page should contain: its purpose, audience, sections, and call to action. The richer this is, the better the page."New value: +"What the page should contain: its purpose, audience, sections, and call to action. The richer this is, the better the page. Ignored when retrying a failed home page with slug \"index\": that rebuild reuses the page's original brief (use edit_page to change it)." - changed
Input schema / properties / slug / descriptionPrevious value: -"URL slug, e.g. \"about\" or \"blog/launch\". Lowercase words and hyphens; may nest with \"/\". Derived from the title when omitted, and de-duplicated against existing pages. Use \"index\" for the home page: it is honoured only while the site has no home page, otherwise the call fails and you should pick another slug."New value: +"URL slug, e.g. \"about\" or \"blog/launch\". Lowercase words and hyphens; may nest with \"/\". Derived from the title when omitted, and de-duplicated against existing pages. Use \"index\" for the home page: it is honoured only while the site has no home page (or, on a site built with the html/v2 page engine, to retry a home page whose build failed); otherwise the call fails and you should edit the existing page instead." - changed
Input schema / properties / title / descriptionPrevious value: -"Page title, e.g. \"About us\". Shown in the dashboard."New value: +"Page title, e.g. \"About us\". Shown in the dashboard. A home page retry keeps the page's original name, and the result reports that." - added
Output schema / properties / previewCurrentAdded value: +{ + "description": "Whether previewUrl already serves the new page. False means it is saved but the preview may lag a moment; editUrl shows it now. Absent on pages built by the older engine, which serve it at once.", + "type": "boolean" +} - changed
Output schema / properties / previewUrl / descriptionPrevious value: -"Shareable link that works immediately."New value: +"Shareable link. When previewCurrent is false it may not show the new page for a moment."
- Changed
create_page2 fields changed- added
Output schema / properties / previewCurrentAdded value: +{ + "description": "Whether previewUrl already serves the new page. False means it is saved but the preview may lag a moment; editUrl shows it now. Absent on pages built by the older engine, which serve it at once.", + "type": "boolean" +} - changed
Output schema / properties / previewUrl / descriptionPrevious value: -"Shareable link that works immediately."New value: +"Shareable link. When previewCurrent is false it may not show the new page for a moment."
3 tool updates
- Changed
add_page_to_site3 fields changed- changed
Input schema / properties / slug / descriptionPrevious value: -"URL slug, e.g. \"about\" or \"blog/launch\". Lowercase words and hyphens; may nest with \"/\". Use \"index\" for the home page. Derived from the title when omitted, and de-duplicated against existing pages either way."New value: +"URL slug, e.g. \"about\" or \"blog/launch\". Lowercase words and hyphens; may nest with \"/\". Derived from the title when omitted, and de-duplicated against existing pages. Use \"index\" for the home page: it is honoured only while the site has no home page, otherwise the call fails and you should pick another slug." - added
Output schema / properties / status / descriptionAdded value: +"The home page (slug \"index\") starts published, so publishing the site includes it; other pages start as drafts. Neither means the site is live." - changed
Output schema / properties / status / enumPrevious value: -[ - "draft" -]New value: +[ + "draft", + "published" +]
- Changed
get_page1 field changed- changed
Output schema / properties / status / descriptionPrevious value: -"Publish state. `published` means it went live at least once."New value: +"Publish state. A standalone page is `published` once it has gone live. A site page that is `published` is included when its site is published (a site's home page starts that way), which does not mean the site is live yet."
- Changed
list_pages1 field changed- changed
Output schema / properties / pages / items / properties / status / descriptionPrevious value: -"Publish state. `published` means it went live at least once."New value: +"Publish state. A standalone page is `published` once it has gone live. A site page that is `published` is included when its site is published (a site's home page starts that way), which does not mean the site is live yet."
2 tool updates
- Changed
get_page1 field changed- added
Output schema / properties / generated / descriptionAdded value: +"False until the page has been built. A page whose FIRST build is still running also reports false; that is not a failure or a stalled build. A page whose first build recorded a timestamp keeps reporting true while it is rebuilt, but an older page that never recorded one reports false for the duration of a rebuild. False does not always mean the page has never been built."
- Changed
list_pages1 field changed- changed
Output schema / properties / pages / items / properties / generated / descriptionPrevious value: -"False while a page has been created but not built yet."New value: +"False until the page has been built. A page whose FIRST build is still running also reports false; that is not a failure or a stalled build. A page whose first build recorded a timestamp keeps reporting true while it is rebuilt, but an older page that never recorded one reports false for the duration of a rebuild. False does not always mean the page has never been built."
14 tool updates
- Added
add_page_to_site - Added
add_script - Added
add_webhook - Added
create_redirect - Added
create_site - Added
delete_redirect - Changed
get_page_analytics2 fields changed- added
Output schema / properties / traffic / properties / utmBreakdownAdded value: +{ + "items": { + "properties": { + "campaign": { + "type": "string" + }, + "count": { + "type": "number" + }, + "medium": { + "type": "string" + }, + "source": { + "type": "string" + } + }, + "required": [ + "source", + "medium", + "campaign", + "count" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / traffic / properties / viewsByDayAdded value: +{ + "items": { + "properties": { + "date": { + "type": "string" + }, + "views": { + "type": "number" + }, + "visitors": { + "type": "number" + } + }, + "required": [ + "date", + "views", + "visitors" + ], + "type": "object" + }, + "type": "array" +}
- Added
get_site_analytics - Added
list_leads - Added
list_redirects - Added
list_scripts - Added
list_webhooks - Added
remove_script - Added
remove_webhook
7 tool updates
- First observed
create_page - First observed
edit_page - First observed
get_page - First observed
get_page_analytics - First observed
get_workspace_analytics - First observed
list_pages - First observed
list_sites
Related MCP Connectors
Build, publish, capture leads from, measure and improve landing pages from your AI assistant.
Create, edit and publish Leadpages landing pages, sites, blogs and ad campaigns via AI.
Build, edit, and publish real websites and online stores by chatting with your AI assistant.
Build, edit, and publish Biver landing pages, products, orders, and leads from AI assistants.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables AI assistants to build, edit, preview, and publish websites through natural language, including managing pages, designs, products, and site publishing.MIT- AlicenseAqualityBmaintenanceBridges AI assistants to WebCake, enabling users to build, validate, and save editable landing pages from natural language descriptions.23552 npm7MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to create, preview, and publish landing pages, attach signup forms that retain every submission, and inspect visitor analytics such as traffic sources, clicks, and conversions. It also handles custom domain setup and page versioning so sites can go live on the user's own domain.MIT

Biver MCPofficial
AlicenseNot gradedqualityBmaintenanceConnects an AI assistant to a landing-page workspace so users can create, edit, and publish pages, manage products, coupons, orders, leads, forms, and domains, and review traffic and revenue insights. Data-changing tools require approval, and page edits stay in draft until explicitly published.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.