Skip to main content
Glama

Server Details

Build and manage Grigora websites, CMS posts, directories, ecommerce catalogs, assets, SEO, and publishing from AI assistants via OAuth and Streamable HTTP. Connect to your Grigora account to work with your sites. Website: https://www.grigora.co/mcp/

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

TDQS

B3.1/5.0

Scored across 78 tools

Disambiguation3/5

The set spans many distinct domains, but there are overlapping commerce tools: update_commerce_product can set price, options, and variants while update_commerce_price, set_commerce_product_options, update_commerce_variant, and update_commerce_inventory exist for targeted edits. CMS posts, directory items, and pages are related content models, and custom code overlaps with page-level custom header/footer fields. Descriptions often clarify boundaries, but the sheer number of near-adjacent tools makes misselection plausible.

Naming Consistency4/5

Almost all tools use snake_case with a clear verb plus resource, such as create_cms_post, list_commerce_products, update_directory_item, and delete_url_redirect. Minor deviations exist: add_page and add_custom_domain use 'add' where create_* is used elsewhere, and some names are very long multiword phrases. The pattern is still highly readable overall.

Tool Count1/5

78 tools is an extreme mismatch for a coherent MCP tool set and far above the typical 3-15 range. Even though the platform is broad, this many tools is overwhelming and suggests many operations should be consolidated or grouped into higher-level tools.

Completeness3/5

Coverage is broad across website AI, pages, CMS, commerce, directory, assets, domains, redirects, SEO, analytics, and newsletter fields. However, notable gaps remain: no order management tools despite commerce delete warnings referencing open orders, no delete_page despite page create/get/list/update, and no delete_project or custom-domain removal. Newsletter support is also only partially exposed.

Available Tools

78 tools
add_custom_domainA
Destructive
Inspect

Connect the owner's custom hostname and return the DNS records they must configure.

Requires project administrator access. Pass a unique idempotency_key for this connection attempt; reuse it for retries, and use a new one after cancel/re-add. Call get_custom_domain first. Do not replace an existing domain implicitly. A root domain defaults to www as the primary hostname. Set use_www=False only when the owner explicitly requests the root hostname as primary. Present the returned DNS records exactly. The backend checks DNS automatically and enables SSL; the owner never needs to click Verify or call a validate API.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
use_wwwNo
project_idYes
idempotency_keyYes

TDQS

A5/5.0
Behavior5/5

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

Annotations declare this is a destructive, open-world write, and the description adds context beyond them: project-administrator authorization is required, the backend performs DNS validation and SSL enablement automatically so no Verify click or validate API call is needed, and the caller is told to present DNS records verbatim. These are non-obvious operational facts not derivable from the schema or 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?

Front-loads the action and return value in the first sentence, then layers prerequisites, idempotency, parameter guidance, and backend behavior in short declarative statements. No sentence is redundant with the schema or annotations.

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?

Although there is no output schema, the description explains what comes back (DNS records to present exactly) and what happens afterward (automatic DNS checking and SSL). Combined with the auth requirement and idempotency contract, an agent has everything needed to call this correctly on first attempt.

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?

Schema description coverage is 0%, so the description carries the full burden and does so for the two non-obvious parameters: idempotency_key (unique per attempt, reused for retries, regenerated after cancel/re-add) and use_www (root domains default to www as primary). domain and project_id are left unexplained but are self-evident from their names.

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 the owner's custom hostname') plus the side effect of returning DNS records. It is clearly distinguishable from the sibling get_custom_domain, which is explicitly named as a prerequisite rather than an equivalent.

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?

Gives explicit sequencing ('Call get_custom_domain first'), an exclusion ('Do not replace an existing domain implicitly'), and the condition selecting the use_www variant ('only when the owner explicitly requests the root hostname as primary'). It also routes retries via the idempotency key, leaving little to inference.

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

add_pageBInspect

Create a new page with metadata and optional SEO/custom HTML fields.

Args: project_id: The project ID. name: Page display name. slug: URL slug (must be unique in the project). seo_meta_title: Optional SEO meta title. seo_meta_desc: Optional SEO meta description.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
slugYes
project_idYes
seo_meta_descNo
seo_meta_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful slug-uniqueness constraint, but mentions 'custom HTML fields' that do not exist anywhere in the schema, which is mildly misleading context. It says nothing about whether the created page is published or hidden.

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?

Purpose is front-loaded in the first sentence and the Args block is one line per parameter with no filler. Given 0% schema coverage, the per-parameter lines are load-bearing rather than redundant.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the parameters are covered. What is missing is operational context for a write tool: required permissions, whether the page is immediately live, and how it relates to the project's publish flow.

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 0%, so the description carries the full burden and largely succeeds: it labels all five parameters and adds a real semantic constraint (slug must be unique in the project) that the schema does not express. The 'custom HTML' phrase, however, implies a parameter that is absent from 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 (Create) and resource (page) and enumerates the kind of payload it accepts (metadata plus optional SEO fields). It does not, however, distinguish itself from adjacent creation tools like create_cms_post or create_website, so the agent still has to infer that a 'page' is a distinct resource.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus update_page, list_pages, or the CMS post/website creation siblings. The only conditional content is the slug uniqueness constraint, which is a validation rule rather than usage guidance.

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

add_products_to_commerce_collectionA
Destructive
Inspect

Link products to a collection, skipping any already linked.

Every id is validated against the store first — an unknown id fails the whole call.

Args: project_id: The project ID. collection_id: The collection ID. product_ids: JSON array of product ids to link, e.g. ["abc","def"].

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
product_idsYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, destructiveHint=true, openWorldHint=true, so the mutation profile is covered. The description adds genuinely new behavioral context beyond the annotations: skip-if-already-linked semantics and, more importantly, all-or-nothing atomicity ('an unknown id fails the whole call'), which an agent must know before batching ids.

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

Conciseness4/5

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

Two tight sentences front-load the behavior and the validation rule, followed by a compact Args block. The Args entries largely restate the schema titles, but the product_ids format note 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 an output schema present, return-value explanation is unnecessary, and the description covers the operation, the skip rule, atomic failure behavior, and parameter formats. The only real gap is routing guidance against the two closest siblings.

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 0%, so the description carries the full burden — and it does document all three params, including the JSON-array string format for product_ids with a concrete example ('["abc","def"]'). That is a meaningful addition the schema does not provide.

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 ('Link products to a collection') plus the key differentiator 'skipping any already linked,' which separates it from the additive/replacing siblings. It does not name the alternatives (set_commerce_collection_products, remove_products_from_commerce_collection) explicitly, but the scope is unambiguous.

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

Usage Guidelines3/5

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

'Skipping any already linked' implies an additive, non-replacing use case that distinguishes it from set_commerce_collection_products, but the description never states when to prefer this tool over that sibling or over remove_products_from_commerce_collection. 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.

create_cms_categoryAInspect

Create a new CMS post category. Name is required; slug is auto-generated from name if omitted. Thumbnail URL is fetched and uploaded to project CDN.

Args: project_id: The project ID. name: Category display name (required). slug: URL slug; auto-generated from name if empty. description: Optional category description. thumbnail: Thumbnail image URL; will be uploaded to project CDN. thumbnail_title: Thumbnail title (stored in thumbnail_meta). thumbnail_alt: Thumbnail alt text (stored in thumbnail_meta). thumbnail_caption: Thumbnail caption (stored in thumbnail_meta).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
slugNo
thumbnailNo
project_idYes
descriptionNo
thumbnail_altNo
thumbnail_titleNo
thumbnail_captionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false mutation, destructiveHint=false, openWorldHint=true), but the description adds valuable context the annotations lack: the slug auto-generation behavior and the fact that the thumbnail URL is fetched and uploaded to the project CDN (an external side effect). It stops short of disclosing auth/permission needs or duplicate-name behavior, so a 4 rather than 5.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by a well-organized Args list where each entry earns its place given the 0% schema coverage. Minor redundancy between the summary ('Name is required') and the Args entry ('required') prevents a 5.

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

Completeness4/5

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

For an 8-param mutation with an output schema (so return values need no explanation) and annotation coverage, the description is nearly complete. It omits auth requirements and error/duplicate handling, which are the remaining 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 0%, so the description must carry the full parameter burden and largely does: it documents all 8 args, marks name as required, explains the slug default, and notes that the three thumbnail_* fields are stored in thumbnail_meta. It lacks detail on empty-string defaults or format constraints, keeping it below 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 ('Create a new CMS post category'), clearly distinguishing it from siblings like create_cms_post, create_commerce_collection, and update_cms_category. 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?

The description implies usage through required/optional semantics ('Name is required; slug is auto-generated from name if omitted') but never states when to reach for this tool versus create_cms_post or the other create_* siblings. No exclusions or alternative routing are given.

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

create_cms_postAInspect

Create a new CMS blog post.

Args: project_id: The project ID. title: Post title. slug: URL-safe slug for the post. content: Post body as HTML (optional if content_blocks is set). content_blocks: JSON string of the block tree (same shape as get_cms_post data.content_blocks). If set, stored as-is and content HTML is ignored. excerpt: Short excerpt/summary shown in post listings (also flips the post to using a custom excerpt). featured_image: URL of the featured image. featured_image_alt: Alt text for the featured image (counts toward the "images with alt texts" SEO check). keyword: Focus keyword for the post. categories: Comma-separated category names/slugs (e.g. "Technology,News"). Matching categories are fetched and sent as category objects. tags: Comma-separated tags (e.g. "beginner,seo"). Tags are free-form and are created on the fly. seo_meta_title: Custom SEO for search engines (defaults to the post title). Keep under 70 characters. seo_meta_desc: Custom meta description for search engines. Keep under 160 characters — drives the "meta description" SEO check.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
tagsNo
titleYes
contentNo
excerptNo
keywordNo
categoriesNo
project_idYes
seo_meta_descNo
content_blocksNo
featured_imageNo
seo_meta_titleNo
featured_image_altNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations establish this is a non-destructive write (readOnlyHint=false, destructiveHint=false). The description adds real behavioral context beyond them: content_blocks is stored as-is and overrides content HTML, setting excerpt flips the post to a custom excerpt, tags are created on the fly, and categories are matched and resolved server-side. It stops short of stating slug-uniqueness or permission behavior, 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.

Conciseness4/5

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

The one-line purpose is front-loaded, followed by a clean Args list that is appropriately sized for 13 parameters. A few entries run long (e.g., featured_image_alt explaining SEO checks), but no sentence is filler given the parameter count.

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

Completeness4/5

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

With an output schema present, return values need not be described, and the parameter/behavioral coverage is strong. The remaining gap is operational context: no mention of authentication, permissions, or how creation relates to the publish step, which an agent creating content would benefit from.

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?

Schema description coverage is 0%, so the description carries the entire burden for 13 parameters, and it does so thoroughly: each arg's meaning, format (HTML, URL, comma-separated lists, JSON block tree), defaults, and cross-parameter interactions (content vs content_blocks) are explained. This is exactly what a low-coverage schema requires.

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?

"Create a new CMS blog post" gives a specific verb (create) and resource (CMS blog post), cleanly distinguishing it from the many get_/update_/delete_/publish_ siblings. It does not explicitly name which alternative to use instead, but the create semantics are 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?

The description never states when to use this tool versus update_cms_post or publish_cms_post, nor any prerequisites such as required project access or that publishing is a separate step. The only usage-like hints ("optional if content_blocks is set") are parameter-level, not tool-selection guidance.

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

create_commerce_collectionA
Destructive
Inspect

Create a product collection, e.g. "New arrivals" or "Under $50". Only title is required.

Args: project_id: The project ID. title: Collection name. Required. description: Collection description. slug: URL slug. Derived from the title if empty. image_url: Cover image URL. product_ids: JSON array of product ids to link, in display order, e.g. ["abc","def"]. status: active or draft. Draft collections are not published to the storefront. sort: Manual ordering weight; lower sorts first. seo: JSON object {title, description, image_url, canonical_url, robots}.

ParametersJSON Schema
NameRequiredDescriptionDefault
seoNo
slugNo
sortNo
titleYes
statusNoactive
image_urlNo
project_idYes
descriptionNo
product_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=false, openWorld=true, destructive=true, so the safety profile is covered. The description adds genuine behavioral context beyond that: drafts are not published to the storefront, slug is derived from title if empty, sort weight ordering, and product_ids display order.

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?

Purpose is front-loaded in the first line, followed by a clean Args block. Given the 0% schema coverage, the per-parameter lines all earn their place rather than being redundant padding.

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 9-parameter commerce mutation, the description covers purpose, all parameters, and several behavioral quirks. An output schema exists so return values need not be explained; only auth/permission requirements and error behavior are absent.

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?

Schema description coverage is 0%, so the description must carry the full burden—and it documents all nine parameters with meaning, including the JSON array format for product_ids (["abc","def"]) and the seo object shape ({title, description, image_url, canonical_url, robots}). This fully compensates for the empty 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 ("Create a product collection") and clarifies the concept with two concrete examples ("New arrivals", "Under $50"). It does not explicitly differentiate from the many other create_* siblings, but the resource is distinctive enough that an agent can identify it.

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 provided relative to alternatives like set_commerce_collection_products or add_products_to_commerce_collection. "Only title is required" is a minor helpful note, but nothing tells the agent when this tool is the right choice.

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

create_commerce_productA
Destructive
Inspect

Create a product in the store. Only title is required.

Money is an integer in the currency's smallest unit: price_amount=2999 is $29.99 for USD. To sell variations, pass options here, then call generate_commerce_variants, or pass variants explicitly alongside options.

Args: project_id: The project ID. title: Product name. Required. description: Long product description. slug: URL slug. Auto-generated from the title if empty. subtitle: Short line shown under the title. product_type: digital, download, course, template, membership, service, or physical. Physical forces one_time pricing. pricing_type: one_time, subscription, or pay_what_you_want. status: draft, active, or archived. Only active products show on the storefront. price_amount: Price in the smallest currency unit (e.g. cents). compare_at_amount: Struck-through reference price, same unit. currency: ISO currency code. Defaults to the store currency. image_url: Primary product image URL. image_alt: Alt text for the primary image. sku: SKU used when the product has no variants. checkout_url: External checkout link. Ignored for physical products. shipping_note: Shipping copy shown on the product page. requires_shipping: Whether checkout must collect a shipping address. weight_grams: Shipping weight in grams. inventory_enabled: Track stock for this product. inventory_quantity: Starting stock when there are no variants. highlights: JSON array of short selling-point strings (max 12). faqs: JSON array of {question, answer} objects (max 12). gallery: JSON array of {url, title, alt} image objects (max 12). delivery_details: JSON object {delivery_type, access_duration, access_note, refund_period, refund_policy}. social_proof: JSON object {rating, review_count, sales_count, sales_label}. seo: JSON object {title, description, image_url, canonical_url, robots}. discount: JSON object {code, percent_off, amount_off, expires_at, apply_mode, enabled, label}. options: JSON array of variation axes, max 3, e.g. [{"name":"Size","values":["S","M","L"]}]. variants: JSON array of variants. Each needs option_values naming every option, e.g. {"option_values":{"Size":"M"},"price_amount":2999,"sku":"TEE-M"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
seoNo
skuNo
faqsNo
slugNo
titleYes
statusNodraft
galleryNo
optionsNo
currencyNo
discountNo
subtitleNo
variantsNo
image_altNo
image_urlNo
highlightsNo
project_idYes
descriptionNo
checkout_urlNo
price_amountNo
pricing_typeNoone_time
product_typeNodigital
social_proofNo
weight_gramsNo
shipping_noteNo
delivery_detailsNo
compare_at_amountNo
inventory_enabledNo
requires_shippingNo
inventory_quantityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is covered. The description still adds genuine behavioral context beyond that: slug auto-generation from title, product_type forcing pricing_type, field suppression for physical products, and storefront visibility tied to status. It doesn't cover auth/permission requirements or failure modes.

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

Conciseness4/5

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

Front-loads purpose and the critical money-format rule, then proceeds to a dense Args list. The list is long, but with 29 parameters at 0% schema coverage nearly every line is load-bearing; only a few entries (e.g. 'project_id: The project ID.') add little.

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

Completeness4/5

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

An output schema exists, so return values need not be described. Combined with the annotations, the description covers essentially everything needed to invoke the tool correctly, including the cross-tool variants workflow. Remaining gaps are minor: error behavior, permission requirements, and create-vs-update routing.

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?

Schema description coverage is 0%, so the description carries the full parameter burden and does so: it documents all 29 parameters with units (price_amount in cents), conditional behavior (physical forces one_time), and concrete JSON shapes for the string-typed structured fields (options, variants, highlights, faqs, gallery, delivery_details, social_proof, seo, discount), including the max-3 options and max-12 collection limits.

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 ('Create a product in the store') and immediately scopes requirements ('Only title is required'). It also distinguishes itself from the confusing siblings in the commerce family by explaining when to use `options` here versus calling generate_commerce_variants or passing `variants` 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?

Gives clear conditional guidance: money is in the currency's smallest unit, physical products force one_time pricing, checkout_url is ignored for physical products, and only active products appear on the storefront. It stops short of explicit when-not-to-use guidance (e.g., create vs update_commerce_product, or error behavior on duplicate slugs).

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

create_commerce_variantA
Destructive
Inspect

Add one variant to a product.

option_values must name every one of the product's options with a value that option allows — call set_commerce_product_options first. Fails with 409 if the combination already exists.

Args: project_id: The project ID. product_id: The product ID. option_values: JSON object mapping option name to value, e.g. {"Size":"M","Colour":"Black"}. sku: Variant SKU, unique within the product. price_amount: Variant price in the smallest currency unit. Leave -1 to inherit the product price. compare_at_amount: Struck-through price for this variant. Leave -1 to skip. currency: ISO currency code. Defaults to the product currency. image_url: Image shown when this variant is selected. weight_grams: Shipping weight in grams. Leave -1 to skip. requires_shipping: Whether this variant needs a shipping address. inventory_policy: deny blocks checkout at zero stock, continue allows overselling. Default deny. inventory_quantity: Starting stock for this variant. Leave -1 to skip.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNo
currencyNo
image_urlNo
product_idYes
project_idYes
price_amountNo
weight_gramsNo
option_valuesYes
inventory_policyNo
compare_at_amountNo
requires_shippingNo
inventory_quantityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, so the write nature is covered; the description adds real beyond-schema context: the 409 duplicate-combination failure, the required prior call to set_commerce_product_options, and the meaning of the -1 sentinel for optional amounts. It never addresses the destructiveHint=true annotation beyond the generic write framing, but the added failure/prerequisite 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?

Purpose, prerequisite, and failure mode are front-loaded in the opening two sentences, and the Args block is well-organized one-line-per-parameter. Given 0% schema coverage the length is justified, though 'Leave -1 to skip' is repeated four times and could be stated once.

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 an output schema (so return values need no explanation) and covering annotations, the description supplies the prerequisite, failure mode, and full parameter semantics. It omits which parameters are required and any permission/authorization expectations, but nothing essential to calling 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?

Schema description coverage is 0%, so the description carries the entire burden, and it does: every one of the 12 parameters is documented, including non-obvious conventions like -1 meaning 'inherit' or 'skip' for price_amount, compare_at_amount, weight_grams, and inventory_quantity, the deny/continue semantics of inventory_policy, the ISO currency default, and a concrete option_values JSON example. This is meaningfully richer than the bare schema.

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

Purpose4/5

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

The first sentence gives a specific verb and resource with scope: 'Add one variant to a product.' The word 'one' implicitly separates it from the bulk sibling generate_commerce_variants, and the following lines clarify its prerequisite. It stops short of naming the alternative tool outright, so it is clear but not fully self-differentiating.

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

Usage Guidelines4/5

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

It states an explicit prerequisite ('call set_commerce_product_options first') and a concrete failure condition ('Fails with 409 if the combination already exists'), which is strong context for invocation ordering. It does not say when to choose this over generate_commerce_variants or update_commerce_variant, so the alternative-selection guidance is only partial.

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

create_directory_collectionAInspect

Create a new directory collection.

Args: project_id: The project ID. name: Collection display name. slug: URL-safe slug (lowercase, hyphens, underscores only). fields: JSON array of field objects. Each field needs: type (text|richtext|image|link|datetime|switch|option|reference|map|html|multiimage|video), label. Optional: id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
slugYes
fieldsNo[]
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile of this write is covered. The description adds useful substance the annotations do not: the full enumeration of allowed field types and the slug format constraint. It still omits any side-effect context such as slug uniqueness, permission requirements, or what happens on duplicate slug.

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

Conciseness4/5

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

One-sentence purpose followed by a compact parameter list; every line carries information and nothing is padded. The Python-style 'Args:' docstring formatting is slightly unconventional for a tool description but is well organized and 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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Combined with full parameter documentation, the description is sufficient to invoke the tool correctly; what is missing is invocation context (permissions, slug collision behavior, usage guidance), which keeps it short of complete.

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?

Schema description coverage is 0%, so the description carries the entire burden and does so well: it documents all four parameters, clarifies that 'fields' is a JSON array of field objects despite being typed as a bare string in the schema, specifies required vs optional field keys (type, label required; id optional), and enumerates the twelve valid field types. The slug format constraint is not present anywhere in the schema.

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

Purpose4/5

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

The opening line gives a specific verb and resource ('Create a new directory collection'), which is enough to distinguish it from list/update/delete_directory_collection siblings. It does not, however, differentiate it from the other create_* tools (create_directory_field, create_directory_item, create_commerce_collection), leaving the agent to infer the distinction 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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The Args block documents parameter shapes but never says when a directory collection is the right construct versus a CMS category, commerce collection, or a directory field/item. The agent gets no routing help.

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

create_directory_fieldBInspect

Create a new field in a directory collection.

Args: project_id: The project ID. collection_id: The collection ID. field_type: One of: text, richtext, image, link, datetime, switch, option, reference, map, html, multiimage, video. label: Display label for the field. field_id: Custom field ID (auto-generated if omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYes
field_idNo
field_typeYes
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the mutation/safety profile is covered structurally. The description adds one useful behavioral fact — field_id is auto-generated if omitted — but does not say whether field_type is immutable after creation, how ID collisions are handled, or what permissions the create requires.

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

Conciseness4/5

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

The one-line purpose is front-loaded and the Args block is scannable with no filler. Some entries are terse ('The project ID.') but nothing is wasted or redundant.

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

Completeness3/5

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

An output schema exists, so return values needn't be described, and the parameters are fully covered. What's missing for a create-in-collection operation is ordering/prerequisite context and whether the new field type constrains existing or future items — relevant given the paired create_directory_item and update_directory_field tools.

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 0%, so the description carries the full parameter burden, and it does so: it documents all five parameters, including the optional field_id default. Critically, it enumerates the valid field_type values (text, richtext, image, link, datetime, switch, option, reference, map, html, multiimage, video), which the schema does not expose as an enum — without this an agent could not construct a valid call.

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

Purpose4/5

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

The first sentence states a specific verb and resource: 'Create a new field in a directory collection.' That distinguishes it from create_directory_collection, create_directory_item, and update_directory_field in the sibling list. It doesn't explicitly name or contrast 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?

There is no guidance on when to choose this tool, what prerequisites exist (e.g., the collection must already exist), or when to prefer update_directory_field. The agent must infer all of this from the name and the directory_* sibling cluster.

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

create_directory_itemBInspect

Create a new directory item.

Args: project_id: The project ID. collection_id: The collection ID. name: Item name. slug: URL-safe slug. fields: JSON object mapping field_id to value.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
slugYes
fieldsNo{}
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, openWorldHint=false, and destructiveHint=false, giving the agent the safety profile. The description's 'Create a new directory item' merely restates this and adds nothing behavioral beyond annotations, such as slug uniqueness constraints, permission requirements, or whether 'fields' values must conform to defined directory fields.

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

Conciseness4/5

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

The purpose is front-loaded in a single sentence, followed by an Args list covering each parameter. It is appropriately sized, though the param descriptions add little beyond their titles, resulting in minor syntactic 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?

With an output schema present, return values need not be described, and annotations cover the safety profile. Combined with per-parameter documentation, this is largely sufficient for a create tool, though it omits the relationship between items and their parent collection and doesn't note any required field/collection preconditions.

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 0%, so the description carries the full burden, and it does document all five parameters by name with brief meaning. 'fields: JSON object mapping field_id to value' is genuinely informative, though several entries ('The project ID', 'Item name') are thin restatements and the fields JSON format is left largely undefined.

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+resource combination ('Create a new directory item'), which an agent can distinguish from the sibling create_directory_collection and create_directory_field. However, it offers no differentiation from those near-neighbors or context on how an 'item' relates to its collection, so it is clear but not sibling-aware.

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, no prerequisites, and no mention of which siblings (e.g. update_directory_item, create_directory_field) cover adjacent tasks. The agent must infer usage 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.

create_newsletter_custom_fieldAInspect

Define a subscriber attribute before collecting it in forms. OAuth scope newsletter:write. Pass a stable idempotency_key for this intended action; reuse it on retries. Use get_newsletter_schema for document, filter and field definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
labelYes
optionsNo
data_typeYes
project_idYes
idempotency_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare the generic safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false); the description adds real behavioral content beyond them: the required OAuth scope newsletter:write and the retry-safe idempotency_key contract. It stops short of describing side effects such as whether the field is immediately available in forms or what happens on a key collision.

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 sentences, front-loaded with the action and scope, then the idempotency contract, then cross-tool routing. No filler, though the trailing get_newsletter_schema pointer is the least essential sentence.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and annotations cover the safety profile, but with 0% schema coverage the description should have covered the enum data_type and the options object. Auth scope, idempotency and routing are present; parameter semantics are largely 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% and six parameters exist, so the description must carry the load. It explains idempotency_key well (stable value, reuse on retries) but leaves key, label, data_type, options and project_id entirely undocumented — notably the enum data_type and the options object, which clearly interact.

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 concrete verb and resource ('Define a subscriber attribute') and adds ordering context ('before collecting it in forms'), which separates it from the read-only list_newsletter_custom_fields. It does not, however, explicitly distinguish itself from update_newsletter_custom_field, leaving the create-vs-modify boundary 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 Guidelines4/5

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

It gives clear usage context ('before collecting it in forms') and names the complementary tool to consult for definitions (get_newsletter_schema). It never states when not to use this tool, e.g. that modifying an existing field should go through update_newsletter_custom_field.

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

create_url_redirectA
Destructive
Inspect

Create a URL redirect for a project.

Requires a custom domain connected to the project (redirects are only served on custom domains, not on the default *.grigora.app subdomain); otherwise the API returns a 403 error.

Args: project_id: The project ID. source_path: Path to redirect from, e.g. "/old-page" (must not be "/"). dest_type: "internal" (redirect to another path on the same site) or "external" (redirect to a full URL). Defaults to "internal". dest_path: Destination path when dest_type="internal", e.g. "/new-page". dest_url: Destination URL when dest_type="external" (must start with http:// or https://), e.g. "https://example.com". status_code: HTTP redirect code: 301, 302, 303, 304, 307, or 308. Defaults to 301.

ParametersJSON Schema
NameRequiredDescriptionDefault
dest_urlNo
dest_pathNo
dest_typeNointernal
project_idYes
source_pathYes
status_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond them: the custom-domain prerequisite and the 403 failure mode. It stops short of explaining reversibility or duplicate-source 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?

Front-loads purpose, then the prerequisite, then a clean Args list. Every line is informative, though the Args block is long enough that it reads more like reference documentation than a tight summary.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description fully covers parameters and the key prerequisite. It omits conflict handling (e.g., existing redirect on the same source_path) and any auth/permission notes, leaving minor gaps.

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?

Schema description coverage is 0%, so the description carries the full burden and does so: it defines each of the 6 params, their defaults, the internal/external branching for dest_type, valid status codes, and constraints (source_path cannot be '/', dest_url must start with http(s)).

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 ('Create a URL redirect for a project') and scope, letting an agent distinguish it from update_url_redirect, delete_url_redirect, and list_url_redirects 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 a concrete precondition — a custom domain must be connected or the API returns a 403 — which tells the agent when the call will succeed. It does not explicitly name alternatives (update/delete/list redirects) or when-not-to-use, so it falls short of the 5 bar.

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

create_websiteA
Destructive
Inspect

Create a NEW Grigora website with AI from a description of what it should be.

Grigora's AI website builder designs and writes the whole site from the prompt in the background (usually a few minutes). This uses the account's AI credits and counts toward its plan's website limit, so call it once per website the user actually asked for. The site is NOT published.

Then: poll get_website_build_status(project_id) until status is "completed" (or "failed"); after that the new site's project_id works with every other tool (products, directory, blog, assets...), edit_website changes it with more prompts, and publish_project makes it live when the user wants. Give the user the returned editor_url to open the site in Grigora's editor.

Args: prompt: What the website is for and what it should contain — business, audience, pages, tone, style. Specific is better. name: The website's name, e.g. "Pumpkin". Optional; derived from the prompt when empty. attachments: Optional links to files for the builder to use — logos, photos, brand guides, menus (PDF), price lists (CSV), audio, video. A list of up to 10 public URLs, e.g. ["https://example.com/logo.png"]. Grigora downloads them itself (up to 80 MB each), so only pass links — never file contents. Refer to them in the prompt by file name, e.g. "use logo.png in the header". For a LOCAL file (e.g. on the user's computer), first call get_attachment_upload_url, upload it with the returned curl command, then pass the returned url here. A refused attachment fails the call before anything is built or charged.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
promptYes
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare destructiveHint=true, openWorldHint=true, readOnlyHint=false; the description adds critical context beyond that: the build runs asynchronously in a few minutes, consumes AI credits and the plan's website limit, the site is NOT published, and refused attachments fail before build/charge. This is exactly the behavioral detail annotations cannot 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 verb+resource, then sequencing, then args. Every sentence earns its place, though the attachments paragraph is dense and the multi-line wrap of the opening sentence is slightly awkward. 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?

Given a destructive, credit-consuming, async operation with 0% schema coverage, the description covers cost, latency, publish state, follow-up tools, and the local-file upload path. An output schema exists, so return values needn't be explained; nothing an agent needs to call this 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?

Schema coverage is 0% so the description carries the full burden, and it does: prompt content guidance, name being optional and derived from prompt, attachments syntax (list of up to 10 public URLs, 80 MB cap, links only), plus the local-file workaround via get_attachment_upload_url. This is far richer than the bare schema allows.

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 ('Create a NEW Grigora website with AI') and clarifies it is a background build from a prompt, distinguishing it from edit_website, publish_project, and get_website_build_status. An agent can tell exactly what this tool produces.

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 when-to-use ('call it once per website the user actually asked for'), when-not-to (must poll build status before using other tools), and names both the next step (get_website_build_status) and downstream alternatives (edit_website, publish_project). 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.

delete_assetsA
Destructive
Inspect

Delete assets (files and/or folders). Folder paths should end with /.

Args: project_id: The project ID. files: JSON array of paths to delete (e.g. ["images/photo.jpg", "temp/"]).

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, readOnlyHint=false, and openWorldHint=true, so the safety profile is covered. The description still adds a non-obvious behavioral rule – folder paths must end with '/' – which is exactly the kind of context the annotations cannot express. It does not disclose whether deletion is recursive or permanent beyond what destructiveHint implies.

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 blocks with the operation stated first and parameters second; no filler. The 'Args:' list format is slightly mechanical but front-loads the important scoping rule (trailing slash) before the parameter details.

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

Completeness4/5

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

An output schema exists, so return values need not be described. Both required parameters are documented, the trailing-slash convention is explained, and safety is carried by annotations. Remaining gaps (recursion semantics, effect on dependent pages) are minor for this tool's complexity.

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 0%, so the description must carry the parameter burden, and it does: project_id is identified as the project ID, and files is explained as a JSON array of paths with a concrete example. That clarification is genuinely valuable because the schema types 'files' only as a plain string, and the description resolves that ambiguity.

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 (Delete) and resource (assets – files and/or folders) with a clarifying parenthetical, so an agent can distinguish it from the many delete_cms_*/delete_commerce_* siblings that target other resources. It does not, however, explicitly name or contrast itself with the asset-management siblings (list_assets, get_asset), so it stops short of full differentiation.

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 the tool does but never states when to use it versus alternatives, nor any prerequisites, permissions, or caution about irreversible removal. With 0% schema coverage and a destructive operation, the absence of any usage context is a real gap.

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

delete_cms_categoryC
Destructive
Inspect

Delete a CMS post category by ID.

Args: project_id: The project ID. category_id: The category ID (from list response).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 and readOnlyHint=false, so the safety profile is covered. The description adds almost nothing beyond that: it doesn't say whether the deletion is permanent, whether it cascades to posts/associations, or what permissions are needed.

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

Conciseness4/5

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

The definition is short and front-loads the action and resource before the Args block. No sentence is wasted, though the Args lines are largely restatements.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover destructiveness. However, for an irreversible delete the description omits permanence and side effects, leaving it only minimally complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It names both parameters, but 'The project ID' is tautological; only '(from list response)' on category_id adds real acquisition guidance. Marginal but minimally functional for a 2-param tool.

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 CMS post category by ID'), which clearly separates it from deletion siblings like delete_cms_post and delete_commerce_product. It stops short of explicitly naming alternatives, so it lands just 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 Guidelines2/5

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

There is no explicit guidance on when to use this versus alternatives such as update_cms_category, nor any warning about prerequisites. The lone hint is the parenthetical '(from list response)' on category_id, which only faintly implies list_cms_categories is the source.

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

delete_cms_postB
Destructive
Inspect

Delete a CMS blog post.

Args: project_id: The project ID. post_id: The ID of the post to delete (UUID from list response, or full SK like cms-post-data-).

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the agent knows this is a permanent, mutating, externally visible operation. The description adds nothing behavioral beyond that — it does not state whether the deletion is reversible, whether it requires a publish step first, or what happens to related data. Given the annotations carry the safety profile, a baseline 3 is appropriate.

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?

Extremely tight: one action sentence followed by param notes. The purpose is front-loaded, and there is no filler or repetition. Every line serves a purpose.

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

Completeness3/5

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

An output schema exists, so return values need not be documented, and annotations cover the destructive/safety profile. For a two-parameter destructive tool this is close to adequate, but the absence of any irreversibility or prerequisite note, plus the tautological project_id description, leaves a small completeness 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 0%, so the description must compensate. It does so well for post_id, clarifying it can be a UUID from a list response or a full SK like cms-post-data-<uuid> — genuinely useful format guidance. However, project_id is only restated tautologically ('The project ID'), leaving half the parameters without added 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+resource: 'Delete a CMS blog post'. This distinguishes it from the many other delete_* siblings (delete_assets, delete_cms_category, delete_directory_item) by naming the exact resource. It stops short of differentiating itself from adjacent CMS post tools (unpublish_cms_post, update_cms_post), but the purpose itself 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?

There is no explicit when-to-use, when-not-to-use, or prerequisite guidance. With siblings like unpublish_cms_post and update_cms_post in the same CMS post family, the description should clarify that this permanently removes the post rather than merely unpublishing it, but it offers no such routing. The agent is left to infer usage entirely.

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

delete_commerce_collectionB
Destructive
Inspect

Delete a collection. The products it grouped are not deleted.

Args: project_id: The project ID. collection_id: The collection ID to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context beyond that: the deletion is non-cascading and products grouped by the collection are preserved, which is exactly the kind of side-effect detail that matters for a destructive 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?

Front-loaded with the action and the key side-effect in two short sentences. The Args block is largely redundant with the schema but costs little; nothing else is wasted.

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

Completeness3/5

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

Output schema exists so return values need no explanation, and annotations carry the destructive/read-only profile. Still missing for a destructive mutation: permission requirements, whether the collection must be empty, and whether deletion is reversible.

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

Parameters2/5

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

Schema description coverage is 0% and both parameters are required, yet the Args block only restates each parameter name ('The project ID', 'The collection ID to delete') without adding format, source, or lookup guidance. The description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (Delete) and resource (collection), plus a scope clarification that the grouped products survive. An agent can distinguish it from delete_commerce_product or delete_directory_collection by inference, though no sibling is named 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?

No when-to-use guidance, no prerequisites, no mention of alternatives or recovery path. The only contextual signal is the non-cascade note, which is behavioral rather than usage-routing guidance.

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

delete_commerce_productA
Destructive
Inspect

Delete a product and its stock counters.

Fails with a 409 while any order referencing the product is still open — fulfil, refund, or cancel those orders first.

Args: project_id: The project ID. product_id: The product ID to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuine behavioral value by disclosing the cascading deletion of stock counters and the 409 conflict condition with open orders, which annotations cannot express.

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

Conciseness4/5

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

The two substantive sentences are front-loaded and zero-waste; the trailing Args block is mostly redundant given the schema, slightly diluting an otherwise tight description.

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 tool with an output schema and full annotation coverage, the cascade effect and conflict semantics are the key missing pieces an agent needs, and both are supplied. Only parameter provenance/format guidance is 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% and both parameters are required, so the description carries the full burden — yet it only restates the names ('The project ID', 'The product ID to delete') with no format, ID source, or lookup guidance. It adds essentially nothing beyond the schema's property titles.

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 product') and adds the non-obvious cascade scope ('and its stock counters'), which distinguishes it from delete_commerce_variant, delete_commerce_collection, and other delete_* 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?

Gives an explicit precondition and failure mode: 409 while any order referencing the product is open, plus the remediation path (fulfil, refund, or cancel first). It does not name alternative tools, but the when-to-use context is clear and actionable.

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

delete_commerce_variantB
Destructive
Inspect

Remove one variant from a product and drop its stock counter.

The product's options are left in place, so the combination can be re-added later.

Args: project_id: The project ID. product_id: The product ID. variant_id: The variant ID to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes
project_idYes
variant_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful side-effect detail beyond that: the stock counter is dropped but product options are preserved, which tells the agent what survives the deletion.

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

Conciseness4/5

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

The behavioral note is front-loaded in the first two sentences and the Args list is short and scannable. The Args block is largely redundant given the schema, but it costs little 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?

An output schema exists, so return values needn't be described, and the key side effect (variant removed, stock counter dropped, options kept) is covered. However, for a destructive operation with 0% parameter coverage, there is no guidance on permissions, error conditions such as removing a last variant, or recovery.

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

Parameters2/5

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

Schema description coverage is 0% and all three parameters are bare string fields. The Args block only restates the parameter names as 'The project ID', 'The product ID', and 'The variant ID to remove', adding no format, lookup, or dependency semantics to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (remove) on a specific resource (one variant of a product) and clarifies the scope by noting the product's options survive. It implicitly separates itself from delete_commerce_product by targeting a single variant, though it doesn't name that sibling explicitly.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use statement, and no alternatives are named. The note that options are retained 'so the combination can be re-added later' implies a scenario (temporarily removing a variant) but leaves the agent to infer it.

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

delete_directory_collectionB
Destructive
Inspect

Delete a directory collection and all its items.

Args: project_id: The project ID. collection_id: The collection ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds value beyond them by disclosing the cascade: deleting the collection also removes all its items, which is a materially larger blast radius than the tool name implies. It still omits irreversibility/permission requirements, so 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.

Conciseness4/5

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

Front-loaded with the destructive scope in the first sentence, and the total length is minimal. The 'Args' block is redundant filler given the schema, but the cost is small.

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

Completeness4/5

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

With an output schema present and annotations covering the safety profile, the description need not explain return values. It covers the essential cascade behavior; only permission/irreversibility context is missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden, but its 'Args' block merely restates the schema property titles ('The project ID.', 'The collection ID.') with no format, ID-source, or lookup guidance. It provides no semantics beyond what the schema already shows.

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 ('Delete a directory collection') and adds meaningful scope ('and all its items'), so an agent knows this is a cascading delete rather than a single-item delete. It does not explicitly contrast with siblings like delete_directory_item or delete_directory_field, but the resource naming 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?

There is no guidance on when to use this tool versus the other delete_* siblings, no prerequisites (e.g. permissions, whether the collection must be empty), and no warning that the operation is irreversible. The agent must infer usage from the name alone.

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

delete_directory_fieldC
Destructive
Inspect

Delete a field from a directory collection.

Args: project_id: The project ID. collection_id: The collection ID. field_id: The field ID to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYes
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already supply the safety profile (destructiveHint=true, readOnlyHint=false), so the bar is lower, but the description adds nothing beyond that: no mention of permanence, whether items or stored data referencing the field are affected, or any prerequisites. The Args block merely restates the schema rather than disclosing behavior.

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 one-line purpose is front-loaded and efficient, but the boilerplate Args list duplicates the input schema with no added value, padding the definition without informing the caller.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the destructive nature. However, for a permanent deletion tool the description omits any consequence or data-loss context an agent should weigh before invoking it.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, but the Args entries are tautological ("The project ID", "The collection ID", "The field ID to delete") and add no semantics such as ID format or where these IDs come from.

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 first sentence gives a specific verb+resource ("Delete a field from a directory collection"), which lets an agent distinguish it from delete_directory_collection and delete_directory_item. It is clear, though it doesn't explicitly name or contrast sibling delete operations.

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 update_directory_field (to modify) or delete_directory_collection (to remove the whole collection). The scope is implied by the name alone with no conditions or alternatives stated.

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

delete_directory_itemC
Destructive
Inspect

Delete a directory item.

Args: project_id: The project ID. collection_id: The collection ID. item_id: The item ID to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so safety semantics are covered by structured data; the description adds nothing further. It does not say whether the delete cascades to children, whether it requires elevated permissions, or whether it is reversible, which is exactly the extra context expected of a destructive 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?

The text is short and front-loaded with the action, with no filler prose. The Args block is largely redundant with the schema, but it costs little and is easy to scan.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and annotations cover the destructive/read-only profile. The remaining gap is the three fully required, zero-coverage parameters, for which the description offers no compensating detail; it is minimally viable rather than complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, and it only restates the parameter names as 'The project ID / collection ID / item ID to delete.' There is no format, no hint about where these IDs come from, and nothing the schema titles don't already imply.

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 ('Delete') and resource ('directory item'), so the core action is unambiguous. However, it makes no attempt to distinguish itself from the adjacent destructive siblings such as delete_directory_collection or delete_directory_field, so the agent gets no help choosing among 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?

There is no when-to-use guidance, no note that the deletion is permanent/irreversible, and no mention of alternatives (e.g., update_directory_item to modify instead of remove). The description stops at the verb and resource.

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

delete_url_redirectB
Destructive
Inspect

Delete a URL redirect by ID.

Args: project_id: The project ID. redirect_id: The redirect ID (from list_url_redirects).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
redirect_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is an irreversible-style mutation without the description saying so. The description adds no further behavioral context (permanence, effect on live traffic, auth requirements), so it earns no extra credit above the annotation-covered baseline.

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 lines plus a short Args block, with the action front-loaded. The Args section is slightly redundant against the schema but stays brief and earns its place by carrying the ID-source hint.

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

Completeness3/5

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

An output schema exists, so return values need not be described. Still, for a destructive tool with 0% parameter documentation and no usage guidance, the definition is only minimally complete — it omits any note on permanence or prerequisites.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It names both required params and gives one genuinely useful hint (redirect_id comes from list_url_redirects), but "The project ID" is purely tautological and adds nothing for a 0%-coverage 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 ("Delete a URL redirect") and narrows the target with "by ID", so the action is unambiguous. However, it never distinguishes itself from the closely related siblings create_url_redirect, update_url_redirect, and list_url_redirects, which is the only thing keeping this from 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 update_url_redirect (which would be the non-destructive alternative). The parenthetical "(from list_url_redirects)" hints at where the ID originates, but that is a data-sourcing note, not usage guidance or an exclusion.

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

edit_websiteA
Destructive
Inspect

Change an existing AI-built Grigora website by describing the change.

Grigora's AI builder applies the change to the site's design and content in the background (usually a few minutes), exactly like typing the prompt in the editor's AI chat. Uses the account's AI credits; nothing is published. Works only on AI-builder websites.

Only ONE build runs per website at a time. If one is running this returns error "build_in_progress" with its build_id: wait for get_website_build_status to report "completed" (or "failed"), then send the next change. Combine related changes into one prompt when you can. If no build starts, "reply" holds the AI's question for the user.

Args: project_id: The website's project ID. prompt: The change to make, e.g. "Make the hero warmer and add a testimonials section". attachments: Optional links to files for the builder to use — logos, photos, brand guides, menus (PDF), price lists (CSV), audio, video. A list of up to 10 public URLs, e.g. ["https://example.com/logo.png"]. Grigora downloads them itself (up to 80 MB each), so only pass links — never file contents. Refer to them in the prompt by file name, e.g. "use logo.png in the header". For a LOCAL file (e.g. on the user's computer), first call get_attachment_upload_url, upload it with the returned curl command, then pass the returned url here. A refused attachment fails the call before anything is built or charged.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
project_idYes
attachmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, openWorldHint=true), it discloses that changes apply asynchronously in the background over minutes, consume AI credits, nothing is published, the build_in_progress error contract, and that a no-build outcome surfaces a question in 'reply'. This is rich behavioral context an agent needs before invoking.

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 constraints, then a well-organized Args block. It is on the longer side and the attachments paragraph is dense, but nearly every sentence carries actionable information; only marginal trimming is possible.

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

Completeness5/5

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

With an output schema present, return values need not be explained, and the description instead covers the async lifecycle, error codes, credit cost, and attachment prerequisites. Nothing an agent needs to call this 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?

Schema coverage is 0%, so the description carries the full burden and does: project_id defined, prompt defined with a concrete example, and attachments fully specified (up to 10 public URLs, 80 MB each, refer by filename, never pass file contents, local-file upload workflow). It compensates completely for the missing schema 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 (change/edit) and resource (existing AI-built Grigora website) and immediately scopes it to 'AI-builder websites', distinguishing it from siblings like update_page or create_website. An agent knows exactly what this does and what it operates on.

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 says it works only on AI-builder websites, that only one build runs per site, that it should be routed through get_website_build_status, that related changes should be combined, and it names get_attachment_upload_url as the prerequisite path for local files. This is close to a full when/when-not/alternative guide.

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

generate_commerce_variantsA
Destructive
Inspect

Generate every combination of a product's current options as variants (max 100).

Existing variants are matched by option combination and keep their id, SKU, price, and stock; missing combinations are added at the product's price.

Args: project_id: The project ID. product_id: The product ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior5/5

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

Annotations already mark this destructive and open-world, and the description goes well beyond them: existing variants are matched by option combination and preserve id, SKU, price and stock, while missing combinations are added at the product's price, all capped at 100. That is exactly the kind of side-effect detail an agent needs before invoking a mutation.

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

Conciseness4/5

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

The core behavior is front-loaded in two dense, informative sentences with no filler. The trailing Args block is pure repetition of the parameter names with no added value, which is the only 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?

An output schema exists, so return values need not be described, and the description covers the key semantics: matching rule, price default, and the 100-variant cap. It could be stronger by noting prerequisites or what happens when the cap is exceeded.

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

Parameters2/5

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

Schema description coverage is 0% and the description's Args block only restates the names ('project_id: The project ID', 'product_id: The product ID'), adding no format, source, or constraint information. It fails to compensate for the schema gap.

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

Purpose5/5

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

The description uses a specific verb and resource ('Generate every combination of a product's current options as variants') and bounds the scope with '(max 100)'. It is clearly distinguishable from the sibling create_commerce_variant, which creates one variant, and list_commerce_variants, which reads them.

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

Usage Guidelines3/5

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

It describes the bulk-generation behavior and the max-100 constraint, which implies the context for use, but never states when to prefer it over create_commerce_variant for a single variant or what prerequisites (e.g. options must already be defined via set_commerce_product_options) apply. Usage is implied, not prescribed.

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

get_analytics_umamiA
Read-onlyIdempotent
Inspect

Get Umami analytics for a project (pageviews, visitors, top pages, etc.). Requires Umami connected to the project.

Args: project_id: The project ID. start_date: Start date YYYY-MM-DD (optional; default last 30 days). end_date: End date YYYY-MM-DD (optional; default today). timezone: Timezone (default UTC). limit: Max number of top pages to return. unit: Time bucketing: minute, hour, day, month, year.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoday
limitNo
end_dateNo
timezoneNoUTC
project_idYes
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false and closed-world, so the safety profile is covered without description help. The description's real added value is the Umami-connection prerequisite, which no annotation conveys; it says nothing about rate limits or result truncation, so a 3 is appropriate.

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?

Purpose is front-loaded in the first sentence, followed by a compact Args block that earns its space by adding formats, defaults and enum values the schema omits. Slightly list-like, but no filler 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?

With an output schema present, return values need no explanation, and the description covers the prerequisite, all six parameters, their formats and defaults. Complete enough for a read-only analytics query, with only timezone formatting left implicit.

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 0% (only titles and defaults), so the description carries the burden and does so well: it supplies YYYY-MM-DD formats for both dates, defaults (last 30 days, today, UTC), the meaning of limit (top pages only), and the enum values for unit (minute/hour/day/month/year) that the schema lacks entirely. The timezone string format (e.g. IANA) is left unspecified, keeping it from a 5.

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

Purpose4/5

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

States a specific verb and resource ("Get Umami analytics for a project") and enumerates the payload (pageviews, visitors, top pages), so an agent knows exactly what comes back. No sibling tool competes for analytics, so there is nothing to distinguish against, but the definition also doesn't say how it relates to the broader project/website toolset.

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 one useful precondition ("Requires Umami connected to the project"), which tells the agent when this call will succeed. However, it never states when to reach for this versus other data-gathering tools, nor what to do if Umami is not connected; usage is only implied by the precondition.

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

get_assetA
Read-onlyIdempotent
Inspect

Get a single asset by path (URL and metadata).

Args: project_id: The project ID. path: Asset path relative to project (e.g. images/photo.jpg).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is fully covered by structured data. The description adds that the response contains a URL and metadata, which is useful, but says nothing about failure behavior for missing paths or whether reads are cached/stale.

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

Conciseness4/5

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

The purpose is front-loaded in a single tight sentence, followed by a conventional Args block. Nothing is padded, though the restated 'project_id: The project ID.' line is dead weight.

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

Completeness4/5

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

With an output schema present, the return shape need not be described, and a read-only single-entity lookup has little behavioral surface to cover. Both required parameters are at least named in the description, so an agent has enough to invoke it correctly; only error/missing-path behavior 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 0%, so the description must carry the parameter burden. It does give the 'path' format and a concrete example ('images/photo.jpg') and notes it is relative to the project, which is genuine added meaning. But 'project_id' is explained only as 'The project ID.', a tautology that adds nothing.

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 ('Get a single asset') plus the lookup key ('by path') and what comes back ('URL and metadata'), which cleanly separates it from list_assets and get_asset_upload_urls. It stops short of naming those siblings explicitly, so it is clear but not fully self-differentiating.

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 word 'single' implies this is for one already-identified asset rather than enumeration, which implicitly routes the agent away from list_assets. However, there is no explicit when-to-use statement, no exclusion, and no mention of what to do if the path does not exist or whether get_asset_upload_urls is the counterpart for writing.

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

get_asset_upload_urlsA
Read-onlyIdempotent
Inspect

Get signed upload URLs for one or more files. Upload the file with PUT to the returned upload_url; then use cdn_url to access the file.

Args: project_id: The project ID. files: JSON array of filenames (e.g. ["images/photo.jpg", "doc.pdf"]). folder: Optional folder prefix for all files.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYes
folderNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint/idempotentHint/destructiveHint, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the fact that the caller must issue a PUT to the returned upload_url and that cdn_url is the post-upload access path. It omits signed-URL expiry and permission requirements, 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.

Conciseness4/5

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

Front-loaded with the core action and consumption workflow before the Args listing, so a reader gets the essential contract in the first sentence. Every sentence earns its place; the Args block is standard but slightly verbose.

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?

Output schema exists, so return-value explanation is not required, yet the description still usefully names upload_url and cdn_url. Parameters are covered. For completeness it could mention signed-URL lifetime and whether the files array creates assets up front, but an agent can invoke this correctly as written.

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 0%, so the description carries the burden, and it largely does: it documents all three parameters and crucially clarifies that files is a JSON array of filenames (with an example like ["images/photo.jpg", "doc.pdf"]) despite the schema typing it as a plain string. folder's "prefix" semantics are stated. project_id is documented only tautologically ("The project ID").

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 ("Get signed upload URLs for one or more files") and goes further by explaining the two-step upload workflow. It is immediately clear what the tool returns and how to consume it. It does not explicitly distinguish itself from the close sibling get_attachment_upload_url, 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 description gives solid guidance on how to USE the result (PUT to upload_url, then read cdn_url), which is real usage context. However, it never says when to pick this tool over the sibling get_attachment_upload_url or get_asset, nor any prerequisites. 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.

get_attachment_upload_urlA
Read-onlyIdempotent
Inspect

Get a one-time upload link for a LOCAL file to attach to create_website / edit_website.

MCP cannot carry files, so a local file goes straight from disk to Grigora's storage with the returned curl command (replace <LOCAL_FILE_PATH> with the file's path and run it in a shell). The file's contents never pass through the conversation. Then put the returned url in the attachments list of create_website or edit_website. The link expires in 15 minutes; one link per file.

Allowed: images (PNG, JPG, WebP, GIF, AVIF), PDF, CSV (up to 10 MB), and audio/video (up to 80 MB). For a file that is already online, skip this and pass its public URL directly.

Args: file_name: The file's name, e.g. "brand-guide.pdf" (refer to it by this name in the prompt). mime_type: e.g. "image/png", "application/pdf", "text/csv", "video/mp4". size_bytes: The file's exact size in bytes (e.g. from wc -c < FILE).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYes
mime_typeYes
size_bytesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses link lifetime (15 minutes), single-use behavior ('one-time', 'one link per file'), size ceilings, allowed MIME types, and the notable privacy property that file contents never pass through the conversation. This is rich behavioral context an agent could not infer from the annotations.

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

Conciseness5/5

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

The critical action and constraints are front-loaded, and the Args block is separated cleanly. Every sentence adds actionable information; there is 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?

It even describes the two outputs to expect (the curl command and the url) despite an output schema existing, and covers limits, workflow, and exclusions. For a three-param tool with a fully undocumented schema, this is complete.

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?

Schema coverage is 0%, so the description must carry the whole burden, and it does: file_name gets an example and usage note, mime_type gets concrete examples, and size_bytes explains how to compute the value ('wc -c < FILE'). No parameter is left ambiguous.

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

Purpose5/5

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

The opening states a specific verb (get), resource (one-time upload link), and scope constraint (for a LOCAL file to attach to create_website / edit_website). It is clearly distinguishable from the sibling get_asset_upload_urls and from simply passing a public URL.

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 spells out the exact workflow (run the returned curl, then put the url in the attachments list of create_website or edit_website) and gives an explicit when-not: 'For a file that is already online, skip this and pass its public URL directly.' 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.

get_cms_postA
Read-onlyIdempotent
Inspect

Get a single CMS blog post's content as HTML and as blocks.

Returns success, data.id, data.content_html (HTML string), and data.content_blocks (block tree or array; null if not parseable).

Args: project_id: The project ID. post_id: The ID of the post (UUID from list response, or full SK like cms-post-data-).

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, idempotentHint=true, and destructiveHint=false, so the safety profile is covered without the description. The description adds little beyond that, though 'null if not parseable' for content_blocks is genuine behavioral context about a partial-failure case.

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 purpose, followed by a compact return summary and a short args list. The return-value sentence is somewhat redundant given an output schema exists, but overall the text is tight and wastes little.

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?

Since an output schema exists, the return-value detail is a bonus rather than a requirement, and the description covers both required params and the nullable-block edge case. Missing only error behavior for a nonexistent or inaccessible post, which is minor for a read 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 0% (both params are bare 'Post Id'/'Project Id' strings), so the description must compensate. It gives post_id real format guidance ('UUID from list response, or full SK like cms-post-data-<uuid>'), which is meaningful; project_id gets only a tautological gloss.

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 ('Get a single CMS blog post's content') and specifies the retrieval mode ('as HTML and as blocks'), which distinguishes it from list_cms_posts and the create/update/delete CMS siblings. It stops short of naming the sibling to use for batch retrieval, 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 Guidelines3/5

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

Usage is only implied: 'single' implies the alternative to list_cms_posts, and the post_id hint ('UUID from list response') hints at the list-then-get workflow. There is no explicit when-to-use/when-not statement or named alternative.

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

get_commerce_collectionB
Read-onlyIdempotent
Inspect

Get one collection, optionally with the full product objects it links.

Args: project_id: The project ID. collection_id: The collection ID. Required unless slug is given. slug: The collection slug. Used when collection_id is empty. include_products: Also return the linked products, in link order.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNo
project_idYes
collection_idNo
include_productsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare this a safe, idempotent, closed-world read, so the safety profile needs no restating. The description adds genuine behavioral constraints beyond that: collection_id is required unless slug is supplied, and products come back in link order. It says nothing about auth or pagination, keeping this at a solid but not rich 3.

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

Conciseness4/5

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

The purpose sentence is front-loaded, followed by a compact Args list. Every line earns its place given the zero schema coverage, though the plain Args enumeration is functional rather than elegant.

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

Completeness4/5

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

An output schema exists, so return values need no prose. With all four inputs documented and the read-only profile covered by annotations, the definition is complete enough for a single-resource fetch; the only gap is the absence of any sibling routing.

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 0%, so the description carries the full burden, and it does so well: all four parameters are explained, including the mutually exclusive collection_id/slug behavior and the link-order meaning of include_products. Only the format/type nuances of project_id and collection_id are left implicit.

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 ('Get one collection'), and the singular 'one' plus the optional product expansion cleanly separates it from list_commerce_collections. It does not name or reference any sibling explicitly, so it is clear but not differentiated by comparison.

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 explicit when-to-use or when-not-to-use guidance and no routing to alternatives such as list_commerce_collections or get_commerce_product. The id/slug rule is an invocation constraint rather than usage guidance, so the agent must infer when this tool applies.

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

get_commerce_productA
Read-onlyIdempotent
Inspect

Get one product with its options, variants, live stock, and public URL.

Args: project_id: The project ID. product_id: The product ID. Required unless slug is given. slug: The product slug. Used when product_id is empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNo
product_idNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds genuine context by enumerating that the response includes live stock and a public URL, signaling dynamic/fresh data rather than a cached record.

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 front-loaded sentence delivering purpose and return scope, followed by a tight Args block. No filler sentences; every clause adds 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?

An output schema exists, so return values needn't be spelled out, and the description still previews the payload. All parameters are accounted for and the id/slug fallback is covered, leaving little an agent needs and cannot find.

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 0%, so the description carries the burden and does so well: it names all three params and explains the conditional relationship (product_id required unless slug given; slug used when product_id is empty). Minor gap: no format or format-of-id detail.

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+scope: 'Get one product' with the enumerable contents (options, variants, live stock, public URL). The word 'one' cleanly distinguishes it from the sibling list_commerce_products 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 Guidelines3/5

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

Usage is implied by the singular 'one product', and the args section hints at the product_id-vs-slug routing condition, but there is no explicit when-to-use guidance or named alternative (e.g., when to prefer list_commerce_products or get_commerce_collection). Minimum viable.

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

get_commerce_settingsB
Read-onlyIdempotent
Inspect

Get store settings: name, default currency, emails, appearance, SEO, shipping, tax, invoicing.

Payment gateway credentials are never returned — connection status only.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds a security-relevant disclosure: payment gateway credentials are never returned, only connection status. That is genuine behavioral context beyond the structured fields.

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

Conciseness4/5

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

Front-loaded with the returned-field list and the credential caveat, then the args. The trailing 'Args' block is largely redundant but the overall size is appropriate.

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

Completeness4/5

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

An output schema exists, so return structure is covered elsewhere; the description still usefully previews the field set and the credentials limitation. Adequate for a single-parameter read tool, with only the missing usage guidance as a gap.

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

Parameters2/5

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

Schema coverage is 0% and the description merely restates 'project_id: The project ID.', adding no meaning beyond the schema's own title. It does not compensate for the coverage gap, though the parameter is nearly self-explanatory.

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 (Get) and resource (store/commerce settings) and enumerates the returned fields, making the scope concrete. It is distinguishable from update_commerce_settings by the verb, though it does not explicitly name the write counterpart.

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, and no alternatives are named. The read intent is only implied by the verb 'Get'.

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

get_custom_codeB
Read-onlyIdempotent
Inspect

Get custom code (header, body, footer) for a project.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description does add that the payload is structured as header/body/footer, which is genuinely useful context, but says nothing about permissions or missing-code 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?

Front-loaded purpose sentence followed by a compact Args block; nothing is padded or redundant. The Args section largely duplicates the schema but is brief enough not to hurt.

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

Completeness4/5

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

An output schema exists, so return-value explanation is unnecessary, and annotations cover the safety profile. The description is adequate for a one-parameter read tool; only the missing sibling differentiation and any permission context hold it 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 0%, so the schema itself carries no parameter documentation. The description's 'project_id: The project ID.' is a tautological restatement of the name and adds no format, source, or acquisition details. For a single self-evident required parameter this is minimally acceptable.

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 ('Get custom code') and adds scope by naming the returned sections (header, body, footer). It does not explicitly distinguish itself from the sibling update_custom_code, though the read verb makes the split inferable.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the sibling update_custom_code as the mutation alternative. The description is a bare definition with no routing information.

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

get_custom_domainA
Read-onlyIdempotent
Inspect

Get the connected/pending custom domain, exact DNS records and automatic check status.

Read-only. DNS verification and SSL activation happen automatically in the backend. This tool does not validate or activate a domain and is safe to call for progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: DNS verification and SSL activation occur automatically in the backend, and this call has no side effects on activation. Useful out-of-band behavior disclosure.

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-loads the purpose in the first sentence and is appropriately sized. Slight redundancy: 'Read-only' duplicates the annotations, and 'does not validate or activate' partially restates the prior sentence about automatic backend verification.

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 describe returns — it does list domain state, DNS records and check status. For a one-parameter read tool whose annotations carry the safety profile this is nearly complete, with the only gap being the undocumented project_id.

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?

The single parameter project_id has 0% schema description coverage, and the description never mentions it or explains its format/role. With one undocumented parameter the description should compensate but does not, leaving the agent to infer that project_id scopes the lookup.

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 ('Get the connected/pending custom domain') and enumerates what it returns (exact DNS records, automatic check status). The 'get' scope is clearly distinct from the sibling add_custom_domain 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 — 'safe to call for progress' implies polling for verification progress, and it clarifies the tool does not validate or activate. However, it never names add_custom_domain as the alternative for actually adding or triggering a domain, so routing 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.

get_directory_itemB
Read-onlyIdempotent
Inspect

Get a single directory item by ID.

Args: project_id: The project ID. collection_id: The collection ID. item_id: The item ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, so the safety profile is covered. The description adds no behavioral context such as auth requirements, error behavior, or rate limits, despite not contradicting the annotations.

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

Conciseness4/5

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

The description is short, front-loaded, and free of filler. The Args block is mechanical and largely mirrors the schema names, but given the 0% schema description coverage it provides minimal useful structure.

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 read tool with rich annotations and an output schema, the description is mostly sufficient: it names the action and all three required parameters. The main gap is the absence of guidance on when to use this tool versus list_directory_items.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the three undocumented parameters. It lists project_id, collection_id, and item_id, but only labels them as 'The X ID,' which adds almost no meaning beyond the schema property names.

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, resource, cardinality, and lookup key: 'Get a single directory item by ID.' This distinguishes it from siblings like list_directory_items (plural) and get_directory_collection (different resource).

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 explicit when-to-use or when-not-to-use guidance. It does not mention alternatives such as list_directory_items or get_directory_collection, and the 'by ID' phrasing only weakly implies context.

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

get_newsletter_schemaB
Read-onlyIdempotent
Inspect

Discover newsletter operations, merge tags, signup fields and email document blocks. OAuth scope newsletter:read. Use get_newsletter_schema for document, filter and field definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, and the description helpfully adds the required OAuth scope ('newsletter:read'), which is genuine auth context beyond the structured fields. It stops short of describing pagination or response shape, but an output schema exists to cover returns.

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?

Two compact sentences with no filler, but the second sentence ('Use get_newsletter_schema for document, filter and field definitions') is redundant with the name and the first sentence, so it does not earn 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 read-only, single-parameter discovery tool with an output schema, the description covers the main content domains and adds the auth scope. The remaining gap is the unexplained project_id argument.

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?

The single parameter (project_id) has 0% schema description coverage, so the description must compensate — yet it never mentions project_id or what scope of project it expects. This leaves the only parameter 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?

The description names a specific verb+resource (get the newsletter schema) and enumerates the schema domains it exposes: operations, merge tags, signup fields, email document blocks, and filter/field definitions. No sibling tool serves this discovery role, so an agent can distinguish it, though the second sentence largely restates the name.

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 ('Use get_newsletter_schema for document, filter and field definitions'), which is close to tautology and gives no when/when-not guidance or routing relative to siblings like list_newsletter_lists or list_newsletter_custom_fields. The agent can infer this is a metadata-discovery call but is not told explicitly.

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

get_pageA
Read-onlyIdempotent
Inspect

Get a single page by ID (metadata only; no content).

Args: project_id: The project ID. page_id: The page ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so the safety profile is covered. The description adds genuine behavioral context beyond that by scoping the response to metadata and explicitly excluding page content, which is the key trait an agent needs to know before calling it.

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

Conciseness4/5

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

The purpose and its metadata-only scope are front-loaded in the first clause, which is exactly right. The trailing Args block is largely redundant with the schema and could be dropped, but it costs little and the total length is appropriate.

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

Completeness4/5

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

An output schema exists, so return values need no prose, and the annotations fully cover the safety and idempotency profile. With only two required string params, the description's scope note plus parameter list is nearly sufficient; only ID format/source details are missing.

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

Parameters2/5

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

Schema description coverage is 0% for two required parameters, so the description must carry the load. Instead the Args block merely restates the parameter names ('The project ID.', 'The page ID.') with no format, source, or constraint information, adding essentially nothing over the schema's own titles.

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 specific verb+resource (get a single page by ID) with a useful scope qualifier: 'metadata only; no content'. This distinguishes it from a content-fetching or listing tool, but it never names the relevant siblings (list_pages, update_page, get_asset) so 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?

The 'metadata only; no content' note implies when this tool is appropriate (single-entity metadata lookup rather than listing or content retrieval), but there is no explicit when-to-use, when-not-to-use, or named alternative. 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.

get_project_detailsC
Read-onlyIdempotent
Inspect

Get details of a specific project/site.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, covering the entire safety profile. The description adds nothing beyond that – no note on what a project lookup requires or how it relates to site vs project scope.

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 tool line is short and front-loaded, which is good, but the trailing 'Args:' block merely repeats the schema field name with zero added information and therefore does not earn 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?

An output schema exists, so return values need not be explained, and the operation is simple with one required param. Still, for a lookup tool it omits where project_id comes from and how it relates to list_projects.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden for the single parameter, yet it only restates 'project_id: The project ID.' with no format, source, or example. The only required parameter remains 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?

States a specific verb and resource ('Get details of a specific project/site'), which is unambiguous and distinct from the many create/update/delete siblings. However, it does not differentiate itself from the closest alternative, list_projects, or explain what 'details' means relative to that listing.

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 when-to-use guidance, no prerequisites, and names no alternative. Usage is only implied by the obvious reading of the name; an agent gets no help deciding between this and list_projects.

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

get_seo_settingsA
Read-onlyIdempotent
Inspect

Read Grigora's existing SEO settings before making SEO/schema changes.

Returns data.settings, data.editable_fields (supported keys, types, enums), can_update, requires_version and ai_mutation_version. Covers person or organization identity, address, logo, phones, hours, sitemap, robots.txt and IndexNow. Site-level schema is generated by Grigora from these settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is covered. The description adds genuinely useful context beyond that: it enumerates the return surface (data.settings, editable_fields, can_update, requires_version, ai_mutation_version) and explains that site-level schema is generated from these settings, which is non-obvious 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?

Front-loaded with the action and its purpose, then the return contract, then the coverage list. Efficient and well-ordered; the enumerated coverage list is slightly long but each item is informative.

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

Completeness4/5

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

An output schema exists, so the return-value detail is arguably redundant but reinforces the contract. Purpose, coverage, and mutation-versioning context are all present; only the lone input parameter goes undescribed.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden for the single project_id parameter, yet it never mentions it or its format. The parameter is trivially self-explanatory, warranting minimum viable rather than penalized, but no added meaning is provided.

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 ('Read Grigora's existing SEO settings') and frames it against the write path ('before making SEO/schema changes'), which cleanly distinguishes it from the sibling update_seo_settings. An agent knows exactly what this does without opening the schema.

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

Usage Guidelines4/5

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

Gives clear context: use it before making SEO/schema changes, implicitly positioning it as the read prerequisite to update_seo_settings. It stops short of naming the alternative sibling or stating exclusions, so it's strong but not exhaustive.

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

get_website_build_statusA
Read-onlyIdempotent
Inspect

Status of a website's AI build: running, completed, failed (or none).

Use after create_website or edit_website. A build usually takes a few minutes; wait a little between checks rather than polling rapidly. When finished, "reply" is the AI builder's summary of what it did.

Args: project_id: The website's project ID (from create_website or list_projects). build_id: Optional; the build_id create_website returned. Defaults to the latest build.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds real value beyond that: build duration expectations, a warning against rapid polling, and the meaning of the 'reply' field as the builder's summary.

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 status enumeration, then usage timing, then Args. Every sentence earns its place, though the Args block is slightly verbose relative to the two simple parameters.

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

Completeness4/5

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

An output schema exists, so return values needn't be explained, yet the description helpfully names the 'reply' field. With parameters fully documented and usage context provided, nothing critical is missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 0%, so the description carries the full parameter burden and does so well: project_id is sourced from create_website or list_projects, and build_id is optional, sourced from create_website, and defaults to the latest build. It omits only the string format of the IDs.

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 ('Status of a website's AI build') and enumerates the possible return states (running, completed, failed, none). No sibling tool reports build status, so the agent can distinguish it immediately.

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 says to use it 'after create_website or edit_website' and adds timing guidance ('wait a little between checks rather than polling rapidly'). It gives clear when-to-use context but no explicit when-not or named alternative, since no sibling performs this role.

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

list_assetsB
Read-onlyIdempotent
Inspect

List assets (files and folders) in the project CDN.

Args: project_id: The project ID. folder: Optional folder path to list (e.g. images/ or docs/).

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare this as a safe, read-only, idempotent, non-destructive, non-open-world operation. The description adds scope context by specifying that assets live in the project CDN and can be filtered by folder, but it does not disclose return limits, pagination, or authentication requirements.

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 and scope, followed by a compact Args block. Every line is useful 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?

Given the low-complexity list operation, rich annotations, and the presence of an output schema, the description is mostly complete. It covers purpose and parameters, but stops short of explaining when to choose this tool over siblings or how folder paths relate to the CDN structure.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter meaning. It adds the folder examples and optionality, but project_id is described only as 'The project ID,' which is nearly tautological and does not clarify format or source.

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 (List) and resource (assets, files and folders) in a specific scope (project CDN). It clearly distinguishes the operation from mutating siblings like delete_assets or get_asset, though it does not explicitly name or differentiate those alternatives.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no named alternatives. The description only says what the tool does, leaving the agent to infer that it should be used whenever asset enumeration is needed.

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

list_cms_categoriesC
Read-onlyIdempotent
Inspect

List all CMS post categories for a project.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the full safety profile is covered structurally. The description adds nothing on top of that — no pagination, result-count, or permission context — so it earns no credit beyond restating the 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?

Front-loaded one-sentence purpose, appropriately short. The 'Args:' block is pure duplication of the schema and adds size without value, but the overall footprint is small.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Still thin on where project_id comes from and whether the listing is paginated or filtered — adequate but with clear gaps for a listing tool.

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

Parameters2/5

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

Schema description coverage is 0% and the single required parameter is only restated as 'The project ID,' which is a tautology of the schema title 'Project Id'. No format, source (e.g. from list_projects), or validity constraint is given, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

Specific verb+resource: 'List all CMS post categories for a project' clearly states the operation and its scope. The verb distinguishes it from create/update/delete_cms_category and from list_cms_posts, though the description never explicitly routes between 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 when-to-use guidance, no prerequisites, no named alternatives. The agent must infer from the name that this is the read counterpart of create_cms_category/update_cms_category.

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

list_cms_postsB
Read-onlyIdempotent
Inspect

List all CMS blog posts for a project.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered structurally. The description adds only the project scoping, which is minimal; with annotations carrying the behavioral burden, a 3 is appropriate.

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 lines, front-loaded with the core action. The Args section is boilerplate and tautological, but the overall size is appropriately small for a one-parameter list tool.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the tool is simple with a single parameter. Still, for a list operation nothing indicates result volume, ordering, or filtering behavior, leaving it merely adequate.

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

Parameters2/5

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

There is one parameter (project_id) at 0% schema description coverage, and the description's 'project_id: The project ID.' merely restates the name tautologically. It adds no format, source, or constraint information, so it fails to compensate for the schema gap.

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

Purpose4/5

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

States a specific verb+resource+scope: 'List all CMS blog posts for a project.' An agent can distinguish this from get_cms_post (single post) and create_cms_post (write) by the 'list all' framing. It does not explicitly name a sibling or contrast, so it lands at 4 rather than 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 exclusions, no mention of the sibling tools it should be preferred or avoided over (e.g. get_cms_post for a single post). Nothing tells an agent the conditions under which this is the right call.

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

list_commerce_collectionsB
Read-onlyIdempotent
Inspect

List product collections (storefront groupings) with their linked product ids.

Args: project_id: The project ID. status: Filter by status: active or draft. Empty for all.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the result set includes linked product ids, which is useful return-shape context, but says nothing about pagination or result 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.

Conciseness4/5

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

The core sentence is front-loaded and the docstring-style Args block is compact. Slight redundancy in restating 'status' as a filter, but no meaningful waste.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. For a two-parameter read-only list tool the description is nearly sufficient, but it omits pagination/ordering behavior and says nothing useful about project_id beyond restating its name.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load. It does document both parameters, and usefully specifies the accepted 'status' values (active/draft) and that empty means all — information absent from the schema. However, 'project_id: The project ID' is circular and adds nothing.

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 (product collections / storefront groupings) and even clarifies the payload ('with their linked product ids'). It is distinguishable from the singular get_commerce_collection and other list_* siblings, 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?

No when-to-use or when-not-to-use guidance is given, e.g. no rule for choosing this over get_commerce_collection or list_commerce_products. The 'status' filtering note is parameter-level, not usage-level context.

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

list_commerce_productsA
Read-onlyIdempotent
Inspect

List products in a project's store.

Args: project_id: The project ID. status: Filter by status: draft, active, or archived. Empty for all. product_type: Filter by type: digital, download, course, template, membership, service, or physical. Empty for all. collection_id: Only return products linked to this collection. Empty for all. search: Case-insensitive match against title, slug, and SKU. full: Return complete product objects instead of summaries. limit: Max products to return (default 100, max 500). offset: Number of products to skip.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNo
limitNo
offsetNo
searchNo
statusNo
project_idYes
product_typeNo
collection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavioral context the annotations do not: results default to summaries unless 'full' is set, search matches title/slug/SKU case-insensitively, and limit is capped at 500. It does not mention pagination beyond offset or ordering, so 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.

Conciseness4/5

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

The one-line purpose is front-loaded and the Args block is dense and free of filler, with each line adding distinct information. Only minor cost is that the docstring header style is slightly boilerplate.

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

Completeness5/5

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

With an output schema present, return shape need not be explained, and the description documents every parameter plus filtering behavior. For a read-only list tool whose annotations already convey safety, 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.

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so for all 8 parameters, including allowed status/product_type values, the meaning of empty strings, the summary-vs-full distinction, and the limit default/max. This is meaningfully more than the bare schema provides.

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 (products in a project's store), which cleanly separates it from siblings like list_commerce_collections, list_commerce_variants, and get_commerce_product. It does not explicitly name an alternative, 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?

Filter semantics are spelled out ('Empty for all'), which implies how to broaden/narrow a query, but there is no explicit when-to-use guidance versus get_commerce_product or list_commerce_variants for looking up product data. 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.

list_commerce_variantsB
Read-onlyIdempotent
Inspect

List a product's options and variants with live stock.

Products without options report a single synthetic variant with id "default".

Args: project_id: The project ID. product_id: The product ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description still earns credit for two genuinely useful behaviors beyond the annotations: stock is live, and products without options return a single synthetic variant with id "default".

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

Conciseness3/5

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

The purpose sentence is front-loaded and the synthetic-variant note is high-value, but the trailing Args block is pure filler that duplicates structured schema fields. The description is not bloated overall, but one of its three sections earns nothing.

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

Completeness3/5

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

With an output schema present and annotations covering the read-only/idempotent profile, return values and safety need not be explained, and the synthetic-variant edge case is covered. The remaining gap is the absence of any real parameter semantics for a 2-param tool, leaving the definition merely adequate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, yet its Args block only restates each parameter name as 'The project ID' / 'The product ID'. That is tautological and adds no format, source, or constraint information an agent could not already infer from the schema titles.

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 a product's options and variants') and adds scope ('with live stock'), which clearly separates it from list_commerce_products and get_commerce_product. It does not explicitly name a sibling, so it stays 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?

Usage is implied: call this to enumerate variants for a given product. There is no explicit when-to-use versus when-not-to-use guidance and no routing to alternatives such as get_commerce_product, so it is only minimally viable.

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

list_directory_collectionsC
Read-onlyIdempotent
Inspect

List all directory collections for a project.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds only the project scoping context, not return shape, 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.

Conciseness3/5

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

The opening sentence is front-loaded and efficient, but the 'Args:' block duplicates the schema without adding information, wasting roughly half the text.

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

Completeness3/5

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

An output schema exists so return values need not be described, and there is only one parameter. Still, the description leaves an agent without any routing guidance among the many list_* siblings, which is the main gap.

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

Parameters2/5

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

Schema coverage is 0% and the single parameter is restated tautologically as 'The project ID' — no format, source, or example is added beyond the schema's own 'Project Id' title.

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 all directory collections') and scopes it to a project. It does not explicitly distinguish itself from near siblings like list_directory_items or list_directory_fields, but the resource 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?

No when-to-use guidance, no mention of alternatives, no prerequisites or pagination caveats. The read-only list intent is only implied by the verb 'List'.

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

list_directory_fieldsC
Read-onlyIdempotent
Inspect

List all fields for a directory collection.

Args: project_id: The project ID. collection_id: The collection ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that: no pagination behavior, no scoping to a specific collection version, no auth context. It restates the operation the annotations already qualify.

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 one-line purpose is front-loaded and appropriately short. However, the appended Args block is redundant boilerplate that restates parameter names without adding value, so the entry is not waste-free.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. For a simple read-only list tool this is minimally adequate, but it leaves pagination, ordering, and the relationship between collection and fields 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 carry parameter meaning, and it does not. The Args section is pure tautology — 'project_id: The project ID' and 'collection_id: The collection ID' add no format, source, or relationship information beyond the property names themselves.

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 all fields for a directory collection.' An agent can distinguish this from sibling list_directory_collections and list_directory_items based on the resource named. No explicit sibling differentiation, so not 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 guidance on when to use this versus list_directory_collections, list_directory_items, or get_directory_item. No prerequisites, no exclusions. The description only says what it does, not when to reach for it.

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

list_directory_itemsC
Read-onlyIdempotent
Inspect

List all items in a directory collection.

Args: project_id: The project ID. collection_id: The collection ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the description gets no credit for the safety profile. It adds nothing beyond that: no pagination behavior, no result ordering, and no indication of what a 'collection' item listing contains, even though those are the traits an agent would care about 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.

Conciseness3/5

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

The first sentence is front-loaded and efficient, but the Args section is redundant filler that repeats structured data already present in the schema. It is appropriately short overall, but not every line 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?

With an output schema present, return values need not be explained, and both parameters are required IDs so there is not much to document. Still, for a list tool the description omits any hint about scope or volume of results, leaving it only minimally adequate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden, but the Args block only restates the parameter names with tautological glosses ('The project ID', 'The collection ID') that duplicate the schema titles. No format, ID source, or example is given, so the nearly non-existent schema documentation is not compensated for.

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 (items in a directory collection), which distinguishes it from siblings like list_directory_collections and list_directory_fields. It does not name an alternative tool explicitly, but the resource scope is unambiguous.

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

Usage 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 siblings such as get_directory_item or the other list_* tools, and no note about filtering, ordering, or result limits. The agent must infer the usage context from the name alone.

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

list_newsletter_custom_fieldsA
Read-onlyIdempotent
Inspect

Read custom field definitions for signup forms and merge tags. OAuth scope newsletter:read. Use get_newsletter_schema for document, filter and field definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds the required auth context ('OAuth scope newsletter:read'), which is genuinely beyond the structured fields. It says nothing about pagination behavior for a listing tool, so it falls short of full behavioral coverage.

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, zero filler, with the resource scope front-loaded and the sibling routing placed last where it is most useful. 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?

An output schema exists, so return values need not be explained, and the annotations plus the auth-scope note cover the safety profile. What remains missing is pagination behavior (limit/cursor) and any hint about project_id, which matters for a listing call an agent may need to page through.

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

Parameters2/5

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

Schema description coverage is 0% across all three parameters, so the description carries the full burden and mentions none of them. The limit/cursor pagination contract and the role of project_id are left entirely to inference from bare titles and defaults.

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 custom field definitions') and narrows scope to 'signup forms and merge tags'. It also names the sibling it is not ('Use get_newsletter_schema for document, filter and field definitions'), so an agent can separate the two 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?

Explicitly routes the agent to get_newsletter_schema when document/filter/field definitions are wanted, which is a real alternative-selection rule. It stops short of a full when/when-not set (no statement about prerequisites or when this tool is the wrong choice for other data).

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

list_newsletter_listsA
Read-onlyIdempotent
Inspect

List newsletter audiences and IDs for signup forms; archived lists are excluded by default. OAuth scope newsletter:read. Use get_newsletter_schema for document, filter and field definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
project_idYes
include_archivedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety profile is covered. The description adds useful behavioral context: default exclusion of archived lists and the required OAuth scope (newsletter:read). Since output schema exists, it needn't explain returns. Adequate with annotations.

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

Conciseness5/5

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

Single sentence, front-loaded with purpose and default behavior, then auth scope and a pointer to a related tool. No wasted words.

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?

Annotations cover safety and output schema covers returns, so the description has a lighter burden. However, with 0% schema coverage on four parameters, the description leaves significant gaps (limit, cursor semantics), making it incomplete for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so all four parameters (limit, cursor, project_id, include_archived) lack schema-level documentation. The description mentions include_archived indirectly ('archived lists are excluded by default') but provides no meaning for limit, cursor, or project_id. It doesn't compensate for the coverage gap.

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

Purpose5/5

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

States a specific verb (List) and resource (newsletter audiences/lists), clarifies scope ('for signup forms') and default behavior ('archived lists are excluded by default'). Distinguishable from siblings like list_newsletter_custom_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?

Clearly indicates this is for retrieving newsletter audiences and explicitly points to get_newsletter_schema for document/filter/field definitions, routing the agent properly. It doesn't state explicit exclusions beyond archived lists, but the sibling pointer provides clear usage guidance.

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

list_pagesA
Read-onlyIdempotent
Inspect

List all pages for a project (metadata only; each page has id, name, slug, etc.).

Args: project_id: The project ID. limit: Max number of pages to return (optional; 0 = no limit). offset: Number of pages to skip (optional).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond them by disclosing that only metadata is returned ('each page has id, name, slug, etc.'), telling the agent this is a lightweight listing rather than full page content.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence, and the Args block is terse and readable. It is slightly padded by restating 'project_id: The project ID', but overall 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?

An output schema exists, so return values need not be detailed, and the description still summarizes the returned shape as metadata. Pagination is addressed via limit/offset semantics, making it complete enough for an agent to call 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 description coverage is 0%, so the description carries the full burden, and it does so for all three parameters: project_id, limit, and offset. It even clarifies the non-obvious semantics that limit=0 means no limit, which the bare schema default of 0 would not convey.

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 ('List all pages for a project') and scopes the result as 'metadata only', which separates it from get_page (single-page retrieval) in the sibling set. It stops short of explicitly naming that sibling, 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 Guidelines3/5

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

Usage is implied: this is the bulk-listing counterpart to get_page for a known project_id. However, there is no explicit when-to-use/when-not guidance and no alternative tool is named, leaving the agent to infer the boundary between listing and fetching.

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

list_projectsA
Read-onlyIdempotent
Inspect

List the projects (sites) this connection can work on.

With an account connection this is every site the user owns or collaborates on, resolved live — call it first, then pass the chosen project's id as project_id to the other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/no-destructive, so the bar is lower. The description adds genuine context beyond them: results are 'resolved live' (not cached), and the visibility scope depends on connection type (account connections see every owned or collaborated site). It doesn't fully spell out what non-account connections return, but the conditional phrasing signals the distinction.

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, no filler, with the identity/scope statement front-loaded and the workflow instruction following. Every clause earns its place.

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

Completeness5/5

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

With zero parameters and an output schema present, the description need not explain return values. It covers the remaining burden — what the tool returns conceptually, live resolution, and how it fits into the call sequence — leaving nothing an agent needs 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 there is nothing for the description to compensate for; baseline 4 applies. The mention of `project_id` is actually about downstream tools, correctly framed as such rather than as an input here.

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?

Specific verb+resource ('List the projects'), with the synonym '(sites)' disambiguating the domain vocabulary, and a clear scope statement ('this connection can work on'). An agent can distinguish it from get_project_details (single project) and from the many list_* siblings by resource.

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 sequencing instruction: 'call it first, then pass the chosen project's `id` as `project_id` to the other tools.' This tells the agent both when to use it (as an entry point) and what to do with the output, which is unusually actionable.

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

list_url_redirectsA
Read-onlyIdempotent
Inspect

List all URL redirects configured for a project.

Returns data.redirects (array of {id, source_path, dest_type, dest_path, dest_url, status_code, ...}) and data.custom_domain_connected (bool). A connected custom domain is required to create or edit redirects.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds one genuine behavioral fact (a connected custom domain is required to create or edit redirects) plus the custom_domain_connected field meaning, but the enumerated return fields duplicate the output schema, so net added value beyond annotations is modest.

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?

Purpose is front-loaded, but the middle sentence enumerating output fields is bulk that the output schema already carries and does not earn its place. A separate 'Args:' block for a single tautological parameter also adds length without value.

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 tool, annotations cover the safety profile, an output schema covers the return shape, and the description supplies the custom-domain prerequisite. It is close to complete; only the project_id source/format is left unexplained.

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

Parameters2/5

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

Schema description coverage is 0% and the sole parameter is left as 'project_id: The project ID', which merely restates the parameter name. For a required identifier the description should clarify format or source (e.g., from list_projects), and it does not compensate for the coverage gap.

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

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 (URL redirects) scoped to a project. The verb cleanly separates it from the sibling mutations create_url_redirect, update_url_redirect, and delete_url_redirect, so an agent can pick it 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?

Usage is only implied by the verb 'List'. It never explicitly says to use this to inspect redirects or to use create_url_redirect/update_url_redirect to make changes. The custom-domain note concerns creating/editing redirects, not this tool, so it does not route the agent among alternatives.

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

publish_cms_postB
Destructive
Inspect

Publish a CMS blog post (make it live).

Args: project_id: The project ID. post_id: The ID of the post to publish (UUID from list response, or full SK like cms-post-data-).

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/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 openWorldHint=true, so the safety profile is covered. The description adds the useful clarification that publishing means making the post live, but says nothing about reversibility, whether a build/deploy is triggered, or what state the post must be in beforehand.

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 plus an args block; the purpose is front-loaded with zero preamble. Slightly formulaic but nothing 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 two-param state-changing tool with an output schema and destructive annotations, this is adequate but thin. It omits error conditions (e.g., post not found, already published) and any side effects like site rebuilds that an agent calling a destructive publish might want to warn about.

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 0%, so the description carries the full parameter burden and does document both args. The post_id entry is genuinely valuable, specifying the accepted UUID form and the full SK alternative (cms-post-data-<uuid>); project_id's gloss is merely tautological.

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 ('Publish a CMS blog post') and clarifies the effect with 'make it live'. It is distinguishable from create_cms_post and update_cms_post by the publish verb, though it never names the inverse sibling unpublish_cms_post to sharpen the distinction.

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 update_cms_post or unpublish_cms_post, and no stated preconditions. An agent must infer that this is the terminal state-transition step after creating or updating a post.

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

publish_projectB
Destructive
Inspect

Publish a project to make all changes live.

Args: project_id: The project ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is covered. The description adds the useful scope detail that ALL changes go live at once, but does not state reversibility, whether a prior publish is required, or what the operation overwrites. Some added context, but 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.

Conciseness4/5

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

The opening sentence is short, front-loaded, and free of waste. The 'Args:' block is mild boilerplate but does not bloat the text; the definition stays well within a reasonable size.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, for a destructive, open-world mutation tool with zero schema description coverage, the definition leaves the agent without prerequisites, side-effect scope, or parameter provenance.

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

Parameters2/5

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

Schema coverage is 0%, so the description carries the burden for the single parameter. 'The project ID' merely restates the schema title 'Project Id' and adds no format, source, or lookup guidance (e.g. how to obtain it via list_projects).

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 ('Publish') and resource ('a project') with the effect spelled out ('make all changes live'). It implicitly separates itself from publish_cms_post by operating at project scope, though it never names that sibling or any 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 Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance. The description does not tell the agent how this differs from publish_cms_post or whether a project must be in a draft state first. Usage is only implied by the phrase 'make all changes live'.

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

remove_products_from_commerce_collectionA
Destructive
Inspect

Unlink products from a collection. The products themselves are not deleted.

Args: project_id: The project ID. collection_id: The collection ID. product_ids: JSON array of product ids to unlink, e.g. ["abc","def"].

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
product_idsYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context by resolving the ambiguity of destructiveHint=true: the destruction applies to the link, not the product ('The products themselves are not deleted'). It stops short of covering idempotency or behavior when an ID isn't in the collection.

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 lead with the action and the key non-effect, then a compact Args block adds only the format detail the schema lacks. Nothing is redundant and the most important constraint 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?

An output schema exists, so return values need no prose, and the annotations cover the safety profile. The description supplies the parameter formats and the non-deletion guarantee, leaving only minor gaps like partial-failure behavior and idempotency.

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 0%, so the description must carry the load, and it does: all three parameters are named, and product_ids is shown as a JSON array literal, which is essential because the schema types it as a plain string. It doesn't explain edge cases such as unknown or already-unlinked IDs.

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 ('Unlink products from a collection') and immediately scopes the effect by clarifying that 'the products themselves are not deleted', which separates it from the delete_* siblings. It does not, however, distinguish this incremental removal from set_commerce_collection_products, which also rewrites the collection's product membership.

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 explicit when-to-use or when-not-to-use guidance. With siblings like set_commerce_collection_products (full replacement) and delete_commerce_product, the agent is left to infer that this tool removes only the specified links while preserving the products, and nothing tells it which of the three to pick.

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

set_commerce_collection_productsA
Destructive
Inspect

Replace a collection's product list with exactly these ids, in this order.

This is also how you reorder a collection. Pass [] to clear it.

Args: project_id: The project ID. collection_id: The collection ID. product_ids: JSON array with the complete, ordered product id list, e.g. ["abc","def"].

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
product_idsYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description goes beyond that by disclosing the replace-all semantics ('exactly these ids'), the ordering guarantee, and that an empty array clears the list — all meaningful behavioral facts the annotations cannot 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?

The behavioral line is front-loaded and every sentence earns its place; the empty-array clearing rule is a high-value addition. The Args block is slightly padded, since 'The project ID' and 'The collection ID' add nothing, but the overall size is appropriate.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the key risks of a destructive replace (total overwrite, ordering, clearing) are all covered. What remains unstated is error behavior and preconditions, such as whether the ids must already exist or belong to the project, which matters for a destructive mutation.

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 0%, so the description must carry the load. It does this well for the critical parameter, clarifying that product_ids is a JSON-encoded array with an example, which the bare 'string' schema type would otherwise obscure. The project_id and collection_id entries are tautological restatements, which holds it back 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 precise verb and resource ('Replace a collection's product list with exactly these ids, in this order') and the replace/set semantics immediately distinguish it from the add_products_to_commerce_collection and remove_products_from_commerce_collection siblings. An agent can tell which operation it is without opening the schema.

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

Usage Guidelines4/5

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

Explicitly covers two additional usage modes that aren't obvious from the name: reordering a collection and clearing it with an empty array. It does not name the add/remove siblings as alternatives or state prerequisites, so it stops just short of full routing guidance.

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

set_commerce_product_optionsA
Destructive
Inspect

Set a product's variation axes (size, colour, ...) and rebuild its variants.

By default the full variant matrix is regenerated: variants matching an existing option combination keep their id, SKU, price, and stock; combinations that no longer exist are removed. Pass variants to control the set explicitly.

Args: project_id: The project ID. product_id: The product ID. options: JSON array of up to 3 axes, e.g. [{"name":"Size","values":["S","M","L"]},{"name":"Colour","values":["Black","White"]}]. Send [] to remove all options and variants. variants: Optional JSON array of variants to use instead of the generated matrix.

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsYes
variantsNo
product_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag this as destructive and open-world, and the description adds substantive context beyond them: exactly what gets preserved (id, SKU, price, stock for surviving combinations), what gets removed (combinations that no longer exist), and the default-vs-explicit mode. This is unusually rich disclosure for a mutation tool and is consistent with destructiveHint=true.

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 single-line summary is front-loaded with the core action and default behavior, followed by an Args block. No sentence is redundant; the behavioral detail and parameter docs each earn their place.

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

Completeness5/5

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

An output schema exists, so return values need not be described. The description covers the mutation's side effects, the default vs explicit control path, the clearing case, and every parameter's format and meaning — 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.

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden and does so: it documents all four params, gives a concrete JSON example for `options` including the max of 3 axes, specifies the `[]` clearing semantics, and marks `variants` as optional with its purpose. This fully compensates for the bare 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 precise verb (set) and resource (a product's variation axes), and describes the consequential effect (rebuild its variants) with concrete examples of axes. It is clearly distinct in intent, but it never names or contrasts with the closest sibling, generate_commerce_variants, so the agent must infer the boundary rather than being told it.

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

Usage Guidelines4/5

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

The description draws the key operating decision explicitly: by default the full variant matrix is regenerated, and passing `variants` overrides that to control the set. It also notes that `options: []` removes all options and variants. What's missing is guidance on when to prefer this tool over siblings like generate_commerce_variants or update_commerce_variant.

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

unpublish_cms_postA
Destructive
Inspect

Unpublish a CMS blog post (take it offline).

Args: project_id: The project ID. post_id: The ID of the post to unpublish (UUID from list response, or full SK like cms-post-data-).

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the mutating/safety profile is covered by structured data. The description adds only the '(take it offline)' state-change framing and does not disclose reversibility, whether the post loses its URL/is removed from listings, or any permission requirement — useful context, but thin 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?

One-line purpose statement plus a compact Args block; the action is front-loaded and no sentence is wasted. Well sized for a two-parameter mutation.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and both parameters are at least named with post_id documented in useful detail. Annotations cover the safety profile. The remaining gap is the missing reversibility/state-effect note, which matters for a tool sitting next to delete_cms_post.

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 0%, so the description carries the full burden, and it delivers meaningful detail for post_id: it accepts either the UUID from the list response or the full form 'cms-post-data-<uuid>'. This resolves a real ambiguity that the bare string schema leaves open. project_id gets only a tautological gloss ('The project ID'), which keeps it from a 5.

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

Purpose4/5

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

States a specific verb and resource ('Unpublish a CMS blog post') and clarifies the effect with '(take it offline)'. It is distinguishable from publish_cms_post and update_cms_post by the verb, but it never contrasts with delete_cms_post, which is the genuinely ambiguous sibling (both take a post offline).

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 when-not guidance, and no prerequisites. The description never tells the agent why it would unpublish rather than delete, or whether unpublishing is the reversible alternative to deletion in this CMS.

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

update_cms_categoryB
Destructive
Inspect

Update an existing CMS post category. Only provided fields are updated.

Args: project_id: The project ID. category_id: The category ID (from list response). name: Category display name. slug: URL slug. description: Category description. thumbnail: Thumbnail image URL; will be uploaded to project CDN. thumbnail_title: Thumbnail title (updates thumbnail_meta). thumbnail_alt: Thumbnail alt text (updates thumbnail_meta). thumbnail_caption: Thumbnail caption (updates thumbnail_meta).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
slugNo
thumbnailNo
project_idYes
category_idYes
descriptionNo
thumbnail_altNo
thumbnail_titleNo
thumbnail_captionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/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 openWorldHint=true, so the agent knows this is a mutating operation. The description adds genuinely useful patch semantics ("Only provided fields are updated") and notes that thumbnails are uploaded to a project CDN, but it does not warn about the destructive/potentially clearing behavior suggested by the empty-string defaults on every optional field.

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

Conciseness4/5

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

The behavioral statement is front-loaded in a single sentence, followed by a compact argument list. The Args block partially restates schema titles, but each entry adds meaning (source of the ID, CDN upload, metadata grouping), so little 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?

An output schema exists, so return values need not be described, and every one of the 9 parameters receives an explanation despite 0% schema coverage. The remaining gap is the partial-update versus empty-string-clearing question on a tool annotated as destructive.

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 0% for 9 parameters, so the description carries the full semantic burden and largely succeeds: it explains each field, notes that category_id comes from the list response, that thumbnail is uploaded to the CDN, and that the three thumbnail_* fields write into thumbnail_meta. It does not resolve whether omitting a field differs from sending the schema's "" default, which is the one ambiguity an agent would want resolved.

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 ("Update an existing CMS post category"), which is enough to separate it from the create/delete/list category siblings and from update_cms_post. It stops short of naming any sibling explicitly or stating scope limits, so it is clear rather than exemplary.

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 about when to use this tool versus create_cms_category, delete_cms_category, or update_cms_category's create counterpart; the only usage-adjacent statement is "Only provided fields are updated." No prerequisites, no when-not conditions, no alternatives named.

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

update_cms_postA
Destructive
Inspect

Update an existing CMS blog post.

Only the fields you pass are changed — everything else (categories, tags, excerpt, featured image, content, ...) keeps its current value.

Args: project_id: The project ID. post_id: The ID of the post to update (UUID from list response, or full SK like cms-post-data-). title: New title (leave empty to keep current). slug: New slug (leave empty to keep current). content: New content HTML (leave empty to keep current; ignored if content_blocks is set). content_blocks: JSON string of the block tree to replace post body (leave empty to keep current). excerpt: New excerpt/summary (leave empty to keep current). featured_image: New featured image URL (leave empty to keep current). featured_image_alt: New alt text for the featured image (leave empty to keep current). keyword: New focus keyword (leave empty to keep current). categories: Comma-separated category names/slugs (e.g. "Technology,News"). Replaces the post's categories; leave empty to keep current. tags: Comma-separated tags (e.g. "beginner,seo"). Replaces the post's tags; leave empty to keep current. seo_meta_title: New SEO (leave empty to keep current). Keep under 70 characters. seo_meta_desc: New meta description (leave empty to keep current). Keep under 160 characters.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNo
tagsNo
titleNo
contentNo
excerptNo
keywordNo
post_idYes
categoriesNo
project_idYes
seo_meta_descNo
content_blocksNo
featured_imageNo
seo_meta_titleNo
featured_image_altNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the mutation/open-world profile is covered. The description adds genuinely new behavioral context beyond that: only passed fields are mutated, empty string means 'keep current', and content is ignored when content_blocks is set — all non-obvious mutation semantics that prevent accidental overwrites.

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

Conciseness4/5

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

The partial-update rule is front-loaded in the first paragraph, and the Args list is long but justified given 14 undocumented parameters. Every line earns its place; the only mild redundancy is the repeated '(leave empty to keep current)' pattern, which could have been stated once.

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

Completeness5/5

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

With an output schema present, return values need not be described, and all 14 parameters plus the content/content_blocks interaction are covered. For a mutation tool with zero schema documentation and three annotations, 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.

Parameters5/5

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

Schema description coverage is 0% (all 14 params have titles only), so the description carries the full burden — and it does: every parameter is documented with meaning, format hints (post_id as UUID or full SK, comma-separated categories/tags with examples), keep-current semantics, and length constraints for SEO fields. This is model compensation for the coverage gap.

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

Purpose5/5

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

States a specific verb and resource ('Update an existing CMS blog post') and immediately defines the scope of that update as a partial patch, which is the key thing distinguishing it from create_cms_post/delete_cms_post. An agent knows exactly what operation this is 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 'Update an existing' and the partial-patch semantics, and the content-vs-content_blocks precedence rule is useful invocation guidance. However, it never names an alternative or states when not to use it — e.g. it doesn't clarify the relationship to publish_cms_post or update_page, so routing guidance 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.

update_commerce_collectionA
Destructive
Inspect

Update a collection's own fields. Only the arguments you set are changed.

To change which products it contains, use add_products_to_commerce_collection, remove_products_from_commerce_collection, or set_commerce_collection_products.

Args: project_id: The project ID. collection_id: The collection ID. title: New collection name. description: New description. slug: New URL slug. image_url: New cover image URL. status: active or draft. sort: New ordering weight. Leave -1 to keep current. seo: JSON object, replaces the existing SEO block.

ParametersJSON Schema
NameRequiredDescriptionDefault
seoNo
slugNo
sortNo
titleNo
statusNo
image_urlNo
project_idYes
descriptionNo
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, so the safety profile is already covered. The description adds genuine context beyond the annotations: partial-update semantics ('Only the arguments you set are changed') and that 'seo' replaces the entire existing SEO block. It stops short of explaining why the operation is flagged destructive, which keeps it at a 4 rather than 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?

Front-loaded with purpose, then sibling routing, then a compact Args block. Nothing is padding, and the Args block is justified by the 0% schema description coverage rather than being 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?

With an output schema present, return values need no explanation, and annotations cover safety. Given 9 parameters at 0% coverage, the description is thorough; the only small gap is that the destructiveHint=true flag is not reconciled with the described behavior.

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?

Schema description coverage is 0%, so the description carries the full burden, and it delivers: every parameter gets meaning beyond its name, including the 'status: active or draft' value set and 'sort: New ordering weight. Leave -1 to keep current,' which explains the schema's -1 default.

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 ('Update a collection's own fields') and immediately scopes the boundary by naming what it does NOT cover (product membership). An agent can distinguish it from the add/remove/set_products siblings 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 routes the agent to the correct alternative for a closely related operation: 'To change which products it contains, use add_products_to_commerce_collection, remove_products_from_commerce_collection, or set_commerce_collection_products.' This is exactly the when-to-use-what guidance that distinguishes the tool from its closest siblings.

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

update_commerce_inventoryA
Destructive
Inspect

Set or adjust stock for one variant.

Use quantity for an absolute level, or delta to add/subtract (negative allowed). Stock never goes below zero. Products without variations use variant_id "default".

Args: project_id: The project ID. product_id: The product ID. variant_id: The variant ID. Use "default" for products with no variations. quantity: Absolute stock level. Takes precedence over delta. Leave -1 to use delta. delta: Relative change, e.g. -3 to remove three units. Must be non-zero when quantity is -1.

ParametersJSON Schema
NameRequiredDescriptionDefault
deltaNo
quantityNo
product_idYes
project_idYes
variant_idNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: 'Stock never goes below zero' (a clamping guarantee) and the precedence rule that quantity overrides delta. It stops short of noting permission requirements or reversibility.

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 core action, followed by usage rules, then a compact Args list. Every line earns its place given the schema provides no parameter documentation of its own.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the mutation behavior is adequately conveyed. For a destructive, 5-parameter write tool the coverage is strong, though auth/permission expectations remain unstated.

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

Parameters4/5

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

With 0% schema description coverage, the description carries the full burden and mostly delivers: it documents quantity precedence, the -1 sentinel meaning 'use delta', negative delta semantics, and the 'default' variant_id convention. project_id and product_id are documented only tautologically, which is the one gap.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Set or adjust stock for one variant.' The stock-level focus and 'one variant' scope clearly distinguish it from siblings like update_commerce_variant, update_commerce_product, and update_commerce_price.

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

Usage Guidelines3/5

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

The description explains how to use the parameters (quantity vs delta) but never states when this tool should be chosen over alternatives such as update_commerce_variant, nor any prerequisites. Usage is only implied by the stock-management framing.

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

update_commerce_priceA
Destructive
Inspect

Set product and/or per-variant pricing in one call.

All amounts are integers in the currency's smallest unit: 2999 is $29.99 for USD. At least one pricing argument must be supplied.

Args: project_id: The project ID. product_id: The product ID. price_amount: New product price. Leave -1 to keep current. compare_at_amount: New struck-through reference price. Use 0 to clear it, -1 to keep current. currency: New ISO currency code for the product. pricing_type: one_time, subscription, or pay_what_you_want. Forced to one_time for physical products. variant_prices: JSON array of per-variant overrides, e.g. [{"variant_id":"v_abc","price_amount":3499}]. Unknown variant ids are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNo
product_idYes
project_idYes
price_amountNo
pricing_typeNo
variant_pricesNo
compare_at_amountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (destructiveHint=true, openWorldHint=true), and the description adds real behavioral detail beyond them: pricing_type is forced to one_time for physical products, and unknown variant ids are rejected. It still does not describe reversibility or side effects on downstream billing, but the added domain rules are meaningful.

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

Conciseness4/5

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

The core rule and unit convention ('2999 is $29.99') are front-loaded, followed by a scannable Args block. Slight redundancy in restating parameter names, but that repetition is justified given zero schema-level descriptions.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and all seven parameters are accounted for. The remaining gap is the absence of any cross-reference to the variant/product update siblings an agent must choose between.

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?

Schema description coverage is 0%, so the description carries the full burden and does so: every parameter is documented, including sentinel semantics (-1 keeps current, 0 clears compare-at), currency format, the pricing_type value set, and a concrete variant_prices JSON example. This is well beyond what the bare schema provides.

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 opens with a specific verb and resource: 'Set product and/or per-variant pricing in one call.' That clearly distinguishes it from the create/delete siblings. It does not explicitly differentiate itself from update_commerce_variant, which also touches variant pricing, 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?

It states an important precondition ('At least one pricing argument must be supplied'), which is genuine usage guidance. However, it never says when to use this tool versus update_commerce_product or update_commerce_variant, leaving the agent to infer boundaries between near-identical siblings.

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

update_commerce_productA
Destructive
Inspect

Update a product. Only the arguments you set are changed.

Sending options or variants replaces the whole set — variants that no longer match the options are dropped along with their stock counters. Use set_commerce_product_options or the variant tools for safer, targeted edits.

Args: project_id: The project ID. product_id: The product ID. Required. title: New product name. description: New description. slug: New URL slug. subtitle: New subtitle. product_type: digital, download, course, template, membership, service, or physical. pricing_type: one_time, subscription, or pay_what_you_want. status: draft, active, or archived. price_amount: New price in the smallest currency unit. Leave -1 to keep current. compare_at_amount: New struck-through price. Leave -1 to keep current. currency: New ISO currency code. image_url: New primary image URL. image_alt: New primary image alt text. sku: New SKU. checkout_url: New external checkout link. shipping_note: New shipping copy. highlights: JSON array of selling-point strings, replaces the existing list. faqs: JSON array of {question, answer}, replaces the existing list. gallery: JSON array of {url, title, alt}, replaces the existing gallery. delivery_details: JSON object, replaces the existing delivery details. social_proof: JSON object, replaces the existing social proof. seo: JSON object, replaces the existing SEO block. discount: JSON object, replaces the existing product discount. options: JSON array of variation axes, replaces all options. variants: JSON array of variants, replaces all variants.

ParametersJSON Schema
NameRequiredDescriptionDefault
seoNo
skuNo
faqsNo
slugNo
titleNo
statusNo
galleryNo
optionsNo
currencyNo
discountNo
subtitleNo
variantsNo
image_altNo
image_urlNo
highlightsNo
product_idYes
project_idYes
descriptionNo
checkout_urlNo
price_amountNo
pricing_typeNo
product_typeNo
social_proofNo
shipping_noteNo
delivery_detailsNo
compare_at_amountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds the concrete damage model: sending options/variants 'replaces the whole set' and non-matching variants 'are dropped along with their stock counters.' It also discloses the -1 sentinel that preserves current price and compare-at values, which no annotation conveys.

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

Conciseness4/5

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

The destructive-replacement warning is front-loaded before the argument list, which is the right ordering for an agent scanning for risk. The args block is long but each line earns its place given 0% schema coverage; the only fat is the near-tautological opening sentence 'Update a product.'

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 26-parameter destructive mutation with an output schema (so return values need no explanation), the description covers partial-update semantics, replacement hazards, sentinel values, enumerated field values, and safer alternatives. 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.

Parameters5/5

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

Schema description coverage is 0%, so the description carries the entire burden and does so: it documents all 26 parameters, enumerates allowed values for product_type, pricing_type, and status, explains the -1 keep-current convention, and flags which fields replace rather than merge (highlights, faqs, gallery, options, variants, JSON blocks).

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 ('Update a product') and immediately qualifies it with partial-update semantics ('Only the arguments you set are changed'), which is the key distinguishing behavior. It names two alternative tools, though it does not differentiate against the other update siblings (update_commerce_price, update_commerce_inventory, update_commerce_variant) that also touch product state.

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 when-to-use-otherwise condition: 'Use set_commerce_product_options or the variant tools for safer, targeted edits,' which routes the agent away from this tool for narrow option/variant edits. There is no explicit guidance on when to prefer update_commerce_price or update_commerce_inventory, so the exclusion set is incomplete.

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

update_commerce_settingsA
Destructive
Inspect

Update store settings, most importantly the default currency for new products.

Payment gateway credentials cannot be set through this tool — connect a gateway in the Grigora dashboard. Existing connections are preserved.

Args: project_id: The project ID. store_name: Store display name. currency: Default ISO currency code for new products, e.g. USD. support_email: Buyer-facing support address. notification_email: Address that receives new-order notifications. payment_provider: Which connected gateway checkout uses: external, razorpay, stripe, paypal, paddle, gumroad, or manual. storefront_base_url: Overrides the base URL used to build product and collection links. checkout_mode: Checkout strategy. Default external_first. appearance: JSON object {theme_preset, accent_color, background_color, text_color, button_style, product_layout, media_fit}. seo_defaults: JSON object of fallback SEO for product and collection pages. shipping: JSON object of shipping rates and zones. tax: JSON object of tax rules. invoice: JSON object of invoice/receipt configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
taxNo
invoiceNo
currencyNo
shippingNo
appearanceNo
project_idYes
store_nameNo
seo_defaultsNo
checkout_modeNo
support_emailNo
payment_providerNo
notification_emailNo
storefront_base_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 openWorldHint=true, so the bar is lower; the description adds the useful promise that existing gateway connections are preserved. However, for a 13-parameter destructive mutation where every schema default is an empty string, it never says whether omitted args clear existing settings or leave them untouched.

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?

Purpose and the gateway caveat are front-loaded in the first two sentences, and the args block is dense with meaning rather than repetition. The parameter list is long, but virtually every line adds semantics the bare schema lacks.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the annotations plus the preservation note cover the safety profile. The remaining omission is the update semantics for unset fields on a destructive, all-optional-but-one tool — an agent cannot tell from this definition whether a partial call is safe.

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 0%, so the description carries the full burden and does document all 13 parameters, including the accepted payment_provider values and the external_first default for checkout_mode. The JSON-object params (seo_defaults, shipping, tax, invoice) are only described generically, and only 'appearance' gets its inner keys enumerated, so the coverage is good but not complete.

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 ('Update store settings') and calls out the most consequential field (default currency for new products). It implicitly distinguishes itself from product/variant-level tools in the sibling list by scoping to store-wide settings, but never names a sibling explicitly.

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

Usage Guidelines4/5

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

Gives an explicit when-not with an alternative channel: payment gateway credentials can't be set here and must be connected in the Grigora dashboard. It stops short of telling the agent it should call get_commerce_settings first to read current values before overwriting.

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

update_commerce_variantA
Destructive
Inspect

Update one variant. Sibling variants are untouched.

option_values cannot be changed — delete the variant and add the new combination instead.

Args: project_id: The project ID. product_id: The product ID. variant_id: The variant ID (from list_commerce_variants). sku: New SKU. price_amount: New price in the smallest currency unit. Leave -1 to keep current. compare_at_amount: New struck-through price. Leave -1 to keep current. currency: New ISO currency code. image_url: New variant image URL. weight_grams: New shipping weight in grams. Leave -1 to keep current. inventory_policy: deny or continue. inventory_quantity: New stock level. Leave -1 to keep current.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNo
currencyNo
image_urlNo
product_idYes
project_idYes
variant_idYes
price_amountNo
weight_gramsNo
inventory_policyNo
compare_at_amountNo
inventory_quantityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With destructiveHint=true already declared, the description adds genuinely useful context: the mutation is scoped to a single variant with siblings untouched, option_values are immutable, and -1 acts as a keep-current sentinel for numeric fields. These go beyond the annotations, though it says nothing about permissions or reversibility.

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-loads the purpose and the key constraint before the parameter list, so the most decision-relevant content comes first. The Args enumeration is long but justified at 0% schema coverage; 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?

An output schema exists, so return values need no explanation, and all input parameters are covered. The immutability of option_values and the sentinel semantics make partial-update behavior clear; only auth/error behavior is absent, which is minor for this class of 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 description coverage is 0%, so the description carries the full burden, and its Args block documents all 11 parameters — including field meanings, the -1 keep-current convention, and the deny/continue values for inventory_policy. Compensation is strong; only a few ID fields remain terse ("The project ID"), which is inherent.

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 ("Update one variant") plus a scope constraint ("Sibling variants are untouched"), which clarifies it targets a single variant rather than the parent product. It does not, however, distinguish itself from overlapping siblings like update_commerce_price and update_commerce_inventory, so an agent cannot fully route between them from the text alone.

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 a concrete alternative for a specific case: "option_values cannot be changed — delete the variant and add the new combination instead," naming both the condition and the substitute tool. It also gives per-field guidance ("Leave -1 to keep current") that tells the agent how to signal a no-op. It lacks general when-to-use guidance versus the price/inventory siblings.

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

update_custom_codeA
Destructive
Inspect

Update custom code (header, body, footer) for a project. At least one of header, body_code, footer, or a clear_* flag must be provided. Omitted keys (None) keep current value; pass empty string or clear_*=True to clear a slot.

Args: project_id: The project ID. header: Code injected into (omit/None to keep current, "" to clear). body_code: Code injected at body start (omit/None to keep current, "" to clear). footer: Code injected at body end (omit/None to keep current, "" to clear). clear_body: If True, clear the body slot (body start). clear_header: If True, clear the header slot. clear_footer: If True, clear the footer slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
footerNo
headerNo
body_codeNo
clear_bodyNo
project_idYes
clear_footerNo
clear_headerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: omitted keys (None) preserve current values, while empty string or clear_*=True wipes a slot — exactly the destructive nuance an agent needs. It stops short of noting permission requirements or validation.

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 summary followed by a compact Args block; every sentence earns its place. There is mild redundancy between the summary sentence about omitted keys and the per-param notes, but it is not wasteful.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the destructive/mutation behavior is fully spelled out. Missing only peripheral context such as whether a rebuild/publish is required for changes to take effect.

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?

Schema description coverage is 0%, so the description carries the full burden, and it does: every one of the 7 params (project_id, header, body_code, footer, clear_body, clear_header, clear_footer) is documented with its exact semantics, including the None-keeps/""-clears contract.

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+resource with scope: updating custom code (header, body, footer) for a project. It does not, however, distinguish itself from the sibling get_custom_code (the read counterpart), so the agent gets no explicit routing help.

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 states a validation constraint (at least one of header/body_code/footer/clear_* must be supplied), which implies how to invoke it, but it never says when to reach for this tool versus get_custom_code for reading or update_page for other page edits. Usage is implied rather than directed.

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

update_directory_collectionB
Destructive
Inspect

Update a directory collection.

Args: project_id: The project ID. collection_id: The collection ID. name: New name (leave empty to keep current). slug: New slug (leave empty to keep current).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
slugNo
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a mutating, potentially destructive operation. The description adds partial-update semantics ('leave empty to keep current'), which is genuinely useful behavioral context beyond the annotations, but it does not explain what 'destructive' means here or any auth/permission requirements.

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

Conciseness4/5

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

Purpose is front-loaded in the first line, followed by a compact Args block. Every line is short and there is no filler, though the docstring format is functional rather than optimally structured.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Params are fully documented, but the definition is silent on usage context and sibling differentiation, leaving it adequate but not complete for a mutation tool with four siblings in the same namespace.

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 0%, so the description must carry the param burden and it does: all four parameters are documented, and the optional ones add real meaning ('leave empty to keep current') that the bare schema does not convey. The ID params are restated tautologically ('The project ID'), which caps this below 5.

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

Purpose4/5

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

The description states a specific verb and resource ('Update a directory collection'), which is clear enough for an agent to know this modifies an existing directory collection. It does not, however, distinguish itself from sibling update tools like update_directory_field, update_directory_item, or update_commerce_collection beyond the resource 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?

There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g. that the collection must already exist), and no mention of what happens on partial updates beyond the inline param notes. The agent must infer all of this.

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

update_directory_fieldB
Destructive
Inspect

Update a field in a directory collection.

Args: project_id: The project ID. collection_id: The collection ID. field_id: The field ID. label: New label (leave empty to keep current). field_type: New type (leave empty to keep current).

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
field_idYes
field_typeNo
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this mutates state. The description adds one genuinely useful behavioral detail: empty label/field_type values preserve the current value. However, given destructiveHint=true, it never explains what is destroyed, whether a field_type change migrates existing item data, or what permissions are required.

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

Conciseness3/5

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

The purpose sentence is front-loaded and the docstring is short, but the Args block mostly restates parameter names already present in the schema, with only two lines earning their place. Structure is serviceable rather than tight.

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

Completeness3/5

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

An output schema exists so return values need not be described, and annotations cover the safety profile. What is missing for a destructive field-mutation tool is the impact of changing field_type on existing items and any permission requirements. Adequate but with clear 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 0%, so the description carries the burden. It lists all five parameters, and 'New label (leave empty to keep current)' and the equivalent for field_type add real meaning. But project_id, collection_id, and field_id are documented only tautologically ('The project ID'), adding nothing over the schema titles.

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 ('Update a field in a directory collection'), which is clear enough to distinguish it from siblings like update_directory_collection, update_directory_item, and create_directory_field. It stops short of naming those alternatives explicitly, so it is clear but not sibling-differentiating.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as create_directory_field or delete_directory_field. The only contextual hint ('leave empty to keep current') describes parameter behavior rather than usage conditions.

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

update_directory_itemB
Destructive
Inspect

Update a directory item.

Args: project_id: The project ID. collection_id: The collection ID. item_id: The item ID. name: New name (leave empty to keep current). slug: New slug (leave empty to keep current). fields: JSON object of field values to update (leave empty to keep current).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
slugNo
fieldsNo
item_idYes
project_idYes
collection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 and readOnlyHint=false, so the agent knows this is a mutation. The description adds genuine behavioral detail by explaining the partial-update semantics ('leave empty to keep current') for name, slug, and fields, but never acknowledges the destructive nature or reversibility that the annotation implies.

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-loads the one-line purpose and then a compact Args list; no filler prose. Minor waste in restating ids as 'The project ID' etc., but overall tight and scannable.

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

Completeness3/5

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

With an output schema present, return values needn't be explained, and annotations carry the safety profile, so the remaining burden is modest. The missing piece is usage context and sibling differentiation, leaving the definition adequate but not complete for a destructive mutation 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 description coverage is 0%, so the description must carry the load, and it does: all six parameters are documented with meaning beyond their titles, and the partial-update rule ('leave empty to keep current') plus 'JSON object of field values' adds real semantics. The three id params are still largely tautological restatements.

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 ("Update a directory item") that an agent can distinguish from update_directory_collection and update_directory_field by resource. It does not, however, further scope what a 'directory item' is or what fields are editable beyond the param list.

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 (e.g. update_directory_collection/field), and no prerequisites such as required permissions. The description is purely a parameter dump with no routing context.

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

update_newsletter_custom_fieldA
Destructive
Inspect

Update a custom field label or validation options. OAuth scope newsletter:write. Pass a stable idempotency_key for this intended action; reuse it on retries. Use get_newsletter_schema for document, filter and field definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
optionsNo
field_idYes
project_idYes
idempotency_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing the required OAuth scope (newsletter:write) and by explaining the idempotency contract ('stable idempotency_key for this intended action; reuse it on retries'), which is genuinely useful for a retry-safe write. It stops short of explaining what the destructiveHint=true flag means in practice (e.g., whether options are replaced wholesale).

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, front-loaded with the action, then the auth/idempotency prerequisites, then the companion tool. 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?

An output schema exists so return values need not be described, and the description covers the mutation, its auth scope, retry semantics and a related read tool. The remaining gap is the semantics of the update itself (merge vs replace on options, partial-update 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 coverage is 0%, so the description must carry the burden. It clarifies label, options, and the retry semantics of idempotency_key, but leaves project_id and field_id unexplained and does not say whether label/options are partial-update fields or a full replacement.

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 ('Update a custom field label or validation options'), naming the two mutable aspects. The final sentence routes to get_newsletter_schema, which cleanly separates this mutation tool from the schema/definition reader and from create_/list_ siblings.

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

Usage Guidelines3/5

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

Usage is implied (update an existing field rather than create one), and it points to get_newsletter_schema for definitions, but it gives no explicit when-to-use/when-not or alternatives among the many update_* siblings. The idempotency instruction is operational guidance rather than tool-selection guidance.

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

update_pageA
Destructive
Inspect

Update a page's metadata: title (name), slug, SEO fields, and custom HTML. Only provided fields are updated. Slug must be unique in the project.

Args: project_id: The project ID. page_id: The page ID. name: Page display name/title (leave empty to keep current). slug: URL slug (leave empty to keep current). seo_meta_title: SEO meta title (leave empty to keep current). seo_meta_desc: SEO meta description (leave empty to keep current). seo_meta_image: SEO/OG image URL or empty to keep current. no_index: Whether to set noindex for search engines (None = keep current). custom_header_html: Custom HTML in head (leave empty to keep current). custom_footer_html: Custom HTML before closing body (leave empty to keep current).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
slugNo
page_idYes
no_indexNo
project_idYes
seo_meta_descNo
seo_meta_imageNo
seo_meta_titleNo
custom_footer_htmlNo
custom_header_htmlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: partial-update semantics ('only provided fields are updated') and a slug-uniqueness validation constraint. It stops short of permissions or failure modes, but this is solid added value.

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

Conciseness4/5

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

Front-loads purpose, then behavior constraints, then a parameter list. Every line earns its place given 0% schema coverage; repetition of '(leave empty to keep current)' is informative rather than filler, though the block is somewhat long.

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?

A mutation tool with annotations, an output schema (so return values need not be described), and all parameters documented in the description. Complete for correct invocation, missing only siblings routing and permission/error details.

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?

Schema coverage is 0%, so the description carries the full burden, and it does so well: each of the 10 parameters is documented with meaning and the 'leave empty to keep current' default behavior. This fully compensates for the undocumented 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 ('Update a page's metadata') and enumerates the affected fields (title, slug, SEO fields, custom HTML). Clear enough for an agent to act, though it does not distinguish itself from siblings like update_cms_post or update_directory_item.

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 useful constraints ('Only provided fields are updated', 'Slug must be unique in the project'), implying PATCH-style partial updates. However, it gives no explicit when-to-use vs alternatives, no prerequisites, and does not point to get_page for reading current values.

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

update_seo_settingsA
Destructive
Inspect

Patch existing platform SEO settings; omitted keys remain unchanged.

Read get_seo_settings first and send only changed editable_fields. Use this for requested or necessary site SEO/schema updates instead of duplicating Grigora's Person/Organization/LocalBusiness/WebSite JSON-LD in source.

Args: project_id: Current project's ID. settings: Object keyed by data.editable_fields from get_seo_settings. Identity: local_seo_enabled, local_seo_type (person/organization), local_seo_person_org_name, local_seo_website_name, local_seo_website_alternate_name, local_seo_url, local_seo_email, local_seo_logo. Address: local_seo_address_street/locality/region/ postal_code/country/format (each with the local_seo_address_ prefix), local_seo_geo_coordinates. Business: local_seo_business_type, local_seo_price_range, local_seo_opening_hours_format, local_seo_opening_hours ([{day,open,close}], HH:mm), local_seo_phone_numbers ([{type,number}]), local_seo_phone. Global: sitemap_frequency, sitemap_priority (0..1), robots_txt, bing_indexnow_api. Classic projects expose their own editable fields. Empty strings clear text; false disables a toggle; [] clears a list. Arrays replace the whole list. Never send raw JSON-LD or null. ai_mutation_version: Version from get_seo_settings, required when requires_version is true. On version conflict, reread and reconcile. idempotency_key: Unique key for this change, required when requires_version is true. Reuse the same key, settings and version after a timeout or retryable failure. Use a new key for a changed/reconciled request.

Returns saved settings and publish_required. Saving does not publish the site.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYes
project_idYes
idempotency_keyNo
ai_mutation_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation by disclosing exactly what gets destroyed/cleared (empty strings clear text, false disables toggles, [] clears lists, arrays replace whole lists) and by documenting version-conflict reconciliation and idempotency-key reuse rules. It also clarifies that saving does not publish the site, an important side-effect boundary.

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 purpose and sectioned Args make it easy to scan, and the long field enumeration is justified by the empty schema. It is on the dense side, but nearly every line earns its place; only minor tightening is possible.

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 complex mutation tool with a nested, undocumented settings object, the description covers the read-then-write workflow, field semantics, versioning/idempotency, clearing rules, and the fact that saving does not publish. Return values are covered by the output schema, so no gap remains.

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?

With 0% schema description coverage and a free-form nested settings object (additionalProperties: true), the description carries the full burden and delivers: it enumerates every editable field by group, gives value formats (HH:mm, 0..1), and explains ai_mutation_version/idempotency_key conditional requirements. This is exceptional compensation for an opaque 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 (Patch) and resource (existing platform SEO settings) plus a key semantic ('omitted keys remain unchanged'). It also names the sibling get_seo_settings, so an agent can immediately distinguish read vs. write in the SEO pair.

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 workflow: read get_seo_settings first, send only changed editable_fields, and use this instead of duplicating JSON-LD in source. This is a clear when-to-use with a named alternative and a stated anti-pattern, leaving nothing to inference.

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

update_url_redirectA
Destructive
Inspect

Update an existing URL redirect (full replace of all fields).

Requires a custom domain connected to the project; otherwise the API returns a 403 error.

Args: project_id: The project ID. redirect_id: The redirect ID (from list_url_redirects). source_path: Path to redirect from, e.g. "/old-page" (must not be "/"). dest_type: "internal" or "external". Defaults to "internal". dest_path: Destination path when dest_type="internal", e.g. "/new-page". dest_url: Destination URL when dest_type="external" (must start with http:// or https://). status_code: HTTP redirect code: 301, 302, 303, 304, 307, or 308. Defaults to 301.

ParametersJSON Schema
NameRequiredDescriptionDefault
dest_urlNo
dest_pathNo
dest_typeNointernal
project_idYes
redirect_idYes
source_pathYes
status_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 openWorldHint=true, so the mutation/safety profile is covered. The description adds real value beyond them: the full-replace behavior (unmentioned fields get cleared) and the 403 custom-domain requirement, which is permission-adjacent context an agent needs before invoking.

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?

Purpose and the 403 caveat are front-loaded, and the subsequent Args block is dense with no padding. Slightly verbose format but every line adds constraint information, so it earns its size.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and annotations cover the destructive profile. Combined with full parameter documentation and a stated prerequisite, the definition is essentially complete for correct invocation.

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?

Schema description coverage is 0%, so the description carries the full burden — and it does. It documents all 7 params, including constraint details the schema lacks: source_path must not be "/", dest_type values (internal/external), dest_url must start with http(s), and the allowed status_code set with defaults.

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 ("Update an existing URL redirect") and adds scoping semantics ("full replace of all fields") that distinguish it from create_url_redirect and delete_url_redirect. An agent can identify the operation without opening the schema.

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

Usage Guidelines4/5

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

Provides a concrete prerequisite (custom domain required or the API returns 403) and points to list_url_redirects as the source of redirect_id. It doesn't explicitly say when to prefer this over create_url_redirect, but the context is clear for an update tool.

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. 78 tool updates
    • First observedadd_custom_domain
    • First observedadd_page
    • First observedadd_products_to_commerce_collection
    • First observedcreate_cms_category
    • First observedcreate_cms_post
    • First observedcreate_commerce_collection
    • First observedcreate_commerce_product
    • First observedcreate_commerce_variant
    • First observedcreate_directory_collection
    • First observedcreate_directory_field
    • First observedcreate_directory_item
    • First observedcreate_newsletter_custom_field
    • First observedcreate_url_redirect
    • First observedcreate_website
    • First observeddelete_assets
    • First observeddelete_cms_category
    • First observeddelete_cms_post
    • First observeddelete_commerce_collection
    • First observeddelete_commerce_product
    • First observeddelete_commerce_variant
    • First observeddelete_directory_collection
    • First observeddelete_directory_field
    • First observeddelete_directory_item
    • First observeddelete_url_redirect
    • First observededit_website
    • First observedgenerate_commerce_variants
    • First observedget_analytics_umami
    • First observedget_asset
    • First observedget_asset_upload_urls
    • First observedget_attachment_upload_url
    • First observedget_cms_post
    • First observedget_commerce_collection
    • First observedget_commerce_product
    • First observedget_commerce_settings
    • First observedget_custom_code
    • First observedget_custom_domain
    • First observedget_directory_item
    • First observedget_newsletter_schema
    • First observedget_page
    • First observedget_project_details
    • First observedget_seo_settings
    • First observedget_website_build_status
    • First observedlist_assets
    • First observedlist_cms_categories
    • First observedlist_cms_posts
    • First observedlist_commerce_collections
    • First observedlist_commerce_products
    • First observedlist_commerce_variants
    • First observedlist_directory_collections
    • First observedlist_directory_fields
    • First observedlist_directory_items
    • First observedlist_newsletter_custom_fields
    • First observedlist_newsletter_lists
    • First observedlist_pages
    • First observedlist_projects
    • First observedlist_url_redirects
    • First observedpublish_cms_post
    • First observedpublish_project
    • First observedremove_products_from_commerce_collection
    • First observedset_commerce_collection_products
    • First observedset_commerce_product_options
    • First observedunpublish_cms_post
    • First observedupdate_cms_category
    • First observedupdate_cms_post
    • First observedupdate_commerce_collection
    • First observedupdate_commerce_inventory
    • First observedupdate_commerce_price
    • First observedupdate_commerce_product
    • First observedupdate_commerce_settings
    • First observedupdate_commerce_variant
    • First observedupdate_custom_code
    • First observedupdate_directory_collection
    • First observedupdate_directory_field
    • First observedupdate_directory_item
    • First observedupdate_newsletter_custom_field
    • First observedupdate_page
    • First observedupdate_seo_settings
    • First observedupdate_url_redirect

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
    11 npm
    1
    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