Skip to main content
Glama

PageHub

Server Details

PageHub is a website builder, and this server lets your AI agent do the building. Ask for a site and the agent picks a template, adds pages from a library of ready sections, sets colors and fonts, and fills in your copy and photos. It can screenshot the draft in a real browser and run SEO and accessibility checks before you look.

Every change lands in a draft. Nothing goes live until you or the agent publishes, so it's safe to point at a site that's already up. When you're ready, publish to a f

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.3/5.0

Scored across 79 tools

Disambiguation4/5

Most tools have clearly distinct purposes reinforced by detailed descriptions (e.g., add_nodes vs insert_node vs apply_kit_block, get_site_node vs list_site_nodes vs search_site_nodes). Some overlap remains between set_theme and patch_site_node for theme data, and between update_site and update_page for SEO, but these are explicitly differentiated in the docs.

Naming Consistency4/5

Nearly all tool names follow a predictable snake_case verb_noun pattern (create_site, list_pages, update_collection_row, etc.). Minor deviations occur in verb choices for similar operations (add_page vs create_site vs insert_node) and the Stripe tools use a stripe_ prefix with verb_noun, but the set remains highly readable.

Tool Count1/5

With 79 tools, the server is far above any reasonable scope, even for a broad website-building platform. Many operations could be consolidated (e.g., multiple node-editing tools, several block-listing tools, and separate suggest/list/set theme tools), making this an extreme mismatch.

Completeness4/5

Coverage is very broad: full CRUD for pages, collections, rows, nodes, emails, domains, portal, and Stripe, plus audits and media tools. Minor gaps exist, such as no direct tool to remove an existing site member (only revoke pending invites) and no get_site tool to read site metadata outside list_sites, but agents can generally work around these.

Available Tools

79 tools
add_nodesAdd nodesAInspect

Add a subtree: a flat map of new nodes plus the rootNodeId to attach under parentId (default page_home). Each node: type.resolvedName, isCanvas, props (className, custom.displayName), parent, nodes[], linkedNodes: {}. The map holds only new nodes; apply_kit_block covers standard sections. Contract: get_style_reference({ topic: "editing" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nodesYesFlat map { nodeId: node }.
parentIdNoExisting parent (default page_home).
positionNoIndex in the parent (default: end).
modifiersNo{ Text: [{ name, classes, requires }], … } upserted into ROOT.props.modifiers. Only needed when className uses shortcut modifier names. See get_style_reference({ topic: "editing" }).
rootNodeIdYesThe single top-level node in `nodes` to attach.
buttonValidationNooff | warn | fix (default) | strict, for Buttons in the payload.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the bar is lower. The description adds the important constraint that the map must contain only new nodes and points at the get_style_reference contract, but says nothing about error behavior, attachment conflicts, or what happens when parentId does not exist.

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

Conciseness4/5

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

Dense but front-loaded: the core action and attach point come first, followed by the node shape and then the alternatives/contract. The 'Contract:' fragment is slightly telegraphic but every sentence carries information relevant to correct invocation.

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

Completeness3/5

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

For a nested-object mutation with 7 parameters and no output schema, the description covers the payload contract and defers styling details to get_style_reference. It nonetheless omits return behavior and failure modes, leaving the agent partially informed for a structurally complex write.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description genuinely extends the schema: it enumerates the internal node shape (type.resolvedName, isCanvas, props, parent, nodes[], linkedNodes) which the schema only summarizes as 'Flat map { nodeId: node }'. This clarification of nested-object structure is real added value.

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

Purpose4/5

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

States a specific verb and resource ('Add a subtree') and explains what constitutes the payload (flat map of new nodes plus rootNodeId). It distinguishes itself from one sibling by noting apply_kit_block covers standard sections, but leaves its relationship to insert_node/move_node/add_page unstated.

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

Usage Guidelines3/5

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

Provides an implied when-not ('apply_kit_block covers standard sections') and a contract reference to get_style_reference({ topic: "editing" }), which is genuinely useful context. However, there is no explicit statement of when to choose add_nodes over the nearby insert_node, move_node, or add_page siblings.

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

add_pageAdd pageAInspect

Create a page (a type "page" Container under ROOT; the first page is home). Returns the pageId that apply_kit_block and add_nodes take. seo.title + seo.description can be set here. Guide: get_style_reference({ topic: "pages" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
seoNoPer-page SEO.
nameYesDisplay name; becomes the slug ("Our Services" → /our-services).
positionNoIndex among ROOT's children (default: before the footer).
is404PageNoServe it for unmatched routes.
isHomePageNoMake it the home page (unsets the current one).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations establish the non-readonly, non-idempotent, non-destructive write profile. The description adds genuinely useful behavior that annotations lack: the return payload (pageId, needed since there is no output schema) and the ROOT/Container placement semantics plus the home-page special case.

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

Conciseness5/5

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

Front-loaded with the action and the return value, then supporting context in a compact parenthetical. No filler sentences; every clause carries distinct information.

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

Completeness4/5

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

With no output schema, the description correctly identifies the return value and its downstream consumers, and it explains the ROOT placement model. It omits only minor points like slug-collision handling or the footer default position (covered in schema), so it is nearly complete for a 6-param nested-object write tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, id, position, is404Page, isHomePage, and every seo field. The description's only addition is that seo.title and seo.description can be set at creation time, which is marginal. Baseline 3 applies.

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

Purpose5/5

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

States the specific verb and resource ("Create a page") and pins down what a page is: a type "page" Container under ROOT, with the first being home. An agent can distinguish this from create_site, insert_node, or add_nodes without opening any schema.

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

Usage Guidelines4/5

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

Gives clear context: it returns the pageId that apply_kit_block and add_nodes consume, which tells the agent the create-first ordering, and it routes to get_style_reference({topic:"pages"}) for guidance. It doesn't explicitly say when to prefer update_page over this, but the create-vs-update boundary is obvious from the verb.

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

apply_kit_blockApply kit blockA
Destructive
Inspect

Add a section: stamp a library block (slug) or clone a page section already on this site (sourceNodeId) — exactly one. contentOverrides sets the final copy in the same call, keyed by the block's lib_* ids. target "header" / "footer" replaces the site header/footer with a nav/footer block; heroes are page sections. Guide: get_style_reference({ topic: "blocks" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
slugNoBlock slug from search_blocks. Not with sourceNodeId.
pageIdNoTarget page (default page_home).
targetNopage (default) | header (replaces hdr_root) | footer (replaces ftr_root).
positionNoIndex among the page's sections (default: end).
sourceNodeIdNoPage section on this site to deep-clone with fresh ids. Page target only.
propOverridesNoJSON object: displayName → { className, replaceClassName?, props }. className merges unless replaceClassName: true. Arrays for repeated names.
contentOverridesNoJSON object: node displayName → { text, url, alt, src, … }. Repeated names take an array, consumed in DFS order, e.g. { "Heading": { "text": "Our Services" }, "Title": [{ "text": "SEO" }, { "text": "PPC" }] }.
sectionContainerIdNoExisting empty section to fill (skeleton fills). Omit otherwise.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations flag destructiveHint=true and non-idempotent, and the description adds meaningful detail beyond that: header/footer targets *replace* the existing header/footer, and sourceNodeId "deep-clone[s] with fresh ids". `contentOverrides` applying final copy in the same call is also useful behavioral context, though permissions/return behavior are unstated.

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

Conciseness4/5

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

Front-loaded with the core action and its two modes, then the override/target semantics. Dense but every clause carries information; the trailing guide pointer is a minor bit of overhead but justified.

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

Completeness4/5

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

For a destructive, 9-parameter mutation tool with no output schema, the description covers the key modes, mutual exclusivity, replacement side effects, and override purpose. It stops short of stating permission requirements or failure/return behavior, but is largely sufficient to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds semantics the schema doesn't: contentOverrides is keyed by the block's lib_* ids, and target semantics (header replaces hdr_root, etc.) are clarified. This nudges it above baseline.

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

Purpose5/5

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

States a concrete verb and resource ("Add a section") and enumerates the two mutually exclusive creation modes (stamp a library block via `slug` or deep-clone a page section via `sourceNodeId`). This clearly separates it from siblings like add_nodes/insert_node that lack the library/clone semantics.

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

Usage Guidelines4/5

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

Gives explicit operating rules: "exactly one" of slug/sourceNodeId, target "header"/"footer" replaces the site header/footer, heroes are page sections, and points to get_style_reference({ topic: "blocks" }) for guidance. It does not, however, contrast this with sibling tools such as add_nodes or insert_node, so the agent must infer when this is preferred.

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

audit_accessibilityAudit accessibilityA
Read-only
Inspect

WCAG audit of a site or template page: contrast, alt text, headings, ARIA, interactive elements. Returns violations by severity with node ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Not with templateSlug.
levelNoDefault AA.
pageIdNoPage id (default page_home).
templateSlugNoTemplate to audit instead of a site.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds value beyond them by disclosing the return shape: violations grouped by severity with node ids. This is genuinely useful since there is no output schema, though auth/rate-limit behavior is still unstated.

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

Conciseness5/5

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

One tightly packed sentence with zero waste: scope first, then checked categories, then return format. Nothing could be removed without losing signal.

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

Completeness4/5

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

For a read-only audit tool with full schema coverage and no output schema, the brief return description plus enumerated check categories is nearly sufficient. Only the missing 'when not to use this' guidance and any default-fallback nuance (page_home, AA) keep it from a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (including the A/AA/AAA enum and the id-vs-templateSlug exclusion) are already documented. The description adds no format or default detail beyond the schema, which is the expected baseline.

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

Purpose5/5

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

Names a specific verb+resource ('WCAG audit of a site or template page') and enumerates exactly what is checked (contrast, alt text, headings, ARIA, interactive elements), which clearly distinguishes it from the sibling audit_seo. An agent can pick it without opening the schema.

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

Usage Guidelines3/5

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

Scope is implied through 'site or template page' and the schema's mutual exclusion of id/templateSlug, but the description never says when to choose this over audit_seo or what prerequisites exist. Usage is inferable rather than stated.

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

audit_seoAudit SEOB
Read-only
Inspect

Score a site or template page for SEO: meta, heading hierarchy, alt text, link text, content depth. Returns fixes with node ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Not with templateSlug.
pageIdNoPage id (default page_home).
templateSlugNoTemplate to audit instead of a site.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds a useful return hint ('Returns fixes with node ids'), which matters since no output schema exists. It does not disclose permissions, limits, or whether the audit is exhaustive versus sampled.

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

Conciseness5/5

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

Two compact sentences, zero filler. The scope enumeration comes before the return-shape note, so the most decision-relevant information is front-loaded.

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

Completeness4/5

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

For a read-only audit with three well-documented optional params, the definition covers what is checked and what comes back. The missing piece is invocation guidance (which of id vs templateSlug to pick, and when to prefer this over audit_accessibility), but nothing needed to call it correctly is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so the id/pageId/templateSlug semantics and the default page_home are already documented in the schema. The description's phrase 'site or template page' only lightly reinforces the mutually exclusive input modes. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (score) and resource (site or template page), then enumerates the exact checks performed (meta, heading hierarchy, alt text, link text, content depth). This differentiates it from the sibling audit_accessibility by domain, though it never explicitly contrasts the two.

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

Usage Guidelines2/5

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

No statement of when to run this audit versus alternatives, no prerequisites, and no mention that the caller must pass either id or templateSlug. The mutual-exclusion rule lives only in the schema. The closest sibling, audit_accessibility, is never referenced.

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

check_domainCheck domainA
Read-only
Inspect

Preflight a candidate domain (apex + www): free, attached or erroring, plus the DNS records it would need. Changes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
domainYesCandidate domain, e.g. "example.com".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds real value beyond them: it confirms no mutation occurs ("Changes nothing") and describes what the check returns (free/attached/erroring plus required DNS records), which is genuine behavioral context.

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

Conciseness5/5

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

A single dense sentence that front-loads the action and enumerates the result states. No filler, no repetition of the title.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the return states and the DNS records output. It is complete enough for an agent to call and interpret the result, though it doesn't cover rate limits or what happens for malformed domains.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema. The description only obliquely references the apex+www treatment and adds no syntax or format guidance beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (preflight/check) and resource (a candidate domain, apex + www), and names the exact output: availability state plus needed DNS records. This clearly distinguishes it from set_domain and get_domain_status siblings.

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

Usage Guidelines4/5

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

"Preflight" plus "Changes nothing" strongly implies this is the read-only step before an attach operation, steering the agent away from set_domain. It does not, however, explicitly name the alternative tool or state when not to use it.

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

clear_domainClear domainA
DestructiveIdempotent
Inspect

Remove the custom domain from the active site. Detaches both apex and www variants from Vercel and resets redirectMode to none.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true. The description adds genuine value beyond these by disclosing the exact side effects: detaching both apex and www variants from Vercel and resetting redirectMode to none. It does not mention auth requirements, but the destructive scope is well disclosed.

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

Conciseness5/5

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

Two sentences, no filler, and the primary action is front-loaded ahead of the side-effect detail. Every clause earns its place.

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

Completeness4/5

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

For a destructive single-param mutation with annotations covering the safety profile and no output schema, the description supplies what an agent needs: the target site, the exact artifacts removed, and the redirect reset. Only permissions/preconditions are unaddressed.

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

Parameters3/5

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

Only one parameter exists and schema description coverage is 100%, so the schema already explains 'id'. The description adds no parameter-level meaning, which is the expected baseline when the schema carries the load.

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

Purpose4/5

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

States a specific verb and resource ('Remove the custom domain from the active site'), which reads distinctly from the set_domain/set_domain_redirect_mode siblings. It stops short of explicitly naming which sibling to use instead, so it is clear but not sibling-differentiating by name.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given. The agent must infer that this is the inverse of set_domain, and there is no mention of prerequisites or alternatives such as set_domain_redirect_mode.

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

create_collectionCreate collectionBInspect

Create a collection. schema = [{ key, label, type, required?, default?, help?, … }]; types: text, number, boolean, date, select, image, url, email, color, richText, media, json. Source defaults to manual. Plan-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
slugYesLowercase slug, [a-z][a-z0-9-]*.
schemaNoField definitions (shape in the tool description).
sourceNo{ type: 'manual' } (default) | airtable | csv-upload | google-sheet | webhook-feed | external-db.
site_idNo
isPublicNo
descriptionNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive mutation, so safety is covered. The description adds two genuinely useful facts not in the annotations: source defaults to 'manual' and the operation is plan-gated. It omits failure behavior (duplicate slug, quota errors), which matters for a creation tool.

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

Conciseness4/5

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

Very tight, front-loaded with the verb first and the dense schema/type reference after. No filler sentences. The terse shorthand ('…') keeps it short without wasting space.

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

Completeness3/5

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

For a 7-parameter, nested-object creation tool with no output schema and no annotation detail on side effects, the description covers the hardest part (field schema syntax) but says nothing about slug uniqueness, site_id scoping, or visibility semantics of isPublic. Adequate, not complete.

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

Parameters3/5

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

Schema coverage is 43%, so the description must compensate, and it does partially: the schema array's element shape and the full field-type enum are spelled out, which the schema itself only leaves as a bare object. But name, slug, site_id, isPublic and description get no explanation in the description, and 'schema' points back to the description in a small circular loop.

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

Purpose4/5

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

Opens with a specific verb+resource ('Create a collection'), which is clearly distinct from the row-level siblings (create_collection_row, create_collection_rows) and from delete_collection. It does not explicitly name those siblings, so it stops short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no routing to alternatives such as update_collection_schema (for later field changes) or import_collection_csv (for bulk data). 'Plan-gated' hints at a precondition but doesn't say what to do when the plan doesn't permit it.

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

create_collection_rowCreate collection rowCInspect

Create one row. data maps field key → value, validated against the schema. Plan-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesField key → value.
slugYes
site_idNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare the safety profile (not read-only, not idempotent, not destructive), so the bar is lower. The description adds two real behavioral facts not in the annotations: writes are validated against the collection schema, and the tool is plan-gated. It says nothing about what happens on validation failure, whether the row is immediately published, or quota behavior.

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

Conciseness4/5

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

Three terse fragments, front-loaded with the action, no filler. It is arguably under-specified rather than verbose, but nothing in the text is wasted.

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

Completeness2/5

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

For a mutation tool taking a nested `data` object validated against a dynamic schema, with no output schema, the description omits key operational detail: the meaning of `slug`, whether `site_id` is needed when a site is already selected, and the result of a failed validation. Given the low schema coverage, more was required here.

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

Parameters2/5

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

Schema coverage is only 33% and the description only restates the `data` parameter ('field key → value, validated against the schema'). Neither `slug` (which collection? format?) nor the optional `site_id` is explained anywhere, so two of three parameters are effectively undocumented.

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

Purpose4/5

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

Specific verb + resource ('Create one row'), which implicitly distinguishes it from the bulk sibling create_collection_rows. However it never names that sibling or the collection it writes into, so the singular/plural distinction must be inferred from the name alone.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of the obvious alternative create_collection_rows (or import_collection_csv) for bulk inserts. 'Plan-gated' hints at a prerequisite but is not explained as a usage condition.

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

create_collection_rowsCreate collection rowsAInspect

Insert up to 500 rows (field key → value) in one call, validated all-or-nothing (errors name the rowIndex). Plan-gated. Big CSVs: import_collection_csv.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYesRow objects, max 500.
slugYes
site_idNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description is consistent with them. It adds valuable non-annotation context: all-or-nothing validation semantics, that errors name the failing rowIndex, the 500-row cap, and the plan requirement.

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

Conciseness5/5

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

Three terse clauses, front-loaded with the core action and size limit, then validation behavior, then gating and the alternative. No wasted words.

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

Completeness4/5

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

For a mutation tool with no output schema, the description covers batch limit, validation/error behavior, plan gating, and an alternative path. It omits what 'slug' refers to and the response shape, but the essentials for correct invocation are present.

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

Parameters3/5

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

Schema description coverage is only 33%, so the bar for the description is raised; it clarifies the 'rows' structure as field key → value and repeats the 500 cap. But 'slug' and 'site_id' (both required-relevant identifiers) receive no explanation of meaning or expected format from either schema or description, so it only partially compensates.

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

Purpose5/5

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

States a specific verb (Insert) and resource (collection rows) with batch scope (up to 500 in one call), and the field key → value shape makes the payload model concrete. It clearly distinguishes itself from create_collection_row (singular) by emphasizing the batch/all-or-nothing nature.

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

Usage Guidelines4/5

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

Gives a clear context (batched inserts) and explicitly routes large imports to import_collection_csv. It also flags 'Plan-gated.' However, it never explicitly contrasts with the sibling create_collection_row for small single-row inserts, leaving one inference to the agent.

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

create_siteCreate siteAInspect

Create a site from a template (default "acme", the blank starter) and return its id. Takes no node map; the site is built up afterwards with the section and node tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSite slug.
titleNo<title>.
templateNoTemplate slug (default "acme").
descriptionNoMeta description.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds meaningful context beyond annotations: it returns the site id (the id output matters for the following steps) and clarifies that no node map is provided, so the site is populated afterward. That sequencing info is genuinely useful.

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

Conciseness5/5

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

Two tight sentences front-loaded with the core action and default template, plus an important behavioral note. No wasted words.

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

Completeness4/5

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

For a simple create tool with no output schema, the description covers the essentials: return value (id) and the workflow (no node map, build afterward). It could mention the template requirement or prerequisites, but the coverage is solid.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four params (name, title, template, description). The description only echoes the template default, adding little beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (Create) and resource (site) from a template, and notes the default template. It doesn't explicitly distinguish itself from sibling creation tools like duplicate_site or pull_template, but the resource and mechanism are clear.

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

Usage Guidelines3/5

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

Implies usage ('create a site from a template') but gives no explicit when-to-use vs. alternatives such as duplicate_site. The note that the site is built up afterwards is contextual guidance but not a when/when-not directive.

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

delete_collectionDelete collectionA
DestructiveIdempotent
Inspect

Delete a collection and all its rows. No undo.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
site_idNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to repeat that. It adds critical context: 'and all its rows' clarifies cascading deletion, and 'No undo' emphasizes irreversibility. This goes beyond annotations by specifying scope and irreversibility.

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

Conciseness5/5

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

Two short sentences, no waste. The critical warning 'No undo' is front-loaded and impossible to miss.

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

Completeness3/5

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

Given that annotations cover safety (destructive, idempotent) and no output schema exists, the description adequately covers purpose and irreversibility. However, with 0% parameter documentation and no guidance on alternatives, it's incomplete for a destructive tool where misuse carries high risk.

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

Parameters2/5

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

Schema coverage is 0% – neither 'slug' nor 'site_id' is described in the schema. The description doesn't mention any parameters or their purpose. For a 2-parameter tool with zero schema documentation, the description fails to compensate, leaving the agent to guess what 'slug' and 'site_id' represent.

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

Purpose4/5

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

Clear verb+resource: 'Delete a collection' precisely states the operation. It also clarifies the cascading effect ('and all its rows'), distinguishing it from delete_collection_row. However, it doesn't explicitly name the sibling alternative.

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

Usage Guidelines3/5

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

The description implies when to use (to remove a collection entirely) and highlights the destructive nature, but offers no explicit guidance on alternatives like delete_collection_row for removing single rows. No when-not-to-use conditions are stated.

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

delete_collection_rowDelete collection rowC
DestructiveIdempotent
Inspect

Delete one row from a collection by row_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
row_idYes
site_idNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond them: no confirmation that the deletion is permanent, no note on failure behavior when row_id does not exist, and no indication of what site_id is needed for.

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

Conciseness3/5

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

The single sentence is front-loaded and wastes no words, but it is undersized for a three-parameter destructive operation. Brevity here reflects missing content rather than disciplined editing.

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

Completeness2/5

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

A destructive, idempotent tool with no output schema and zero schema description coverage needs the description to carry scope, targeting, and side-effect information. Only the row-level scope is covered; collection identification, site scoping, and irreversibility are absent.

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

Parameters2/5

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

Schema description coverage is 0%, so the description is the only place parameter meaning could be conveyed. It mentions row_id only implicitly by naming it, and says nothing about the required 'slug' (which collection is targeted) or the optional 'site_id', leaving two of three parameters semantically unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Delete one row from a collection') and scopes it to a single row via row_id, which cleanly separates it from delete_collection in the sibling list. It stops short of naming that sibling or the row-array counterpart explicitly, so differentiation is left partly to inference.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives such as delete_collection or update_collection_row. The agent must infer the use case entirely from the tool name.

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

delete_nodeDelete nodeA
DestructiveIdempotent
Inspect

Delete a node and its subtree. ROOT, page_home, hdr_root and ftr_root can't be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nodeIdYesNode id (from list_site_nodes / search_site_nodes).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so safety is covered. The description adds genuinely useful behavior the annotations can't convey: deletion cascades to the subtree, and four named root nodes are protected. It doesn't mention auth requirements or irreversibility, so it's not a 5.

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

Conciseness5/5

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

Two short sentences, zero waste, with the primary action and cascade behavior front-loaded before the constraint. Every clause earns its place.

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

Completeness4/5

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

For a destructive mutation with no output schema, the description plus annotations give an agent enough to call it correctly: what it does, that it cascades, and which nodes are protected. Missing only auth/permission caveats and confirmation-of-irreversibility notes.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (id, nodeId) are already documented by the schema, including that nodeId comes from list_site_nodes/search_site_nodes. The description adds nothing about parameters, so the baseline 3 applies.

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

Purpose4/5

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

States a precise verb+resource (delete a node) and adds scope that matters: the entire subtree goes with it. This clearly separates it from delete_page and delete_site, though it never names those siblings explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance and no routing to alternatives like delete_page or move_node. The only usage rule given is the negative constraint that ROOT, page_home, hdr_root and ftr_root cannot be deleted, which is a constraint rather than selection guidance.

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

delete_pageDelete pageA
DestructiveIdempotent
Inspect

Delete a page and its content. The last page can't be deleted; deleting home promotes the next page.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
pageIdYesPage id, e.g. "page_about".

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: content is deleted along with the page, the last page cannot be deleted, and deleting home promotes the next page — all side effects an agent would not learn from annotations alone.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and followed by the two real operational constraints. No filler or restatement of the tool name.

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

Completeness4/5

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

For a destructive, non-idempotent-looking operation there is no output schema, and annotations plus the description together cover scope and edge cases well. The only gap is that nothing is said about permission requirements or what the response returns, which is minor given the annotation coverage.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'id' (site id) and 'pageId' documented in the schema, so the baseline is 3. The description adds no syntax or format detail beyond what the schema provides.

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

Purpose5/5

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

States a specific verb and resource ('Delete a page') plus the scope of deletion ('and its content'), which distinguishes it from delete_node, delete_collection, and delete_site. An agent can identify the target entity without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied by the name and the stated constraints, but there is no explicit when-to-use guidance or reference to alternatives like update_page or delete_node. The constraints ('last page can't be deleted') do help an agent avoid an invalid call, which lifts it above pure non-guidance.

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

delete_siteDelete siteC
DestructiveIdempotent
Inspect

Delete a site. Requires an explicit id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSite id to delete.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is fully covered by structured data. The description only adds 'Requires an explicit id,' which is a restatement of the required field rather than new behavioral context such as permanence, cascade effects, or auth requirements.

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

Conciseness4/5

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

Two short sentences with the action front-loaded and no wasted prose. The second sentence is mildly redundant given the schema marks id as required, keeping it just below a perfect score.

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

Completeness3/5

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

For a single-parameter, no-output-schema tool whose annotations carry the destructive and idempotent profile, the description is minimally sufficient. It omits any note on irreversibility or side effects, which would be valuable for a destructive operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the single 'id' parameter is already fully documented as 'Site id to delete.' The description's 'Requires an explicit id' adds no syntax, format, or constraint detail beyond the schema, matching the baseline 3.

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

Purpose4/5

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

States a specific verb and resource ('Delete a site'), which is unambiguous and distinguishable from sibling mutations like delete_page or delete_collection by the resource noun alone. It does not explicitly contrast with those siblings, but the target resource is clear.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as delete_page, unpublish_site, or duplicate_site, and no mention of prerequisites (permissions, confirmation, or irreversibility handling). Usage must be inferred entirely from the name.

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

duplicate_siteDuplicate siteAInspect

Copy a site you're a member of into a new site you own (content, title, description, portal, crawlPolicy). Domain and published state are not copied. The copy becomes active.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSource site id.
nameNoSlug for the copy.
titleNoTitle override.
descriptionNoDescription override.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations by enumerating exactly what is copied (content, title, description, portal, crawlPolicy) and what is not (domain, published state), plus the resulting state ('becomes active'). This is the kind of behavioral detail an agent needs before mutating state.

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

Conciseness5/5

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

Two tightly packed sentences with no filler; the copy scope and the not-copied caveats are front-loaded and immediately actionable.

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

Completeness4/5

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

For a mutation tool with no output schema, annotations already cover the safety profile and the description covers copy semantics thoroughly. The remaining gap is the absence of any note on the all-optional schema, where duplication realistically requires the source id.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents id/name/title/description. The description adds only that title and description function as overrides and lists copied fields, but does not explain the 'name' slug parameter or that id is practically required despite the schema marking nothing as required.

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

Purpose5/5

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

States a specific verb (copy) and resource (site), plus the precise scope: source must be a site you're a member of, destination is a new site you own. This clearly distinguishes it from create_site and pull_template among siblings.

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

Usage Guidelines4/5

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

Provides concrete pre-conditions ('a site you're a member of' into 'a new site you own') that tell the agent when this tool applies, but never names alternatives (create_site, pull_template) or exclusion conditions.

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

find_iconFind iconA
Read-only
Inspect

Search every icon set; returns ranked ref-icon:<set>/<Name> refs for Icon nodes and Button/Link icon.value. Tabler (tb) lacks many brand logos; brands come from fa / si / … and appear in the results.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesKeyword, e.g. "yelp", "shopping cart".
setNoRestrict to one set, e.g. "tb", "fa", "si".
kindNobrand = logo sets; ui = Tabler only.
limitNoDefault 12, max 50.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe read profile is covered. The description adds real value by disclosing the output ref format and the brand-logo coverage caveat for Tabler, though it omits rate limits or result-ordering mechanics.

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

Conciseness4/5

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

Two dense sentences, front-loaded with the core action and return shape, then a practical caveat. Every sentence earns its place, though the second sentence's ellipsis shorthand is slightly informal.

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

Completeness4/5

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

No output schema exists, but the description compensates by explaining the return ref format. With annotations covering safety and the schema covering all parameters, an agent has enough to call this correctly; only edge behavior like empty results is unaddressed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents q, set, kind, and limit. The description reinforces that results span every set and mentions set shorthand (tb/fa/si) but adds no syntax or default details beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb (Search) and resource (every icon set) and even specifies the return format (`ref-icon:<set>/<Name>` refs for Icon nodes and Button/Link icon.value). This clearly distinguishes it from sibling lookups like find_image, find_video, and search_blocks.

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

Usage Guidelines4/5

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

It gives clear context for use and a useful routing hint: Tabler (tb) lacks many brand logos, so brands come from fa / si. It does not explicitly say when NOT to use it versus find_image, but the icon-specific framing is strong.

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

find_imageFind imageB
Read-only
Inspect

Stock photos with verified, ready-to-use URLs (local bank, then Unsplash/Pexels).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoKeywords, e.g. 'bakery interior'.
countNoDefault 3, max 6.
categoryNohero/background = wide; avatar = faces; product = objects; team = groups.
providerNoDefault pexels.
orientationNoDefault landscape.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-network behavior are covered. The description adds real value by disclosing the source hierarchy ('local bank, then Unsplash/Pexels'), which explains where results come from, but says nothing about result limits, caching, or failure behavior when no image matches.

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

Conciseness4/5

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

A single compact sentence with the resource and the most decision-relevant fact (verified URLs, source order) front-loaded. It is a fragment without a verb, which slightly weakens readability, but there is no wasted text.

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

Completeness4/5

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

With no output schema, the description usefully signals that results are URLs ready for use, and all five optional parameters are self-documenting via the schema. An agent has enough to invoke it correctly; only edge-case behavior (no results, provider outages) is unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and each of the five parameters carries its own description, including enum semantics for category, provider, and orientation. The prose adds nothing beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description names the concrete resource ('Stock photos') and quality guarantee ('verified, ready-to-use URLs'), so an agent can tell it apart from find_video and find_icon without opening a schema. It is a noun phrase rather than a verb+resource statement, but the intent is unmistakable.

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

Usage Guidelines2/5

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

There is no statement of when to reach for this tool versus find_video, find_icon, or upload_image, and no prerequisites or exclusions are given. The provider fallback order hints at sourcing behavior but is not framed as usage guidance.

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

find_videoFind videoA
Read-only
Inspect

Stock videos with direct MP4 URLs (Pexels) for Video nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoKeywords, e.g. 'coffee pouring'.
countNoDefault 3, max 6.
providerNoOnly pexels.
maxDurationNoMax seconds.
minDurationNoMin seconds.
orientationNoOrientation filter.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and reach profile. The description adds that results are direct MP4 URLs from Pexels, which is useful output context, but it does not disclose rate limits, auth requirements, or pagination behavior.

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

Conciseness5/5

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

The description is a single compact sentence fragment that is front-loaded with the resource and key output characteristic. Every word earns its place and there is no redundancy.

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

Completeness3/5

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

For a tool with 6 optional parameters and no output schema, the description is minimal. It covers the core output (MP4 URLs) and source, but does not describe the return shape (e.g., a list of videos with metadata) or clarify default behavior when filters are omitted, leaving some gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds no parameter-level meaning beyond what the schema provides, making the baseline of 3 appropriate.

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

Purpose4/5

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

The description names the resource (stock videos) and the key output trait (direct MP4 URLs from Pexels) and ties it to Video nodes, which distinguishes it from find_image and find_icon. It lacks an explicit verb, but the tool name supplies that, and the scope is specific enough for an agent to select it correctly.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use guidance and no named alternatives. The phrase 'for Video nodes' implies the intended context, but the agent must infer that this is the right tool for fetching stock video rather than reading it from structured guidance.

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

generate_button_classesGenerate button classesA
Read-only
Inspect

Canonical Button className + activeModifiers from intent (variant, shape, size). A starting point; extra classes can be appended.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctaNoAdd CTA spacing / min-height (default true).
sizeNosm | md | lg (default md).
shapeNoe.g. rounded-box (default) or rounded-full.
variantNoprimary | outline | ghost (default primary).
emphasisNodefault | neon (primary only).
responsiveNoFull width on mobile, auto on desktop (default true).
extraClassesNoExtra classes to append.
includeModifiersNoAlso return activeModifiers (default true).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds value by disclosing the output shape (className plus activeModifiers) and that results are extensible, but it says nothing about determinism, default behavior interactions, or how modifiers are derived.

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

Conciseness5/5

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

Two short sentences, no filler, with the primary output front-loaded before the caveat. Every sentence earns its place.

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

Completeness4/5

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

With no output schema, the description correctly names the two returned values (className, activeModifiers) so the agent knows what to expect. For a tool with 8 optional parameters and a simple string output, this is largely sufficient, though the exact className/modifier format remains unstated.

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

Parameters3/5

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

Schema description coverage is 100% with 8 well-documented parameters, so the schema carries parameter semantics. The description only restates variant/shape/size and adds no format or interaction detail beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (Generate) and resource (Button className + activeModifiers) and names the intent inputs it derives from. It is clearly distinguishable from CRUD siblings. It does not, however, differentiate itself from the close sibling validate_button_classes, which likely operates on the same className concept.

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

Usage Guidelines3/5

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

'A starting point; extra classes can be appended' implies this is a generation step whose output feeds further work, which lightly signals when to reach for it. But there is no explicit when-to-use vs. the near-identical validate_button_classes sibling, and no stated prerequisites.

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

get_blockGet blockA
Read-only
Inspect

Get a library block's full tree by slug — reference for hand-building with add_nodes. Counts as a use.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesBlock slug.

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true, openWorldHint=false), and the description adds a genuinely non-obvious behavioral fact — 'Counts as a use' — which is billing/quota information the agent cannot get from annotations. It also describes the payload as a 'full tree', though it does not detail depth or format.

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

Conciseness5/5

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

One sentence plus a short billing note; the core action is front-loaded and every clause carries information (what it returns, the key, the downstream use, the quota cost). No filler.

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

Completeness4/5

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

For a no-output-schema, read-only lookup with a fully documented single parameter, the description covers purpose, key, return shape at a high level, and quota cost. It could be slightly more complete about the tree structure or how the result interops with add_nodes node identifiers.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one parameter, so the schema already documents 'Block slug.' The description's 'by slug' adds no syntax or format detail beyond the schema, making 3 the appropriate baseline.

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

Purpose4/5

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

Names a specific verb and resource ('Get a library block's full tree by slug'), which is clearly distinct from listing tools like list_blocks or search_blocks. It also ties the result to a downstream task (hand-building with add_nodes), though it does not explicitly contrast itself with list_block_nodes.

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

Usage Guidelines4/5

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

States the context in which to use it: as a reference for hand-building nodes with add_nodes. It gives a clear purpose-driven trigger but no explicit when-not guidance or named alternatives (e.g., when search_blocks or list_block_nodes is preferable).

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

get_collectionGet collectionB
Read-only
Inspect

Read one collection's definition (schema fields, source, isPublic).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesCollection slug (unique per site).
site_idNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the useful detail of what the returned definition contains, but says nothing about auth requirements, error behavior for a missing slug, or scoping by site.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the parenthetical lists the payload contents compactly and every clause earns its place.

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

Completeness3/5

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

For a simple read tool with no output schema and annotations covering safety, the description adequately conveys what is returned. However, the undocumented optional site_id parameter leaves a real gap in how the caller should scope the lookup.

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

Parameters2/5

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

Schema coverage is only 50%: slug is documented in the schema, but site_id is undocumented in both the schema and the description. The description does not compensate for the coverage gap or clarify how a collection is scoped when site_id is omitted.

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

Purpose4/5

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

States a specific verb (read) and resource (one collection's definition) and enumerates what the definition contains (schema fields, source, isPublic). An agent can distinguish it from list_collections and update_collection_schema, though it does not name a sibling explicitly.

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

Usage Guidelines2/5

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

The word 'one' weakly implies single-item retrieval, but there is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives like list_collections for enumerating collections. The agent must infer the context.

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

get_component_schemaGet component schemaA
Read-only
Inspect

Full prop schemas for components (types, props, valid values). A comma list returns only those components. In parallel fill, responses are compact and components is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentsNoComma-separated names, e.g. "Container,Text,Button". Omit for all.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover read-only and non-open-world safety, so the bar is lower. The description adds real behavioral context: the return shape (types, props, valid values), that a comma list scopes the response, and that responses become compact under parallel fill. It does not cover response size limits or pagination, but the added detail is substantive.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the return payload. No filler. Minor deduction because 'In parallel fill' is unexplained jargon that costs the reader without adding clarity.

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

Completeness4/5

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

No output schema exists, so the description must carry return-value meaning, and it does sketch the payload shape (types, props, valid values). For a single-parameter read tool this is nearly complete; the only gap is deeper detail on the returned structure and the compact-mode format.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description goes further by stating that a comma list narrows the result and that `components` becomes required in the parallel-fill case — a conditional constraint the schema text ('Omit for all') does not convey. That is meaningful added semantics.

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

Purpose4/5

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

States the specific resource and what it returns: 'Full prop schemas for components (types, props, valid values)'. This distinguishes it from neighbors like get_style_reference or list_presets by naming the artifact returned. It does not explicitly name a sibling alternative, so it falls short of a 5.

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

Usage Guidelines3/5

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

Adds one conditional usage hint ('In parallel fill, responses are compact and `components` is required'), which is genuinely useful context. However, it gives no guidance on when to reach for this tool versus get_style_reference, list_presets, or get_block, and the 'parallel fill' scenario is left unexplained.

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

get_domain_statusGet domain statusA
Read-only
Inspect

Read the site's custom domain: redirect mode, apex/www Vercel state, and the exact DNS records the user needs to create. check preflights another domain without changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
checkNoCandidate domain to preflight.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds that the 'check' path makes no changes, reinforcing the non-mutating nature beyond the annotations. It stops short of describing anything about freshness or failure behavior, which keeps it from a 5.

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

Conciseness5/5

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

Two tight sentences, with the primary resource and returned data front-loaded and the secondary 'check' mode appended. Every clause carries information and nothing is redundant.

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

Completeness4/5

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

For a read-only, no-output-schema tool, the description adequately conveys what comes back (redirect mode, apex/www state, required DNS records), so an agent can act without opening the schema. It is not fully complete on how to interpret or act on those records.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema's terse 'Candidate domain to preflight' by clarifying that check performs a side-effect-free preflight, adding real semantic value for that parameter.

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

Purpose4/5

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

The description states a specific verb and resource ('Read the site's custom domain') and enumerates the payload fields (redirect mode, apex/www Vercel state, DNS records), so an agent immediately knows what it returns. It does not, however, distinguish itself from the sibling 'check_domain' or 'set_domain' tools, which keeps it below a 5.

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

Usage Guidelines3/5

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

Usage is only implied: the 'check' clause hints at a preflight use case for another domain, but there is no explicit when-to-use guidance, no when-not, and no routing to the similar 'check_domain' sibling. The agent must infer context.

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

get_portalGet portalB
Read-only
Inspect

Fetch the current portal configuration for a site.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint=true and openWorldHint=false annotations already tell the agent this is a safe, non-network read. The description adds that the returned config is the 'current' state for a site, but says nothing about whether a portal may be absent, error behavior, or what the configuration comprises.

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

Conciseness4/5

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

One front-loaded sentence with zero filler. Slightly under-informative rather than verbose, but nothing in it is wasted.

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

Completeness3/5

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

For a simple one-parameter read tool with no output schema, the description covers the essentials but omits what a portal configuration actually contains and how absence is signaled. Adequate but with visible gaps given the lack of a return-value schema.

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

Parameters3/5

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

Schema coverage is 100% and the single id parameter is fully documented in the schema ('Site id. Pass it on every call.'). The description adds no syntax, format, or default guidance beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Fetch) and resource (portal configuration) scoped to a site, which distinguishes it from the write-side siblings set_portal and remove_portal. It stops short of naming those siblings explicitly, so it is clear but not fully differentiated in-text.

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

Usage Guidelines2/5

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

No statement of when to use this versus set_portal/remove_portal or other get_* readers. The read intent is only inferable from the verb 'Fetch' and the readOnlyHint annotation, leaving the agent to infer usage context.

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

get_site_emailGet site emailA
Read-only
Inspect

Read one site email: subject, preheader, node tree, allowed {{variables.*}} and EmailSlot nodes (keep required slots exactly once). Emails use only Container, Text, Button, Image, EmailSlot and email-safe classes (no btn/card/shadow/gradient/absolute).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
kindYesEmail kind from list_site_emails.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description still adds real domain context beyond the annotations: which node types are legal in an email and which classes are forbidden (btn/card/shadow/gradient/absolute). That constrains how consumers can use the returned data.

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

Conciseness4/5

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

Two sentences, front-loaded with the return contents, with the constraints packed into the second sentence. Dense but every clause carries information; no filler.

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

Completeness4/5

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

No output schema exists, so the description must convey return shape, and it does (subject, preheader, node tree). The read-only nature and closed-world scope come from annotations. Missing only explicit pagination/error behavior, which is minor for a single-resource getter.

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

Parameters3/5

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

Schema coverage is 100%, with both id and the enum-constrained kind already documented, so the baseline is 3. The description's mention of {{variables.*}} and EmailSlot nodes is about content shape rather than parameter meaning, so it does not add per-parameter value.

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

Purpose5/5

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

States a specific verb and resource ('Read one site email') and enumerates the returned structure (subject, preheader, node tree, variables, EmailSlot nodes). 'One' implicitly separates it from the sibling list_site_emails, so an agent can distinguish the two without opening a schema.

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

Usage Guidelines3/5

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

Usage is only implied: reading a single email's structure is the natural prerequisite to preview_site_email or update_site_email, but neither is named and no when-not condition is given. The 'keep required slots exactly once' note hints at edit workflows but doesn't route the agent explicitly.

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

get_site_nodeGet site nodeA
Read-only
Inspect

Read one node's raw JSON. propsPatch replaces string props whole (e.g. ROOT.props.inject.head), so this is the current value to merge into.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nodeIdYesNode id, e.g. ROOT, page_home.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds non-obvious behavioral context: propsPatch replaces string props whole, so the returned JSON is the current value to merge into. This is useful beyond the annotations, though it omits other traits like error handling or return structure.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action. The second sentence is slightly cryptic but earns its place by conveying merge semantics; no filler text.

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

Completeness3/5

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

Given a simple read tool with no output schema, the description could say more about what the raw JSON contains or clarify the relationship to patch_site_node. It covers safety via annotations and adds merge context, but leaves some gaps for an agent unfamiliar with the node model.

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

Parameters3/5

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

Schema description coverage is 100%, so both id and nodeId are fully documented in the schema. The description adds no parameter-specific meaning, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: 'Read one node's raw JSON.' This distinguishes it from siblings like list_site_nodes and patch_site_node, though it never explicitly names alternatives. The second sentence about propsPatch adds context but slightly muddles the core purpose.

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

Usage Guidelines3/5

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

The description implies a usage scenario (getting the current value to merge into propsPatch), but it does not explicitly state when to use this tool versus alternatives like list_site_nodes, search_site_nodes, or get_block. The guidance is embedded rather than directive.

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

get_style_referenceGet style referenceA
Read-only
Inspect

Styling reference: palette variables, styleGuide tokens, spatial scale, modifiers, interactive state, form-confirmation recipe. Pass topic for a focused guide (design bar, accessibility, domains, per-tool usage).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoReturn one guide instead of the core reference.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds valuable behavioral context by listing the specific content categories returned (palette variables, spatial scale, modifiers, interactive state, form-confirmation recipe), which helps an agent anticipate the reference material. It stops short of describing the output format or size.

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

Conciseness5/5

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

Two sentences with no wasted words. The content categories are front-loaded, and the optional topic parameter is introduced immediately after. Every sentence earns its place.

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

Completeness4/5

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

For a reference-retrieval tool with one optional enum parameter and no output schema, the description provides enough to call it correctly and understand what content it returns. It does not specify the return format, but the enumerated content categories give sufficient context for an agent to decide to invoke it.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already states that 'topic' returns one guide instead of the core reference. The tool description repeats this and provides a few example topics, but adds little beyond the schema’s enum and description. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description names the resource as a 'Styling reference' and enumerates the content categories (palette variables, styleGuide tokens, spatial scale, etc.), making the purpose clear. It does not explicitly differentiate itself from related sibling tools like suggest_palettes or suggest_font_pairings, but the reference nature is evident.

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

Usage Guidelines3/5

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

The description implies usage: call without topic for the core reference, and pass topic for a focused guide. However, it does not state when to choose this tool over alternatives (e.g., suggest_palettes for palette generation) or any exclusions. The guidance is present but minimal.

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

import_collection_csvImport collection CSVA
Destructive
Inspect

Import CSV text; header columns match field keys (unmatched ignored). mode: append (default), replace (deletes existing rows first), upsert (by an externalId or id column). ~8MB cap. Plan-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvYesCSV text with a header row.
modeNoMerge mode. Default append.
slugYes
site_idNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false; the description adds value beyond that by spelling out exactly what replace destroys (existing rows), the ~8MB size cap, and that the tool is plan-gated. It omits behavior on partial/malformed rows, but the addition over the annotations is substantial.

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

Conciseness5/5

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

A single dense paragraph that front-loads the core operation and then dispatches the mode semantics, size cap, and gating in short clauses. No sentence is wasted.

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

Completeness4/5

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

For a destructive, plan-gated bulk mutation with no output schema and 50% param coverage, the description covers the critical call decisions: merge mode, row-destruction semantics, size limit, and access gating. It does not describe failure handling for malformed rows, a minor gap given the remaining uncertainty about slug/site_id.

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

Parameters4/5

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

Schema coverage is only 50%, so the description must compensate. It usefully explains the csv parameter (header row matches field keys, unmatched ignored) and the mode enum semantics including the upsert key requirement, going well beyond the schema's terse 'Merge mode. Default append.' slug and site_id remain unexplained in both places, keeping this from a 5.

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

Purpose5/5

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

States a specific verb (import) and resource (collection CSV) and immediately clarifies the header-to-field-key mapping behavior, which distinguishes it from sibling row tools like create_collection_rows or update_collection_row. An agent can identify the operation without reading the schema.

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

Usage Guidelines4/5

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

Provides clear context for choosing a merge mode (append default, replace deletes existing rows first, upsert keyed on externalId/id), which is the main decision an agent must make. It does not, however, route the agent away from sibling bulk tools or state when this tool is preferable to create_collection_rows.

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

insert_nodeInsert nodeAInspect

Insert one node under an existing parent. node = { type: { resolvedName }, isCanvas, props: { className, …, custom: { displayName } }, nodes: [] }; parent and linkedNodes are set for you. Lists/tables: a Container with props.type "ul" | "li" | "table" | "tr" | "td" ….

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nodeYesNode definition (shape in the tool description).
nodeIdYesNew unique id, e.g. "ftr_links".
parentIdYesParent id.
positionNoIndex in the parent (default: end).
modifiersNo{ Text: [{ name, classes, requires }], … } upserted into ROOT.props.modifiers. Only needed when className uses shortcut modifier names. See get_style_reference({ topic: "editing" }).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds useful behavioral context beyond that: parent and linkedNodes are automatically set, and lists/tables require specific Container props, which helps an agent invoke the tool correctly.

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

Conciseness5/5

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

The description is front-loaded with the core action, then compactly explains the node shape, automatic fields, and list/table special case. Every sentence contributes useful information without clutter.

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

Completeness4/5

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

Given the rich schema, annotations covering mutation semantics, and a nested node object, the description supplies the critical node shape and automation behavior. It is complete enough to call correctly, though it could mention sibling alternatives for fuller context.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all parameters. However, the description adds substantial meaning for the complex node parameter by sketching its expected shape and clarifying that parent and linkedNodes are managed automatically, going beyond the schema's terse 'Node definition' note.

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

Purpose4/5

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

The description clearly states the specific verb and resource: 'Insert one node under an existing parent.' It implies a single-node insertion, distinguishing it from a multi-node sibling like add_nodes, but it does not explicitly name or contrast with siblings.

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

Usage Guidelines3/5

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

It provides context that the node is inserted under an existing parent, but it offers no explicit when-to-use guidance versus alternatives such as add_nodes, move_node, or patch_site_node, and no when-not conditions.

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

invite_site_memberInvite site memberAInspect

Invite someone to a site by email as owner, editor (default) or viewer. Owner-only. Re-inviting refreshes the link.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
roleNoDefault editor.
emailYesEmail to invite.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, open-world write. The description adds value beyond that: the owner-only authorization requirement and the fact that re-inviting refreshes the invite link rather than failing. It does not cover whether an email is actually dispatched or what happens on invalid input.

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

Conciseness5/5

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

Two compact sentences with the action, roles, and default front-loaded, followed by the permission constraint and the re-invite nuance. No filler.

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

Completeness4/5

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

For a simple three-parameter write tool with annotations covering the safety profile and no output schema, the description supplies the critical extras (owner-only, default role, re-invite semantics). Minor gaps remain around invitation delivery and failure modes, keeping it just below a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so id, role, and email are already documented, including the enum and the 'default editor' note. The description's role/default mention is essentially a restatement of schema content, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (invite) and resource (site member) by email, and enumerates the three roles with the default. This clearly distinguishes it from siblings like list_site_members and revoke_site_invite without needing their schemas.

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

Usage Guidelines4/5

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

Gives the key precondition ('Owner-only') and the re-invite behavior, which tells the agent it can call this on an existing member rather than erroring. It does not explicitly name the alternative tools (revoke_site_invite / list_site_members), so it falls short of a full when/when-not routing.

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

list_block_nodesList block nodesA
Read-only
Inspect

List a library block's node ids (lib_*) and displayNames — the keys apply_kit_block's contentOverrides / propOverrides use. Counts as a use.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesBlock slug.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the read-only, closed-world safety profile, but the description adds a trait they do not: 'Counts as a use,' i.e. a metered/billing side effect. It also discloses the return shape (lib_* ids plus displayNames), which is valuable given there is no output schema.

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

Conciseness5/5

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

A single dense sentence that front-loads the resource, then the return shape, then the consuming use case, and closes with the metering note. Every clause earns its place.

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

Completeness4/5

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

For a one-parameter list tool with no output schema, the description covers purpose, return values (ids and displayNames), the downstream consumer, and the usage-metering behavior. Only minor gaps remain, such as behavior on an invalid or non-library slug.

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

Parameters3/5

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

Only one parameter (slug) and schema description coverage is 100%, so the schema already carries the semantics; baseline is 3. The phrase 'a library block's' marginally narrows what the slug refers to (a block, not a page/site), but adds little beyond the schema.

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

Purpose5/5

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

States a specific verb (list) and resource (a library block's node ids and displayNames), and it distinguishes itself from the nearby sibling list_blocks by scoping to nodes within one block. The cross-reference to apply_kit_block makes the boundary unambiguous.

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

Usage Guidelines4/5

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

It names the consuming tool (apply_kit_block's contentOverrides / propOverrides) and thus implicitly states when you need it: to look up valid keys before applying an override. No explicit when-not or sibling exclusions (e.g. vs. list_blocks) are given, so it falls short of a 5.

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

list_blocksList blocksA
Read-only
Inspect

List library blocks (up to ~200) grouped by category: slug, name, tags. A broad menu; search_blocks ranks and filters. categories / styles arrays OR-match in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoOne vibe; auto-set from the site's buildStyle.
stylesNoOR-filter by several vibes.
categoryNoOne category (merged with categories).
categoriesNoOR-filter by several categories.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the ~200 result cap and the category grouping of results. No auth or pagination details, but coverage is good for a read-only listing tool.

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

Conciseness4/5

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

Two short sentences, front-loaded with purpose, scope and return shape before the sibling comparison. Slightly terse/telegraphic phrasing, but no wasted sentences.

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

Completeness4/5

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

For a read-only list tool with four fully-documented optional params and no output schema, the description supplies result cap, grouping and the key result fields, which is enough to call it correctly. Minor omission: it doesn't say what happens when no filters are supplied.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The clause 'categories/styles arrays OR-match in one call' clarifies combination logic, but the schema already states 'OR-filter by several categories'; the description adds little beyond it.

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

Purpose5/5

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

States a specific verb (List) and resource (library blocks), adds scope (~200 cap) and return shape (grouped by category: slug, name, tags), and explicitly positions itself against the search_blocks sibling. An agent can distinguish list vs. search without opening either schema.

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

Usage Guidelines5/5

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

Contrasts the two tools directly: this one is 'a broad menu' while search_blocks 'ranks and filters'. That gives both the when-to-use and the alternative to prefer for ranked/filtered results.

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

list_collection_rowsList collection rowsB
Read-only
Inspect

Page through a collection's rows: rows, nextCursor, hasMore, totalCount. Limit default 50, max 200.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
limitNo
cursorNonextCursor from the previous page.
site_idNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, covering safety. The description adds pagination semantics (cursor, hasMore, totalCount) and a default/max limit, which is useful beyond the annotations, but omits rate limits or ordering of results.

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

Conciseness5/5

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

One compact sentence front-loading the return fields and paging behavior, then limits. No padding.

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

Completeness3/5

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

A read-only list tool with no output schema; the description names returned fields (rows, nextCursor, hasMore, totalCount), which compensates for the missing output schema. But it leaves slug/site_id semantics and any filtering behavior unexplained, and gives no guidance on starting or ending paging.

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

Parameters4/5

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

Schema description coverage is only 25% (only cursor is documented in schema), so the description carries extra burden. It supplies the limit default (50) and cap (200), aiding the limit param, though slug and site_id remain undocumented.

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

Purpose4/5

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

States a specific verb+resource (list a collection's rows) and clarifies it's a paged listing. Distinguishes from list_collections and from sibling writers like create_collection_rows/update_collection_row, though it doesn't name an alternative directly.

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

Usage Guidelines2/5

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

No when-to-use guidance. Nothing tells the agent when to page with this vs. get_collection or how to begin paging; the cursor param implies iteration but no instructions are given.

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

list_collectionsList collectionsA
Read-only
Inspect

List the site's collections (headless CMS): id, name, slug, row and field counts, public flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idNoSite id. Pass it on every call.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful value beyond them by disclosing the shape of the result set (the specific fields returned), which matters because there is no output schema. It stops short of describing filtering, ordering, or pagination behavior.

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

Conciseness5/5

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

One tight sentence with the action and scope front-loaded, followed by the field list. Every token carries information and there is no filler.

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

Completeness4/5

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

For a one-parameter, read-only list tool with no output schema, near-complete: the return fields are enumerated and the safety profile is covered by annotations. The only gap is the absence of any note on scope (single site vs all sites) or ordering of results.

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

Parameters3/5

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

Schema description coverage is 100% and the single site_id parameter is fully documented in the schema ('Site id. Pass it on every call.'). The description adds nothing further about the parameter, so the baseline 3 for a schema-documented parameter set is appropriate.

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

Purpose5/5

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

The description gives a specific verb ('List') and resource ('the site's collections'), and clarifies the domain as 'headless CMS' so the resource isn't confused with pages, nodes, or templates. It also enumerates the returned fields (id, name, slug, row and field counts, public flag), which further pins down what this tool is versus get_collection or list_collection_rows.

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

Usage Guidelines3/5

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

Usage is implied by the verb and resource — you call this to enumerate collections on a site — but there is no explicit statement of when to prefer it over get_collection (single item) or list_collection_rows (rows within a collection). No exclusions or prerequisites are stated.

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

list_pagesList pagesA
Read-only
Inspect

List the site's pages: node id, name, slug, home/404 flags. Use it to get page ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety behavior is covered. The description adds useful return-field detail (node id, name, slug, home/404 flags), but does not discuss pagination, auth, or ordering.

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

Conciseness5/5

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

Two tight sentences with zero waste. The output fields are front-loaded and the usage note follows immediately.

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

Completeness4/5

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

With no output schema, the description compensates by listing the key returned fields. It is complete enough for a one-parameter read-only list tool, though it omits any pagination or ordering details.

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

Parameters3/5

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

Schema coverage is 100%, and the single 'id' parameter is fully described in the schema as the site id that must be passed on every call. The description adds no additional parameter meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('List the site's pages') and names the fields returned (node id, name, slug, home/404 flags). It is clearly not a mutation tool, but it does not explicitly distinguish itself from nearby siblings like list_site_nodes.

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

Usage Guidelines4/5

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

Gives a clear intended use: 'Use it to get page ids.' It does not state when not to use it or name alternatives, but the context is sufficient for a read-only listing tool.

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

list_presetsList presetsA
Read-only
Inspect

Curated theme presets (palette + fonts + tokens). compact: true returns id + name only. set_theme({ preset }) applies one.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNoMood filter, e.g. "warm", "dark", "medical".
briefNoAlias for compact.
compactNoId + name only.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds behavioral detail beyond that: the compact flag changes the returned shape to id + name only, and the result feeds set_theme. It omits pagination/ordering behavior, but for a small curated list that is minor.

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

Conciseness5/5

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

Three short clauses, zero filler, front-loaded with what a preset is and followed by the two facts an agent needs: the compact output shape and the consuming tool.

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

Completeness4/5

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

With no output schema, the description usefully states the return shape under compact, and it links the tool to its consumer set_theme. It does not explain the mood filter's semantics or whether presets are site-scoped, but the schema covers the filter and the tool is simple enough that little else is required.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents mood, brief, and compact. The description restates the compact behavior ('id + name only') without adding syntax or format detail, so it neither compensates for nor exceeds the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific resource and its contents ('Curated theme presets (palette + fonts + tokens)'), which distinguishes it from siblings like list_templates and suggest_palettes. It is clear what the tool returns, though it never uses the verb 'list' explicitly in the description body.

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

Usage Guidelines4/5

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

Names the downstream action explicitly ('set_theme({ preset }) applies one'), which tells the agent why to call this tool and what to do with the result. It does not, however, contrast itself with sibling discovery tools such as suggest_palettes or list_templates, so the routing is only partial.

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

list_site_emailsList site emailsA
Read-only
Inspect

List the site's transactional emails (receipt, welcome, gift card, sign-in link, downloads): customized or default, and whether each sends. Start here.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered without the description. The description does add value by disclosing the shape of the result (customized vs default, and whether each email sends), but says nothing about pagination, ordering, or whether a site id is truly required.

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

Conciseness4/5

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

One dense sentence plus a two-word directive; nothing is wasted and the scope is front-loaded before the return-value detail. The trailing 'Start here' is slightly clipped but functional.

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

Completeness4/5

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

For a read-only, single-parameter listing tool with annotations covering safety and no output schema, the description conveys what is returned and that it is a starting point. It is nearly complete; only the missing hand-off to the singular/update siblings leaves a small gap.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'id' parameter and cannot be improved on from the description. The description only implies a site scope via 'the site's,' while the schema notes 'Pass it on every call' even though the parameter is optional — the description does not resolve that tension. Baseline 3 applies.

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

Purpose4/5

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

Specific verb ('List') plus a well-defined resource ('the site's transactional emails') with an enumeration of the covered types (receipt, welcome, gift card, sign-in link, downloads), so the agent knows exactly what comes back. It does not explicitly differentiate itself from the singular sibling get_site_email or from update_site_email, so it falls just short of 5.

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

Usage Guidelines3/5

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

'Start here' implies this is the discovery entry point before drilling into a specific email, which is useful implied guidance. However, it never states when to use get_site_email instead, or that update_site_email is the mutation counterpart, and gives no prerequisites or exclusions.

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

list_site_membersList site membersA
Read-only
Inspect

List a site's members with roles, and pending invites with their ids. Owner-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds the owner-only authorization requirement plus the fact that pending invites with ids are returned. It stops short of saying what happens on a non-owner call (error vs empty).

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

Conciseness5/5

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

Two tight sentences, front-loading the scope and ending with the access constraint. No filler.

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

Completeness4/5

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

With no output schema, the description usefully sketches the return shape (members with roles, pending invites with ids) and access scope. Minor gaps: nothing about pagination/size of the list, and it doesn't address the oddity that id is not marked required despite "Pass it on every call."

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

Parameters3/5

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

Only one parameter and schema description coverage is 100% ("Site id. Pass it on every call."), so the schema carries the meaning. The description adds nothing about the id parameter, matching the baseline 3 for high-coverage schemas.

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

Purpose5/5

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

States a specific verb (List) and resource (a site's members), and adds the distinguishing scope detail that the result also includes pending invites with their ids. An agent can separate this from invite_site_member and revoke_site_invite on content alone.

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

Usage Guidelines3/5

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

"Owner-only" gives a real precondition for when the tool can be called, but no alternatives or when-not conditions are named. Usage is implied rather than routed.

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

list_site_nodesList site nodesA
Read-only
Inspect

Lightweight node tree (id, displayName, type, child count) in DFS order, ~2KB. Use it to find ids and section order.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the exact field set returned, DFS ordering, and an approximate size (~2KB) that tells the agent the response is cheap to fetch. It does not mention pagination or depth limits, but the size hint is substantive.

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

Conciseness5/5

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

A single tight sentence with the payload shape front-loaded and the usage cue trailing. No filler, nothing repeated from the name or annotations.

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

Completeness4/5

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

With no output schema, the description does useful work by enumerating the returned fields and payload size, which is exactly what an agent needs to decide whether to call it. It falls short of fully complete only in not clarifying its relationship to the similarly named search_site_nodes/get_site_node siblings.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'id' parameter is documented in the schema ('Site id. Pass it on every call.'). The description adds no additional meaning about the id, so the baseline 3 for schema-driven parameters applies.

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

Purpose4/5

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

The description names a specific verb and resource ('list' + node tree) and characterizes the payload precisely (fields returned, DFS order, ~2KB). It implies the relationship to siblings like search_site_nodes by describing the 'find ids and section order' use case, but never names or contrasts them explicitly.

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

Usage Guidelines3/5

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

'Use it to find ids and section order' gives implied usage context, which is more than nothing. However, it does not state when to prefer this over search_site_nodes, list_block_nodes, or get_site_node, so the agent must infer the boundary itself.

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

list_sitesList sitesA
Read-only
Inspect

List all sites belonging to the authenticated tenant (remote).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine context by clarifying that results are scoped to the authenticated tenant and that the tenant is remote, but says nothing about pagination, ordering, or result size limits for a list operation.

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

Conciseness5/5

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

A single front-loaded sentence with the scope qualifier attached directly to the verb and resource. No filler, no redundancy with the title.

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

Completeness4/5

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

For a parameterless read of a well-scoped resource with no output schema, the description covers the essentials: what is listed and whose sites they are. Minor gaps remain around result shape and whether an empty tenant yields an empty list, but nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the schema baseline of 4 applies and the description cannot add parameter meaning that doesn't exist. Acceptable but not exceptional.

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

Purpose4/5

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

States a specific verb (List) and resource (sites) with an explicit scope: sites belonging to the authenticated tenant. This differentiates it from list_pages, list_collections, and other list_* siblings by resource. It does not, however, contrast itself with nearby tools like select_site or create_site.

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

Usage Guidelines3/5

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

No zero-parameter call is inherently discoverable, so implied usage is the ceiling here. The description gives no explicit when-to-use, when-not-to-use, or pointer to the related select_site sibling, leaving the agent to infer that this is the entry-point enumeration of tenants' sites.

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

list_templatesList templatesB
Read-only
Inspect

List stock templates. Filter by category, tag or q.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text search query.
tagNoFilter by tag (e.g. "modern", "dark").
categoryNoFilter by category (e.g. "landing-page", "portfolio").

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only that the templates are 'stock' (a built-in catalog), and says nothing about result size, pagination or ordering; with annotations carrying the load, this is adequate but thin.

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

Conciseness4/5

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

Two short sentences with no filler, and the core purpose is front-loaded ahead of the filter list. It is appropriately sized, though extremely terse for a tool with no other documentation.

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

Completeness3/5

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

The tool is simple (3 optional params, no nested objects), but with no output schema the description gives no sense of what a returned template looks like or how many come back. What is needed to invoke it is present; what is needed to use the results is not.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter already documents itself with examples, so the schema does the heavy lifting. The description merely restates the three filter names and adds no syntax, combination or default semantics beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('List stock templates'), and the word 'stock' scopes it to the built-in catalog rather than the user's own templates. It does not explicitly distinguish itself from siblings like pull_template or select_template, but the read-only listing intent is unambiguous.

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

Usage Guidelines2/5

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

'Filter by category, tag or q' describes available filters rather than when to use this tool versus alternatives. There is no guidance on when to reach for list_templates instead of select_template or pull_template, nor any note that filtering is optional.

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

move_nodeMove nodeAInspect

Move a node and its subtree to a new parent. Can't move ROOT or page_home, or into its own subtree.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nodeIdYesNode to move.
positionNoIndex in the new parent (default: end).
newParentIdYesNew parent id.

TDQS

A4/5.0
Behavior4/5

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

Annotations declare non-read-only, non-idempotent, non-destructive, and the description adds real behavioral constraints beyond them: ROOT/page_home immovability and the subtree-cycle guard. It does not mention what happens to sibling ordering, whether position is honored on failure, or permissions required.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and then the restriction. No filler or redundant restatement of the title or schema.

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

Completeness4/5

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

No output schema exists, so return behavior is unstated, but the annotations carry the safety profile and the description supplies the key operational limits an agent needs before calling. For a 4-parameter mutation tool this is nearly complete, with only return/error behavior left implicit.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter (id, nodeId, position, newParentId) is documented in the schema itself, so the description need not restate them. It adds no extra syntactic or ordering semantics beyond the schema, making the baseline 3 correct.

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

Purpose4/5

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

States a specific verb and resource plus scope ('a node and its subtree') and the effect ('to a new parent'), which is more informative than the title. It distinguishes the move operation from sibling mutators like insert_node or delete_node implicitly via the verb, but never names an alternative explicitly.

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

Usage Guidelines4/5

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

Explicitly states when the tool cannot be used ('Can't move ROOT or page_home, or into its own subtree'), giving concrete negative conditions. It stops short of naming an alternative tool or describing prerequisites such as required permissions or a prior select_site call.

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

patch_site_bulkPatch site bulkA
Destructive
Inspect

Apply many node patches in one atomic write (parallel single patches lose updates). patches is a real JSON array of { nodeId, typePatch?, classNamePatch?, propsPatch?, nodesPatch?, unsetClasses?, unsetProps? }. Same rules as patch_site_node: namespaced objects deep-merge, strings/arrays replace, Image src + content together, no children.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nameNoOptional site rename.
patchesYesArray (not a string), applied in order to one fetched document.
buttonValidationNooff | warn | fix (default) | strict, for touched Buttons.
designValidationNooff | warn (default) | strict token checks on touched nodes.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false. The description adds value beyond them by disclosing atomicity, that patches are "applied in order to one fetched document," and the merge semantics (namespaced objects deep-merge, strings/arrays replace, Image src + content together, no children). It could be clearer that unsetProps/unsetClasses destroy data, but the behavioral surface is well covered.

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

Conciseness4/5

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

Two tightly packed sentences: purpose + rationale first, then the field enumeration and merge rules. Front-loaded and free of filler, though the second sentence is dense enough that it reads more like reference notes than prose.

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

Completeness5/5

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

For a bulk mutation tool with no output schema, the description covers the essentials an agent needs: atomicity, ordering, and the merge/replace rules that determine the write outcome. Combined with the fully documented schema and mutation annotations, nothing material is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description exceeds that by explaining the patch object shape and, more usefully, the semantics of each field (deep-merge vs replace, single-document ordering, "no children" constraint) that the schema only names. It adds real meaning over the field list.

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

Purpose5/5

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

States a specific verb and resource ("Apply many node patches") and immediately distinguishes itself from the single-node sibling by contrasting its atomic bulk write with "parallel single patches [that] lose updates." An agent can tell this apart from patch_site_node without opening either schema.

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

Usage Guidelines4/5

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

Gives a clear reason to prefer this over patch_site_node (atomicity; parallel single patches lose updates), which functions as an implicit when-to-use rule. It stops short of explicit when-not-to-use guidance, but the routing signal is strong and unambiguous.

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

patch_site_nodePatch site nodeA
Destructive
Inspect

Patch one node (several: patch_site_bulk, one atomic write). classNamePatch merges Tailwind classes; propsPatch sets other props; typePatch swaps the component type. propsPatch deep-merges seo/root/background/overflow/design/inject/relation/richText/theme/company, but strings and arrays REPLACE (get_site_node returns the current value); unsetProps ["seo.jsonLd"] drops a branch. Image: src shadows content, so a new image needs both. ROOT inject.head/footer holds third-party code, not page content. Children are not accepted. More: get_style_reference({ topic: "editing" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nameNoOptional site rename.
nodeIdYesNode id, e.g. ROOT, page_home.
typePatchNoNew type.resolvedName, e.g. "Text". isCanvas follows.
nodesPatchNoREORDER ONLY: the exact same child ids in a new order. Anything else blanks the canvas.
propsPatchNoNon-class props (text, src, href, alt, tagName, action, root, …).
unsetPropsNoDotted prop paths to delete, e.g. "seo.jsonLd".
unsetClassesNoClasses or prefixes to remove; "gap-" also removes md:gap-*.
classNamePatchNoClasses merged via twMerge. Mobile-first: unprefixed = mobile, md:/lg: up.
buttonValidationNooff | warn | fix (default) | strict, for touched Buttons.
designValidationNooff | warn (default) | strict token checks on touched nodes.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description reinforces and enriches this: deep-merge vs. REPLACE semantics for strings/arrays, unsetProps branch dropping, the 'src shadows content' image pitfall, and the ROOT inject.head/footer caveat. This goes well 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.

Conciseness4/5

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

Front-loaded with the core scope and sibling differentiation, then packed with high-value semantics. It is dense and slightly run-on, but nearly every clause carries operational weight; only minor reordering into clearer sentences would help.

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

Completeness4/5

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

For an 11-parameter destructive mutation with no output schema, the description covers merge/replace behavior, deletion semantics, image pitfalls, and child-node exclusion. It omits error/rollback behavior and permission requirements, but nothing critical to invoking it correctly is missing.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds real meaning the schema lacks: propsPatch deep-merges listed branches but strings/arrays replace, classNamePatch uses twMerge, typePatch swaps component type with isCanvas following, and it points to get_site_node to read current values before patching.

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

Purpose5/5

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

Names a specific verb+resource (patch one node) and immediately distinguishes scope from its sibling ('several: patch_site_bulk, one atomic write'). The classNamePatch/propsPatch/typePatch breakdown makes the operation concrete without opening the schema.

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

Usage Guidelines5/5

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

Explicitly routes multi-node edits to patch_site_bulk, states the when-not ('Children are not accepted'), and refers to get_style_reference({topic:'editing'}) for further guidance. Alternatives and constraints are named directly.

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

preview_site_emailPreview site emailA
Read-only
Inspect

Render the saved email with sample data: subject, errors (an email with errors sends the default instead), warnings, plain text.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
kindYesEmail kind from list_site_emails.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint so safety is covered, and the description adds valuable behavioral context beyond annotations: that an email with errors sends the default instead, and the list of returned sections. Good extra signal for a preview/render operation.

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

Conciseness4/5

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

One tight sentence, front-loaded with the action and result. Minor parenthetical reference to the id parameter ('Pass it on every call.' is in schema, not description) keeps it efficient. No wasted words.

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

Completeness4/5

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

For a read-only preview with no output schema and fully documented parameters, the description covers what gets rendered and the error-path behavior. Adequate; an explicit when-to-use note against siblings would complete it.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (id, kind enum) are already documented in the schema. The description adds no parameter-specific details beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Render) and resource (the saved email) with sample data, and names the specific outputs (subject, errors, warnings, plain text). This distinguishes it from get_site_email (fetch config) and update_site_email (mutate).

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

Usage Guidelines3/5

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

Implied usage is preview/render before sending, but the description never explicitly says when to use it vs get_site_email or list_site_emails. No when-not guidance.

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

publish_sitePublish siteA
DestructiveIdempotent
Inspect

Publish the draft so it goes live. Every write is staged until this runs. static switches static delivery on/off (omit to leave it).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
staticNotrue = static-export renderer, false = React renderer.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the agent knows this replaces live content and is repeat-safe. The description usefully adds the staging/commit model, but it doesn't warn that publishing overwrites the currently live site or note any authorization requirement, so it adds only moderate context beyond the annotations.

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

Conciseness5/5

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

Two short sentences, zero filler, with the core action front-loaded and the staging constraint immediately after. Every sentence earns its place.

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

Completeness3/5

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

Covers the essential mechanics (commit point, optional static toggle) and there is no output schema to explain. However, for a destructive publish operation with no required parameters, it omits what happens to the existing live version and whether the id parameter is mandatory to target a site, leaving meaningful gaps.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description genuinely adds meaning: it explains the omit-to-leave-unchanged semantics for `static` ('omit to leave it'), which the schema does not state. The framing of `static` as delivery on/off also clarifies the renderer switch beyond the schema's terse wording.

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

Purpose4/5

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

States a clear verb+resource with scope: 'Publish the draft so it goes live.' The added note that 'Every write is staged until this runs' clarifies this is the commit point and implicitly distinguishes it from siblings like unpublish_site or update_page, though no sibling is named.

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

Usage Guidelines4/5

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

Explains the context in which this tool is required: staged writes only take effect once publish runs. That tells the agent when to invoke it, but it never names unpublish_site or any alternative, so exclusions are left to inference.

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

pull_templatePull templateB
Read-only
Inspect

Download a stock template's decoded node tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTemplate slug to pull

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered without the description's help. The description does add that the result is a 'decoded node tree' rather than raw template data, which is useful framing. It says nothing about size, pagination, or what happens for an invalid slug.

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

Conciseness5/5

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

A single front-loaded sentence with no filler or redundancy. Every word earns its place.

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

Completeness4/5

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

For a one-parameter read-only tool with no output schema, naming the returned artifact (decoded node tree) is sufficient to call it correctly. The absence of guidance on slug sourcing or template discovery is the only meaningful gap.

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

Parameters3/5

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

Schema coverage is 100% with a single documented 'slug' property, so the schema carries the burden. The description adds no format, source, or lookup semantics for the slug beyond what the schema already says. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (download) and resource (a stock template's decoded node tree), which is concrete enough to distinguish it from list_templates and select_template. The phrase 'decoded node tree' is mildly jargon-y but conveys the payload. No sibling is named as an alternative.

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

Usage Guidelines2/5

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

The description gives no indication of when to use this tool versus list_templates, select_template, get_block, or list_site_nodes, all of which appear adjacent in the toolset. Nothing about prerequisites or exclusions is provided.

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

remove_portalRemove portalB
DestructiveIdempotent
Inspect

Remove/disable the portal on a site (sets portal to null).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds meaningful behavioral detail the annotations lack: what actually happens (portal set to null). However, it never resolves the 'remove vs disable' ambiguity it introduces, so it leaves a real question open.

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

Conciseness4/5

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

One short, front-loaded sentence with no waste. The only blemish is the ambiguous 'Remove/disable' pairing, which muddies rather than trims.

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

Completeness3/5

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

For a single-parameter mutation with full annotations and no output schema, this is minimally sufficient. It still leaves open whether the operation is reversible and whether 'disable' differs from 'remove', which an agent might care about given the destructive flag.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%, so the schema already documents 'id' fully ('Site id. Pass it on every call.'). The description adds nothing about the parameter, which is the expected baseline here.

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

Purpose4/5

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

States a specific verb ('remove/disable') and resource ('the portal on a site') and even names the resulting state ('sets portal to null'). It is clearly distinguishable from siblings like set_portal or get_portal, though it doesn't explicitly name them.

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

Usage Guidelines2/5

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

No guidance on when to use this versus set_portal (to change) or get_portal (to inspect), and no prerequisites or warnings. The intended use can be inferred from the verb, but nothing is stated.

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

revoke_site_inviteRevoke site inviteA
DestructiveIdempotent
Inspect

Revoke a pending invite by id (from list_site_members). Owner-only; existing members stay.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
invite_idYesInvite id.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=true and readOnly=false; the description adds two traits annotations cannot express: the owner-only permission requirement and the blast radius (existing members stay). It does not say whether revocation is reversible or what a success response looks like.

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

Conciseness5/5

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

A single front-loaded sentence covering action, identifier, provenance, and permission with no wasted words.

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

Completeness5/5

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

For a two-parameter destructive tool with full schema coverage and no output schema, the description supplies everything an agent needs: the target, the id source, and the authorization constraint.

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

Parameters4/5

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

Schema description coverage is 100% so the baseline is 3, and the description earns above baseline by tying the invite_id to its source (list_site_members), clarifying which of the two ids is being revoked despite the terse 'by id' phrasing.

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

Purpose5/5

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

States a specific verb and resource (revoke a pending invite) with scope (pending only, by id). An agent can distinguish it from invite_site_member and delete_site without opening either schema.

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

Usage Guidelines4/5

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

Tells the agent where the id comes from (list_site_members) and adds an eligibility condition (owner-only). It does not name an alternative tool or an explicit when-not-to-use case, so it stops short of a 5.

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

screenshot_siteScreenshot siteA
Read-only
Inspect

Screenshot the DRAFT in a real browser — the only way to see compiled CSS, theme, state-driven UI and responsive layout. Shoot sections with selector (fullPage can miss late paint), at the design width and at 390.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
pathNoPage slug (omit for home).
widthNo320–1920 (default 1440).
heightNo480–2400 (default 900).
fullPageNoWhole page; ignored with selector.
selectorNoCSS selector, e.g. "#check".

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the lower bar applies; the description still adds real value by noting rendering happens in a 'real browser' and warning that fullPage can miss late paint. It does not describe the returned artifact (image/blob) or size limits, keeping it from a 5.

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

Conciseness5/5

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

Two dense sentences, front-loaded with the core capability and then the practical capture advice. No filler or repetition of schema content.

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

Completeness4/5

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

For a 6-param read-only tool with no output schema, the description covers the essential intent and the two most error-prone params (fullPage vs selector, width). It omits any note on the returned artifact or the id/path pairing requirement emphasized in the schema, so it is strong but not exhaustive.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description goes beyond the schema by recommending selector-based section captures over fullPage and suggesting specific viewport widths (design width, 390), which is usable guidance the schema doesn't encode. It adds no format detail for id/path/height, so not a 5.

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

Purpose5/5

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

States a specific verb+resource ('Screenshot the DRAFT in a real browser') and immediately distinguishes itself from the audit siblings by explaining it is 'the only way to see compiled CSS, theme, state-driven UI and responsive layout'. An agent can tell this apart from audit_accessibility/audit_seo without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete invocation guidance: 'Shoot sections with `selector`' and screenshot 'at the design width and at 390'. It also implies when not to use fullPage ('fullPage can miss late paint'). It stops short of naming an alternative sibling or stating prerequisites, so it is clear context rather than explicit when/when-not routing.

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

search_blocksSearch blocksA
Read-only
Inspect

Search the block library; returns one page of slugs with descriptions and tags (full structure: get_block), plus sections on this site that can be cloned. q takes short layout phrases ("split hero"), categories / styles arrays OR-filter, page pages through. "Fallback — not an exact match" means the closest slugs are listed. Guide: get_style_reference({ topic: "blocks" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoShort layout phrase, e.g. "photo hero"; sorts by relevance.
tagNoe.g. "pricing".
pageNoDefault 1.
sortNopopular | newest | name | relevance. Default: relevance with q, else newest.
groupNoLogical group, e.g. "acme-homepage-cards".
limitNoDefault 50, max 100.
styleNoOne vibe; auto-set from the site's buildStyle.
presetNoStarter/bundle id, e.g. "acme".
sourceNoLegacy field; prefer preset.
stylesNoOR-filter by several vibes.
categoryNoOne category (merged with categories).
featuredNoCurated only.
blockTypeNosection (default) = page sections; component = patterns inside sections.
categoriesNoOR-filter by several categories.
subcategoryNoe.g. "testimonials".

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=false, so the safety profile is already covered. The description adds real behavioral value beyond that: it discloses the paginated return shape (one page of slugs), the degenerate-match behavior, and the fact that results include cloneable sections on this site.

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

Conciseness4/5

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

Front-loaded with the core action and return shape, then parameter notes, then the guide pointer — a sensible priority order. It is dense but almost every clause carries information; only the fallback explanation is slightly tucked away in the middle.

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

Completeness4/5

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

There is no output schema, so the description must describe returns — and it does (slugs, descriptions, tags, cloneable site sections). With 15 optional parameters and full schema coverage, the remaining gaps (sort defaults are in the schema, so fine) are minor; a mention of result-count/limits would push it to 5.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents each of the 15 parameters. The description still adds meaning: it clarifies that q expects short layout phrases ('split hero'), that categories/styles are OR-filters, and that page paginates — useful signals not spelled out as filtering semantics in the schema.

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

Purpose5/5

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

States a specific verb+resource (search the block library) and instantly distinguishes itself from siblings by noting the return is 'one page of slugs with descriptions and tags (full structure: get_block).' An agent can tell it apart from get_block, list_blocks, and search_site_nodes without opening a schema.

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

Usage Guidelines4/5

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

Explicitly routes to alternatives: get_block for full structure and get_style_reference({topic:'blocks'}) as a guide. Also explains what the 'Fallback — not an exact match' case means. It stops short of stating when-not-to-use (e.g. browsing the whole library), so not a full 5.

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

search_site_nodesSearch site nodesA
Read-only
Inspect

Find nodes by text/displayName/id (q), component type, or className substring/regex. className filters return the full className — use them for site-wide class audits.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoMatches displayName, text and id (case-insensitive).
idNoSite id. Pass it on every call.
typeNoComponent type, e.g. Text, Button, Container.
classNameNoSubstring of props.className.
classRegexNoRegex over props.className, e.g. 'py-(8|12)'.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds one real behavioral fact — className filters return the full className rather than a truncated value — but omits pagination, result caps, ordering, and the fact the schema says id must be passed on every call. Adequate, not rich.

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

Conciseness5/5

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

Two sentences, zero filler, and the filter enumeration is front-loaded before the className-audit tip. Nothing repeats the title or wastes tokens.

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

Completeness4/5

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

For a read-only search tool with full schema coverage and no output schema, the description covers what can be matched and one concrete use case. Missing result-set behavior (limits, paging, whether multiple filters intersect) keeps it short of complete.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented in the schema (including the classRegex example 'py-(8|12)'). The description restates the filter mapping without adding syntax or precedence rules, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (find) plus resource (nodes) and enumerates the three filter dimensions (q, type, className), so the agent knows exactly what matching is supported. It doesn't explicitly contrast with list_site_nodes or get_site_node, so sibling differentiation is left to inference.

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

Usage Guidelines3/5

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

One usage cue is given — className filters are 'for site-wide class audits' — which is genuinely actionable. There is no when-not guidance, no mention of the alternative list_site_nodes for unfiltered enumeration, and no note that filters combine (AND vs OR).

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

select_siteSelect siteA
Read-only
Inspect

Set the active site for this session and clear any active template. The hosted server doesn't keep it between calls — still pass id on every call.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSite id.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true and openWorldHint=false; the description adds the crucial non-obvious trait that the server does not retain the selection between calls, which directly affects how an agent must call it. It also notes the template-clearing side effect. It stops short of 5 because it doesn't explain what the 'active site' affects downstream or what the call returns.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary action and followed by the critical calling constraint. Every clause earns its place with no filler.

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

Completeness4/5

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

For a one-parameter tool with no output schema and an annotation-covered safety profile, the description covers the essential behavior and the persistence caveat. The remaining gap is what 'active site' actually influences for subsequent calls, which is left implicit.

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

Parameters3/5

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

Schema description coverage is 100% for the single `id` parameter, so the schema already carries the semantics and baseline 3 applies. The description only reinforces that `id` must be supplied on every call, adding no format or value-level detail beyond the schema.

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

Purpose4/5

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

States a specific verb+resource ('Set the active site for this session') and adds scope ('session') plus a side effect ('clear any active template'), which implicitly separates it from select_template. It does not explicitly name a sibling for routing, so it falls just short of the top of the range.

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

Usage Guidelines3/5

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

The description gives one concrete usage rule ('still pass `id` on every call') because state is not persisted, which is genuinely useful. However, it never states when to use this versus select_template or other session-affecting tools, and gives no exclusions, so guidance is implied rather than explicit.

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

select_templateSelect templateA
Read-only
Inspect

Make a template the edit target for this session; editing tools then act on it (clears the active site). Admin or tenant owner/editor only.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTemplate slug to set as active

TDQS

A4.3/5.0
Behavior4/5

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

Adds meaningful context beyond the annotations: it discloses a side effect ('clears the active site') and the authorization requirement, neither of which appears in the structured fields. The readOnlyHint=true annotation is in mild tension with a session-state mutation, but since no persistent resource is modified, this is not a contradiction.

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

Conciseness5/5

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

One compact sentence with a semicolon-delimited structure: the action and session scope come first, the side effect second, and the permission constraint last. Nothing is wasted.

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

Completeness5/5

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

For a single-parameter, non-output tool, the description covers the action, its session-wide effect, the side effect on the prior site selection, and the access constraint. An agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'slug' parameter is fully documented in the schema, so the baseline is 3. The description adds no format or validation detail beyond what the schema already provides.

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

Purpose5/5

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

States a specific verb and resource ('Make a template the edit target for this session') and immediately scopes the downstream effect ('editing tools then act on it'). It also distinguishes itself from the site-selection sibling by noting it 'clears the active site', so an agent can tell it apart from select_site without opening either schema.

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

Usage Guidelines4/5

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

Gives clear context for use (prior to editing tools that operate on a template) and states the permission gate (admin or tenant owner/editor). It stops short of naming the alternative (select_site) as an explicit either/or, so the routing decision is implied rather than spelled out.

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

set_checkoutSet checkoutA
DestructiveIdempotent
Inspect

Make a collection sellable through Stripe (remove: true stops). Cart Buttons in a Data repeater bound to it then charge via Stripe. Without price_id_field each row charges its numeric price field in minor units (2500 = $25.00) — the collection needs that number field; with price_id_field each row holds a Stripe price id. Needs stripe_connect.

ParametersJSON Schema
NameRequiredDescriptionDefault
removeNoStop selling; rows stay.
siteIdNoSite id. Pass it on every call.
price_fieldNoRow field with the display price.
price_id_fieldNoRow field holding a Stripe price id. Omit to charge `price`.
variants_fieldNoRow field with a variants array (each with its own priceId).
collection_slugYesCollection to sell.
inventory_fieldNoRow field with stock count.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds non-redundant context: what remove:true does, that rows persist, the required stripe_connect auth, and the minor-units charging convention.

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

Conciseness4/5

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

Dense and front-loaded: the core action leads, followed by the mode-dependent charging rules. Telegraphic style packs real information per sentence, though the parenthetical and em-dash clauses make it slightly harder to parse on first read.

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

Completeness4/5

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

For a mutation tool with no output schema, it covers prerequisites, the destructive/stop path, and the two primary charging modes. Minor gaps remain around variants_field and inventory_field, which are only defined in the schema, but overall it is complete enough to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds semantics beyond the schema — the minor-units convention (2500 = $25.00), the requirement that the collection carry that number field, and the either/or relationship between price and price_id_field.

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

Purpose4/5

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

States a specific verb+resource ('Make a collection sellable through Stripe') and clarifies the remove:true inverse, which effectively distinguishes it from siblings like stripe_connect and create_collection. It doesn't explicitly name a sibling to avoid, but the scope is concrete enough to route correctly.

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

Usage Guidelines4/5

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

Gives a clear prerequisite ('Needs stripe_connect') and a concrete decision rule between the two pricing modes (price field in minor units vs. price_id_field). It lacks explicit when-not guidance and doesn't address variants_field/inventory_field, so it stops short of 5.

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

set_domainSet domainA
DestructiveIdempotent
Inspect

Attach a custom domain (apex + www pair, or one subdomain) and return the DNS records the user needs to create; the values are specific to this project. Attaching doesn't publish. clear_domain detaches. 409 = a variant is on another Vercel project; 403 upgrade = plan domain limit. Details: get_style_reference({ topic: "domains" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
domainYesApex or www form; both variants are registered. Detach with clear_domain.
redirectModeNoto-apex (default, www → apex 308) | to-www | none.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real context beyond that: attaching does not publish, the returned DNS values are project-specific, and it decodes the two failure modes (409 = variant on another Vercel project, 403 = plan domain limit). It doesn't cover replacement semantics if a different domain is attached later, which keeps it from a 5.

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

Conciseness5/5

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

Three tightly packed sentences, front-loaded with the action and its outcome, then the lifecycle note, then error decoding, then a detail pointer. Every clause earns its place and nothing is redundant.

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

Completeness5/5

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

For a mutation tool with no output schema, the description covers the return (DNS records to create), the non-effect (not published), the detach path, and ambiguous error codes. An agent has everything needed to call it and interpret common failures.

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

Parameters3/5

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

Schema description coverage is 100%, including the redirectMode enum semantics and the apex/www registration behavior, so the schema already carries the parameter burden. The description reinforces the apex-or-www input form but adds no syntax or format detail beyond it. Baseline 3 is correct.

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

Purpose5/5

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

States a specific verb and resource ('Attach a custom domain'), names the accepted shapes (apex+www pair, single subdomain), and distinguishes itself from the clear_domain sibling that detaches. An agent can identify the operation and its scope without opening the schema.

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

Usage Guidelines5/5

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

Explicit about when to use it (attach), the alternative to use instead for the inverse operation (clear_domain detaches), a key non-obvious condition ('attaching doesn't publish' — publishing is a separate sibling call), and a pointer to get_style_reference for deeper detail. Nothing is left to inference.

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

set_domain_redirect_modeSet domain redirect modeB
DestructiveIdempotent
Inspect

Switch the apex/www redirect pairing on an attached domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
redirectModeYesNew pairing.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true and readOnly=false, so the safety profile is carried by structured data. The description contributes only the 'attached domain' scoping hint; it does not say what existing redirect configuration is overwritten or what happens when both apex and www exist.

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

Conciseness4/5

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

A single short sentence with the key scope constraint front-loaded — minimal and efficient, though it is under-specified rather than genuinely concise in a compensating way.

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

Completeness3/5

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

For a destructive, idempotent mutation on a live domain, the description leaves real gaps: it never states the domain must be attached first, nor that 'id' (required by sibling-style convention but optional in the schema) should be supplied. Rich annotations and a complete schema offset this partially.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters and the redirectMode enum are already documented. The phrase 'apex/www redirect pairing' loosely maps the enum values to real-world meaning, but adds no syntax or default detail beyond the schema.

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

Purpose4/5

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

Names a specific verb (switch) and resource (apex/www redirect pairing on an attached domain), which is far more concrete than the bare tool name. It does not, however, distinguish itself from the nearby siblings set_redirects or set_domain, so an agent still has to infer the boundary.

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

Usage Guidelines2/5

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

There is no when-to-use statement, no prerequisites (e.g. the domain must already be attached via set_domain), and no mention of the obvious alternatives set_redirects/set_domain. The only implicit cue is the word 'attached'.

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

set_faviconSet faviconA
Destructive
Inspect

Set or clear the site favicon (ROOT.props.seo.favicon). Give exactly one source: mediaId, imageUrl, svgContent (SVG markup supplied by the user), dataBase64 (small icons, ~3MB cap), or clear: true. Best: a 512px square PNG or an SVG. Staged like any edit — publish to see it live. Sites only. More: get_style_reference({ topic: "media" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
clearNoRemove the favicon; other fields ignored.
mediaIdNoExisting media id (no upload).
filenameNoFilename hint.
imageUrlNoPublic URL to upload.
mimeTypeNoFor dataBase64 (default image/png).
dataBase64NoBase64 or data URL. Small icons only (~3MB cap).
svgContentNoRaw SVG the user supplied (starts with <svg or <?xml). Never fabricate.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true. The description adds genuinely new behavioral context: edits are staged and require a publish step to go live, the ~3MB size cap for inline base64, and the recommended source format. It does not, however, describe what happens to a prior favicon on overwrite or error behavior.

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

Conciseness5/5

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

Front-loads the action and target path, then packs the exclusivity rule, format guidance, staging model, scope, and a sibling pointer into a few tight sentences. No sentence is filler; the density is high without becoming unstructured.

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

Completeness5/5

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

For an 8-parameter mutation tool with no output schema, the description covers the essential call mechanics (one-source rule, clear semantics), the staging/publish consequence, size limits, scope restriction, and where to get deeper reference material. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a real semantic constraint absent from the schema: exactly one source field per call, and clear:true overrides the others. It also clarifies svgContent is user-supplied markup that must not be fabricated and recommends a 512px square PNG/SVG.

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

Purpose5/5

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

States a specific verb+resource ("Set or clear the site favicon") and names the exact storage location (ROOT.props.seo.favicon). An agent can distinguish this from sibling tools like upload_image or update_site without opening any schema.

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

Usage Guidelines5/5

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

Explicitly enumerates the mutually exclusive input modes (mediaId, imageUrl, svgContent, dataBase64, clear) and the rule "give exactly one source". It also bounds applicability ("Sites only") and routes to a sibling for more detail (get_style_reference({ topic: "media" })).

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

set_integrationsSet integrationsA
DestructiveIdempotent
Inspect

Set analytics and verification ids, rendered as real tags on published pages: GA4, GTM, Search Console, Meta Pixel, Google Ads. Other third-party scripts go in ROOT inject.head/footer via patch_site_node. Per-action conversions: get_style_reference({ topic: "integrations" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
googleAdsNoAW-XXXXXXXXXX. Needed for per-action google-ads conversions.
metaPixelNoMeta Pixel id.
googleAnalyticsNoGA4 id, G-XXXXXXXXXX.
googleTagManagerNoGTM-XXXXXXX.
googleSearchConsoleNoVerification content value only, not the meta tag.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds the useful fact that ids become real tags on published pages, but it never says whether omitting an id clears an existing integration or what happens to previously configured providers – important context for a destructive, idempotent setter.

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

Conciseness4/5

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

Three tight clauses, front-loaded with the primary purpose before the routing notes. No filler sentences, though the get_style_reference pointer is somewhat tangential to the core action.

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

Completeness3/5

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

With six optional parameters, no output schema, and a destructive+idempotent annotation profile, the description covers the providers but leaves the omit-vs-clear semantics and any partial-update behavior unstated. Adequate but not complete for a mutation tool of this shape.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already carries its own format hint (AW-XXXXXXXXXX, G-XXXXXXXXXX, GTM-XXXXXXX, verification value only). The description restates the provider names but adds no format, constraint, or interaction detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb (set) and resource (analytics/verification ids), names the concrete providers (GA4, GTM, Search Console, Meta Pixel, Google Ads), and clarifies they render as real tags on published pages. It explicitly carves out the sibling tool patch_site_node for other scripts, so an agent can distinguish it from neighbors without opening schemas.

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

Usage Guidelines4/5

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

It routes the agent correctly: other third-party scripts belong in ROOT inject.head/footer via patch_site_node, and per-action conversions require get_style_reference({topic: 'integrations'}). That is clear when-to-use guidance with a named alternative, though it doesn't state when this tool should be preferred over e.g. set_checkout or other set_* siblings beyond the script case.

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

set_portalSet portalC
DestructiveIdempotent
Inspect

Enable a portal UI around the published site (sales banner, client review, demo).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
typeYes"sales", "review", "demo", ….
configNoExtra portal config, merged in.
statusNoe.g. "unclaimed" (default), "claimed".

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare destructiveHint=true and idempotentHint=true, which tells the agent this can overwrite/tear down existing portal state, but the description says nothing about what gets destroyed, whether an existing portal config is replaced, or auth needs. With a destructive mutation and rich annotations, the description should disclose the destructive consequence and instead stays silent.

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

Conciseness4/5

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

A single tight sentence with no filler, front-loading the action and the resource. It is appropriately sized but arguably too sparse given the destructive nature of the operation.

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

Completeness2/5

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

For a destructive, idempotent mutation with a nested config object and no output schema, the description omits what enabling actually does, how config merges interact with existing portal settings, and what happens on repeat calls. An agent lacks the context needed to invoke this safely.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents id, type, config (merged in), and status, including the default. The description's 'sales banner, client review, demo' merely restates the type examples already in the schema, so this is the baseline 3.

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

Purpose4/5

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

States a specific verb (enable) and resource (portal UI) tied to the published site, plus the concrete variants (sales banner, client review, demo). It does not differentiate itself from the sibling get_portal or remove_portal, so the agent can't be fully certain of the boundary from the description alone.

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

Usage Guidelines2/5

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

No statement of when to choose this tool over get_portal (read) or remove_portal (tear down), and no prerequisites or preconditions such as requiring a published site. Usage is only loosely implied by the listed portal types.

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

set_redirectsSet redirectsA
DestructiveIdempotent
Inspect

Replace the site's 301/302 redirect rules, evaluated server-side before render. Paths are site-relative; destinations may be absolute URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
redirectsYes[{ from, to, permanent? }]. Pass the full list.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description reinforces this with 'Replace' and the schema's 'Pass the full list' semantics. It adds useful behavioral context beyond annotations — 'evaluated server-side before render' — clarifying when rules take effect.

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

Conciseness5/5

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

Two sentences, front-loaded with the core verb+resource and zero filler. Every clause carries information.

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

Completeness4/5

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

For a destructive, idempotent mutation with no output schema, the description adequately covers replace semantics, evaluation timing, and path/destination format. It stops short of noting the 500-item cap or permission needs, but the annotations and schema cover the safety profile.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters, including site-relative 'from' and 'to' semantics. The description restates that paths are site-relative and destinations may be absolute URLs, adding only mild reinforcement over the schema baseline.

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

Purpose4/5

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

States a specific verb and resource: 'Replace the site's 301/302 redirect rules.' An agent can tell what the tool does, but the description does not differentiate it from related siblings like set_domain_redirect_mode or set_domain.

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

Usage Guidelines2/5

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

The description says what it does but gives no when-to-use context, no prerequisites, and no distinction from the redirect-adjacent siblings. There is some implied usage from 'Replace,' but no explicit guidance or alternatives are offered.

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

set_themeSet themeA
DestructiveIdempotent
Inspect

Write the site theme — preset, palette, darkPalette, styleGuide tokens and fonts, JSON-LD — straight into the draft; the change is immediate. suggest_palettes / suggest_font_pairings are the non-writing alternatives that only show options. ROOT company vars are set with patch_site_node. Palette names, styleGuide keys, workflow: get_style_reference({ topic: "theme" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
demoNoDemo URL.
fontsNoHint ({ url } or { families }) parsed into heading/body families when styleGuide omits them.
imageNoPreview image URL.
titleNoTitle.
hiddenNoHide from the public gallery.
jsonLdNoSchema.org JSON-LD object; {{company.*}} variables work inside it.
presetNoPreset slug; loads palette, fonts and styleGuide. Explicit params override it.
paletteNoComplete palette — replaces the existing one. [{ name, color }] with DaisyUI names (Primary, Primary Content, Secondary, Accent, Neutral, Base 100/200/300, Base Content, …), never "Background"/"Foreground". Colors: hex, rgb, hsl or oklch().
homePageNoHome page flag (default true).
buildStyleNoVibe override for block filtering. Rarely needed — preset sets it.
styleGuideNoDesign tokens, merged into the existing styleGuide; each key becomes a CSS var (headingFontFamily, bodyFontFamily, radiusBox, buttonPadding, contentWidth, input*Color, …). Key list: get_style_reference({ topic: "theme" }).
darkPaletteNoOptional dark-mode palette with the same names. Enables dark mode.
descriptionNoShort description (≤75 chars).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=true, so the safety profile is covered structurally; the description usefully adds that writes land 'straight into the draft' and that 'the change is immediate'. It does not restate what is overwritten versus merged (the palette's replace semantics live only in the schema), so a small gap remains.

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

Conciseness4/5

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

Three sentences, front-loaded with the write action, then alternatives, then the two special cases. It is dense and telegraphic (the 'ROOT `company` vars' fragment assumes prior context) but every sentence carries routing or workflow information, so there is little waste.

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

Completeness4/5

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

For a 14-parameter, nested-object, no-output-schema mutation tool, it covers the essentials: what is written, that it affects the draft immediately, which siblings to use instead, and where the controlled vocabularies live. What it omits — merge-vs-replace behavior for the palette and any validation/permission requirements — is largely handled in the schema, leaving only minor gaps.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds real navigation value by telling the agent where the palette-name and styleGuide-key vocabularies come from (get_style_reference topic "theme") and by flagging that fonts hints are only used when styleGuide omits families. With 14 params and nested objects, that pointer meaningfully reduces lookup friction.

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

Purpose5/5

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

States a specific verb ('Write') and resource ('the site theme') and then enumerates exactly what is written: preset, palette, darkPalette, styleGuide tokens and fonts, and JSON-LD. It also names the sibling tools that look similar but do not write, so the agent can separate this tool from suggest_palettes/suggest_font_pairings without opening a schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: suggest_palettes / suggest_font_pairings are named as the non-writing alternatives that 'only show options', ROOT `company` vars are redirected to patch_site_node, and the workflow/key-list reference get_style_reference({ topic: "theme" }) is given. Both an alternative and a companion call condition are spelled out.

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

stripe_connectStripe: connectAInspect

Connect Stripe so the site can take payments. Returns the connection status and, while unfinished, a single-use onboarding URL that only the site owner can complete; the status reads 'ready' once they have. Owner-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdNoSite id. Pass it on every call.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=false, openWorld=true, destructive=false. The description goes beyond them usefully: it describes the return payload (connection status plus a single-use onboarding URL), states the URL is single-use and owner-completable, and defines the 'ready' terminal state. That is meaningful workflow context the annotations do not carry.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the purpose before the return-value and permission details. No filler.

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

Completeness4/5

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

With no output schema, the description correctly explains what comes back and the ready-state semantics, and flags the owner-only restriction. Minor gap: it doesn't say what a repeated call yields given idempotent=false, though the single-use URL wording hints at it.

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

Parameters3/5

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

Only one parameter (siteId) and schema description coverage is 100%, with the schema itself instructing 'Pass it on every call.' Baseline 3 applies; the description adds nothing further about the parameter.

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

Purpose5/5

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

States a specific verb and resource ('Connect Stripe') plus the outcome ('so the site can take payments'), which separates it cleanly from the stripe_get_product / stripe_search_products siblings that deal with catalog data. An agent can tell this is the payment-connection setup tool without opening the schema.

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

Usage Guidelines3/5

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

The description implies the usage context (initial Stripe setup) and names a hard constraint ('Owner-only'), but it never states when to call this versus other integration tools (set_integrations, set_checkout) or what to do on subsequent calls. Usage is inferable rather than explicit.

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

stripe_get_productStripe: get productA
Read-only
Inspect

One Stripe product by id or metadata.slug: title, description, price(s), images, metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoStripe product id (prod_…); wins over slug.
slugNometadata.slug.
siteIdNoSite id. Pass it on every call.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-data behavior are covered. The description adds the returned field set (title, description, price(s), images, metadata), which is useful context, but nothing about auth requirements, rate limits, or key-precedence behavior beyond 'id wins over slug' (which lives in the schema).

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

Conciseness4/5

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

A single dense sentence with the lookup mechanism front-loaded and no filler. It is slightly elliptical ('One Stripe product'), which costs a point on clarity but nothing is wasted.

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

Completeness4/5

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

The tool is simple (3 params, none required) and no output schema exists, so the description carries the return-shape burden and does so by enumerating the fields. Missing only auth/permission context, which is minor for a read-only lookup.

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

Parameters3/5

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

Schema description coverage is 100% with only three parameters, so the schema already documents id, slug, and siteId including the 'id wins over slug' precedence rule. The description's mention of 'id or metadata.slug' restates the schema rather than adding format or edge-case detail, so baseline 3 applies.

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

Purpose4/5

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

States a specific resource (one Stripe product) and the two lookup keys (id or metadata.slug), plus what the record contains. It does not explicitly distinguish itself from the sibling stripe_search_products, so it stops short of a 5.

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

Usage Guidelines3/5

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

The phrase 'by id or metadata.slug' implies this is the single-record fetch and nudges toward one of the two keys, but there is no explicit when-to-use/when-not guidance and no named alternative such as stripe_search_products for bulk needs.

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

stripe_list_categoriesStripe: list categoriesB
Read-only
Inspect

Distinct metadata.category values in the site's Stripe catalog, with product counts and an image.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdNoSite id. Pass it on every call.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful output context (product counts and an image accompany each category) but says nothing about ordering, pagination, or behavior when no Stripe catalog exists. With annotations carrying the burden, this is adequate but thin.

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

Conciseness5/5

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

A single dense sentence with zero filler, and the resource definition is front-loaded ahead of the output details. Nothing redundant.

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

Completeness4/5

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

For a one-parameter read-only listing tool with no output schema, the description covers both what is returned (category values, product counts, image) and the data source. Minor gaps remain around ordering and empty-result behavior, but an agent has enough to call it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the single siteId parameter is fully documented in the schema, including the 'Pass it on every call' note. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

The description names a specific resource (distinct metadata.category values in the site's Stripe catalog) and the verb is implicit but clear from the listing semantics. It distinguishes itself from stripe_get_product and stripe_search_products by scope (categories vs. products), though it never names those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives like stripe_search_products for product-level queries, and no prerequisites stated. The agent is left to infer usage context entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stripe_search_productsStripe: search productsB
Read-only
Inspect

Search the site's live Stripe products (id, title, price, image, metadata).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoalpha | price_asc | price_desc | newest | oldest (applied client-side).
limitNoDefault 50.
queryNoMatches name/description; omit to list all.
siteIdNoSite id. Pass it on every call.
categoryNometadata.category exact match.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that results come from 'live' Stripe products and what fields come back, but says nothing about pagination, result caps, or freshness/rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler. It is efficient, though the parenthetical field list straddles the line between useful and redundant given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names the returned fields, and all five parameters are fully documented in the schema. It is adequate for a read-only search, missing only sibling disambiguation and result-set behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including sort enum values, siteId requirement, and category semantics, so the description needn't compensate. It adds only the returned-field list, which is output semantics rather than parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (live Stripe products) and enumerates the returned fields. It does not distinguish itself from the close sibling stripe_get_product, so an agent must infer when a search beats a single-product fetch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of the relevant alternatives (stripe_get_product for a known id, stripe_list_categories for taxonomy). The only routing hint is inside the schema's query description ('omit to list all'), which is not part of the tool description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_font_pairingsSuggest font pairingsA
Read-only
Inspect

Show 3 font pairings (heading + body Google Fonts) for the user to pick from. Does NOT change the site; the chosen pairing is applied separately with set_theme.

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsYes3 options: { name, description?, styleGuide: { headingFontFamily, bodyFontFamily, accentFontFamily?, radiusBox?, shadowStyle? }, palette? }.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered structurally; the description reinforces it and adds workflow context about how the selection is applied later. It stops short of describing how the user 'picks' (UI vs. subsequent call), leaving one behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the read-only constraint front-loaded immediately after the purpose. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly states what comes back (3 pairings). It is complete for invocation, though it could clarify the interplay with suggest_palettes, since the schema also accepts a palette.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds a real constraint beyond the schema: the font families must be Google Fonts and pair as heading + body. That meaningfully narrows valid values for headingFontFamily/bodyFontFamily.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Show 3 font pairings (heading + body Google Fonts)') and states the return cardinality, so an agent knows exactly what this produces. It distinguishes itself from set_theme by naming it as the follow-up tool, though it does not explicitly contrast with the sibling suggest_palettes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the negative condition ('Does NOT change the site') and names the alternative path ('the chosen pairing is applied separately with set_theme'), which is exactly the when/when-not/alternative structure. An agent cannot misroute this as a mutation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_palettesSuggest palettesA
Read-only
Inspect

Show 3 palette options for the user to pick from. Does NOT change the site; the chosen palette is applied separately with set_theme.

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsYes3 options: { name, description, palette: 12 { name, color } — Primary, Primary Text, Secondary, Secondary Text, Accent, Accent Text, Neutral, Neutral Text, Background, Text, Alternate Background, Alternate Text }.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the non-obvious workflow trait that this tool only surfaces choices and defers the mutation to set_theme, which is genuinely useful context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the primary action front-loaded and the safety/routing caveat second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only suggestion tool with a fully documented schema and no output schema, the description covers what an agent needs. It stops short of describing the response shape, but with readOnlyHint and a rich param schema that gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the nested 'options' schema already documents the 3-option shape and the 12 required palette color names. The description adds no parameter detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Show 3 palette options') and explicitly distinguishes itself from the theme-writing tool by noting it does NOT change the site. An agent can tell it apart from set_theme and list_presets immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Not only says when to use it (to present options to the user), but explicitly names the follow-up alternative: the chosen palette is applied with set_theme. The when-not condition ('Does NOT change the site') is stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unpublish_siteUnpublish siteB
DestructiveIdempotent
Inspect

Take the site offline.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=false. The description adds that the outcome is taking the site offline, but does not explain reversibility, auth requirements, or whether content is preserved. With annotations carrying the safety profile, this is adequate but sparse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single four-word sentence that is completely front-loaded. It contains no filler or redundancy, though its brevity contributes to gaps elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple state-change tool with annotations covering safety and a fully documented id parameter, the description is minimally complete. It does not clarify the relationship to publish_site or whether the site can be brought back online, which would help an agent route correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single id parameter is already documented in the schema as 'Site id. Pass it on every call.' The description adds no parameter meaning beyond what the schema provides, which matches the baseline 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: taking a site offline. It clearly implies the inverse of publish_site, but does not explicitly name siblings or distinguish itself from delete_site or other site-state tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over publish_site, delete_site, or other alternatives. The implied usage is obvious from the name, but no conditions, prerequisites, or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_collection_rowUpdate collection rowB
DestructiveIdempotent
Inspect

Partially update one row by row_id; omitted fields keep their values.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
slugYes
row_idYesMongo _id of the row.
site_idNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety and repeat-safety profile is covered. The description adds genuine behavioral value by disclosing merge/partial-update semantics (omitted fields retain values), but says nothing about permissions, what happens to nested object contents, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the row target and the merge semantics are both delivered immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation tool with a nested data object, 25% schema coverage, and no output schema, the description is too thin. It never explains the required slug/site_id scoping or what the data object should contain, leaving the agent under-informed before a destructive write.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (row_id is the sole documented parameter). The description mentions row_id and hints at the data payload via 'omitted fields,' but leaves slug, site_id, and the contents/semantics of the nested data object entirely unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (partially update) on a specific resource (one row) identified by row_id, and the word 'partially' plus 'omitted fields keep their values' meaningfully separates it from create_collection_row and update_collection_schema. It stops short of naming a sibling alternative, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of when to prefer create_collection_row or update_collection_schema instead, and no stated prerequisites despite slug and row_id being required. The agent must infer all routing from the verb alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_collection_schemaUpdate collection schemaA
DestructiveIdempotent
Inspect

Replace a collection's whole field list (get_collection returns the current one). Existing rows keep stale keys until edited.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
schemaYes
site_idNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely non-redundant behavior beyond that: existing rows retain stale keys until edited, which warns the agent about post-update data state. It omits auth/permission requirements, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and the destructive full-replacement constraint is front-loaded with the follow-up consequence immediately after. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so no return-value explanation is needed, and annotations cover the mutation safety profile. Combined with the replacement semantics and stale-key warning, the description is nearly complete; only the individual parameter meanings are left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only clarifies that the 'schema' parameter is the full field list (replace, not merge). The required 'slug' and optional 'site_id' parameters get no explanation of format or scope in either place.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('replace a collection's whole field list'), and the word 'whole' makes the full-replacement semantics explicit, distinguishing it from the sibling update_collection_row which edits individual rows. An agent can separate the two without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition/context by pointing to get_collection for retrieving the current field list, which implies the read-before-write workflow. It does not explicitly state when not to use it or name a merge alternative, but the routing context is solid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_pageUpdate pageA
DestructiveIdempotent
Inspect

Update a page: name (changes the slug), SEO, home/404/hidden flags, per-page headCode/bodyClass, hideHeader/hideFooter/hideChrome. A page without seo.title / seo.description falls back to the site title (update_site), not its name. headCode holds third-party code, not page content. Guide: get_style_reference({ topic: "pages" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
seoNoPer-page SEO fields to set.
nameNoNew name; changes the slug.
pageIdYesPage id from list_pages.
headCodeNoRaw HTML for this page's <head>, server-rendered. Empty string clears. Site-wide: ROOT.props.inject.head.
isHiddenNoHidden pages aren't reachable by URL.
bodyClassNoClasses on <body> for this page. Empty string clears.
is404PageNoMake it the 404 page.
hideChromeNoHide ALL ROOT-level chrome (header, footer, sticky bars, drawers) — for ad landing pages.
hideFooterNoHide the global footer on this page.
hideHeaderNoHide the global header on this page.
isHomePageNoMake it home (unsets the current one).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the mutation profile is partly covered. The description adds genuinely non-obvious behavior beyond that: renaming changes the slug, SEO fields fall back to the site title rather than the page name, and headCode is server-rendered third-party code. It does not cover permissions or what an omitted field does to existing values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the field inventory and follow-up with the two caveats and the guide pointer. Every sentence carries information, though the parenthetical field list is packed and could read more cleanly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with a nested seo object and no output schema, the description covers the high-risk semantics (slug change, SEO fallback, chrome hiding intent) plus a companion guide. Gaps remain around partial-update merge behavior and whether empty strings vs omission differ, which matters for an idempotent write.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks — notably that name changes the slug (a hidden side effect) and the seo.title/description fallback semantics. These are real semantic additions rather than restatements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) plus resource (page) and enumerates the exact updatable surface: name, SEO, home/404/hidden flags, headCode/bodyClass, hideHeader/hideFooter/hideChrome. An agent can distinguish it from add_page, delete_page, and update_site without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides valuable routing context — the SEO fallback to site title via update_site, the note that headCode holds third-party code not page content, and a pointer to get_style_reference({topic:"pages"}). However, it never states when to use this tool versus alternatives such as patch_site_node or the site-level setters, and gives no when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_siteUpdate siteA
DestructiveIdempotent
Inspect

Update the site's name (URL slug), title or description. title/description are the fallback and meta description for every page without its own seo — update_page can't reach them. Empty string clears. select_site returns the current values.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
nameNoURL slug (subdomain): lowercase letters, digits, hyphens.
titleNoSite-wide fallback <title>.
descriptionNoSite-wide fallback meta description.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true; the description adds the key behavioral detail behind the destructive flag: 'Empty string clears,' which tells the agent how a value gets wiped. It also points to select_site for current state. No auth or partial-update semantics are covered, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying load: the mutation scope first, the sibling-differentiation caveat second, and the clearing/read-back semantics last. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param, no-required-field, no-output-schema mutation, the description covers scope, clearing behavior, and where to read current values. It leaves partial-update semantics (what happens to unmentioned fields) unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds real meaning: name is a URL slug, title/description are site-wide fallbacks, and empty string clears a field. That goes beyond the schema's field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) plus the resource and the exact fields it touches (name/URL slug, title, description). It is clearly separable from update_page, which it explicitly notes cannot reach the site-wide fallback fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the context for use — these are fallback values for pages lacking their own SEO — and routes the agent to select_site to read current values. It does not state explicit exclusions or a when-not condition, but the alternative (update_page) is named and differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_site_emailUpdate site emailA
DestructiveIdempotent
Inspect

Save a site email's subject, preheader and/or full flat node map, or reset: true. Validated: unknown variables, missing/duplicate required slots and unsupported classes are rejected. Theme and company data are injected at send time. preview_site_email renders the saved result.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
kindYesEmail kind from list_site_emails.
nodesNoFull flat node map (ROOT + every node).
resetNoRestore the default email.
subjectNo≤200 chars; empty = default.
preheaderNoInbox preview text, ≤200 chars; empty = default.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true; the description adds real context by disclosing the validation rules (unknown variables, missing/duplicate required slots, unsupported classes are rejected) and that theme/company data is injected at send time, not saved. It does not mention that unspecified nodes may be overwritten, which would be the one gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: the action, the validation/rejection semantics, and the downstream preview pointer. Front-loaded with the verb and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the mutation modes, validation behavior, deferred injection, and the verification path, which is strong for a 6-param nested write with no output schema. The only omission is what happens to existing node maps when only subject/preheader are passed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description need not restate parameter docs, and it doesn't. It adds only the implicit linkage that nodes is a 'full flat node map' and reset is the alternate mode – already conveyed by the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Save a site email's subject, preheader and/or full flat node map') and enumerates the fields being mutated, plus the reset escape hatch. It names a sibling (preview_site_email) so the agent can distinguish save from render.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly frames the two modes (save fields vs. reset: true) and points to preview_site_email for verification. It never states when to choose this over get_site_email/list_site_emails, but the write-vs-read intent is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_fileUpload fileAInspect

Upload any plan-allowed file. Images go to the CDN (type "cdn"); video/audio/pdf/zip go to R2 (type "r2" + public url) for a Link, a collection field, or a Video node (provider "r2", videoId = mediaId). Web files: fileUrl. dataBase64 is a last resort (~3MB cap; pass mimeType for non-images).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
fileUrlNoPublic URL of the original file — no resize params.
filenameNoFilename hint.
mimeTypeNoRequired with dataBase64 for non-images, e.g. video/mp4, application/pdf.
dataBase64NoBase64 or data URL. Last resort: ~3MB cap.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, idempotent=false, and openWorld=true. The description adds valuable behavioral constraints beyond annotations, including plan restrictions and a ~3MB cap for dataBase64.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded and dense with useful detail, with no obvious filler. Some phrasing is cryptic, such as the parenthetical about provider and videoId, but overall it earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers input routing and constraints well, but with no output schema it does not explain return values like mediaId or public URL. It also does not resolve the relationship with the sibling upload_image tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining routing rules, when to use fileUrl, and that dataBase64 is a last resort with mimeType needed for non-images.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: upload any plan-allowed file, with detailed routing by media type. It does not explicitly differentiate from the sibling upload_image tool, which is a meaningful gap given that both can handle images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful context for input choice, such as images going to CDN, video/audio/pdf/zip going to R2, and dataBase64 being a last resort. However, it does not say when to use this tool versus alternatives like upload_image or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_imageUpload imageAInspect

Upload an image to the site's media library. Returns a mediaId, which goes in an Image's src with type "cdn" (and in content when that is set, since src shadows content). Web images: imageUrl. dataBase64 has a ~3MB cap and is costly in tokens. More: get_style_reference({ topic: "media" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSite id. Pass it on every call.
filenameNoFilename hint.
imageUrlNoPublic URL of the ORIGINAL full-size image — no ?w= / h= / q= resize params.
mimeTypeNoWith dataBase64 (default image/jpeg).
dataBase64NoBase64 or data URL. Last resort: ~3MB cap.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly, non-destructive, open-world and non-idempotent. The description goes beyond that by explaining the return value (mediaId), where it must be wired (Image `src` with type "cdn", also `content`), and a cost constraint (~3MB cap, token-expensive). It omits permissions/auth requirements, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with the action and return contract, then the wiring detail, then the input-mode caveats. Every sentence carries information an agent needs; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description fully explains what comes back (mediaId) and how to consume it, which is the highest-risk gap for an upload tool. Combined with the cap and cost caveats, an agent can call this correctly without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds cross-field meaning the schema does not: the src/content precedence rule, that `imageUrl` is for public original full-size images, and the practical cost/cap tradeoff for `dataBase64`. That is genuine added semantics over the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Upload an image to the site's media library") and immediately names the artifact it produces (mediaId). The resource is narrow enough to distinguish it from the sibling upload_file and from read-only find_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real routing guidance among input modes: `imageUrl` for web images, `dataBase64` as a last resort with a ~3MB cap and token-cost warning, plus a pointer to get_style_reference for media details. It does not, however, contrast this tool with the sibling upload_file, so the when-not guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_button_classesValidate button classesB
Read-only
Inspect

Check a Button className for variant conflicts and token misuse; optionally auto-fix it.

ParametersJSON Schema
NameRequiredDescriptionDefault
autoFixNoReturn fixed classes/modifiers (default true).
classNameYesButton className.
intentVariantNoprimary | outline | ghost.
activeModifiersNoCurrent modifiers, e.g. ["btn-neon"].
allowCustomClassesNofalse = hardcoded colors are errors, not warnings (default true).

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered structurally. The description adds real value by naming the validation categories (variant conflicts, token misuse), but it does not clarify that auto-fix returns corrected classes rather than mutating anything, nor what the diagnostics look like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the core purpose front-loaded and no filler. Every clause (what it checks, the optional fix) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only validator with five parameters and no output schema, the description should say something about what is returned (errors vs warnings, fixed class strings). It covers the check's scope but leaves the result shape entirely to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including autoFix, intentVariant, activeModifiers, and allowCustomClasses is documented in the schema; baseline is 3. The description's only addition is the phrase 'optionally auto-fix', which restates autoFix without new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Check a Button className') and scopes the check to variant conflicts and token misuse, with an optional auto-fix. It does not explicitly distinguish itself from the sibling generate_button_classes, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus generate_button_classes, nor any stated prerequisites or exclusions. The only hint is 'optionally auto-fix it', which loosely points at the autoFix parameter but names no alternative or condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 79 tool updates
    • First observedadd_nodes
    • First observedadd_page
    • First observedapply_kit_block
    • First observedaudit_accessibility
    • First observedaudit_seo
    • First observedcheck_domain
    • First observedclear_domain
    • First observedcreate_collection
    • First observedcreate_collection_row
    • First observedcreate_collection_rows
    • First observedcreate_site
    • First observeddelete_collection
    • First observeddelete_collection_row
    • First observeddelete_node
    • First observeddelete_page
    • First observeddelete_site
    • First observedduplicate_site
    • First observedfind_icon
    • First observedfind_image
    • First observedfind_video
    • First observedgenerate_button_classes
    • First observedget_block
    • First observedget_collection
    • First observedget_component_schema
    • First observedget_domain_status
    • First observedget_portal
    • First observedget_site_email
    • First observedget_site_node
    • First observedget_style_reference
    • First observedimport_collection_csv
    • First observedinsert_node
    • First observedinvite_site_member
    • First observedlist_block_nodes
    • First observedlist_blocks
    • First observedlist_collection_rows
    • First observedlist_collections
    • First observedlist_pages
    • First observedlist_presets
    • First observedlist_site_emails
    • First observedlist_site_members
    • First observedlist_site_nodes
    • First observedlist_sites
    • First observedlist_templates
    • First observedmove_node
    • First observedpatch_site_bulk
    • First observedpatch_site_node
    • First observedpreview_site_email
    • First observedpublish_site
    • First observedpull_template
    • First observedremove_portal
    • First observedrevoke_site_invite
    • First observedscreenshot_site
    • First observedsearch_blocks
    • First observedsearch_site_nodes
    • First observedselect_site
    • First observedselect_template
    • First observedset_checkout
    • First observedset_domain
    • First observedset_domain_redirect_mode
    • First observedset_favicon
    • First observedset_integrations
    • First observedset_portal
    • First observedset_redirects
    • First observedset_theme
    • First observedstripe_connect
    • First observedstripe_get_product
    • First observedstripe_list_categories
    • First observedstripe_search_products
    • First observedsuggest_font_pairings
    • First observedsuggest_palettes
    • First observedunpublish_site
    • First observedupdate_collection_row
    • First observedupdate_collection_schema
    • First observedupdate_page
    • First observedupdate_site
    • First observedupdate_site_email
    • First observedupload_file
    • First observedupload_image
    • First observedvalidate_button_classes

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    7 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources