Create Web Page
Server Details
Create, edit, preview, publish, and manage web pages from MCP-capable AI clients.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 23 of 23 tools scored. Lowest: 3.7/5.
Most tools target distinct resources and actions (blocks, accounts, pages), but page.create and page.create_from_brief both create pages, and page.intake.start vs page.onboarding.start/update are overlapping planning helpers. The detailed descriptions help disambiguate, though an agent might still pause on choosing between them.
All tool names follow a consistent lowercase dot-separated resource.action pattern (e.g., block.add, page.publish, account.whoami). Nested resources like page.header.update and page.onboarding.update extend the same rule without mixing conventions.
At 23 tools, the count sits in the borderline 16-25 range. Many tools are specific and justified, but the planning helpers (intake/onboarding) and multiple page creation variants add bulk that could be consolidated.
The server covers create, read, update, block management, and publish/unpublish, but misses a page.delete operation, leaving a lifecycle dead-end. Account tools are also minimal, limited to reading/listing without management capabilities.
Available Tools
23 toolsaccount.page.manageManage Claimed PageARead-onlyIdempotentInspect
Read a claimed account page without requiring an editToken. Use after OAuth when the user wants to manage a durable website.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The claimed pageId to manage. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description correctly aligns with 'Read'. It adds valuable context not in annotations: the tool requires no editToken and is specifically for post-OAuth management of durable websites, which gives agents insight into auth and workflow 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?
The description is two sentences, front-loading the core action ('Read a claimed account page') and then giving usage context. No redundant or filler content, every sentence earns its place.
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 only one parameter, an output schema present, and strong annotations, the description sufficiently covers the tool's purpose and usage. It explains the key behavioral nuance (no editToken needed) and when to apply it, making it complete for this simple 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 has full coverage (100%) for the single pageId parameter, including its type and format. The description does not add any additional meaning about the parameter itself, so 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 'Read' and identifies the resource as 'a claimed account page', explicitly distinguishing it from other page operations by noting it works 'without requiring an editToken'. This clearly differentiates it from sibling tools like page.get or page.claim, which have different purposes.
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: 'Use after OAuth when the user wants to manage a durable website.' It implies this is for post-auth management scenarios, but does not explicitly name alternatives or state when not to use it, leaving some ambiguity compared to directly naming sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account.pages.listList Claimed PagesARead-onlyIdempotentInspect
List landing pages claimed by the authenticated account. This requires OAuth and is for account management, not first-time demo creation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of claimed pages to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| pages | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds the requirement for OAuth and clarifies the scope to 'claimed pages' for the authenticated account, which are useful behavioral details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and resource. It avoids unnecessary detail and every word adds value, 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?
For a simple list operation with one optional parameter, an output schema, and strong annotations, the description covers the necessary context: purpose, auth requirement, and a usage caveat. It lacks explicit pagination/ordering details, but the output schema and simple nature make it adequate.
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 defines the sole parameter 'limit' with constraints and a clear description, covering 100% of parameters. The tool description does not add any additional parameter semantics, so it relies on the schema, which is sufficient.
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 clearly identifies the resource ('landing pages claimed by the authenticated account'). It also distinguishes itself from demo creation by stating this is for account management, not first-time demo creation, which clarifies its role among sibling 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 description provides clear context: it requires OAuth and is intended for account management. It explicitly excludes first-time demo creation, giving a when-not-to-use signal, though it does not name specific sibling alternatives like 'page.create' or 'page.get'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account.whoamiCurrent AccountARead-onlyIdempotentInspect
Return the current Create Web Page account context. Use this to check whether the user is authenticated or using an anonymous expiring demo.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| role | Yes | |
| service | Yes | |
| authMode | Yes | |
| accountId | Yes | |
| demoExpiresAt | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds useful context about checking authentication or anonymous demo status, complementing the annotations without contradiction. This is valuable additional behavioral context 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 long, with the primary purpose stated first and usage guidance in the second sentence. Every word earns its place, with no redundancy 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?
With an output schema present, the description does not need to explain return values. The tool is simple, has no parameters, and the annotations fully cover safety. The description is complete and sufficient for an agent to select and invoke it 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 tool has zero parameters, and the input schema is empty with 100% schema coverage. The baseline for zero parameters is 4, and the description does not need to explain any parameters. It correctly focuses on the tool's purpose.
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 what the tool does: 'Return the current Create Web Page account context.' It uses a specific verb (return) and resource (account context). This distinguishes it from sibling tools that manage pages or blocks, making its purpose unambiguous.
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 explicit usage guidance: 'Use this to check whether the user is authenticated or using an anonymous expiring demo.' It gives a clear context for when to use the tool, though it does not explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block.addAdd Content BlockAInspect
Append a new content block to a link-in-bio page. The block must match one of the 13 allowed types (link, social_row, whatsapp, phone_call, email_contact, image, gallery, video_embed, text, map_embed, product_card, lead_form, reviews) with that type's strict props. The server generates the block id and returns it in the response. For already-published pages, this saves an unpublished latest revision only. Do not call page.publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling page.publish. Do NOT call page.unpublish either — the live page should stay public; only unpublish when the user explicitly asks to take it down. The response includes nextSteps: after adding a block, share these hints with the user so they know what else would make the page more complete.
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | The block to add. Must match one of the 13 allowed types with that type's strict props schema. The server generates the block id. | |
| pageId | Yes | ||
| editToken | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which provide no safety hints), the description discloses key behaviors: server generates the block id, the operation saves an unpublished revision for published pages, and the response includes nextSteps. It also instructs the agent to share those nextSteps hints with the user. These details add substantial context about side effects and follow-up actions.
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?
Although long, every sentence adds essential information: core action, constraints, server behavior, draft semantics, publish/unpublish workflow warnings, and response handling. The structure is logical and front-loaded, with no 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 tool's complexity (13 block types, nested schema, multiple sibling tools for publishing/unpublishing), the description is remarkably complete. It covers what happens to published pages, how to handle publishing, and what to do with the response (share nextSteps), making it self-sufficient for correct invocation.
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 only 33% (only 'block' has a top-level description), so the description must compensate. It does so by listing all 13 allowed types and stressing that strict props must be used, plus noting that the server generates the block id. However, it does not explain the individual type-specific props beyond echoing the schema, which still does the heavy lifting.
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 opens with a specific verb+resource: 'Append a new content block to a link-in-bio page.' It further enumerates the 13 allowed block types, making the tool's scope unmistakable and clearly distinguishing it from siblings like block.update and block.delete.
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 explicit workflow guidance: for published pages it creates an unpublished revision, and it explicitly warns against calling page.publish or page.unpublish in the same turn unless the user explicitly requests it. This gives clear when-to-use and when-not-to-use context, including alternatives (publish/unpublish).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block.deleteDelete Landing Page BlockADestructiveIdempotentInspect
Delete one block by stable blockId. Use page.get first if unsure which id to remove. For already-published pages, this saves an unpublished latest revision only. Do not call page.publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling page.publish. Do NOT call page.unpublish either — the live page should stay public; only unpublish when the user explicitly asks to take it down.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | ||
| blockId | Yes | ||
| editToken | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations (destructiveHint=true, idempotentHint=true) by explaining the behavioral consequence: 'For already-published pages, this saves an unpublished latest revision only.' It also discloses the expected workflow around stopping and telling the user the draft/preview was updated, and waiting for explicit permission to publish. This is rich behavioral context that annotations alone do not convey.
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 paragraph that front-loads the action in the first sentence, then provides necessary warnings and workflow steps. It is somewhat long, but every sentence earns its place given the critical constraints about publishing. It could be tightened into bullets, but it is well-structured and not wasteful.
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 destructive nature and interaction with publishing, the description covers the operation's effect, prerequisite lookup via page.get, the published-page revision behavior, prohibitions on publishing/unpublishing in the same turn, and the expected user interaction. An output schema exists to handle return values, so no further description is needed. This is thorough for the tool's 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 0%, so the description must compensate. It clarifies that blockId is a 'stable' identifier and implies pageId can be obtained via page.get, but it does not explain the optional editToken parameter or explicitly define pageId's role. This partial compensation is better than nothing, but leaves some gaps for a 3-parameter tool.
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 opens with 'Delete one block by stable blockId,' which is a specific verb plus resource and clearly distinguishes this from sibling block tools like block.add, block.update, and block.reorder. It also adds the nuanced behavior about published pages saving an unpublished latest revision, further clarifying the tool's scope.
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 usage guidance is provided: 'Use page.get first if unsure which id to remove' tells the agent when to call another tool first. It also gives explicit exclusions—'Do not call page.publish in the same assistant turn' and 'Do NOT call page.unpublish either'—and instructs to wait for a separate user message before publishing. This is clear, actionable guidance with alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block.reorderReorder Landing Page BlockAIdempotentInspect
Move a block to a new zero-based index in the page main slot. For already-published pages, this saves an unpublished latest revision only. Do not call page.publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling page.publish. Do NOT call page.unpublish either — the live page should stay public; only unpublish when the user explicitly asks to take it down.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | ||
| blockId | Yes | ||
| toIndex | Yes | ||
| editToken | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint false) and non-destructive (destructiveHint false). The description adds valuable behavioral context: it saves only an unpublished revision for already-published pages, and enforces a publish workflow. This goes 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 a compact paragraph that leads with the purpose and then provides essential workflow constraints. Every sentence adds value, and there is no fluff or repetition.
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 covers the draft-only revision behavior, the publish/unpublish exclusions, and the expected waiting behavior, making it complete for an agent to safely use the tool. The presence of an output schema covers return values, so no additional return description is 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 description clarifies that the index is zero-based (relevant to toIndex) but does not explain pageId, blockId, or editToken. With 0% schema description coverage, this is only partial compensation for the missing parameter details.
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 opens with 'Move a block to a new zero-based index in the page main slot,' a specific verb+resource+scope that clearly distinguishes from sibling block tools (add/delete/update). It accurately describes what the tool does without ambiguity.
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 gives explicit workflow instructions: do not call page.publish in the same turn, do not call page.unpublish, and wait for explicit user request before publishing. It clearly differentiates when to use this tool versus publish/unpublish alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block.updateUpdate Landing Page BlockAIdempotentInspect
Patch one content block by stable blockId. Provide a props patch (merged into existing props) and/or a new type. Block types and props are validated against the strict per-type schema. For already-published pages, this saves an unpublished latest revision only. Do not call page.publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling page.publish. Do NOT call page.unpublish either — the live page should stay public; only unpublish when the user explicitly asks to take it down.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive, but the description adds substantial context: props are merged into existing props, block types are validated against a strict per-type schema, and for published pages only an unpublished latest revision is saved. The publish/unpublish workflow warnings go far beyond what annotations convey.
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 long, but every sentence carries important operational guidance: patch semantics, merge behavior, validation, revision behavior, and explicit workflow cautions. It is dense and information-preserving, though slightly verbose in the publish/unpublish section.
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 rich oneOf schema and output schema, the description covers the key runtime behaviors an agent needs: how props merge, how revision creation works on published pages, and the critical do-not-publish-in-same-turn rule. There are no obvious gaps that would cause an agent to misuse the 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?
Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics by explaining that 'props patch' is merged into existing props, and that block types are validated against the strict per-type schema. This clarifies the partial-patch intent beyond the raw schema fields.
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 opens with a specific verb+resource+mechanism: 'Patch one content block by stable blockId.' It clearly distinguishes block.update from siblings like block.add, block.delete, and block.reorder by focusing on patching an existing block.
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 says when to use this tool (patch an existing block) and provides strong exclusions: do not call page.publish in the same turn, wait for a separate explicit user request to publish, and do not call page.unpublish. It also clarifies the revision behavior for published pages, making it unmistakable when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
layouts.listList Available LayoutsARead-onlyIdempotentInspect
List supported page layouts. v1 ships link_in_bio only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the tool as read-only, idempotent, and non-destructive. The description adds a key behavioral constraint: only link_in_bio is available in v1, which sets clear expectations for the result set.
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 extremely concise: two short sentences with no filler. The first sentence provides the core purpose, and the second adds a meaningful version-specific detail.
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 zero-parameter, read-only list tool with a rich annotation set and an output schema, this description is fully sufficient. It covers what the tool does and its current limitation, requiring no further elaboration.
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 tool accepts zero parameters, so schema coverage is trivially 100%. Per baseline rules for no-parameter tools, a score of 4 is appropriate; no parameter explanations are needed.
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 action ('List') and the resource ('supported page layouts'), and adds valuable version context ('v1 ships link_in_bio only'). This distinguishes it from sibling tools like presets.list and account.pages.list.
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 use case is implied—call this when you need to know available page layouts—but there is no explicit guidance on when to use it versus alternatives, such as presets.list, or how it fits into page creation workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.claimClaim Demo PageAIdempotentInspect
Claim an anonymous demo page into an AUTHENTICATED account. This requires the signed-in user's OAuth — an anonymous chat/agent session cannot call it and will get an OAuth-required error. So in a normal agent conversation, do NOT call this to 'save' a demo page: instead share the claimUrl from the page.create/page.publish result with the user, who opens it, signs in, and keeps the page. Only call page.claim when the request already runs under the owner's OAuth.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The pageId returned by page.create. | |
| editToken | Yes | The editToken returned by page.create for the anonymous demo page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and idempotency (idempotentHint=true). The description adds key behavioral context: OAuth requirement, anonymous session error, and that the page becomes associated with the authenticated account. This goes beyond 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, all substantive. The first sentence states the purpose, the second explains the OAuth constraint and provides the alternative, the third gives the only valid calling context. 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?
The tool's complexity (OAuth context, security implications) is fully addressed. The description covers the core behavior, the error case, and the correct user-facing flow. Output schema exists, so return value details are not needed. Complete for the task.
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?
Input schema has 100% coverage with descriptions for both pageId and editToken. The description doesn't add parameter-specific details, but the baseline of 3 is appropriate because the schema already fully documents the parameters.
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 uses a specific verb ('Claim') and resource ('anonymous demo page') with a clear destination ('AUTHENTICATED account'). It distinguishes from page.create/page.publish by explaining the claim flow and when not to use it.
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 states when NOT to call (normal agent conversation) and provides alternative (share claimUrl). Also specifies the only valid usage context: when the request runs under the owner's OAuth. This is clear exclusion and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.createCreate Landing PageAInspect
Create a hosted link-in-bio page draft from a style preset. Provide title, displayName, and a preset (or 'auto' to infer from businessType/style). The page starts with empty placeholder blocks for you to fill in via block.update — do not invent content. This tool intentionally creates a draft only and does not return a publish action. After calling it, stop and show the preview URL. Do not call page.publish in the same turn unless the user's current message explicitly asks to publish, make the page live, or get a public share link. Anonymous demo pages expire unless claimed.
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | Optional short bio for the header. | |
| slug | No | Preferred public URL slug. | |
| style | No | Free-form style hint used by preset:auto inference. | |
| title | Yes | Internal page title and default header display_name. | |
| layout | No | Layout id. Defaults to 'link_in_bio'. | |
| preset | Yes | Style preset id, or 'auto' to infer deterministically from businessType/style. | |
| displayName | No | Visible header display name. Defaults to title. | |
| businessType | No | Used by preset:auto inference. Examples: musician, restaurant, designer. | |
| initialPrompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-readOnly, non-openWorld, non-idempotent, and non-destructive behavior. The description adds meaningful behavioral context: the page starts with empty placeholder blocks, content must not be invented, it only creates a draft, and anonymous demo pages expire unless claimed. This goes beyond the structured 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 moderately long but every sentence carries important guidance (draft-only, placeholder blocks, publish restriction, expiry). It is front-loaded with the core purpose. A minor reduction from 5 because the 'stop and show the preview URL' instruction could be seen as operational repeat of tool behavior, though it is still useful.
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 complexity (9 params, draft flow, publish interaction, expiration), the description covers all essential behavioral aspects: what the tool does, what it does not do (publish), how to proceed after, and a caveat about anonymous pages. An output schema exists, so return values need not be detailed. The description is complete for the tool's 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?
The schema already describes all 9 parameters with 89% coverage. The description adds value by explaining the relationship between title/displayName/preset and the 'auto' inference from businessType/style, which is not evident from the schema alone. Slightly above baseline due to this added 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 opens with 'Create a hosted link-in-bio page draft from a style preset,' which specifies the verb (create), resource (hosted link-in-bio page draft), and source (style preset). It clearly distinguishes from siblings like page.create_from_brief and page.publish by emphasizing the draft-only nature.
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 explicitly states when to use this tool (creating a draft) and when not to call page.publish in the same turn unless the user explicitly asks to publish. It also provides guidance on next steps ('stop and show the preview URL') and mentions an alternative tool (block.update) for filling content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.create_from_briefCreate Landing Page From BriefAInspect
Create a hosted landing page draft from a structured brief. Accepts business name, category, layout, palette, primary action, explicit final-audience publicSections, and optional hero image. Planning fields such as audience, offer, primaryGoal, location, businessType, style, and mustInclude are context only and are not rendered as public body copy. Draft previews are customer-facing: do not pass owner instructions, section-planning labels, or placeholder copy as public content. Keep sparse briefs sparse: use only facts supplied by the user or imported public sources, plus light wording polish; do not invent menus, services, hours, facilities, locations, testimonials, guarantees, staff details, prices, or operational claims. Prefer one short section or no extra section when the prompt is minimal. If a requested CTA lacks its real destination, ask for it before creation or provide fallbackLeadForm with public copy. Returns a preview URL, edit token, and next-step hints. This tool intentionally creates a draft only and does not return a publish action. After calling it, stop and show the preview URL. Do not call page.publish in the same turn unless the user's current message explicitly asks to publish, make the page live, or get a public share link. Anonymous pages expire unless claimed via page.claim.
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | Optional short bio for the header. | |
| offer | No | Planning context only. Not rendered directly as public page copy; use bio and publicSections for final-audience copy. | |
| style | No | Planning context only. Not rendered directly as public page copy. | |
| layout | No | Defaults to 'link_in_bio'. | |
| locale | No | ||
| preset | No | Style preset id, or 'auto' to infer deterministically. Defaults to 'auto'. | |
| audience | No | Planning context only. Not rendered directly as public page copy. | |
| location | No | Public business address or service area intended for map/address actions, not direct body copy and not the user's private/current location. | |
| sourceUrl | No | Provenance reference only. | |
| mustInclude | No | Planning checklist only. Do not put section names, CTA labels, owner instructions, or private notes here; not rendered directly. | |
| primaryGoal | No | Planning context only. Not rendered directly as public page copy. | |
| publicPhone | No | Public business phone number explicitly supplied by the user or a public source. Do not use the user's private/account phone. | |
| businessName | Yes | ||
| businessType | No | Planning context only. Not rendered directly as public page copy. | |
| heroImageUrl | No | Explicit user-provided image URL for featured-photo or full-image styles. | |
| sourceHandle | No | ||
| initialPrompt | No | ||
| preferredSlug | No | Desired URL path. Ask the user for it near the end of onboarding. Use normal letters, numbers, and hyphens; the server normalizes and makes it unique. | |
| publicSections | No | Final-audience text sections to render on the public page. Write in the target language with correct spelling/accents. Only include facts the user supplied or that came from an imported public source; for sparse prompts, keep this short and avoid invented service lists, hours, benefits, testimonials, prices, or operational details. | |
| publicWhatsapp | No | Public WhatsApp phone number explicitly supplied by the user or a public source. Do not use the user's account phone or invent placeholder numbers. | |
| primaryActionId | No | ||
| fallbackLeadForm | No | Public fallback contact/interest form to use when the requested primary action lacks a real destination. All copy must be final-audience copy in the page's target language. | |
| onboardingLayout | No | Layout style: background_color (minimalist), full (featured photo), or background_image (full image background). | |
| primaryActionUrl | No | Real destination URL for the primary action when explicitly supplied by the user or imported public source, such as a booking link. Do not invent booking/order URLs; if missing, ask for it or use fallbackLeadForm. | |
| onboardingPalette | No | Palette id returned by page.onboarding.* paletteChoices, for example atom_dark_plum. | |
| primaryActionLabel | No | Public label for the primary action in the page's target language. | |
| publicBusinessEmail | No | Public business contact email explicitly supplied by the user or a public source. Do not use the user's ChatGPT/account email. | |
| onboardingSubCategory | No | Validated atom.bio subcategory id, for example health. | |
| onboardingMainCategory | No | Validated atom.bio category id from page.onboarding.*, for example physical-business or online-business. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (all false), so the description carries the full burden. It discloses that previews are customer-facing, that planning fields are not rendered, that sparse briefs should stay sparse, that it creates only a draft, and that anonymous pages expire. These are significant behavioral traits beyond schema 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 long but front-loaded with a clear one-line summary. Every sentence adds operational guidance; though some could be tightened, the length is justified by the tool's complexity (29 params, nested objects, content safety rules).
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?
Despite having 29 params and nested objects, the description covers the critical context: what it returns (preview URL, edit token), what it does not do (no publish action), post-call behavior (stop and show URL), and expiration flow. The output schema covers return details, so no further explanation 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?
Schema coverage is 83%, so most parameters are documented. The description adds cross-cutting semantics: it groups planning-only fields, warns against passing owner instructions/placeholders, and clarifies fallbackLeadForm usage when a CTA lacks a destination. It doesn't fully cover all 29 params but the schema handles most.
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 opens with a specific verb+resource: 'Create a hosted landing page draft from a structured brief.' It lists accepted inputs and explicitly distinguishes this draft-only tool from page.publish and page.claim, clarifying its role among siblings.
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 instructs when to stop after calling, not to call page.publish unless the user asks, and to use page.claim for anonymous page expiration. It also provides decision guidance for missing CTA destinations (ask or use fallbackLeadForm).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.getGet Landing PageARead-onlyIdempotentInspect
Read a landing page draft, including its latest content JSON. For anonymous demo pages, include the editToken.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | ||
| editToken | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond annotations: that the operation returns the latest content JSON and that anonymous demo pages require an editToken. This is relevant behavioral detail without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core purpose ('Read a landing page draft') and then adds the only necessary caveat about editToken. Every sentence earns its place.
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 read tool with a rich output schema and strong annotations, the description is largely complete: it states what is read, what data is included, and when an extra token is needed. It falls slightly short of a 5 because it does not explicitly relate to sibling tools or clarify the 'anonymous demo pages' concept further, though the output schema covers return structure.
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 0%, so the description must compensate. It does clarify the editToken parameter's conditional purpose, but pageId semantics rely solely on its name and UUID format in the schema. Partial compensation is provided, but not 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 uses a specific verb ('Read'), identifies the resource ('landing page draft'), and adds useful scope ('including its latest content JSON'), which clearly distinguishes it from siblings like page.preview or account.pages.list.
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 clearly implies when to use the tool (reading a draft) and provides a conditional guideline ('For anonymous demo pages, include the editToken'). It does not explicitly name alternatives or exclusions, but the context is strong enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.header.updateUpdate Page HeaderAIdempotentInspect
Update the link-in-bio page header: displayName, bio, verified checkmark, and QR display. Use only the fields you want to change. For already-published pages, this saves an unpublished latest revision only. Do not call page.publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling page.publish. Do NOT call page.unpublish either — the live page should stay public; only unpublish when the user explicitly asks to take it down.
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | Short bio under the display name. Pass null to clear it. | |
| pageId | Yes | ||
| showQr | No | Show a QR code for this page. | |
| verified | No | Show a verified checkmark next to the display name. | |
| editToken | No | ||
| displayName | No | Visible display name in the page header. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description extensively discloses behavioral traits beyond the annotations. It explains that for published pages the update creates an unpublished revision, that live page stays public, and it warns against auto-publishing/unpublishing. This goes far beyond the annotations' idempotent/destructive hints.
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 front-loaded with the core purpose and then gives essential usage constraints. Every sentence provides meaningful guidance, and the length is justified by the need to prevent premature publishing/unpublishing. No redundant content.
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 complexity (saving drafts on published pages, interaction with publish/unpublish siblings) and the presence of an output schema, the description is highly complete. It covers the key behavioral nuances and provides all necessary context for an agent to select and invoke the tool, without needing to explain 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?
The description adds semantic value by listing the updatable fields and emphasizing incremental updates ('Use only the fields you want to change'), which is not obvious from the schema. However, it does not clarify the editToken parameter, and schema coverage is 67%, leaving some gap, so a slightly lower score than 5 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 updates the link-in-bio page header with specific fields (displayName, bio, verified, QR display), and distinguishes it from sibling tools like page.publish and page.unpublish by explicitly saying it only saves an unpublished revision.
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 gives explicit when-to-use guidance (update header, use only fields to change) and when-not-to-use by directly instructing not to call page.publish in the same turn and not to call page.unpublish. It also provides alternative behavior for already-published pages, making usage context very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.intake.startStart Landing Page IntakeARead-onlyIdempotentInspect
RECOMMENDED first step for building a page. Returns the few questions worth asking (business name, primary visitor action, key content, optional source link) so you can then call page.create_from_brief. This is the simplest, most reliable path — prefer it. (page.onboarding.* offers extra category/layout/palette pickers but is a stateless planning helper, not required.) Call once per creation request; skip if the user already gave you a source URL. Does not create a page.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Preferred content locale if obvious from the conversation. | |
| sourceUrl | No | Public HTTP/HTTPS source URL provided by the user, such as a business website or link-in-bio page. Protected platforms (social networks, maps, paywalls) require client-side browsing or pasted details instead. | |
| primaryGoal | No | The main visitor action if known, such as book, call, WhatsApp, buy, or leave a lead. | |
| businessName | No | Only include if the user already provided the business or project name. | |
| businessType | No | Business category inferred from the user's words, such as hamburger restaurant or dental clinic. | |
| sourceHandle | No | Public social handle provided by the user. | |
| originalRequest | No | The user's original page-creation request, copied verbatim when available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| mode | Yes | |
| title | Yes | |
| actions | Yes | |
| questions | Yes | |
| canCreateNow | Yes | |
| promptToUser | Yes | |
| missingFields | Yes | |
| sourceGuidance | Yes | |
| recommendedNextTool | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description adds useful behavioral context: it returns questions, does not create a page, and has a skip condition. No contradiction with annotations, and the added details are meaningful beyond the structured hints.
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 compact and front-loaded with the key purpose ('RECOMMENDED first step'). Each sentence serves a distinct role: purpose, follow-up action, preference, alternative context, and call constraint. No redundant 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?
With an output schema present, return values need not be described. The description covers purpose, usage conditions, alternatives, and non-effects, making it fully adequate for a 7-parameter tool. It also mentions limitations (protected platforms) implicitly via schema and usage guidance.
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 documentation, so the baseline is 3. The description does not add parameter-specific semantics beyond the schema, though it reinforces the 'sourceUrl' skip condition. No gaps to compensate for.
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 identifies the tool as the recommended first step for building a page, distinct from siblings by naming page.create_from_brief as the follow-up and page.onboarding.* as an optional alternative. It states a specific verb and resource with explicit scope.
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: 'RECOMMENDED first step', 'prefer it', and 'Call once per creation request; skip if the user already gave you a source URL.' It also distinguishes from alternatives by noting page.onboarding.* is not required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.meta.updateUpdate Page MetaAIdempotentInspect
Update internal page title, URL slug, and SEO title/description. For already-published pages, this saves an unpublished latest revision only. Do not call page.publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling page.publish. Do NOT call page.unpublish either — the live page should stay public; only unpublish when the user explicitly asks to take it down.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Preferred public URL slug. | |
| title | No | Internal page title shown in editor results. | |
| pageId | Yes | ||
| seoTitle | No | SEO <title> tag value. | |
| editToken | No | ||
| seoDescription | No | SEO meta description value. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate a non-destructive, idempotent write. The description adds critical context by explaining that for already-published pages this saves an unpublished latest revision only, and by warning about the interplay with page.publish and page.unpublish. This goes well 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?
The description is somewhat lengthy but every sentence carries necessary information: purpose, draft behavior, and critical sequencing warnings. It is front-loaded with the primary action and then adds essential usage constraints, so it remains efficient for the complexity.
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 subtle draft-vs-live behavior and the critical interaction with publish/unpublish, the description covers all necessary context. The output schema exists, so return values don't need explanation. It is complete for the tool's 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?
The schema covers 67% of parameters with descriptions. The description reinforces the meanings of title, slug, and SEO fields by grouping them under 'internal page title, URL slug, and SEO title/description.' However, it does not clarify 'editToken' or 'pageId,' which lack schema descriptions, so there is a slight gap.
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 the exact resource and scope: 'internal page title, URL slug, and SEO title/description.' This clearly differentiates it from sibling tools like page.publish, page.unpublish, page.header.update, and page.theme.update by naming the specific meta fields it modifies.
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 provides when-to-use and when-not-to-use guidance: it states the draft-revision behavior, tells the agent not to call page.publish in the same turn, instructs to wait for explicit user confirmation before publishing, and warns against calling page.unpublish unless asked. This is exceptionally clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.onboarding.startStart Guided Page OnboardingARead-onlyIdempotentInspect
Optional planning helper that returns category/layout/palette/primary-action choices and a quality checklist (it does NOT create a page). Use it only if you want those pickers; otherwise page.intake.start → page.create_from_brief is the simpler path. IMPORTANT: this flow is STATELESS — page.onboarding.update does not remember earlier calls, so each update must resend the FULL set of selections + knownFields gathered so far. As soon as you have a business name and a primary action, stop and call page.create_from_brief (you do not need to reach a 'ready' step).
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Preferred UI locale, such as es or en. | |
| originalRequest | No | ||
| suggestedSelection | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| mode | Yes | |
| stepId | Yes | |
| uiHtml | Yes | |
| choices | Yes | |
| selected | Yes | |
| nextPrompt | Yes | |
| canContinue | Yes | |
| profileCopy | Yes | |
| slugGuidance | Yes | |
| imageGuidance | Yes | |
| layoutChoices | Yes | |
| missingFields | Yes | |
| readyToCreate | Yes | |
| layoutGuidance | Yes | |
| paletteChoices | Yes | |
| primaryActions | Yes | |
| invalidSelection | Yes | |
| qualityChecklist | Yes | |
| recommendedLinks | Yes | |
| recommendedBlocks | Yes | |
| createFromBriefHints | Yes | |
| recommendedMissingFields | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important non-obvious behaviors: it is STATELESS, requires resending the FULL set of selections + knownFields on update, and clearly states it does not create the page (consistent with readOnlyHint=true). It also adds a stopping condition, all of which go 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 a single dense paragraph of about 90 words packed with necessary information: purpose, alternatives, statelessness, and stopping rule. It is front-loaded but could be more scannable with bullet points. No sentence is wasted, though the structure is acceptable for the complexity.
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 covers purpose, usage conditions, alternatives, stateless behavior, and a clear exit criterion. Since an output schema exists, return-value details are already documented elsewhere. The description is sufficiently complete for the agent to select and invoke the tool 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 low (only locale has a top-level description; originalRequest has none, and suggestedSelection lacks a top-level description). The description references 'selections + knownFields' but does not explicitly map these to the schema's parameters, leaving originalRequest and suggestedSelection semantics under-specified. The nested schema partially documents subCategory and mainCategory, but the description does not compensate adequately for the gaps.
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 'returns category/layout/palette/primary-action choices and a quality checklist' and explicitly notes it 'does NOT create a page.' It differentiates from siblings by naming the alternative path 'page.intake.start → page.create_from_brief,' making it unambiguous when this helper is appropriate.
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 explicit usage guidance: 'Use it only if you want those pickers; otherwise page.intake.start → page.create_from_brief is the simpler path.' It also gives a concrete stopping rule: 'As soon as you have a business name and a primary action, stop and call page.create_from_brief,' which tells the agent exactly when to switch to a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.onboarding.updateUpdate Guided Page OnboardingARead-onlyIdempotentInspect
Validate onboarding selections and return the remaining checklist. STATELESS: it does not remember previous calls, so every call must include the FULL accumulated selection (mainCategory, subCategory, layout, palette, primaryAction) plus all knownFields (name, description, action destination, etc.) gathered so far — not just the latest answer, or earlier choices will look 'missing'. You do not need to loop to a 'ready' state: once you have a name and a primary action, call page.create_from_brief with those values.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | ||
| stepId | No | ||
| selection | No | ||
| knownFields | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| mode | Yes | |
| stepId | Yes | |
| uiHtml | Yes | |
| choices | Yes | |
| selected | Yes | |
| nextPrompt | Yes | |
| canContinue | Yes | |
| profileCopy | Yes | |
| slugGuidance | Yes | |
| imageGuidance | Yes | |
| layoutChoices | Yes | |
| missingFields | Yes | |
| readyToCreate | Yes | |
| layoutGuidance | Yes | |
| paletteChoices | Yes | |
| primaryActions | Yes | |
| invalidSelection | Yes | |
| qualityChecklist | Yes | |
| recommendedLinks | Yes | |
| recommendedBlocks | Yes | |
| createFromBriefHints | Yes | |
| recommendedMissingFields | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds the crucial statelessness trait: 'STATELESS: it does not remember previous calls'. It also explains the consequence of omitting earlier selections, going beyond annotation coverage.
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 3 sentences (~100 words) and front-loaded with the core action. The STATELESS warning and loop exit condition are essential context, though the prose is somewhat dense.
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 4-parameter, nested-object schema and output schema, the description covers critical behavioral requirements: full payload, no state, and handoff to page.create_from_brief. It doesn't explain stepId or selection semantics, but the schema handles those.
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 description lists the required accumulated fields (mainCategory, subCategory, layout, palette, primaryAction) and knownFields, adding the key semantic that all must be sent together. While it doesn't define each parameter's value, the input schema provides enums/descriptions for some nested fields.
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 opens with 'Validate onboarding selections and return the remaining checklist', a specific verb and clear resource. It also references page.create_from_brief as the follow-up step, distinguishing itself from page creation 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?
It explicitly warns against looping: 'You do not need to loop to a "ready" state' and instructs to call page.create_from_brief once name and primary action are available. It also mandates including the full accumulated selection every call, providing concrete usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.previewPreview Landing PageARead-onlyIdempotentInspect
Return the current preview URL for a page.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The pageId returned by page.create. | |
| editToken | No | Required for anonymous demo pages. Use the editToken returned by page.create. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds minimal context with the word 'current', implying the URL may change, but no further elaboration on prerequisites or limitations.
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 with no redundant information. It is perfectly concise and front-loaded.
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 read-only nature, annotations covering safety, and an output schema, the one-line description is sufficient to convey the tool's function. The schema documents the editToken requirement for anonymous pages.
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?
Both parameters are fully described in the schema with 100% coverage. The description does not add any additional semantic meaning beyond 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 clearly states the tool's purpose: returning the current preview URL for a page. This is a specific verb+resource pairing and distinguishes it from sibling tools like page.publish or page.get.
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 no guidance on when to use this tool versus alternatives such as page.get or page.publish. No exclusions or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.publishPublish Landing PageAIdempotentInspect
Publish the latest page revision. Call this only when the user's latest message explicitly asks to publish, make the page live, or get a public share link. Do not call this immediately after page.create or page.create_from_brief just because the draft is publish-ready. For anonymous demo pages, include the editToken returned by page.create. The response includes nextSteps: always share these with the user after publishing — they include the claim reminder and any remaining improvements.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The pageId returned by page.create. | |
| editToken | No | Required for anonymous demo pages. Use the editToken returned by page.create. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds important behavioral context: the need to include editToken for anonymous demo pages, and the instruction to always share nextSteps with the user after publishing. This enriches the agent's understanding of side effects and requirements.
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 four sentences and around 80 words, which is somewhat longer than the ideal, but every sentence earns its place: the action, usage condition, negative constraint, and post-publishing behavior. It is well-structured and front-loaded.
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 complexity, the description covers when to use it, when not to use it, authentication requirements (editToken), and how to handle the response (share nextSteps). The presence of an output schema also reduces the need to explain return values, making this description fully 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 are described clearly in the input schema. The description repeats the editToken condition but adds no new semantic detail beyond what the schema already provides, 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 'Publish the latest page revision' with a specific verb and resource, distinguishing it from sibling tools like page.create and page.unpublish. It immediately clarifies the tool's primary function.
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 explicitly states when to call ('only when the user's latest message explicitly asks to publish, make the page live, or get a public share link') and when not to call ('Do not call this immediately after page.create or page.create_from_brief just because the draft is publish-ready'). This provides clear guidance versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.theme.updateUpdate Page ThemeAIdempotentInspect
Apply a partial theme patch. Theme fields are enum-constrained (button variant/radius/shadow, font family/weight, density, icon_size). Use presets.list first if the user wants a complete restyle. For already-published pages, this saves an unpublished latest revision only. Do not call page.publish in the same assistant turn after this edit. Stop and tell the user the draft/preview was updated, then wait for a separate user message that explicitly asks to update the live link, publish, or make the changes public before calling page.publish. Do NOT call page.unpublish either — the live page should stay public; only unpublish when the user explicitly asks to take it down.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | Yes | Partial theme patch. Provide only fields you want to change. | |
| pageId | Yes | ||
| editToken | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotentHint=true, readOnlyHint=false, destructiveHint=false), the description reveals critical behavior: for published pages, it saves only an unpublished latest revision. It also warns against calling publish/unpublish prematurely, adding workflow context not present in annotations. No contradiction exists.
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 longer than average, but every sentence delivers essential information. It is front-loaded with purpose, followed by usage warnings and workflow constraints. Though somewhat dense, it remains structured and readable, earning a high score for effective use of length.
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 complexity (nested theme object, partial updates, published vs. draft behavior), the description covers the core workflow and constraints well. However, the omission of editToken semantics leaves a gap for agents trying to construct valid calls. Output schema exists, so return values are not needed. Overall, highly complete but with one notable missing parameter.
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 only 33%, with pageId and editToken lacking descriptions. The description adds little about parameters—it mentions enum-constrained fields but does not explain editToken's purpose or the significance of pageId. The theme parameter is well-covered by the schema, but the description fails to compensate for the undocumented parameters.
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 opens with a specific verb+resource: 'Apply a partial theme patch.' It clearly identifies the tool's scope (theme fields) and distinguishes it from a complete restyle by recommending presets.list. This provides unambiguous purpose and differentiation from sibling tools like page.meta.update.
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 when to use this tool versus an alternative: 'Use presets.list first if the user wants a complete restyle.' It also provides strong contextual guidance on when NOT to call page.publish or page.unpublish, requiring explicit user intent. This is exceptional usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page.unpublishUnpublish Landing PageADestructiveIdempotentInspect
Remove a published landing page from public availability while keeping its draft and revision history.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | ||
| editToken | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| title | Yes | |
| pageId | Yes | |
| status | Yes | |
| actions | Yes | |
| content | No | |
| claimUrl | Yes | |
| editToken | Yes | |
| expiresAt | Yes | |
| isClaimed | Yes | |
| nextSteps | No | Enrichment hints to present to the user. Address 'required' items before publishing. |
| canPublish | Yes | |
| previewUrl | Yes | |
| isPublished | Yes | |
| publishedUrl | Yes | |
| missingFields | No | |
| publishPolicy | No | For edit tools on already-published pages, this is wait_for_separate_user_request to prevent same-turn publishing. |
| liveUpdateMessage | No | Plain-language instruction explaining that an edit to an already-published page is draft-only and must not be published until a later explicit user request. |
| liveUpdateRequired | No | True after an edit to an already-published page when the public live page still needs page.publish to reflect the latest revision. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and non-read-only behavior, but the description adds valuable context that the removal only affects public availability and does not delete draft or revision history. This goes beyond the annotations and clarifies the extent of the destructive action.
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 core action and immediately clarifies the scope. Every word adds value, with no redundancy 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?
For a relatively simple tool with two parameters and an output schema, the description covers the primary behavior and key nuance. However, the lack of editToken explanation is a minor gap that keeps it from being fully complete.
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 0% and the description does not explain either parameter. pageId is somewhat obvious, but editToken's purpose is entirely undocumented, leaving the agent without guidance on whether or when to provide 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 clearly states the action ('Remove a published landing page from public availability') and distinguishes it from sibling tools like page.publish by specifying it retains the draft and revision history. This makes the tool's purpose unambiguous and distinct.
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 this tool: when a published page needs to be taken offline while preserving drafts and history. It doesn't explicitly name alternatives or exclusions, but the context is sufficient to infer the appropriate use case, especially given the sibling tool page.publish.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
presets.listList Style PresetsARead-onlyIdempotentInspect
List the 8 curated style presets (theme + starter blocks) for link-in-bio. Use to offer the user a choice or to confirm a preset:auto selection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, so the bar is lower. The description adds that presets are curated, exactly 8, and combine theme + starter blocks, which is useful context beyond the annotations. No contradictions or side-effect concerns need disclosure.
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 only two sentences, front-loaded with the main action and immediately followed by usage guidance. Every word contributes value, making it a model of conciseness.
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 zero parameters, an output schema already describing the return structure, and low tool complexity, the description fully covers what the tool does and when to use it. Nothing essential is missing for an agent to invoke it 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 tool has zero parameters, and schema coverage is 100% (vacuously). Per the rubric, 0 params earns a baseline of 4; the description adds no parameter details because none exist, and no further explanation is needed.
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 the 8 curated style presets for link-in-bio, specifying they consist of theme and starter blocks. This specific verb+resource+scope distinguishes it from sibling list tools like layouts.list, which focus on different entities.
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 gives explicit use cases: offering the user a choice or confirming a preset:auto selection. This is clear contextual guidance, though it does not mention when not to use the tool or explicitly name alternatives, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source.importImport Public SourceARead-onlyIdempotentInspect
Fetch a public website URL and extract a structured brief with business name, description, contact links, and suggested page blocks. Only works with public HTTP/HTTPS pages. Does not bypass login, CAPTCHA, or paywalls. Returns extracted fields and suggestedBlocks for use with page.create_from_brief.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Preferred output locale if obvious from the conversation, such as es or en. | |
| sourceUrl | Yes | Public http/https source URL to import. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| brief | Yes | |
| finalUrl | Yes | |
| warnings | Yes | |
| extracted | Yes | |
| fetchMode | Yes | |
| sourceUrl | Yes | |
| confidence | Yes | |
| suggested_blocks | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable limitations (no bypassing auth/paywalls) and explains the exact return usage ('Returns extracted fields and suggestedBlocks for use with page.create_from_brief'), which goes beyond the structured 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 efficient and front-loaded: the first sentence states the core operation and outputs. Each subsequent sentence contributes key information (constraints, limitations, integration) without redundancy. Four sentences total, 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 presence of an output schema and annotations, the description provides sufficient context: it explains the tool's position in the workflow (feeds page.create_from_brief), discloses non-obvious limitations, and clarifies the expected return value. No significant gaps remain 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?
Schema description coverage is 100%, with both params (sourceUrl and locale) already documented. The description reinforces sourceUrl's requirement ('public HTTP/HTTPS') but does not add new param-specific details, so it stays at the baseline for schema-complete cases.
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: 'Fetch a public website URL and extract a structured brief' with specific outputs (business name, description, contact links, suggested blocks). This distinguishes it from siblings like page.create and page.create_from_brief by focusing on the source importing step.
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 constraints: 'Only works with public HTTP/HTTPS pages' and 'Does not bypass login, CAPTCHA, or paywalls.' It also mentions integration with page.create_from_brief, implying a workflow, though it does not explicitly name alternative tools for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityBmaintenanceEnables AI agents to deploy HTML pages and manage them (list, archive, move, rename) in a versioned library via MCP tools.55MIT
- Flicense-qualityAmaintenanceEnables external AI agents to edit and manage a self-hosted website via a token-gated MCP server, including page content, data, media, and sandboxed functions with validation and rollback.2
- Alicense-qualityCmaintenancePublish and manage shareable HTML/Markdown pages with access control and comments via MCP clients.MIT
- FlicenseAqualityCmaintenanceEnables AI clients to inspect, read, and propose page edits in Planist workspaces over MCP. Supports listing pages, fetching structured content, and submitting edit proposals for review.6