WhizzyCommerce
Server Details
Run your online shop from Claude: orders, prices, sales, catalogue and design, confirmed by you.
WhizzyCommerce is an ecommerce platform that's free until you sell. Its MCP connector lets Claude manage a WhizzyCommerce shop in plain language. You can ask which paid orders haven't shipped, mark an order as sent with tracking, raise a collection's prices by 5%, set up a discount code, write product descriptions, translate the shop into more languages or compare this month's sales with last month's.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 117 tools
Most tools have clearly distinct resource+action purposes, and descriptions differentiate similar-sounding operations (e.g., settings_details vs settings_identity, get_page vs list_pages). However, with 117 tools across many domains, some boundaries (theme design tools, settings tools) could blur for an agent, preventing a perfect score.
All names use snake_case, but the structural pattern is mixed: some follow verb_noun (get_page, set_page_sections), others noun_verb (orders_cancel, customers_create), and several are noun-only (blog_posts, shop_state). This inconsistency is readable but not predictable.
117 tools is an extreme number for any server, far exceeding the 50+ threshold for extreme mismatch. Even for a broad commerce platform, the surface is unwieldy and likely to overwhelm an agent's selection process.
The surface covers many domains comprehensively (products, orders, customers, themes, settings), but notable gaps exist: blog posts can be read and created but not edited or deleted; customers lack a general edit operation; discounts have no update/delete; gift cards have no list. These missing lifecycle operations will force agents to work around limitations.
Available Tools
117 toolsblog_postsCRead-onlyInspect
Blog posts. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 20. | |
| status | No | Default all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, and "Read-only; changes nothing" simply repeats that. The only novel claim, "Money is integer minor units (cents)," is irrelevant to a schema containing limit and status, so it adds noise rather than behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences, front-loaded, no padding or repetition in form. However, the money/cents sentence does not earn its place for a blog-post reader and the read-only sentence duplicates structured annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with annotations covering safety, the description still omits the central facts: that it lists posts, their ordering, and that results are limited/paginated. That framing survives only in the schema's own description text, not in the tool description an agent selects from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit default 20, status default all), so the schema already documents both parameters; per the high-coverage baseline this is a 3. The description contributes no parameter semantics at all, and its currency note does not apply to either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Blog posts" merely restates the tool name and never states a verb or action — an agent cannot tell from the description alone whether this lists, counts, or retrieves posts. The sibling blog_posts_create exists, so an explicit contrast (read vs. create) was available and unused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternatives are given. A sibling named blog_posts_create makes the omission more glaring, since the obvious selection question is 'read vs. write' and the description never addresses it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_posts_createCInspect
Write a blog post. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The post as HTML: <p>, <h2>, <h3>, <ul>, <a>. Markdown is not read. | |
| tags | No | Made when missing. | |
| title | Yes | ||
| author | No | An existing author by name or address. | |
| handle | No | The web address under the blog. Made from the title when omitted. | |
| status | No | Default draft. | |
| excerpt | No | A short plain-text summary shown in lists. Made from the body when omitted. | |
| coverAlt | No | What the cover shows, for screen readers and search engines. | |
| coverUrl | No | The cover picture: a public http(s) address of an image. It is fetched and copied onto the shop's storage. | |
| featured | No | ||
| categories | No | Existing categories by name or address; unknown ones are skipped. | |
| seoDescription | No | What search engines show, under 160 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Calling this changes nothing: it returns a preview of what would change and a confirmation link,' which asserts pure read-only behavior, while the annotations declare readOnlyHint=false. Per the MCP semantics of readOnlyHint ('the tool does not modify its environment'), the stated preview-only behavior should be readOnlyHint=true, so description and annotation give the agent directly conflicting signals about whether the call has side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, and the purpose is front-loaded. The middle sentence about money in minor units earns nothing here and appears to be copied from a commerce tool, diluting an otherwise lean block of text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter create tool with no output schema, the description supplies the single most important missing piece: that the call returns a preview plus a confirmation link and only the merchant can commit it, which is exactly what an agent needs to set expectations. Parameter detail is largely delegated to the 83%-covered schema, though the irrelevant money sentence slightly weakens the whole.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents body HTML, author, handle, cover, excerpt, categories, tags and status; the description does not need to restate them. The one parameter-flavored sentence ('Money is integer minor units (cents)') is a stray artifact — this tool has no monetary parameter — so it adds noise rather than meaning. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb+resource ('Write a blog post') that maps cleanly to blog_posts_create and reads distinctly from the list-style sibling blog_posts. It does not, however, distinguish itself from other content-writing siblings such as upsert_content or set_page_sections, so the agent gets no boundary guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this tool over blog_posts (list), upsert_content, or any other content-writing sibling, and no prerequisites or exclusions. The confirmation-workflow sentence describes behavior after selection rather than the conditions that should trigger selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
branding_setAInspect
Set the shop's logo and the one its emails carry. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| logoUrl | No | The storefront logo: an https:// address of an image, or a path under the shop's own address that an upload gave. Empty removes it and the header shows the shop's name. | |
| logoWidth | No | The storefront logo's width in pixels, 8 to 600; null lets it follow the other side. Setting one side keeps the picture's proportions. | |
| logoHeight | No | The storefront logo's height in pixels, 8 to 600; null lets it follow the other side. Setting one side keeps the picture's proportions. | |
| emailLogoUrl | No | The logo at the top of every email the shop sends, same rules as logoUrl. Kept separate because mail clients cannot resize what the storefront can. | |
| emailLogoWidth | No | The email logo's width in pixels, 8 to 600; null lets it follow the other side. Setting one side keeps the picture's proportions. | |
| emailLogoHeight | No | The email logo's height in pixels, 8 to 600; null lets it follow the other side. Setting one side keeps the picture's proportions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states "Calling this changes nothing: it returns a preview of what would change and a confirmation link," while the annotations declare readOnlyHint=false and idempotentHint=false. A no-side-effect preview call is by definition read-only and idempotent, so the description directly conflicts with the structured safety/idempotency signals an agent relies on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and the operational facts (preview, confirmation link, merchant-only completion) come before any caveat. One of four sentences is dead weight — the money-units sentence is irrelevant to a tool with no monetary parameters — so it is not flawless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing the return, and it does the essential part: it tells the agent the response is a preview plus a confirmation link and that the mutation happens out of band. It does not describe what the preview payload contains, which is a modest remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself fully documents URLs, null semantics, pixel ranges, and aspect-ratio behavior, so the baseline is 3. The description adds no parameter meaning at all — its only parameter-adjacent sentence, "Money is integer minor units (cents)," refers to no parameter in this schema and is a stray from another tool's template.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and two distinct resources: "Set the shop's logo and the one its emails carry." An agent can immediately tell this is the branding/logo tool rather than a theme, identity, or content tool, and the storefront-vs-email distinction is stated up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the calling context: invoking it produces a preview of what would change plus a confirmation link, and only the merchant on that page can complete the change. That is strong when-to-use context, but no alternative tool or condition for choosing a different path is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
changes_statusARead-onlyInspect
What became of a change proposed here: pending, confirmed, rejected or expired, by the change_id a capability tool or propose_plan returned. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| change_id | Yes | The change_id from the proposal, prp_... |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so 'Read-only' is largely redundant. The real added value is the enumeration of the four terminal states (pending, confirmed, rejected, expired), which tells the agent what values to expect given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence plus a two-word safety clause, front-loaded with the outcome question and the four states, with no filler. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with no output schema, the description covers the essential missing piece - the set of possible return states - and points to the source of the id. It stops short of describing behavior on an unknown or expired id, which is the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented there (including the prp_ prefix), so the schema carries the parameter burden. The description adds minor context by stating where the change_id originates (a capability tool or propose_plan), which is the baseline 3 for a fully-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (report the outcome of) and resource (a proposed change) and enumerates the four possible states, so an agent knows exactly what it returns. It is slightly indirect in phrasing ('What became of a change proposed here') and does not name a sibling it competes with, which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the mention of 'the change_id a capability tool or propose_plan returned' tells the agent this is a follow-up check after a proposal, but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g., the state tools like promotions_state or shop_state).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_own_themeARead-onlyInspect
Check that an own theme installs, and list anything the installer would drop. Changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The theme's slug, as list_own_themes shows it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; 'Changes nothing' reinforces that. The description goes further by disclosing what the check reports ('list anything the installer would drop'), which is genuine behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly-written sentence with the action and outcome front-loaded and the 'Changes nothing' reassurance trailing. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only validation tool with one fully-documented parameter and annotations covering safety, the definition supplies both the purpose and the expected output ('what the installer would drop'). No output schema exists, but the description adequately covers the return without over-explaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema already documents 'slug' and even points to list_own_themes for the format. The description adds no parameter semantics beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (own theme) plus the exact deliverable: verifying installability and listing what the installer would drop. This clearly separates it from create_own_theme (which actually installs), though it does not 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Changes nothing' implies this is a safe pre-install validation step, but the description never states when to reach for it versus create_own_theme or stage_own_theme. 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.
collections_add_productsAInspect
Put products in a category. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| products | Yes | The products, each by id, handle or SKU. | |
| collection | Yes | The category, by id, handle or exact title. Must be a manual one; an automatic category's rules decide what is in it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Strong disclosure beyond the annotations: the description states the call is non-mutating ('changes nothing'), that it returns a preview plus a confirmation link, and that only the merchant can complete the change. That two-phase behavior is exactly the context annotations (readOnlyHint=false, destructiveHint=false) cannot convey. It is docked one point for the stray 'Money is integer minor units (cents)' line, which is irrelevant to a tool with no monetary parameters and adds confusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The verb+resource leads, and the workflow explanation is tight and front-loaded. It loses a point because the 'Money is integer minor units (cents)' sentence does not earn its place in a tool with no money parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain the return contract, and it does: a preview of what would change plus a confirmation link, completed only by the merchant. Combined with full schema coverage of both parameters, an agent has what it needs. A slightly fuller picture of the preview or failure modes would be needed for a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both `products` (id/handle/SKU) and `collection` (id/handle/title, must be manual). The description adds no parameter-level detail, and its only numeric remark concerns money, which does not map to either parameter. Baseline 3 is correct when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Put products in a category.' This is clearly distinct from the obvious siblings (collections_remove_products, collections_set_rules, collections_edit), so an agent can tell what it does without reading the schema. It stops short of explicitly naming a sibling or the scope boundary (manual vs automatic categories lives only in the schema), so it is not a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you call this to add products to a category, and the closing sentence implies the two-phase confirmation flow. There is no explicit 'use this instead of X' routing, no exclusion of automatic categories in the description text, and no prerequisites stated, even though collections_remove_products and collections_set_rules are obvious alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collections_createAInspect
Add a category. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The category's name as shown in menus and at the top of its page, e.g. "Kitchen". | |
| handle | No | The web address segment. Derived from the title when omitted. | |
| parent | No | The category this one sits under, by id, handle or exact title. Omit for a top-level category. | |
| imageUrl | No | Absolute URL of the category's picture, used by menus and category tiles. Empty clears it. | |
| isVisible | No | Default true. false keeps it out of menus until the merchant is ready. | |
| description | No | Plain text shown at the top of the category page. Empty clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description goes substantially beyond that by disclosing the two-step preview/confirmation flow, what the call actually returns, and that the real state change happens out-of-band by the merchant. This is exactly the kind of behavior an agent cannot infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with the purpose front-loaded and the critical preview behavior stated plainly. The money/cents sentence is unrelated to any parameter in this schema and reads like carry-over from another tool, which is the one wasted line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description carries the important load: it explains the return (preview plus confirmation link) and why calling it is safe. It would be complete with a note on how edits to an existing category are routed, but nothing essential for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (title, handle, parent, imageUrl, isVisible, description) are already documented in the schema. The description adds no parameter meaning at all, and the one detail it does offer ('Money is integer minor units (cents)') refers to a field that does not exist in this tool's schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Add a category' gives a specific verb and resource that separates it from collections_edit and collections_delete by name alone. It does not explicitly name a sibling or scope boundary, but the create-vs-edit distinction is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the confirmation flow ('Only the merchant, on that page, can make it happen'), which tells the agent this is a request-producing preview rather than a direct write. However, it never states when to reach for collections_edit instead, or any prerequisites such as needing a parent to exist first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collections_deleteADestructiveInspect
Delete a category. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | The category to delete, by id, handle or exact title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the call itself is non-mutating, it returns a preview plus a confirmation link, and only the merchant can complete the action. This reconciles the flow with destructiveHint=true since the destruction happens later, though the description does not say what the preview contains, whether the confirmation link expires, or what other data (e.g. products in the category) is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavioral sentences are tight and front-loaded, but the stray "Money is integer minor units (cents)" line is pure noise for a tool with no monetary parameter and reads as copy-paste from another definition. Removing it would leave a clean three-sentence definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers the critical surprises: no immediate side effect, preview return, confirmation-link step, and merchant-only authorization. It is only mildly incomplete on what the preview reports and whether the destructive action is attributable to this call at all.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's description already covers id/handle/title lookup forms, so the baseline is 3. The one parameter-related sentence in the description, "Money is integer minor units (cents)," is irrelevant to this tool and adds no meaning about the collection argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a category") that cleanly separates it from collections_create, collections_edit, and collections_add_products. It does not name or contrast any sibling explicitly, and the word "Delete" is slightly at odds with the preview-only behavior described later, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the two-step workflow ("returns a preview... Only the merchant, on that page, can make it happen"), which tells the agent this is an initiation step, not a final deletion. However, it never states when to reach for this versus alternatives such as collections_edit, nor any prerequisite about being in a merchant-authenticated session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collections_editCInspect
Change a category. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | The category's name as shown in menus and at the top of its page, e.g. "Kitchen". | |
| handle | No | A new web address segment. Changing it breaks every link and search result pointing at the old one, so only when asked for. | |
| parent | No | Where it sits: a category by id, handle or exact title, or null to move it to the top level. Omit to leave it where it is. | |
| imageUrl | No | Absolute URL of the category's picture, used by menus and category tiles. Empty clears it. | |
| position | No | Its place among its siblings, 0 for first, counted among the siblings it will have after this change. Omit to keep its place. | |
| seoTitle | No | The title search results show for this category page, about 60 characters. Empty falls back to its name. | |
| isVisible | No | false hides the category from menus and listings; it still opens at its address, which is how a soft launch works. | |
| collection | Yes | The category to change, by id, handle or exact title. | |
| description | No | Plain text shown at the top of the category page. Empty clears it. | |
| seoDescription | No | The line under the title in search results, about 155 characters. Empty falls back to its description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts "Calling this changes nothing," which is the definition of a read-only operation, yet the annotations declare readOnlyHint=false. This is a direct conflict about whether the environment is modified, so the agent gets contradictory signals about the tool's mutability. Annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentences about the preview/confirmation flow are front-loaded and efficient. However, the standalone "Money is integer minor units (cents)" sentence is a non-sequitur for this tool and does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation-flow tool the schema carries the parameter detail, and the description usefully explains the two-phase preview/confirm behavior. But the unresolved mutability conflict with readOnlyHint=false, plus the absence of any when-to-use guidance, leaves the agent with an incomplete and inconsistent picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all ten parameters in detail and the description need not compensate. The one parameter-ish note it does add, "Money is integer minor units (cents)," is irrelevant here because no money parameter exists, so it adds no real semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Change a category") that clearly separates it from siblings like collections_create, collections_delete, and collections_add_products. Minor terminology drift between the tool name (collections_edit) and the word "category" used throughout, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what happens when you call it but never says when to reach for it versus alternatives, and there are no exclusions or prerequisites. Usage is only implied (use it to modify an existing category's attributes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collections_remove_productsBInspect
Take products out of a category. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| products | Yes | The products, each by id, handle or SKU. | |
| collection | Yes | The category, by id, handle or exact title. Must be a manual one; an automatic category's rules decide what is in it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states "Calling this changes nothing" and that only a separate merchant confirmation can effect the change, which asserts read-only behavior; the annotations declare readOnlyHint=false (and idempotentHint=false), asserting the opposite. This is a direct annotation contradiction, so per the rubric this scores 1 despite the otherwise useful preview/confirmation-flow detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, which is good. But the second sentence, "Money is integer minor units (cents)," is irrelevant to this tool (there is no money/price parameter) and does not earn its place, cluttering an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description usefully fills that gap by explaining what the call returns — a preview of what would change plus a confirmation link — and who can act on it. That covers the essential workflow context for a two-parameter preview tool, though the readOnlyHint mismatch leaves the effect picture inconsistent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (products by id/handle/SKU, collection by id/handle/title and must be manual). The description adds no parameter detail and its only param-adjacent statement — "Money is integer minor units (cents)" — maps to no parameter at all, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Take products out of a category" is a specific verb+resource and is the clear inverse of the sibling collections_add_products, so an agent can distinguish the direction of the operation. It stops short of naming the sibling or scoping it (e.g. vs collections_edit or collections_set_rules), so it is clear but not maximally differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage and adds the important caveat that the call alone cannot complete the removal ("Only the merchant, on that page, can make it happen"), which tells the agent this is a preview step. However, it never states when to choose this versus alternatives like collections_edit or collections_set_rules, nor any prerequisite beyond what the schema already says about manual categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collections_set_rulesCInspect
Make a category fill itself, or arrange it by hand. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | manual: a shelf the merchant arranges by hand. smart: fills itself from the conditions below, evaluated live. | |
| sort | No | The order products are shown in: newest (newest first), bestselling (best selling first), price_asc (cheapest first), price_desc (dearest first), title (by name). Default newest. | |
| match | No | Whether a product must meet all the conditions or any one of them. Default all. | |
| rules | No | The conditions. REPLACES the whole list, so pass all of them. No conditions with kind smart means every active product, in the chosen order, which is what a Bestsellers category is. | |
| collection | Yes | The category, by id, handle or exact title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds genuinely useful workflow context (a preview/confirmation-link design and merchant-only approval) that the annotations do not cover. However, it asserts 'Calling this changes nothing', which directly conflicts with readOnlyHint=false and idempotentHint=false, and its money-units claim conflicts with the schema's 'Price in major units'. These conflicting claims reduce trust rather than build it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and the workflow point is front-loaded after an evocative opener, but the money-units sentence does not belong here (no money parameter outside rules.value, where it is contradicted) and the first sentence is cryptic rather than informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the return value (a preview of changes plus a confirmation link) and the deferred-effect model. It is nonetheless incomplete on the core action it performs and carries an internally inconsistent units claim, so an agent is left partly unsure what a successful call actually produces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the schema already documents kinds, sort, match, rules and their enums in detail. The description's only added parameter information is 'Money is integer minor units (cents)', which contradicts the schema's note that rules.value price is in major units, so it harms rather than helps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the two modes poetically ('Make a category fill itself, or arrange it by hand') and maps to the smart/manual kinds, so the effect is inferable. But it never says it sets a collection's rules, and it does not differentiate itself from close siblings such as collections_edit, collections_create, or collections_add_products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the confirmation flow ('Only the merchant, on that page, can make it happen') but gives no guidance on when to pick this over collections_edit or collections_create, nor any prerequisites. An agent must infer the selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_own_themeAInspect
Start a theme of the merchant's own, from the starter theme (complete, installs as is) unless asked for a blank one. Use when the merchant wants a design from scratch rather than changes to the theme they wear. Call get_design_guide first: it has the file format and the layout language.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | ||
| name | No | ||
| slug | Yes | Lower case letters, digits and dashes, 3 to 40 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuine context: the starter theme is 'complete, installs as is', and it imposes an ordering dependency via get_design_guide. It stops short of stating that repeated calls create distinct themes or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, and the default-source behavior plus the prerequisite are front-loaded before trailing detail. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter creation tool with no output schema, the description covers the essential default behavior and the mandatory precondition. It leaves minor gaps around naming semantics and post-creation result, but nothing that would cause a mis-invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only slug documented), so the description must compensate. It does communicate the effective default for `from` (reference starter theme unless a blank one is asked for), which is real added meaning, but says nothing about `name`, the other undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a theme of the merchant's own') and pins the default source ('from the starter theme ... unless asked for a blank one'). An agent can separate this from sibling write_own_theme_files or set_theme_settings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the selecting condition ('when the merchant wants a design from scratch rather than changes to the theme they wear') and the alternative it is not, plus a required prerequisite ('Call get_design_guide first'). This is exactly the when/when-not/alternative structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_change_emailAInspect
Move a customer to another email. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The address on the file now. | ||
| newEmail | Yes | The address it should move to. Past orders keep the address they were placed with. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations present (readOnlyHint=false, destructiveHint=false, idempotentHint=false) the bar is lower, and the description still adds meaningful behavior: a dry-run preview and a merchant-gated confirmation step. The one tension is that 'Calling this changes nothing' sits awkwardly against readOnlyHint=false, though the preview-link mechanism explains the non-read-only classification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentences are front-loaded and efficient, but 'Money is integer minor units (cents)' is boilerplate carried over from a payment tool and has no bearing on this tool, diluting an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema or annotations on returns, the description supplies the essential missing piece: the call produces a preview and a confirmation link rather than an immediate change. Only the stray money sentence and the unstated reason for readOnlyHint=false keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented (including the 'past orders keep the address they were placed with' nuance). The description adds nothing about email/newEmail, and its one numeric remark concerns money units, which is irrelevant here. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource ('Move a customer to another email'), and the preview/confirmation detail implicitly separates it from customers_create, customers_lookup, or customers_delete. It stops short of explicitly naming a sibling or scope boundary, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong call-context: invoking it changes nothing immediately, it returns a preview plus a confirmation link, and only the merchant can complete the change on that page. That effectively tells the agent when to call it (to initiate, not to commit) without naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_createBInspect
Add a customer. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| notes | No | ||
| phone | No | ||
| address | No | ||
| lastName | No | ||
| firstName | No | ||
| acceptsMarketing | No | Only when the person agreed to it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that the call is a non-mutating preview requiring merchant confirmation on a separate page, which explains why readOnlyHint=false despite the name. The 'Money is integer minor units (cents)' sentence is irrelevant here since this schema has no monetary parameters, and no auth or rate-limit behavior is mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the preview semantics are front-loaded, and the prose is tight overall. But the money-units sentence earns nothing for this tool and dilutes an otherwise well-structured three-sentence definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does useful work by describing what the call returns (a preview of changes and a confirmation link). Yet for a seven-parameter create tool with a nested address object and near-zero schema documentation, the field-level semantics are left entirely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (just acceptsMarketing), so the description carries the burden for seven parameters, including a nested address object, and it provides none of that. Its one parameter-adjacent sentence concerns money units, which no parameter in this schema uses, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a customer') and immediately corrects the expectation by explaining it only produces a preview plus a confirmation link. That makes the tool distinguishable from customers_lookup, customers_delete, and other customer siblings, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Only the merchant, on that page, can make it happen' implies the agent should call this to propose a change rather than to complete one, which is useful context. However there is no explicit when-to-use/when-not guidance and no routing to alternatives such as customers_lookup for duplicate checking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_deleteADestructiveInspect
Delete a customer. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The customer's email, as on their file. Their orders stay; the person is removed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavior the annotations flatten: destructiveHint=true and readOnlyHint=false only say 'this may destroy something', while the description explains that the invocation itself is non-mutating, returns a preview of the would-be change plus a confirmation link, and that only the merchant on that page can actually execute the deletion. That guardrail is exactly the context an agent needs before deciding whether to call it and how to report the result. Nothing here contradicts the annotations — it clarifies a two-step flow the hint flags 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the critical preview/confirmation behavior are front-loaded, which is good, but the 'Money is integer minor units (cents)' sentence is irrelevant to a customer-deletion tool with a single email parameter and reads as boilerplate leakage. That sentence does not earn its place and actively risks confusing the agent about expected inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool whose annotations already carry the destructive/idempotency profile, the description covers the essential facts: what happens on call, who can complete the action, and that the customer's orders survive. Minor gaps remain (behavior when the email matches no customer, what the preview contains), and the stray money sentence is noise rather than missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter's meaning (email as on file; orders are retained, the person is removed) is already fully documented in the schema, so the baseline of 3 applies. The description adds no parameter meaning and instead injects an off-topic 'Money is integer minor units (cents)' line that does not correspond to any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Delete a customer') and immediately qualifies it as a deletion-request that returns a preview plus a confirmation link, so the agent knows this is not an immediate hard delete. It does not compare itself to sibling customer tools (customers_change_email, customers_create, customers_lookup), but the resource is unambiguous enough that differentiation is not a real risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description explains the workflow (call it, get a preview and confirmation link, then the merchant confirms on the page), which tells the agent when this is the right entry point for removing a customer. It gives no explicit when-not-to-use conditions and never names an alternative path, so guidance remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_lookupCRead-onlyInspect
Look a customer up. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A name or part of one, when the email is not to hand. | |
| No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
'Read-only; changes nothing' merely restates readOnlyHint=true and destructiveHint=false, earning no credit against the annotation bar. The only novel claim, 'Money is integer minor units (cents)', is irrelevant to a tool whose schema contains no monetary fields, so it adds no useful behavioral context and risks confusing the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, which is good structure. However, the final sentence about money units is wasted text for this tool, so one of three sentences does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and zero required parameters, the description should clarify what is returned (single customer vs. list, partial-match behavior) and that at least one of name/email is expected. It covers neither, and the irrelevant money note dilutes what little guidance is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: the 'name' parameter is documented but 'email' has no description in either schema or description. The description adds no parameter meaning at all (its money note maps to nothing), so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look a customer up'), which is clearly distinguishable from write-oriented siblings like customers_create and customers_delete. It does not, however, explicitly differentiate itself from adjacent reads such as orders_lookup, 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.
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 alternative routing. The only implicit guidance comes from the name parameter's note about using a name 'when the email is not to hand', which hints at lookup modes but is buried in the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_messageBInspect
Email a customer. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The whole message as it should arrive, greeting and sign-off included; nothing is added. Blank lines separate paragraphs. | |
| Yes | The customer's email, as on their file. | ||
| subject | Yes | The subject line. It is the only part most people read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts 'Calling this changes nothing', but the annotations declare readOnlyHint=false, i.e. the tool may modify its environment. These are direct, mutually exclusive claims about side effects. The rest of the disclosure (returns a preview plus a confirmation link, merchant-gated execution) is genuinely valuable, but the read/write conflict makes the safety profile unreliable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the purpose correctly, and the preview/confirm sentences are load-bearing. The 'Money is integer minor units' sentence, however, earns nothing for a tool with no monetary argument and should have been dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-required-param tool with no output schema, the description usefully describes the two-step preview-then-merchant-confirms return behavior, which is the main thing an agent needs. It is undercut by the readOnly conflict: the agent cannot tell from the definition whether calling it is truly side-effect free.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so body/email/subject are already fully documented at the field level, giving a baseline of 3. The only parameter-adjacent sentence in the description ('Money is integer minor units (cents)') refers to a field that does not exist on this tool, so it adds no meaning and is at best neutral noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource ('Email a customer'), which is unambiguous and clearly separates it from siblings such as customers_note, customers_lookup, and customers_change_email. An agent can pick this tool for 'send a message to a shopper' 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied (this is the tool for emailing a customer) and the description does explain the operational flow it participates in. However, it names no alternatives, no exclusions, and no prerequisites beyond the embedded confirmation step, so an agent gets no explicit routing guidance against the other customers_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_noteAInspect
Note something on a customer. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | What the file should say. With append, the line to add below what is there. | |
| Yes | |||
| append | No | Add below the existing note instead of replacing it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the two-step flow: the call only returns a preview plus a confirmation link, and only the merchant on that page can commit the change. The only friction is the dangling 'Money is integer minor units (cents)' sentence, which is irrelevant to a tool with no monetary parameter and reads like a copy-paste artifact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and the no-side-effect caveat. The money-units sentence is dead weight that could be removed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema mutation tool, the description covers the essential behavior: what happens on call, what the caller receives, and who can finalize. Only minor gaps remain (what the preview contains, error/edge behavior).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; the schema already documents 'note' and 'append' in detail, and the description adds nothing about these parameters. The money-units sentence does not map to any actual parameter, so it adds no real semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Note something on a customer') that an agent can immediately distinguish from customers_message, customers_lookup, or orders_note. It is clear but never explicitly names or rules out those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains that the call itself is a no-op pending confirmation, but gives no guidance on when to prefer this over customers_message or orders_note, nor any prerequisites (e.g., customer must exist). Context is implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_reset_passwordBInspect
Send a customer a sign-in link. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The customer's email, as on their file. Shoppers have no password; this sends the link that signs them in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that calling it mutates nothing, returns a preview plus a confirmation link, and requires the merchant to act on a page before anything happens - genuinely useful context for a 'reset' tool. The stray 'Money is integer minor units (cents)' sentence is irrelevant to this tool and adds noise, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Mostly tight and front-loaded, but the second sentence about money being in integer minor units is entirely off-topic for a one-email-parameter tool, wasting space and risking confusion. Removing it would sharpen the definition considerably.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers the important behavior (preview, confirmation link, merchant gate) adequately. The remaining gaps are the absence of when-to-use guidance and the irrelevant money sentence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'email' parameter is fully documented in the schema, so baseline is 3. The description adds only the contextual note that shoppers have no password and this link signs them in, which is helpful framing but not new parameter syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb+resource ('Send a customer a sign-in link') and reconciles the misleading name by noting shoppers have no password. However, it never contrasts the tool with close siblings like customers_message, customers_note, or customers_change_email, so an agent gets no help distinguishing it from the other customer-contact tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does mechanically but gives no guidance on when to prefer it over alternatives, and names no sibling. A reader is left to infer the use case from 'this sends the link that signs them in.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
define_sectionAInspect
Author a new kind of section for this shop, as a layout tree. Use this when the shop has nothing that does what the merchant asked for. The type is forced into the custom. namespace and cannot shadow a built-in or the theme's. If it is refused you get the exact reasons back; fix them and try again. Call get_design_guide first if you have not: it has the layout language and the rules.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Lower case, dashes. Becomes custom.<name>. | |
| definition | Yes | label, category, description, icon, fields (the settings it takes) and render (the layout tree). See the DSL reference in your instructions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint=false, destructiveHint=false, openWorldHint=false), and the description adds real behavioral context: the type is forced into the custom. namespace, cannot shadow a built-in or theme section, and refusals return the exact reasons for retry. It stops short of describing persistence or the response shape but adds genuine value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then conditions, constraints, and the prerequisite. Every sentence is functional; it is slightly dense but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with a nested definition object and no output schema, the description covers purpose, when-to-use, constraints, failure behavior, and the prerequisite guide. The main remaining gap is any detail on what the successful response returns, though error behavior is addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented (name format, definition structure). The description reinforces the naming constraint ('custom.<name>') but adds little syntax or format detail beyond the schema. Baseline 3 applies when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Author a new kind of section for this shop, as a layout tree.' This clearly distinguishes it from siblings like list_section_types, set_page_sections, and get_design_guide, which inspect or apply existing sections rather than define a new one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('when the shop has nothing that does what the merchant asked for') and names a prerequisite ('Call get_design_guide first if you have not'). The alternative and the condition that selects it are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discounts_catalog_saleBInspect
Run a sale. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | What the shopper sees it called. | |
| endsAt | No | ISO 8601. Omit to run until turned off. | |
| filter | Yes | Which products the sale covers. Give exactly one of all, collectionId, tag, vendor. | |
| startsAt | No | ISO 8601. Omit to start immediately. | |
| percentBps | Yes | Basis points off: 20% is 2000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral value beyond the annotations - it explains the deferred model (preview + confirmation link, merchant-only activation), which the structured fields do not convey. But it directly conflicts with readOnlyHint=false by asserting 'Calling this changes nothing', so the agent receives contradictory safety signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no padding; the core action leads and the safety caveat follows. The money-units sentence does not map to any parameter here, so it is slight wasted space, but overall the structure is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates well by stating what the call returns (a preview of changes and a confirmation link). With a nested filter object fully described in-schema and no output schema to carry return semantics, this is nearly complete, missing only what happens on the confirmation page.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (name, filter, percentBps, startsAt, endsAt) is already documented in the schema and the baseline is 3. The description adds nothing for the actual parameters - the 'integer minor units (cents)' note refers to money, yet no parameter in this schema takes a money amount, making it orphan guidance rather than parameter clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Run a sale') that an agent can map to the catalog-discount domain. It is clear what the tool does, but it never names or contrasts itself with the closer siblings (discounts_coupon, promotions_set_active, promotions_edit), so sibling disambiguation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it by describing the confirmation flow ('Only the merchant, on that page, can make it happen'), which signals this is a request-a-sale step rather than an immediate effect. However, it gives no explicit when/when-not guidance and never points to discounts_coupon or promotions_* as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discounts_couponAInspect
Create a coupon code. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | What the shopper types at checkout. | |
| kind | Yes | ||
| name | No | What the order line calls it. Defaults to the code. | |
| value | Yes | Basis points for percentage (20% is 2000), minor units (cents) for fixed. | |
| endsAt | No | ISO 8601. Omit to run until turned off. | |
| startsAt | No | ISO 8601. Omit to start immediately. | |
| usageLimit | No | Total redemptions across everyone. | |
| minSubtotal | No | Minor units. Basket must reach this before the code applies. | |
| freeShipping | No | Delivery is free when the code applies. | |
| perCustomerLimit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give only the generic readOnly/destructive/idempotent flags; the description adds the genuinely important behavioral fact that nothing is committed until a human merchant confirms on the returned link, plus the confirmation-link return shape. Note the mild tension with readOnlyHint=false ('changes nothing'), but the description is clarifying the two-phase flow rather than flatly contradicting a safety flag, so no contradiction is flagged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core action stated first and the surprising part (no real change, confirmation link) immediately after. The minor-units sentence is slightly redundant with the schema but earns its place as a money-format warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining what the call returns (a preview of changes and a confirmation link). For a 10-parameter create tool this is largely sufficient, though it says nothing about code-uniqueness or validation failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 80%, and the one parameter fact the description adds — money in integer minor units (cents) — merely restates what the schema already says for 'value' and 'minSubtotal'. With the schema doing the heavy lifting, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ('Create a coupon code'), which is enough to distinguish it from most siblings. It does not, however, contrast itself with the closest sibling, discounts_catalog_sale, leaving the agent to infer which discount mechanism to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operating context: calling it produces only a preview plus a confirmation link, and the merchant must act on that page. That is strong guidance on what invoking the tool achieves. It stops short of naming alternatives (catalog sale, promotions_edit) or exclusions, so it does not reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_guideARead-onlyInspect
The design guide: how pages, the header and footer, sections and themes work here, and the complete layout language (node types, expressions, components, CSS rules) that define_section and theme files are written in. Call it once before designing anything. With section, returns that theme or custom section's full definition (fields, render tree, CSS) as a worked example. With reference, the full reference the developer docs publish: "components" (every component's props and slots), "scopes" (every field in scope: product, cart, collection, search, account, order, blog), "data" (data sources), or one component's name. Read it before deciding something cannot be done: most of what a theme needs already exists there.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | A section type from list_section_types, e.g. luxor.footer or custom.banner. | |
| reference | No | components, scopes, data, or a component name such as reviews or search-results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/not-destructive/closed-world, so the safety profile is covered. The description adds real behavioral context by explaining what each invocation mode yields: with `section`, a worked example with fields, render tree, and CSS; with `reference`, the developer-docs reference broken into components/scopes/data. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then explains modes and the pre-design invocation rule. It is longer than most tool descriptions but each sentence carries information (what it covers, when to call it, what each param returns). Slight redundancy around the "read it before" framing but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-output-schema tool with two optional documented parameters, the description is complete: it covers purpose, trigger timing, and the return shape per mode. An agent has everything needed to decide to call it and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description meaningfully expands on both parameters: it clarifies that `section` returns a full worked definition (fields, render tree, CSS) and that `reference` accepts components, scopes, data, or a single component name. This adds semantic value beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the design guide) and enumerates exactly what it covers: pages, header/footer, sections, themes, and the layout language (node types, expressions, components, CSS rules). It ties itself to the broader workflow by naming define_section and theme files as the things written in this language, distinguishing it from sibling tools like define_section and list_section_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call it once before designing anything" and "Read it before deciding something cannot be done" give clear timing and trigger conditions. It does not name a competing alternative to route away from, but the placement advice (call first, call before designing) is strong, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageARead-onlyInspect
Read one page's current layout as a list of sections. Returns the draft if there is one, otherwise what is live. Call this before changing a page so you are editing what is actually there.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | From list_pages, e.g. "home". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, non-open-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond them: it reveals that the read reflects the draft when one exists, falling back to live — a precedence rule an agent could not infer from the schema or hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, return semantics, and the precondition. The core purpose is front-loaded and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description conveys what comes back (a list of sections) and which version is returned (draft over live), plus when the call is needed. For a one-parameter read tool, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage, the schema already documents handle ("From list_pages, e.g. 'home'"). The description adds nothing about the parameter, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read one page's current layout as a list of sections"), and the phrase "one page" scopes it against the sibling list_pages, which returns many. An agent can distinguish it from set_page_sections 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition: "Call this before changing a page so you are editing what is actually there," which effectively pairs it with the section-writing sibling. It does not name set_page_sections or state when not to call it, so it falls just short of the full when/when-not/alternative ideal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_theme_settingsBRead-onlyInspect
The installed theme's own settings and their current values.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds only that values are 'current' and scoped to the 'installed' theme, but says nothing about whether an installed theme is required, what happens if none is active, or the shape of the returned settings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence fragment with no filler or repetition. It is efficient, though the fragment lacks an explicit verb, which slightly weakens scannability compared with a full verb+resource statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with annotations covering safety and no output schema, the definition is minimally viable but thin. It does not describe what the settings look like on return or how they relate to the set_theme_settings counterpart, leaving the agent to discover the payload structure by calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The empty schema with additionalProperties=false is fully consistent with the description's parameterless read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource ('the installed theme's own settings and their current values'), making clear this is a read of theme-level settings rather than store settings. It does not name or contrast with the obvious sibling set_theme_settings, so the agent must infer the read/write pairing 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.
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 the write counterpart set_theme_settings, and no indication of how this differs from adjacent readers like get_theme_tokens or check_own_theme. 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.
get_theme_tokensBRead-onlyInspect
The shop's colours, fonts and shape, with their current values.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only a small behavioral detail — that values are 'current' (live rather than defaults) — with nothing about auth scope, caching, or fallback behaviour, which is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no redundancy and the content front-loaded. It is economically sized, though the verbless fragment construction makes it slightly less self-contained than a proper verb+resource sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the job of explaining what is returned; it does so at a high level (colours, fonts, shape with current values) but not structurally. For a simple parameterless read this is minimal but workable, though the relationship to get_theme_settings/set_theme_tokens is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 per the rubric. There is nothing for the description to disambiguate, and no risk of mis-invocation via arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and its contents well (colours, fonts, shape = design tokens), so an agent knows roughly what data comes back. However, it is a fragment with no explicit verb ('get'/'read'), and it draws no boundary against siblings like get_theme_settings or get_design_guide, which could plausibly return overlapping design information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus get_theme_settings, get_design_guide, or the write-side set_theme_tokens, and no prerequisites or exclusions. Usage is only inferable from the tool name; the description itself provides no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gift_cards_createAInspect
Issue a gift card. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Why it exists, for the merchant's own eyes. Never shown to a shopper. | |
| amount | Yes | What the card is worth, in the shop's currency in minor units (cents): 50.00 is 5000. | |
| expiresAt | No | ISO 8601. Omit for a card that never expires, which is the kind default. | |
| recipientEmail | No | Who it is for, when the merchant knows. Kept on the card; no email is sent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses state-changing behavior the annotations cannot: the call itself is a no-op preview, it returns a confirmation link, and only the merchant can commit the issuance. It also notes the note field is hidden from shoppers and no email is sent. The only soft spot is mild tension with readOnlyHint=false, since "changes nothing" reads like a read-only preview while the annotation marks the tool as not read-only (plausible if a pending record/link is created).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with the operation and the critical preview caveat. The minor-cost flaw is that the amount-units sentence repeats information already present in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return semantics itself, and it does: it explains that the response is a preview plus a confirmation link. Combined with the 100%-covered input schema and basic annotations, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description largely restates schema content ("Money is integer minor units (cents)" duplicates the amount description), adding little syntactic or semantic detail beyond what the parameters already document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ("Issue a gift card") that unambiguously separates it from the only other gift-card sibling, gift_cards_set_status. 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the surrounding workflow (preview then confirmation link) and the conditional intent of note/recipientEmail, but it never states when to reach for this tool versus alternatives or what prerequisites (e.g., prior merchant setup) apply. 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.
gift_cards_set_statusAInspect
Withdraw a gift card, or put it back. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| card | Yes | The card's code, dashes or not, or its id. | |
| status | Yes | disabled withdraws it so nobody can spend it; active puts it back. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: calling it changes nothing, it returns a preview and a confirmation link, and only the merchant on that page can complete the change. That is exactly the non-obvious context an agent needs. There is a mild tension with readOnlyHint=false, since 'calling this changes nothing' reads like a read operation, though the preview/link flow plausibly justifies the write annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentences are tight and front-loaded, but the 'Money is integer minor units (cents)' sentence does not earn its place: no monetary parameter exists in the schema, so it is dead weight that may induce a wrong invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation-like tool with no output schema, the description covers the important flow: preview semantics, confirmation link, and who can actually execute the change. The only real gap is the unaddressed relationship to sibling gift-card tools, and the stray money note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including that 'card' accepts a code with or without dashes or an id, and that status is an active/disabled enum. The description restates the status effect in prose but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb and resource ('Withdraw a gift card, or put it back'), which cleanly separates it from the sibling gift_cards_create. However, the sentence 'Money is integer minor units (cents)' implies an amount parameter that does not exist in the schema, which can mislead an agent about what the call actually requires.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description explains the effect of each status value ('disabled withdraws it so nobody can spend it; active puts it back'), which tells the agent what each mode does. It never says when this tool is preferable to alternatives such as gift_cards_create, and contains no explicit exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imports_createAInspect
Set up a product import. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The file's address, or the sheet's link as copied from the browser. | |
| hour | No | Daily or weekly: the hour, on the shop's clock. | |
| name | Yes | What to call it, e.g. "Supplier stock, hourly". | |
| notify | No | When a run's report is emailed. | problems |
| record | No | XML only: the element one product row is, as imports.inspect lists them, e.g. rss/channel/item. Omitted, the outermost repeating element. | |
| runNow | No | Run it as soon as it is saved. The preview says what the run would add, update and leave out. | |
| source | Yes | url for a CSV or XML file at an http(s) address; sheets for a Google Sheet shared as "anyone with the link". | |
| cadence | No | Run on its own this often (Pro). Omitted, it runs only when asked. | |
| mapping | No | Column (exactly as imports.inspect lists it) to field. Only the columns to change: the rest keep the guess, or the task's saved mapping. | |
| weekday | No | Weekly only: 1 is Monday, 7 is Sunday. | |
| strategy | No | upsert adds new products and updates existing ones; add only adds; update only updates (the rule for a stock or price file). | upsert |
| draftMissing | No | Set products to draft when they leave the file; only products this import brought in or updated, and never more than a fifth at once. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behaviour the annotations cannot convey: despite readOnlyHint=false, calling it changes no product data and instead returns a preview plus a confirmation link, and only the merchant on that page can commit it. That is exactly the kind of non-obvious, failure-inducing detail an agent needs, and the money-in-cents note is a further unit caveat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the two facts most likely to cause a mistake. Nothing is redundant with the title or schema, and the deferred-write warning is prioritised over the minor unit note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with a nested mapping object and no output schema, the critical unknowns are covered: full schema descriptions for every field, plus an explanation of the effect (preview only) and the return (preview plus confirmation link). What is missing is minor: relationship to imports_inspect/imports_run is only implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the nested mapping values and enums, so the per-parameter burden is already carried by the schema and the baseline is a 3. The description adds one genuine cross-parameter note (money is integer minor units, cents), which is useful but narrow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create/set up a product import), which cleanly separates it from imports_run, imports_update, imports_inspect and imports_delete by implying it creates the import configuration rather than executing or reading one. It does not name any sibling explicitly, so an agent must infer the boundary, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the deferred-confirmation workflow: you call this to register an import, then a merchant approves it. However, it never says when to choose this over imports_update (changing an existing import) or imports_run (executing one now), nor what prerequisites exist, so the agent is left to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imports_deleteAInspect
Remove a product import. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| import | Yes | The import's name or id, as imports.list gives them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses a non-obvious behavioral trait that annotations alone cannot convey: the call has no destructive effect, returning only a preview and a confirmation link, with the actual change gated behind a merchant action on that page. This directly explains and reinforces destructiveHint=false rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the critical 'changes nothing' clarification in efficient sentences. The currency/units sentence is dead weight here — this tool accepts no monetary parameter — so it slightly dilutes an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers the essentials: it explains that the response is a preview plus confirmation link, which is exactly what an agent needs to not treat this as a real deletion. It could note what happens after merchant confirmation, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'import' parameter is fully documented in the schema (name or id from imports.list), so the description needn't add anything. The 'money is integer minor units' sentence is irrelevant to this one-param tool and adds noise rather than meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a product import') that clearly distinguishes it from imports_list, imports_create, imports_run, and imports_inspect. An agent can place it precisely within the imports_* family without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is the starting point of a two-step removal flow, which is useful context, but it never states when to reach for this over imports_update or when deletion is inappropriate. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imports_inspectBRead-onlyInspect
Read a product file before importing it. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The file's address, or the sheet's link as copied from the browser. | |
| record | No | XML only: the element one product row is, as imports.inspect lists them, e.g. rss/channel/item. Omitted, the outermost repeating element. | |
| source | Yes | url for a CSV or XML file at an http(s) address; sheets for a Google Sheet shared as "anyone with the link". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so "Read-only; changes nothing" mostly restates structured data. The one genuine addition is the data-format note ("Money is integer minor units (cents)"), which helps interpret inspected sample values, though it is terse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, purpose front-loaded, nothing bloated. Slight deduction because "Read-only; changes nothing" duplicates the annotations and doesn't earn its place against structured data that already carries the safety profile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description field's terseness means it doesn't explain what the agent receives; the return-shape detail (columns, sample rows, mapped fields) sits in the schema description instead. Annotations cover safety, and the schema covers inputs, so the definition is workable but the description field alone leaves the output side unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (url, source, record) is well documented in the schema itself, so the baseline is 3. The description adds no parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ("Read a product file") and scopes it to the pre-import inspection step, which separates it from imports_create/imports_run. However, it never names the sibling it complements, so the differentiation from the other imports_* tools is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"before importing it" implies timing, but no explicit when-to-use/when-not or named alternative appears in the tool description. The clearer routing hint ("Use before imports.create") lives in the schema description rather than the description field itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imports_listBRead-onlyInspect
The shop's product imports. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so 'Read-only; changes nothing' largely repeats structured data. The only added context is the minor-units convention for money, which is useful but tangential for a parameterless list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler. 'Read-only; changes nothing' is mildly redundant with the annotations but does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with no output schema, the input-schema description carries the return content (source, column mapping, schedule, last runs), so the description need not repeat it. The missing piece is routing relative to imports_inspect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description adds no parameter information, and none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource ('the shop's product imports') and, via the schema description, scopes it to import sets configured under Products > Import. The list verb is implied rather than stated, and it does not distinguish itself from the sibling imports_inspect, which also concerns imports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives. With imports_inspect, imports_create, imports_run, imports_update and imports_delete as siblings, the description should say when to list versus inspect or run an import, but offers nothing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imports_runAInspect
Run a product import now. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| import | Yes | The import's name or id, as imports.list gives them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Strong disclosure beyond the annotations: it tells the agent the call is non-mutating in effect, returns a preview of pending changes plus a confirmation link, and that only the human merchant can actually execute it. The one wrinkle is that 'Calling this changes nothing' sits in mild tension with readOnlyHint=false, which the description does not reconcile. It also adds the integer minor-units convention for money, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and immediately followed by the crucial non-mutation caveat. The money-integer sentence interrupts the flow between the action statement and the confirmation-link clarification and its relevance to this call is not made explicit, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers what an agent needs: it does not mutate, it returns a preview and confirmation link, and a human executes it. It stops short of pointing at the natural follow-ups (imports_inspect, changes_status) for tracking the resulting import.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'import' parameter is fully documented there (name or id, as imports_list returns them). The description adds nothing about the parameter itself; the money-in-cents note concerns import payload contents rather than this argument, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Run a product import now') and then corrects the expectation by clarifying it only produces a preview plus a confirmation link. That is genuinely distinguishing information, but it never names or contrasts with the obvious siblings (imports_create, imports_inspect, imports_list), so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two-step preview/confirm flow, which is useful workflow context, but gives no selection guidance: nothing says when to call imports_run rather than imports_create or imports_inspect, nor what precondition must hold first (e.g. an import must already exist via imports_create/list). Usage is implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imports_updateAInspect
Change a product import. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A new address for the file (web address and Google Sheet imports). | |
| hour | No | Daily or weekly: the hour, on the shop's clock. | |
| name | No | ||
| import | Yes | The import's name or id, as imports.list gives them. | |
| notify | No | When a run's report is emailed. | |
| record | No | XML only: the element one product row is, as imports.inspect lists them, e.g. rss/channel/item. Omitted, the outermost repeating element. | |
| cadence | No | How often it runs on its own (Pro); none runs it only when asked. | |
| mapping | No | Column (exactly as imports.inspect lists it) to field. Only the columns to change: the rest keep the guess, or the task's saved mapping. | |
| weekday | No | Weekly only: 1 is Monday, 7 is Sunday. | |
| isActive | No | false pauses a scheduled import; true resumes it. | |
| strategy | No | upsert adds new products and updates existing ones; add only adds; update only updates (the rule for a stock or price file). | |
| draftMissing | No | Set products to draft when they leave the file; only products this import brought in or updated, and never more than a fifth at once. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark it non-read-only, non-destructive and non-idempotent; the description goes much further by disclosing the two-step confirmation flow ("calling this changes nothing", returns a preview and a confirmation link, only the merchant can commit). This materially changes agent expectations and is exactly the kind of behavior structured hints 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what the tool does and immediately followed by the critical non-mutation caveat. No filler and no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with a nested mapping object, no output schema and rich schema docs, the description covers the decisive behavior (preview + merchant confirmation) and money units. What remains unsaid is the post-confirmation outcome and any permission prerequisites, minor gaps given the schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 92%, so the baseline is 3. The description adds one genuinely cross-cutting semantic not present in the schema: money values are integer minor units (cents), which matters because mapping targets price and compareAtPrice. That extra meaning justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Change a product import" gives a clear verb+resource that separates it from imports_create, imports_delete, imports_run and imports_inspect without needing the schema. It stops short of naming those siblings explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent what happens on call (preview only, merchant confirms), which implies it is the tool for editing an existing import's settings, but it never states when to choose this over imports_create or imports_run. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_accountsCRead-onlyInspect
Instagram accounts. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false; the description merely repeats this ("Read-only; changes nothing"), earning no credit. The only non-redundant line, "Money is integer minor units (cents)," is irrelevant noise for a tool with zero parameters and no monetary fields. No behavior beyond the annotations is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three very short sentences that are front-loaded, but one of them (money in cents) is entirely irrelevant to a parameterless read-only list tool and fails to earn its place. Brevity is achieved at the cost of substance, not through tight editing of useful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, read-only list tool with annotations covering safety, the description is minimally adequate. However, it omits what the tool actually returns (accounts, post counts, last sync) — that content exists only in the schema description — and contains a distracting, irrelevant sentence, so it is thinner than the low complexity warrants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the rubric baseline of 4 applies; there is no parameter semantics to add or omit. The stray money-units sentence does not describe any real parameter and neither helps nor misleads here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description text is essentially "Instagram accounts," a restatement of the tool name with no verb, scope, or distinguishing detail. The genuinely informative purpose statement (accounts connected to the shop's Instagram feed plugin, with post counts and last-sync times) lives in the schema description, not the tool description. Nothing here separates it from the ~100 sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no alternatives, and no prerequisites. Usage context (place the feed with section type instagram.feed) is present only in the schema description, so an agent reading the description alone gets no routing signal. It is absent rather than misleading, hence 2 not 1.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inventory_adjustAInspect
Set stock levels. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Absolute quantities, never deltas: what the shelf actually holds now. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the generic annotation flags, the description discloses the key behavioral trait: the call is non-committing ("changes nothing") and returns a preview plus a confirmation link, with only the merchant able to finalize. This deferred two-phase model is exactly the kind of context annotations don't capture, though auth/permission specifics and rate limits are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the non-mutation caveat are front-loaded and tight, but the middle sentence about money in minor units earns no place since no monetary parameter exists. That off-topic sentence dilutes an otherwise efficient three-sentence description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description is largely complete: it explains what the call does, that it is non-committing, and what it returns (preview plus confirmation link). Only usage selection against sibling tools is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single items parameter and its nested sku/quantity. The description adds little correct parameter detail and its "Money is integer minor units (cents)" note refers to a money field that does not exist in the schema, which is extraneous and potentially confusing. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ("Set stock levels") in the first three words, which distinguishes it from read-oriented siblings like inventory_low and config-oriented ones like settings_inventory. However, it never explicitly names or contrasts a sibling, and the name/adjust vs description/set mismatch is a small wrinkle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the operational flow (preview then merchant confirmation on a page), which implies this is the entry point for changing stock, but it never states when to use this versus alternatives such as products_edit or products_bulk_price_edit, nor any when-not conditions. Usage is only implicitly conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inventory_lowCRead-onlyInspect
Stock running out. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so "Read-only; changes nothing" is largely redundant. The description does add one genuinely new behavioral fact not in the annotations: monetary values are integer minor units (cents). That extra context lifts it above a bare restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences with no filler, and the topic is front-loaded. The middle sentence is wasted space since it duplicates the readOnly/destructive annotations, which slightly dilutes the otherwise tight structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally hint at what is returned, yet it only notes the money-unit format. Ordering ("emptiest first") and the inclusion of already-out items live in the schema description rather than here, so the picture is only partially complete for an agent deciding how to use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is no parameter surface for the description to compensate for. It adds nothing about inputs, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Stock running out" is a noun phrase that echoes the tool name and annotation title rather than stating a verb and resource. It never says the tool lists or returns low-stock products, so an agent cannot distinguish it from siblings like list_products or settings_inventory from the description alone. The schema description ("Live products at or under the shop's low-stock threshold...") does the real purpose work, but that is not the description field being scored.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as inventory_adjust (which mutates stock) or settings_inventory (which configures the threshold). The agent is left to infer that this is a read-only report of items nearing depletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsBRead-onlyInspect
The shop's categories, to point a product grid at one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds no behavioral context of its own — no indication of ordering, pagination, or whether all collections or a subset are returned — so it contributes nothing beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the resource is front-loaded. It is terse to the point of being thin, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should indicate what a collection record looks like (IDs/handles) so an agent can 'point a product grid at one'. That return-shape information is missing, though the read-only annotations and empty parameter list keep the definition minimally usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there are no parameter semantics to document. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource ('The shop's categories') but never states the action explicitly — the listing verb is left implicit and only inferable from the tool name. It also uses 'categories' where the tool and siblings use 'collections', which adds a small terminology ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers one concrete use case ('to point a product grid at one'), which implies why an agent would call it, but gives no when-not conditions and never references the sibling tools (collections_create, collections_edit, list_products) that an agent must choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_content_typesBRead-onlyInspect
Custom content types this shop has, and how many entries each holds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds that each type is accompanied by an entry count, which is genuinely useful return-content context, but says nothing about pagination, result limits, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is slightly informal and verbless ('Custom content types this shop has'), but nothing is wasted and the key information leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining returns; it discloses the pair of fields (type name plus entry count) but not the shape, ordering, or whether large shops are truncated. For a zero-argument read-only tool this is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters there is no parameter semantics to document; the baseline for a parameterless tool is 4. Schema coverage is 100% and additionalProperties is false, so there is nothing the description could usefully add here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (custom content types) and what it returns (entry counts per type), which distinguishes it from sibling listers like list_section_types, list_products, and list_collections. The verb is only implied by the tool name rather than stated in the description, so it falls short of the explicit 'verb+resource+scope' of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool returns but gives no when-to-use context, no prerequisites, and no mention of adjacent alternatives such as list_section_types or list_pages for adjacent needs. The agent must infer its place in the workflow 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_own_themesARead-onlyInspect
The merchant's own themes: built for themselves, kept on their account, seen by nobody else. Not the catalogue.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds ownership/privacy context ('kept on their account, seen by nobody else') beyond the annotations, but says nothing about pagination, ordering, or result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and short, with the key distinction placed last for emphasis. The middle clause 'built for themselves, kept on their account, seen by nobody else' is a three-way restatement of the same idea and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no arguments, annotations cover behavior and the description covers scope, so an agent can invoke it correctly. It omits what the returned theme list actually contains (names, ids), a minor gap given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the 4 baseline applies; there is no parameter syntax for the description to clarify. No parameter information is missing because none exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely — the merchant's own themes — and explicitly fences it off from the catalogue ('Not the catalogue'), so an agent can separate it from theme-store browsing. The action itself (listing) is left implicit and only recoverable from the name/title, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The single exclusion ('Not the catalogue') tells the agent when not to use it, which is useful routing. However it gives no positive when-to-use statement and no guidance versus close siblings like check_own_theme, read_own_theme_file, or create_own_theme.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesARead-onlyInspect
List this shop's pages and templates: handle, title, whether it is a template, and whether it has unpublished changes. Start here to find out what exists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, covering the safety profile of this read operation. The description adds that it surfaces unpublished-changes status, which is useful behavioral context, but says nothing about pagination or ordering. With annotations carrying safety, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste, and the resource scope plus returned fields are front-loaded ahead of the usage hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description compensates well by listing the fields returned and framing the tool as a discovery starting point. It is nearly complete; only ordering/pagination behavior is left unspecified, which is minor for a no-arg list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 – there is no parameter syntax the description needs to explain. The description instead documents the output shape, which is beyond the schema's obligations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('this shop's pages and templates'), then enumerates the returned fields (handle, title, is-template, has-unpublished-changes). This distinguishes it from the singular sibling get_page. An agent can immediately tell what it does and what it yields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here to find out what exists' clearly signals this as a discovery entry point, establishing context for when to reach for it. It stops short of naming an explicit alternative (e.g., get_page for a single page) or exclusions, so it is strong but not fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsBRead-onlyInspect
A few of the shop's products, to reference by handle in a section. Titles, handles and prices only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description's real contribution is disclosing that only a subset is returned and that responses are trimmed to titles, handles and prices rather than full product objects. It stops short of explaining the ordering or what 'a few' resolves to, which matters for a partial-list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the scoping constraint ('a few') is front-loaded. It is efficient, though the second sentence reads as a fragment and the ambiguity it creates costs a little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the returned fields, so the return contract is partly covered. However, for a listing tool it leaves ordering, the effect of limit, and pagination behavior unspecified, which an agent needs before calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (limit, 1-50) and schema description coverage is 0%, so the schema carries no meaning and the description must compensate. 'A few of the shop's products' gestures at limited cardinality but never names the parameter, its maximum of 50, or its default when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (the shop's products) and narrows scope to a small subset, plus declares the returned fields (titles, handles, prices). It never states a verb like 'list' and does nothing to separate it from sibling list tools such as list_collections or list_pages, so it is clear but undifferentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to reference by handle in a section' implies the intended context (feeding handles into section definitions) but never says when to prefer this over products_edit or a fuller catalog read. Usage is implied rather than stated, and there are no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_section_typesARead-onlyInspect
Every kind of section this shop can use, with the settings each one takes. Includes the built-ins, the installed theme's, and any authored for this shop. Call this before writing sections so you use real types and real setting names.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and a closed world, so safety is covered. The description adds real behavioral value by disclosing what the result set contains (all three sources of section types) and that each entry carries its settings, which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and scope before the call-to-action. No filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only enumeration tool with no output schema, the description covers purpose, the composition of the returned list, and the recommended timing. An agent has everything it needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is no argument syntax the description could clarify. Nothing in the description contradicts or misdescribes the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (listing every section type) and precisely bounds the scope: built-ins, the installed theme's, and shop-authored types. That specificity lets an agent separate it from neighbors like list_content_types or define_section without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition for calling: 'Call this before writing sections so you use real types and real setting names.' It does not name an alternative or a when-not case, so it stops 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.
orders_cancelBDestructiveInspect
Cancel an order. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Calling this changes nothing: it returns a preview of what would change,' which directly contradicts the destructiveHint=true and idempotentHint=false annotations (a no-op preview would be non-destructive and idempotent). An agent reconciling the schema annotations against the prose gets contradictory safety signals about whether calling this mutates state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and then the crucial behavioral caveat. The money-units sentence is only loosely relevant to a tool whose sole parameter is an order number, so it is slightly off-target, but overall the text is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation tool with no output schema, the description covers what happens on call (preview plus confirmation link) and who can complete the action (the merchant). It leaves the preview contents somewhat unspecified but is broadly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single orderNumber parameter, so the schema already documents it fully and the baseline is 3. The description adds no parameter-specific guidance; the 'Money is integer minor units (cents)' sentence does not apply to orderNumber, so it does not compensate or add param meaning here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb+resource ('Cancel an order'), so an agent immediately knows the operation and the target. It does not explicitly differentiate itself from closely related siblings such as orders_refund, orders_fulfil, or orders_mark_delivered, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful workflow context (it is a preview step, only the merchant can finalize via the confirmation link), which implies when this tool is appropriate. However, it never explicitly states when to choose this over alternatives like orders_refund or when not to call it, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_createAInspect
Create an order. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| lines | Yes | ||
| customer | Yes | Found by email; created when the shop has nobody by that address. | |
| discount | No | ||
| shipping | No | ||
| shippingAddress | No | Where it goes, and the place its tax is worked out for. Left out, the shop's own country. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial information beyond the annotations: the call is non-committing, returns a preview of changes plus a confirmation link, and requires merchant action to take effect. It also states the money unit convention (integer minor units/cents), which prevents a costly misinterpretation of monetary fields. This explains why readOnlyHint=false despite 'changes nothing' — the call still produces preview state and a link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, all load-bearing, with the most surprising fact (the call is a preview) placed early. No filler or restatement of the tool name beyond the opening clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested-payload tool with no output schema, the description covers the ruling behavioral constraint (nothing is committed until the merchant confirms) and the money convention. It leaves the required-payload composition to the schema's nested descriptions, which are reasonably rich, but does not summarize what a successful call returns beyond 'a preview and a confirmation link'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 33% and six parameters including nested customer/lines/discount/shipping objects, the description contributes only the global cents convention and nothing about required pairs (customer, lines) or how product/variant/sku resolution works. The nested schema descriptions do carry much of the load, so this is a baseline-adequate rather than compensating description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create an order') and then immediately reframes what creation actually means here: a preview plus confirmation link, not a committed write. It also names the downstream siblings (orders_send_payment_link, orders_mark_paid) so the agent can place it in the order lifecycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains the intended context: the agent prepares an order, and only the merchant on the returned page can finalize it, which tells the agent not to expect a created order back. It does not explicitly say when to prefer this over siblings like orders_lookup or customers_create, though those are covered in the schema description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_fulfilCInspect
Mark an order as sent. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | What is in THIS parcel, when it is not everything. Each entry names a line by sku or title and says how many more of it went out. Omit for the whole order. | |
| carrier | No | A carrier key like "dhl_express", "ups", "correios". Anything else needs carrierName. | |
| carrierName | No | The carrier's name as the customer should read it. | |
| orderNumber | Yes | The human order number, e.g. 1003. | |
| trackingNumber | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts 'Calling this changes nothing', i.e. a read-only, side-effect-free call, while the annotations declare readOnlyHint=false and idempotentHint=false, which assert that the call is not guaranteed read-only. An agent reading both gets contradictory signals about whether invoking this tool mutates state, which is precisely the side-effect question it needs answered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the preview/confirmation sentences earn their place, but the 'Money is integer minor units (cents)' sentence is irrelevant to a schema with no monetary field, and the annotation-conflicting 'changes nothing' claim occupies prime real estate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains what a call returns (a preview of changes plus a confirmation link) and who can complete the action. But it omits any parameter guidance for a 5-parameter tool and leaves the side-effect question inconsistent with the annotations, so it is not complete enough to be trusted alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already explains orderNumber, items, carrier and carrierName; only trackingNumber is undocumented. The description contributes no parameter meaning at all, and its one data-format remark ('Money is integer minor units (cents)') refers to no parameter in this schema, so it is at best neutral and at worst noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a concrete verb+resource ('Mark an order as sent'), and the rest immediately qualifies it by saying the call only previews. However it never distinguishes itself from close siblings such as orders_mark_delivered, orders_update_shipment or orders_mark_paid, so an agent must still infer its niche 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: by stating that nothing changes and that 'only the merchant, on that page, can make it happen', it communicates that this is the first/preview step of a two-party flow. It names no alternative tool and gives no explicit when-to-use/when-not conditions relative to the shipment-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_lookupBRead-onlyInspect
Look an order up. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so 'Read-only; changes nothing' largely repeats structured data. The one genuine addition is the money-unit convention (integer cents), which is real behavioral context the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the action and free of filler. It is efficient, though the extreme brevity edges toward under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should carry the burden of describing what a lookup returns. It discloses one important detail (monetary values in integer cents) but says nothing about the returned order structure, which leaves a meaningful gap for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single required parameter already documented as the human order number. The description adds no syntax or format guidance for orderNumber beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look an order up'), which cleanly distinguishes it from the mutating orders_* siblings like orders_cancel and orders_refund. It stops short of naming an alternative explicitly, but the read-only framing makes the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Read-only; changes nothing' implies the appropriate context (safe retrieval versus the many write-oriented orders_* siblings), but there is no explicit when-to-use statement, no prerequisites, and no 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.
orders_mark_deliveredBInspect
Mark a parcel as delivered. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | The parcel's current tracking number, only needed when the order has more than one parcel. | |
| delivered | No | false takes the delivered mark off again. Omit for delivered. | |
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely non-obvious behavior beyond the annotations: the call is a no-op preview returning a confirmation link, and only the merchant on that page can actually apply the change. This materially reframes how the agent should treat the result. It stops short of saying what the preview contains, what happens if a confirmation is never used, or what happens with multiple parcels beyond the `find` parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, purpose front-loaded, no filler in the first and third. However the middle sentence about money in minor units earns nothing for this tool and dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-adjacent tool with annotations and no output schema, the description covers the critical unknowns: no state change occurs on the call and the return is a preview plus confirmation link. The stray money sentence is the main defect; permissions and multi-parcel edge cases are adequately handled by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the only semantic content the description adds is "Money is integer minor units (cents)" — this tool has no money parameter, so that sentence is inapplicable and risks making an agent hunt for a price field that does not exist. The `find`/`delivered`/`orderNumber` semantics are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Mark a parcel as delivered") and immediately scopes it further by revealing that the call itself only produces a preview. An agent can distinguish it from orders_fulfil or orders_update_shipment by the parcel-level delivered mark, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage only: the description tells you the merchant must complete the action on a confirmation page, which signals you cannot finish the job with this tool alone. It never says when to prefer this over orders_fulfil, orders_update_shipment, or orders_remove_shipment, so routing between the order-mutation siblings 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.
orders_mark_paidAInspect
Mark an order as paid. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give only the bare safety flags, and the description adds genuinely useful behavioral context: the call is effectively a dry run, it returns a preview of proposed changes plus a confirmation link, and only the merchant can commit. The note of tension with readOnlyHint=false is minor since the tool does produce a side effect (the confirmation artifact), and destructiveHint=false is consistent with 'changes nothing'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, which is good, but the middle sentence about money being integer minor units is irrelevant to this tool's only parameter and reads as boilerplate carried over from sibling order tools. That sentence does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation-ish tool with no output schema, the description covers the important surprise (no immediate mutation, preview plus confirmation link, merchant-only commit). What remains missing is guidance on alternatives and failure/precondition behavior, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (orderNumber is documented as the human order number, e.g. 1003), so the baseline is 3. The description's sentence about money in integer minor units adds no meaning to the single orderNumber parameter and does not map to any field here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ("Mark an order as paid") that distinguishes it from nearby siblings like orders_refund, orders_fulfil, and orders_send_payment_link. The added detail that it produces a preview rather than an immediate state change sharpens the meaning, though the headline verb and the 'changes nothing' qualifier sit in slight tension.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the workflow it describes (call it, receive a preview and confirmation link, merchant completes it). However, there is no explicit guidance on when to choose this over orders_send_payment_link, orders_refund, or a manual note, and no stated preconditions such as the order being unpaid or having pending payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_noteAInspect
Note something on an order. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | What the merchant's note on the order should say. With append, the line to add below what is there. | |
| append | No | Add below the existing note instead of replacing it. | |
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a non-obvious two-phase behavior: the call is a no-op on the order, returning a preview and a confirmation link that only the merchant can act on. This preview/confirmation model is exactly the kind of workflow context annotations cannot convey, and it is consistent with idempotentHint=false and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and the key behavioral caveat. The 'Money is integer minor units (cents)' sentence does not earn its place here because the tool has no monetary parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers the return ('a preview of what would change and a confirmation link'), and it clarifies the human-in-the-loop execution model. It is complete enough to call correctly, though it could note whether repeat calls stack previews.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so note, append, and orderNumber are already documented, making the baseline 3. The description's only extra claim ('Money is integer minor units') refers to no parameter on this tool and is therefore irrelevant rather than additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Note something on an order'), which scopes it distinctly from the sibling customers_note. It is clear and self-contained, though it never explicitly contrasts itself with the other order tools (orders_update_shipment, orders_lookup, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the workflow that follows a call (preview + confirmation link, merchant-only execution), which implies when the tool is meant to be used. However, it gives no explicit when-to-use/when-not guidance or named alternatives, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_refundAInspect
Refund an order. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Minor units (cents). Omit to refund everything still outstanding. | |
| restock | No | Put the goods back on the shelf. Only acts on a full refund. | |
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the call is a no-op that returns a preview plus a confirmation link, and only the merchant can carry it out. This explains why destructiveHint=false despite a 'refund' name. It stops short of describing the preview contents or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action, and every sentence carries non-obvious information (units, preview-only behavior, merchant confirmation). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing what the call returns (a preview and a confirmation link). Combined with the schema's full parameter coverage, an agent has what it needs, though the preview payload and failure modes remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so amount, restock, and orderNumber are already documented. The description's 'integer minor units (cents)' merely restates the amount schema and adds no new parameter meaning; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Refund an order') and adds the critical money-unit convention. It does not explicitly differentiate from nearby siblings like orders_cancel or orders_lookup, but the action is unambiguous on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the workflow (agent calls, merchant confirms on the returned page), which implicitly frames when to invoke it, but it never states when to prefer this over orders_cancel or what prerequisites exist (e.g. order must be paid). Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_remove_shipmentADestructiveInspect
Take a parcel off an order. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | The parcel's current tracking number, only needed when the order has more than one parcel. | |
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already covering safety, the description adds genuinely non-obvious behavior: the call itself mutates nothing, it returns a preview plus a confirmation link, and only the merchant on that page can complete the removal. That two-step workflow is exactly the kind of thing an agent cannot learn from readOnlyHint/destructiveHint alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentences about the preview/confirmation workflow are front-loaded and earn their place, but the sentence "Money is integer minor units (cents)" is dead weight here — this tool takes no monetary argument. One of four sentences is off-topic, dragging an otherwise tight description down.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive workflow with no output schema, the description covers the essentials: what it does, that the call is non-mutating, what it returns in broad terms, and who can finalize. It stops short of describing the preview payload or how the confirmation link is consumed, which would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (find, orderNumber) are documented in the schema with examples and conditions, so the baseline of 3 applies. The description adds no parameter detail; its one numeric remark ("Money is integer minor units") does not map to any parameter of this tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Take a parcel off an order" is a specific verb+resource statement that an agent can act on immediately, and the parcel/order framing is unambiguous. It does not, however, distinguish itself from siblings such as orders_update_shipment or orders_refund, which also manipulate an order's fulfillment state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining the preview-and-confirm flow, so an agent can infer this is the entry point for parcel removal. But it never states when to prefer this over orders_update_shipment (e.g. to change rather than remove a parcel) or what preconditions apply (parcel must exist, single vs. multi-parcel orders).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_send_payment_linkAInspect
Email a payment link. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | A line from the shop, printed above the button. | |
| orderNumber | Yes | The human order number, e.g. 1003. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real context beyond the annotations: it explains that the call produces a preview plus a confirmation link and that the merchant must act on that page for anything to happen — a two-phase commit an agent could not read off readOnlyHint=false / idempotentHint=false. There is mild tension between "changes nothing" and readOnlyHint=false/idempotentHint=false (emails are still sent, so repeat calls are not free), but it is not a clean contradiction since the claim is scoped to store data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and then the crucial caveat about what the call actually does. The money-units sentence is the one piece that does not earn its place in this tool's context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of describing the return (a preview of changes plus a confirmation link) and the human-in-the-loop step. Missing elements are minor: no statement of what the customer email contains or whether repeated calls send duplicate emails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (orderNumber as human order number, note as a line printed above the button), making 3 the baseline. The description's only numeric guidance — "money is integer minor units (cents)" — does not apply to any parameter this tool actually takes, so it adds no parameter meaning here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb+resource ("Email a payment link") and the rest clarifies the two-phase nature of the operation, which distinguishes it from siblings like orders_mark_paid or orders_note. It does not name any sibling explicitly, so an agent must still infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the schema description says the link is for an "unpaid order," so the precondition is discoverable, but the tool description itself gives no when-to-use / when-not guidance and never points to orders_mark_paid or other payment alternatives. Minimum viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_update_shipmentAInspect
Correct a parcel's carrier or tracking number. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | The parcel's current tracking number, only needed when the order has more than one parcel. | |
| notify | No | Send the customer the tracking email again with the corrected details. | |
| carrier | No | The new carrier, as a key like "dhl_express", "ups", "correios". Anything else needs carrierName. | |
| carrierName | No | The carrier's name as the customer should read it, for a carrier we do not know. | |
| orderNumber | Yes | The human order number, e.g. 1003. | |
| trackingNumber | No | The corrected tracking number. An empty string takes the number off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only coarse annotations (readOnlyHint/destructiveHint/idempotentHint), the description carries the important disclosure: the call itself changes nothing, it returns a preview plus a confirmation link, and only the merchant can execute the change. That auth/execution model is exactly the context annotations cannot express. It stops short of covering edge behavior such as multi-parcel ambiguity or the notify email side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the 'changes nothing / merchant confirms' caveat are front-loaded and compact. One sentence is wasted, however: 'Money is integer minor units (cents)' has no bearing on any parameter of this tool and risks confusing an agent about a money field that does not exist.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema and thin annotations, the description supplies the essential missing piece — that the return value is a preview and confirmation link, not an applied change. Remaining gaps are minor: behavior when an order has multiple parcels and `find` is omitted, and the effect of `notify`.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter (find, carrier, carrierName, trackingNumber, notify, orderNumber). The description adds nothing parameter-specific — its only numeric sentence concerns 'integer minor units (cents)', which is irrelevant here since no money parameter exists. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource: 'Correct a parcel's carrier or tracking number.' That is enough to distinguish it implicitly from siblings like orders_remove_shipment or orders_mark_delivered, but no sibling is named and no scope boundary (e.g. 'this edits an existing parcel only') is drawn explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call it when a parcel's carrier or tracking details are wrong. The description also signals a relevant precondition (the merchant must confirm on the returned page, so this is a request-for-change rather than a direct edit), but it never names alternatives or says when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pickup_remove_locationBDestructiveInspect
Remove a collection point. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The collection point to remove, by name. Case does not matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does disclose non-obvious behavior beyond the annotations — it returns a preview plus a confirmation link, and only the merchant can complete the removal. However, it directly conflicts with the structured hints: readOnlyHint=false and destructiveHint=true say the call may modify the environment, while the description says "Calling this changes nothing." An agent cannot tell whether invoking this is safe or destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the four sentences are short, but the sentence "Money is integer minor units (cents)" is irrelevant to this tool (there is no monetary parameter) and appears to be copied from a sibling, diluting an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The two-step preview/confirmation workflow is essential context and is captured, which is good given there is no output schema. But the contents of the "preview" are left vague, and the unresolved conflict with the destructive/read-only annotations leaves an agent unsure of the tool's real effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `name` parameter is fully documented in the schema (including case-insensitivity), so the baseline is 3. The description adds no parameter detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Remove a collection point") that is clearly distinct from the sibling pickup_set_location. It loses a point because it immediately walks the verb back ("Calling this changes nothing"), leaving the actual effect of the call slightly ambiguous at first read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: you call this when you want a collection point removed, and the description usefully explains that the call only starts a merchant-confirmed flow. There is no explicit when-not guidance or routing to alternatives (e.g. pickup_set_location for adding/editing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pickup_set_locationAInspect
Add or change a collection point. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Required for a new place. | |
| name | Yes | The place's name as shoppers pick it, like Baixa shop. Names an existing place (case does not matter) to change it, or a new one to add. | |
| line1 | No | Street and number. Required for a new place. | |
| line2 | No | Floor, unit, building. Empty clears it. | |
| phone | No | A number shoppers can call about their order. Empty clears it. | |
| slots | No | Collection windows within a day as HH:MM pairs, replacing the current list. Empty means any time the place is open. | |
| country | No | ISO 3166-1 alpha-2, like PT. Required for a new place. | |
| province | No | Region or state. Empty clears it. | |
| renameTo | No | A new name for an existing place. Up to 60 characters. | |
| isEnabled | No | Whether checkout offers it. A place closed for a while is switched off, not removed. New places are on unless said. | |
| readyTime | No | The promise shown to shoppers, a sentence like 'after 3pm today'. Empty puts back 'Usually ready in 24 hours'. | |
| pickupDays | No | Weekdays collections are accepted, 0 Sunday through 6 Saturday. New places default to Monday to Friday. A place that is on needs at least one. | |
| postalCode | No | Empty clears it. | |
| closedDates | No | Dates the place is shut whatever the weekday, each YYYY-MM-DD, replacing the current list. Ones that do not read as a date are dropped. | |
| instructions | No | Extra lines for the confirmation email: door codes, opening hours. Empty clears it. | |
| leadTimeHours | No | Notice needed before the first day offered, in hours: 24 means tomorrow at the earliest. 0 to 1440. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false and destructiveHint=false but say nothing about the deferred-confirmation mechanic. The description adds genuinely valuable behavior beyond the annotations: the call is non-mutating, it yields a preview and a confirmation link, and execution requires the merchant on that page. The 'Money is integer minor units (cents)' sentence is irrelevant to this schema and reads as template leakage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the confirmation-flow sentences are tight and useful. However, the money/cents sentence serves no parameter here and appears to be copied from a sibling tool, so not every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter tool with no output schema, the description covers the two things an agent most needs and cannot get elsewhere: that the call is a preview and that a confirmation link gates the real change, which effectively describes the return value. The omission of any parameter-level color is acceptable given 100% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 16 parameters, so the schema already carries the semantics (required-for-new-place fields, empty-clears behavior, list replacement). The description adds no parameter detail at all, and its one numeric remark about cents refers to no parameter in the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Add or change a collection point'), which cleanly separates it from the only close sibling, pickup_remove_location. It does not explicitly name that sibling, but the add/change vs. remove distinction is inferable from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies essential workflow context: it returns a preview plus a confirmation link and nothing happens until the merchant acts on that page. That tells the agent how the tool is used, but there is no guidance on when to prefer it over pickup_remove_location or how to react to the returned link, so usage remains implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugins_listBRead-onlyInspect
The shop's plugins and their settings. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so 'Read-only; changes nothing' largely restates structured data. The one genuine addition is the money-unit convention (integer minor units/cents), which helps interpret returned values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short front-loaded sentences with no padding. One sentence, 'Read-only; changes nothing', is somewhat redundant with the annotations, which keeps this from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should describe what comes back; it largely defers that to the schema's own description field (plugin on/off states, settings with value/type/choices, redacted secrets). For a zero-parameter read tool that is workable but not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to clarify and the description correctly stays out of that space.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource ('the shop's plugins and their settings') and its read-only nature, which separates it from mutating siblings like plugins_set_enabled and plugins_settings. The verb is only implied by the tool name rather than stated, and sibling differentiation is indirect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Read-only; changes nothing' hints at inspection usage but never states when to choose this over plugins_settings or plugins_set_enabled. No prerequisites, no alternatives, no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugins_set_enabledAInspect
Switch a plugin off or on. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| plugin | Yes | The plugin's slug or name, as plugins.list gives them. | |
| enabled | Yes | false switches it off without removing it or its settings; true switches it back on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses substantial behavior absent from annotations: the call is a staging step returning a preview and confirmation link, and only the merchant can execute the change. This two-phase confirmation model is exactly the kind of context annotations don't convey. There is mild tension with readOnlyHint=false (the call 'changes nothing'), but the tool's overall mutation intent reconciles it, so it is not a hard contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is front-loaded and efficient, but the sentence 'Money is integer minor units (cents)' is irrelevant boilerplate with no money parameter in this tool, which is noise that fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param toggle with full schema coverage and annotations, the description covers the important workflow and return behavior (preview + link). Nothing critical is missing, though the absence of any output schema means the preview's exact shape is only loosely described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both 'plugin' (slug/name from plugins.list) and 'enabled' (off without removal, back on). The description adds no further parameter detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Switch a plugin off or on'), which is clearly distinct from siblings like plugins_list and plugins_settings. It does not explicitly name those siblings, but the toggle intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the confirmation workflow (preview + confirmation link, merchant-only execution), which gives context for how the tool behaves, but never states when to choose this over plugins_settings or plugins_list. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugins_settingsAInspect
Change a plugin's settings. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| plugin | Yes | The plugin's slug or name, as plugins.list gives them. | |
| values | Yes | Setting key to its new value, only the ones that change, keys as plugins.list gives them. A number field takes a number in its min-max, a select one of its choices, a boolean true or false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the two-step confirmation mechanism, that the merchant (not the agent) is the confirming party, and the money-as-integer-minor-units convention. There is mild tension with readOnlyHint=false and idempotentHint=false, but 'changes nothing' is scoped to the plugin's settings, while the call still emits a preview/confirmation artifact - so this reads as a clarification, not a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each doing distinct work: purpose, unit convention, behaviour of the call, and who authorises the change. The most decision-critical fact (it changes nothing) is front-loaded after the purpose line, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly picks up the burden of describing the response ('a preview of what would change and a confirmation link'), and it covers the nested values object indirectly by deferring key names to plugins.list. The preview payload's shape is still only sketched, which keeps this just short of full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description adds genuinely new information the schema lacks: monetary number fields are in integer minor units (cents). That is a unit semantic the schema does not state, which is exactly the kind of addition that earns a point above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb+resource ('Change a plugin's settings'), and the following sentences refine that into a preview/confirmation flow rather than a direct write. It implicitly distinguishes itself from plugins_list (read), plugins_set_enabled (enable/disable), and the store-wide settings_* siblings, but never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies real usage context: the call is non-committal and completion requires the merchant to act on the confirmation page. That tells the agent not to expect the change to apply after the call. However, there is no explicit 'use this vs. settings_checkout / plugins_set_enabled instead' routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policies_writeAInspect
Write or update a policy page. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | The page's text as HTML: p, h2 to h4, ul/ol, strong, em, a, table. Plain text is split into paragraphs on blank lines; markdown is not read. Left out on a page that does not exist yet, the platform's starting draft is written, with [brackets] for the merchant to fill in. | |
| kind | Yes | Which policy: terms (Terms and Conditions), privacy (Privacy Policy), returns (Return and Refund Policy), shipping-policy (Shipping Policy), contact (Contact), legal-notice (Legal Notice). | |
| published | No | Whether visitors can read it. A new page is published unless this says false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses important behavior: the call is non-mutating, returns a preview of the change plus a confirmation link, and only the merchant can actually apply it. That is exactly the kind of side-effect detail an agent needs. It loses a point because the annotations set readOnlyHint=false while the text insists 'calling this changes nothing,' a mild tension, and the stray 'Money is integer minor units (cents)' line has no corresponding parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core action and the preview/confirmation semantics front-loaded. The money-units sentence is irrelevant to the schema and is dead weight, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining what the call returns (a preview of changes and a confirmation link) and who can finalize it. Combined with a fully documented input schema, an agent has enough to call it correctly; only the odd money reference and lack of sibling routing leave a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of body, kind, and published is thoroughly documented in the schema itself (format, length, enum meanings, publish default). The description adds no parameter-level meaning and in fact mentions a money-in-cents convention that maps to no visible parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Write or update a policy page.' An agent immediately knows the operation and target. It doesn't, however, distinguish this from plausible siblings such as upsert_content or set_page_sections, so it stops short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the call flow (preview, then merchant confirmation), which is useful context, but it never states when to reach for this tool versus alternatives like upsert_content or get_page. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_add_imageBInspect
Add a picture to a product. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | What the picture shows, for screen readers and search engines. | |
| url | Yes | A public http(s) address of the image. It is fetched and copied onto the shop's storage. | |
| product | Yes | The product, by handle or by (enough of) its title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations state readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds crucial context: 'Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.' This is valuable behavioral transparency, but the word 'preview' suggests no mutation, which could be interpreted as contradicting the non-read-only annotation; however, the description clarifies that a human confirmation is needed, aligning with a non-read-only operation. This is a nuanced but acceptable disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences. It is front-loaded with the main action, then explains the preview mechanism. The sentence about money is extraneous and slightly confusing, as no price parameter exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key behavior of returning a preview and requiring merchant confirmation, which is important for understanding the tool's effect. However, it omits potential issues like authentication requirements, error handling, or what the preview contains. With no output schema, the description adequately but not fully describes the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter descriptions are already provided. The description adds a note about 'Money is integer minor units (cents)', which is irrelevant to this tool's parameters (product, url, alt), and therefore does not enhance parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Add a picture to a product'. Sibling tools exist for product CRUD (products_create, products_edit) but no sibling for images specifically, so differentiation is not critical. However, the description does not explicitly distinguish how the image attachment relates to those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative guidance. The description states the method of operation but leaves it to the agent to infer that this is the only tool for adding images. There is no mention of prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_bulk_price_editAInspect
Change prices in bulk. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| change | Yes | ||
| filter | Yes | Which products. Give at least one of: productIds, collectionId, tag, vendor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the most important behavior: the call itself changes nothing, it returns a preview plus a confirmation link, and only the merchant on that page commits the change. It also states money is integer minor units. The 'changes nothing' phrasing sits a little awkwardly next to readOnlyHint=false/idempotentHint=false, which are plausibly explained by the transient preview session the call creates, so this is context-adding rather than contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose before the units convention and the preview/confirmation behavior. Every sentence carries distinct information and nothing is padded or repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param nested mutation tool with annotations but no output schema, the description covers the critical missing piece: what the call actually does (preview) and what it returns (preview + confirmation link). The filter semantics are left entirely to the schema, which is acceptable but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% and the schema already spells out the change.value semantics (signed basis points / signed cents / new minor-unit price) and the filter selector list. The description only reinforces the cents convention and adds no new meaning for the nested filter fields, so it neither compensates much nor is needed to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb, resource and scope ('Change prices in bulk'), which clearly separates it from the single-item products_edit sibling. It does not, however, explicitly name any alternative tool, so the differentiation is implied by the word 'bulk' rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys context of use by explaining the preview-plus-confirmation flow, so an agent can infer this is a pricing-workflow entry point. It never says when to prefer this over products_edit, discounts_catalog_sale, or discounts_coupon, and offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_createCInspect
Add a product. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | ||
| tags | No | ||
| price | Yes | Minor units (cents). | |
| stock | No | Absolute stock for the default variant. Omit for untracked. | |
| title | Yes | ||
| handle | No | The web address. Derived from the title when omitted. | |
| status | No | Drafts are not on sale. Default draft. | |
| vendor | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does add genuine behavioral context beyond the annotations: it is a non-mutating preview, it returns a confirmation link, and only the merchant can complete it. However, the explicit claim "Calling this changes nothing" directly conflicts with readOnlyHint=false, which declares the tool is not read-only; that inconsistency undermines the reliability of the disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the verb and with no filler; the flow caveat is placed before the merchant-only constraint. The cents note is slightly redundant with the schema, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully characterizes the return (a preview and confirmation link), which is the most important thing to know. But parameter semantics are thin for a 9-param tool, and the read-only conflict leaves the agent unsure whether the call has side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 44%. The one parameter fact the description supplies ("Money is integer minor units (cents)") merely repeats the price field's own schema description, and sku, tags, title, vendor, and description are left undocumented in both places, so 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.
Does the description clearly state what the tool does and how it differs from similar tools?
"Add a product" gives a specific verb + resource, and the create intent is separable from siblings like products_edit, products_delete, and products_set_status. It stops short of naming those alternatives, so an agent gets the core purpose but no explicit sibling routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the mechanics of the call (preview + confirmation link) but never states when to use this versus products_edit, products_bulk_price_edit, or collections_add_products. There is no when-not-to-use guidance, so selection is left to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_deleteCDestructiveInspect
Delete a product. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | The product, by handle or by (enough of) its title. To take it off sale but keep it, use products.set_status or products.edit instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds rich behavioral context (preview-only, returns a confirmation link, only the merchant can complete it), but it directly conflicts with the annotations: 'Calling this changes nothing' contradicts readOnlyHint=false and destructiveHint=true, which tell the agent a mutation occurs. This is an annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the flow explanation is efficient, but the middle sentence about money in integer minor units is orphaned boilerplate that does not belong to a single-parameter delete tool and dilutes focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with annotations and no output schema, the description covers the crucial nuance that the call is a non-executing preview requiring merchant confirmation. It is nearly complete, lacking only explicit sibling-routing, which the schema compensates for.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'product' is fully documented in the schema, so the baseline is 3. The one description sentence touching parameters ('Money is integer minor units') is irrelevant to this tool, which has no monetary parameter, so it adds no meaningful semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Delete a product') and immediately clarifies the two-phase nature of the action. It is clear what the tool is, though differentiation from siblings (products.set_status, products.edit) lives in the schema's parameter text rather than the description itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the confirmation mechanism but never says when to choose this tool over alternatives. The sibling-routing guidance ('to take it off sale but keep it, use products.set_status or products.edit') appears only in the input schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_editAInspect
Change a product. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | REPLACES the tag list, so pass the whole of it. Read it first. | |
| title | No | ||
| status | No | active is on sale the moment the merchant confirms; draft and archived hide it. | |
| vendor | No | ||
| product | Yes | The product, by handle or by (enough of) its title. | |
| seoTitle | No | The title search results show for the product page, about 60 characters. Empty falls back to the title. | |
| collections | No | Manual collection handles. REPLACES membership, so pass the whole list. Not for a price: that is products.bulk_price_edit. | |
| description | No | ||
| seoDescription | No | The line under it in search results, about 155 characters. Empty falls back to the description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is the standout. With annotations only saying readOnlyHint=false/destructiveHint=false/idempotentHint=false, the description adds critical non-obvious behavior: the call changes nothing, returns a preview of proposed changes plus a confirmation link, and only the merchant can complete it. It also discloses the money-as-integer-cents convention. None of this is derivable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero waste, and the verb+resource is front-loaded before the surprising behavioral caveat. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-flow tool with no output schema, the description does explain what the call returns (a preview and confirmation link), which is exactly the burden it must carry. It is nearly complete; a small gap is that it does not clarify which fields are editable, though the schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% and the schema descriptions are already rich (tags REPLACES the list, status enum semantics, collections REPLACES membership). The description only adds the cents-unit convention, which does not even map to a visible schema parameter. Baseline 3 is appropriate since the schema does most of the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change a product'), and the second/third sentences clarify the actual nature of the operation (a preview generator, not a direct mutation). It does not name sibling alternatives like products_set_status or products_bulk_price_edit in the description itself (though the schema does).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys important workflow context ('Only the merchant, on that page, can make it happen'), which is implicit usage guidance about a two-phase confirmation flow. However it gives no explicit when-to-use-vs-alternative routing; sibling disambiguation (e.g. bulk_price_edit, set_status) lives only in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_set_statusAInspect
Publish or unpublish products. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | Yes | Which products. Give at least one of: productIds, collectionId, tag, vendor. | |
| status | Yes | active is on sale; draft and archived are off the storefront. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only say readOnlyHint=false, destructiveHint=false, idempotentHint=false; the description goes well beyond that by disclosing the two-phase semantics — the call mutates nothing, returns a preview plus a confirmation link, and requires the merchant to act on that page. That human-in-the-loop detail is exactly the kind of behavior an agent cannot get from structured fields. Minor tension: "Calling this changes nothing" reads as read-only while readOnlyHint=false, though this is conservatively safe rather than misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded and the preview/confirmation sentence is dense with value. However, the second sentence about money in minor units is entirely off-topic for a tool with no price parameter and consumes roughly a quarter of the description, which is wasted and potentially confusing space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with a nested filter, full schema descriptions and annotations present, the description covers the one non-obvious thing: that this returns a preview and a confirmation link rather than applying the change. There is no output schema, and the description does give the gist of the return value, though it could say whether previews expire or how the confirmation link is delivered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so filter (with its requirement of at least one of productIds/collectionId/tag/vendor) and status (with enum meanings) are already fully documented in the schema — baseline 3. The description adds nothing about these parameters, and its only parameter-adjacent sentence, "Money is integer minor units (cents)," refers to a monetary parameter that does not exist on this tool, so it is noise rather than added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair and resource ("Publish or unpublish products"), which an agent can immediately map to a product-status mutation. It does not name any sibling (products_edit, products_bulk_price_edit, gift_cards_set_status), and the binary "publish/unpublish" framing is slightly narrower than the actual three-state enum (active/draft/archived).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description makes clear this is the first step of a merchant-confirmed flow, which tells the agent when the call is appropriate. It never names an alternative tool or an exclusion condition (e.g., when to prefer products_edit or a bulk price edit), so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promotions_deleteADestructiveInspect
Remove a promotion. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only needed when the same name is on both lists: cart is a checkout discount or coupon code, catalog is a shelf sale. | |
| promotion | Yes | The promotion's name, its checkout code, or its id from promotions.state. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely useful behavior beyond the annotations: the call is a no-op preview that returns a would-change summary plus a confirmation link, and only the merchant on that page can complete the removal. Annotations already carry readOnlyHint=false/destructiveHint=true, so the credit here is for the confirm-flow and auth context; the description stays silent on whether repeated calls create duplicate confirmation links (idempotentHint=false is unexplained), which keeps it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the surprising no-op behavior, then the completion constraint. The cents sentence is irrelevant to this tool's parameters and is the one clause that does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining exactly what the call yields (a change preview and a confirmation link) and who can act on it. For a two-parameter, single-required-parameter tool with full schema coverage, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema itself (including the kind enum and the name/code/id forms of promotion), so the baseline is 3. The only parameter-adjacent sentence in the description, 'Money is integer minor units (cents)', refers to no parameter in this schema, so it adds no value here and is arguably misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Remove a promotion') that is unambiguous against siblings like promotions_state, promotions_edit and promotions_set_active. It does not, however, explicitly differentiate itself from those siblings (e.g. remove vs. deactivate via promotions_set_active), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the usage context (initiate removal; the merchant confirms on the returned page), which is real guidance about the workflow, but it never says when to prefer this over pausing with promotions_set_active or editing with promotions_edit, and gives no prerequisites beyond the deferred confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promotions_editAInspect
Change a promotion's terms. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Checkout rules only. What the shopper types; uppercased. null makes it automatic, applying without a code. | |
| kind | No | Only needed when the same name is on both lists: cart is a checkout discount or coupon code, catalog is a shelf sale. | |
| name | No | What the merchant calls it and what the shopper sees on the line. | |
| value | No | Basis points when the rule is a percentage (20% is 2000), minor units (cents) when it is an amount or a fixed price. | |
| buyQty | No | Buy-X-get-Y checkout rules only: how many they buy. | |
| endsAt | No | ISO 8601. null clears it, so it runs until turned off. | |
| getQty | No | Buy-X-get-Y checkout rules only: how many of those are free. | |
| maxQty | No | Checkout rules only. Most units the discount touches in one order; null for all of them. | |
| priority | No | Lower runs first when rules stack. | |
| startsAt | No | ISO 8601. null clears it, so it starts immediately. | |
| promotion | Yes | The promotion's name, its checkout code, or its id from promotions.state. | |
| usageLimit | No | Checkout rules only. Redemptions across everyone; null for unlimited. | |
| description | No | Shelf sales only. A note for the merchant's own eyes. | |
| minSubtotal | No | Checkout rules only. Minor units the basket must reach; null for no minimum. | |
| stopFurther | No | Nothing after this rule is considered when it applies. | |
| freeShipping | No | Checkout rules only. Delivery is free when the rule applies. | |
| perCustomerLimit | No | Checkout rules only. Redemptions per customer; null for unlimited. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint false, destructiveHint false, idempotentHint false) already sketch the safety profile, and the description adds genuinely new behavioral context: the call is non-mutating, returns a preview of the diff plus a confirmation link, and requires human confirmation before anything happens. This two-step disclosure is exactly the kind of trait annotations cannot express; there is a mild tension with readOnlyHint=false but the description is clarifying rather than contradicting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the units convention, then the critical preview/confirmation caveat. No wasted words and the most important behavioral fact is placed last for emphasis.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 17 params at full schema coverage and no output schema, the description's job is to cover the behavioral gap, which it does by explaining the preview/confirmation return. It could say more about what the preview contains, but the essential calling context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each of the 17 parameters is already documented in detail, so the schema carries the load. The description only restates the money-units convention ('integer minor units (cents)'), which the value parameter already explains, adding little beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change a promotion's terms'), which is clear enough to separate it from promotions_delete and promotions_state. However, it does not explicitly differentiate itself from the closer sibling promotions_set_active, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the workflow context (calling it produces a preview plus a confirmation link, and only the merchant can commit), which implicitly tells the agent this is not the final action. But it names no alternatives or exclusions, so an agent cannot tell from the text alone why it would pick this over promotions_set_active or discounts_coupon.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promotions_set_activeAInspect
Pause or resume a promotion. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only needed when the same name is on both lists: cart is a checkout discount or coupon code, catalog is a shelf sale. | |
| active | Yes | false pauses it, true resumes it. A paused rule keeps its terms and its usage count. | |
| promotion | Yes | The promotion's name, its checkout code, or its id from promotions.state. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering the safety profile (destructive=false, idempotent=false), the description still adds substantial behavior the annotations cannot express: the call is a preview, it emits a confirmation link, and the merchant must confirm on that page for anything to change. That preview/confirmation flow is exactly the kind of non-obvious behavior an agent must know before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the preview/confirmation explanation is tight and earns its place. But the 'Money is integer minor units (cents)' sentence is irrelevant to a tool with no monetary parameter and reads as copy-paste residue, costing the definition some conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description covers the return behavior (a preview of the change plus a confirmation link) and the full parameter set is documented in the schema. The only gap is the never-answered question of how this relates to the sibling promotion tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains kind, active, and promotion in detail, and the baseline is 3. The description adds no parameter-specific detail for this tool; worse, its 'Money is integer minor units (cents)' sentence refers to no parameter in this schema, so it contributes noise rather than meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb pair and resource: 'Pause or resume a promotion.' An agent can grasp the intent instantly. However, it never names or contrasts the operation against siblings like promotions_edit, promotions_delete, or promotions_state, and the preview framing slightly muddies whether the tool itself performs the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It discloses a critical usage constraint – the agent cannot complete the change, only the merchant can via the confirmation page – which is real routing guidance. But it never states when to choose this versus promotions_edit/delete, or when pausing is preferable to deleting, so the when-to-use-vs-alternative dimension is implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promotions_stateBRead-onlyInspect
Sales and discounts running. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so 'Read-only; changes nothing' largely repeats structured data. The one genuine addition is the money-unit convention ('integer minor units (cents)'), which matters because there is no output schema to document returned amounts, but scope/pagination behavior is still undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short front-loaded fragments with no filler, and the read-only constraint is stated immediately after the resource. It is terse to the point of under-specification, which is a completeness problem rather than a structure problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should carry the return-shape burden, yet it never explains what a promotion record contains, whether scheduled and checkout-pending entries are included, or how results are ordered. The money-unit note is a useful partial compensation, but an agent still lacks enough to interpret the response confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool is 4. No misleading parameter claims are present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun phrase ('Sales and discounts running') with no verb, so it never explicitly says it lists/returns promotions state. The sibling set (promotions_edit, promotions_delete, promotions_set_active) makes the read-only nature inferable, and 'Read-only; changes nothing' helps position it as the query counterpart, but the core purpose is left implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions, and no mention of alternatives such as discounts_catalog_sale or promotions_set_active. The read-only phrase weakly implies 'use this to inspect rather than modify', but the agent must infer all routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_planAInspect
Several capability steps as ONE proposal: previewed together, confirmed once by the merchant, applied all-or-nothing. Use when the merchant asks for one thing that takes several steps (a sale plus its coupon). Each step names one of this connector's capability tools and gives that tool's input. Changes nothing by itself.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the preview/confirm/atomic semantics: 'previewed together, confirmed once by the merchant, applied all-or-nothing' and 'Changes nothing by itself.' The annotations only give safety flags; the description explains the human-in-the-loop and transactional behavior the agent needs to reason about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core mechanic and followed by the use case and the key caveat. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex orchestration tool with no output schema, the description covers the essential mental model: composition, single confirmation, atomic application, and no side effects on its own. Minor gaps remain around step-count limits and what a preview returns, but nothing blocking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the top-level 'steps' property, but the description compensates by explaining that each step names a capability tool and supplies that tool's input. It does not surface the 2-item minimum / 8-item maximum constraints, so it is not fully compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (propose) and resource (a multi-step plan), and immediately distinguishes this meta-tool from the flat capability siblings by explaining it bundles several steps into one proposal. An agent can tell this is a composition/orchestration tool rather than a single mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete trigger: 'Use when the merchant asks for one thing that takes several steps (a sale plus its coupon).' This implies when-not (single actions go straight to the capability tool) but never names the alternative explicitly or states the inverse condition outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_own_theme_fileARead-onlyInspect
Read one file of an own theme with its current revision. Path "" lists every file with its size. Paths: theme.json, theme.css, README.md, AGENTS.md, sections/.json, templates/.json, styles/.json.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| slug | Yes | The theme's slug, as list_own_themes shows it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/closed-world, so the description adds real value beyond them: it discloses that the response carries the current revision and that an empty path switches the behavior to a file listing with sizes. It doesn't describe error behavior for invalid paths, but that is a minor omission against solid annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then the empty-path behavior, then the path grammar. Every clause carries information an agent needs to form a valid call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no output schema, the description covers both parameters' semantics and the response's revision-bearing nature. Remaining gaps (failure modes, revision format) are small relative to the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% – slug is documented in the schema, path is not. The description compensates by enumerating valid path forms (theme.json, sections/<name>.json, templates/<handle>.json, etc.) and explaining the special empty-path case, adding meaning the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Read one file of an own theme') with scope clarified as 'with its current revision'. An agent can distinguish this from write_own_theme_files or check_own_theme without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implicitly tells you how to discover files (empty path lists every file with size), which is genuinely useful usage context, but never names an alternative tool or states when not to use this one versus write_own_theme_files or screenshot_own_theme.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirects_listCRead-onlyInspect
The shop's redirects. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Part of an old or new address to look for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so 'Read-only; changes nothing' merely repeats structured data. The only novel sentence, about money being integer minor units, is irrelevant to a redirects tool with no monetary parameters and adds noise rather than behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, which is good, but one of only three sentences is an irrelevant money-units note that does not earn its place for this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool whose annotations cover the safety profile and whose schema explains the result ('first 100, with the total'), the description is barely adequate. It omits any sense of ordering, filtering behavior, or relationship to redirects_set, leaving gaps it could easily have filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'search' parameter is fully documented in the schema. The description adds no parameter meaning beyond the schema, but that is the baseline expectation at full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is essentially a restatement of the title ('The shop's redirects' vs title 'The shop's redirects'), with no distinct verb indicating the list operation. It names the resource but an agent gets the 'list' semantics only from the tool name, not the prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of the sibling redirects_set, which is the obvious alternative for writing. 'Read-only; changes nothing' faintly implies read vs. write but never routes the agent explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redirects_setAInspect
Add or remove redirects. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | Redirects to add; one for an old address that has one replaces it. | |
| remove | No | Old addresses whose redirect goes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavior beyond the annotations: the call is a preview-only no-op that returns a confirmation link, and the actual change is merchant-gated on that page. The declarative annotations (readOnlyHint=false, destructiveHint=false) can be reconciled with this if generating the confirmation state is the side effect. The irrelevant 'money is integer minor units' line adds confusion but not a direct contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is correctly front-loaded, but the sentence 'Money is integer minor units (cents)' is pure noise for a redirects tool and earns no place. The remaining three sentences are tight, so the flaw is one stray sentence rather than overall bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write-intent tool with only two optional parameters and no output schema, the description covers the key gotcha an agent must know (no direct write, preview + confirmation link, merchant-gated). It omits sibling routing guidance, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema documents add/remove richly, so the baseline is 3. The description adds nothing about the two parameters, and its money sentence is inapplicable to a redirect tool, so it neither helps nor compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Add or remove redirects' gives a specific verb (add/remove) and resource (redirects), which is enough to separate it from the sibling redirects_list. It stops short of explicitly naming or contrasting an alternative, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it manages redirects and describes the two-step workflow, but never states when to pick this over redirects_list or when a redirect should be added vs removed. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reviews_listCRead-onlyInspect
The shop's reviews. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Only published or only hidden reviews. | |
| product | No | A product's handle or exact title, for its reviews only. | |
| maxRating | No | Only reviews of this many stars or fewer, e.g. 2 for the unhappy ones. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so "Read-only; changes nothing" is pure repetition and earns no credit. The only novel element is the units convention ("integer minor units (cents)"), which is arguably irrelevant for a review list and adds little behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no padding, though the second sentence duplicates what the annotations already state and could be dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is thin, but the object-level schema description supplies ordering (newest first), result cap (50), provenance (verified orders) and aggregate info, while annotations cover the safety profile. An agent has enough to call it correctly despite the minimal prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three filters (status, product, maxRating) are well documented in the schema with enums and bounds. The description adds nothing about them, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"The shop's reviews" restates the title and annotation title almost verbatim, with no verb and no differentiation from siblings like reviews_set_status or reviews_settings. Only the tool name implies listing; the description itself adds no specific purpose beyond the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative. "Read-only; changes nothing" signals a safe read, but does not tell the agent when to call this versus reviews_settings or reviews_set_status, nor any prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reviews_set_statusAInspect
Hide or show reviews. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | hidden takes a review off the shop; published shows it again. The words are never changed. | |
| reviews | Yes | Review ids, as reviews.list gives them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the call is non-mutating (returns a preview), it produces a confirmation link, and completion requires the merchant on that page — an auth/handoff detail not in the structured fields. This is genuinely useful, though it leaves unresolved why readOnlyHint is false and idempotentHint is false if nothing changes, and does not describe the preview payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentences are short and front-loaded, but 'Money is integer minor units (cents)' is irrelevant to a tool with no monetary parameter and reads as copy-paste from a shared template, adding confusion without value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains what the call returns (a preview of would-be changes and a confirmation link) and who can finalize it. Combined with fully documented parameters, an agent has enough to call it correctly; only the preview contents and the non-idempotency rationale are left open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema (including the published/hidden enum semantics and the review id source). The description adds nothing about parameter formats, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Hide or show reviews') and the target is unambiguous against siblings like reviews_list and reviews_settings. However, the follow-up 'Calling this changes nothing' reframes the tool as a preview generator, which sits in tension with the name reviews_set_status; the agent must read past the first sentence to learn what the tool really does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear workflow context: the call produces a preview plus a confirmation link, and only the merchant on that page can actually apply the change. It does not name alternatives (e.g., reviews_list for enumerating reviews) or state when this preview step should be skipped, so it stops short of explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reviews_settingsBInspect
Set how the shop asks for reviews. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | off sends no requests; shop asks buyers to review the shop; products asks them to review each product they bought. | |
| afterDays | No | Days after an order ships before the request goes, 1 to 60: long enough to have used the thing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses behavior well beyond the annotations: calling is effectively a no-op that returns a preview and a confirmation link, and only the merchant on that page can actually apply the change. This is genuinely useful two-phase-commit context. The only blemish is that it never reconciles this 'changes nothing' framing with the readOnlyHint=false annotation, leaving the safety signal ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the two sentences on preview/confirmation are efficient and earn their place. However, the money-units sentence has no corresponding parameter here and is dead weight, so the description is not fully tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description usefully explains what the call returns (a preview plus confirmation link) and who can complete the change. Nothing essential for invoking it correctly is missing; the stray money-units line is a minor distraction rather than a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (mode, afterDays) carry full descriptions, so the baseline is 3. The description adds no parameter meaning of its own, and its 'Money is integer minor units (cents)' sentence maps to no parameter in this schema, making it irrelevant rather than additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Set how the shop asks for reviews,' which pins down that this configures review-request behavior rather than individual reviews (reviews_list, reviews_set_status) or notification channels. It is clear on purpose, but it never names or contrasts a sibling tool, so it stops short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use/when-not-to-use guidance and no mention of alternatives such as reviews_list or settings_notifications. The statement about the merchant confirming on a page describes the mechanics of the call, not the conditions under which an agent should choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routines_createAInspect
Set up a routine. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| hour | No | The hour it runs, in the shop's own time zone. 8 is eight in the morning. | |
| title | Yes | A short name, e.g. "Monday summary". | |
| prompt | Yes | The instruction you would need to do this unattended, written to yourself: what to look at, what to propose, what to write. Nobody answers questions during a run. | |
| cadence | Yes | How often it runs. | |
| weekday | No | Weekly only: 1 is Monday, 7 is Sunday. | |
| dayOfMonth | No | Monthly only: 1 to 28. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses genuinely non-obvious behavior: the call has no live effect, it returns a preview plus a confirmation link, and only the merchant can activate it. This is consistent with destructiveHint=false (nothing harmful changes) and readOnlyHint=false (a pending routine object is created), so the apparent tension with "changes nothing" is reconcilable. Not a 5 because it omits any auth/scope context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the sentences are short. However, "Money is integer minor units (cents)" earns no place here because routines_create has no monetary parameters, so one of four sentences is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains the return (a preview of what would change and a confirmation link) and the deferred-execution model. It is nearly complete; it could say more about what the preview contains or the account scope required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters; baseline is 3. The description adds one useful hint for the prompt parameter ("nobody answers questions during a run"), but the money-units sentence refers to no parameter this tool actually has.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Set up a routine"), which an agent can map cleanly to the create operation. It does not, however, explicitly distinguish itself from the sibling routines_update/routines_list/routines_delete, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the workflow the call triggers (preview then merchant confirmation) but never states when to reach for this tool versus routines_update or routines_list, nor any prerequisite. Usage is only implied by the deferred-execution narrative, so 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routines_deleteBDestructiveInspect
Stop a routine for good. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| routine | Yes | The routine's title or id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context beyond the annotations: the call itself mutates nothing, it returns a preview plus a confirmation link, and only the merchant on that page can complete the deletion. That is valuable for a destructiveHint=true tool. It sits in mild tension with readOnlyHint=false, but is best read as describing a two-phase confirm pattern rather than contradicting the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior is front-loaded and the confirmation caveat is well placed. But the money/cents sentence is a stray artifact from an unrelated template and earns no place here, diluting an otherwise tight four-sentence description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains what a call returns (a preview and a confirmation link) and who can act on it. It still omits what the preview contains, what happens to the routine's history after confirmation, and any failure modes, but it is largely sufficient for a single-parameter deletion trigger.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully documented in the schema ("The routine's title or id."), so the schema carries the burden and baseline 3 applies. The description says nothing about the routine parameter, and its one parameter-adjacent sentence ("Money is integer minor units (cents)") is irrelevant to a tool with no monetary input, adding noise instead of meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource ("Stop a routine") that maps cleanly to routines_delete. However, it never distinguishes this from sibling routines_update or routines_list, so an agent must infer the boundary. "For good" is informal but conveys permanence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no routing to alternatives such as routines_update (which may also stop/deactivate a routine). The two-step confirmation flow is described, but not the conditions under which an agent should pick this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routines_listBRead-onlyInspect
The routines this shop runs. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so 'Read-only; changes nothing' largely restates the annotations. The money-unit note is the only real addition, and it's tangential to a zero-param read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no waste. The money-units sentence is arguably unnecessary for a zero-param list but is harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with annotations covering safety and no output schema, the description is adequate but thin. It omits return-shape context (routine fields) and doesn't distinguish the tool from other list_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool takes zero parameters, so baseline is 4. The description appropriately doesn't clutter with param discussion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: lists the routines this shop runs. Clear enough, though it doesn't differentiate from siblings like routines_create/update/delete beyond the implicit verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs. routines_create/update/delete or other list tools. Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routines_updateAInspect
Change a routine. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| hour | No | The hour it runs, in the shop's own time zone. 8 is eight in the morning. | |
| title | No | A short name, e.g. "Monday summary". | |
| prompt | No | The instruction you would need to do this unattended, written to yourself: what to look at, what to propose, what to write. Nobody answers questions during a run. | |
| cadence | No | How often it runs. | |
| routine | Yes | The routine's title or id. | |
| weekday | No | Weekly only: 1 is Monday, 7 is Sunday. | |
| isActive | No | false pauses it, true resumes it. | |
| dayOfMonth | No | Monthly only: 1 to 28. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is the strongest section: it discloses the non-obvious two-phase behavior that the call itself 'changes nothing', that it returns a preview plus a confirmation link, and that only the merchant can execute the change. That is exactly the kind of operational context annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) cannot convey, and it correctly signals the deferred/idempotency-sensitive nature of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with the core behavior front-loaded, which is good. However, the second sentence about money in cents appears to be carried over from a payment-related tool and does not earn its place for a routine-scheduling schema, weakening an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation-path tool with full schema coverage, no output schema, and no nested objects, the description covers the crucial non-obvious behavior (preview, confirmation link, merchant gating). It omits partial-update semantics (whether omitted fields are preserved) and the merchant-approval latency, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents hour, title, prompt, cadence, weekday, dayOfMonth, and isActive with good detail. The description adds no parameter-level meaning and the one semantic aside (money in cents) maps to no parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Change a routine') that cleanly separates it from siblings routines_create, routines_delete, and routines_list. It does not explicitly name or route away from those siblings, but the CRUD positioning is unambiguous from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the confirmation workflow; there is no explicit statement of when to prefer routines_update over routines_create or routines_delete, nor what preconditions (e.g. an existing routine id) must hold. The 'Money is integer minor units (cents)' sentence adds no routing value since no parameter is monetary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sales_reportCRead-onlyInspect
Sales report. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How far back. 30 if unsure. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
"Read-only; changes nothing" duplicates readOnlyHint/destructiveHint, so it earns no credit. However, "Money is integer minor units (cents)" is a genuinely useful behavioral detail about result interpretation that is absent from the annotations and schema, which lifts this above a bare restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight fragments with zero padding, and the safety/units facts are front-loaded. It is efficient, though the staccato style leaves the core purpose under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what the report returns, and it does not say what metrics or dimensions (revenue, orders, products, time buckets) the agent will receive. Only the currency unit is clarified, leaving the main return-shape question unanswered for a report tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already carries "How far back. 30 if unsure." The description adds no syntax, default, or interpretation beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with "Sales report.", which merely restates the name and title without specifying what the report contains (revenue? order counts? per-day breakdown?). It adds the safety profile and a currency-units note, but never states a specific verb+resource outcome, and it does not distinguish this from siblings such as orders_lookup or shop_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool, when not to, or which sibling to prefer for order/revenue data. Nothing indicates that it is a top-level analytics summary rather than a per-order lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_own_themeADestructiveInspect
Stage an own theme as this shop's draft and return a screenshot of one page, so you can see what you built.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | A template handle: home, collection, product, cart, search, login, register, header, footer, blog or blog-post. Default home. | |
| slug | Yes | The theme's slug, as list_own_themes shows it. | |
| width | No | Viewport width, 320 to 1920. 390 is a phone. Default 1440. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, but the description earns credit by disclosing the non-obvious side effect: the tool writes the theme as the shop's draft. That explains the destructive flag for a tool whose name suggests a pure read. It still omits reversibility, whether the draft can go live, and auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the mutation first and the return value second. No padding, and the 'so you can see what you built' clause is a compact purpose statement rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description usefully states the return (a screenshot of one page). Combined with the staging disclosure, an agent knows both the side effect and the output. It could go further on the screenshot's format/lifetime and the permanence of the staging, but it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with page, slug and width all documented (including the template handle list and width semantics). The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific compound verb+resource: it stages a theme as the shop's draft and returns a screenshot of one page. This is clear and even corrects a misleading name (a 'screenshot' tool that actually mutates state). It does not, however, distinguish itself from the sibling stage_own_theme, which appears to overlap in the staging behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the trailing clause 'so you can see what you built' — i.e., use it to preview a theme you authored. There is no explicit when-to-use/when-not, and the obvious alternative (stage_own_theme, check_own_theme) is never named, leaving the agent to infer which staging/preview tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_setAInspect
Set how the shop describes itself to search engines. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| seoTitle | No | The title search results show for the shop, cut at about 60 characters. Empty falls back to the shop's name. | |
| robotsTxt | No | The shop's robots.txt as crawlers read it. Empty, or the same as the platform's own, goes back to the platform's rules. | |
| robotsPolicy | No | What every page tells crawlers. index_follow is the normal choice; noindex takes the shop out of search results. | |
| robotsSitemaps | No | Which sitemaps robots.txt names, as paths like /sitemap.xml or /pt/sitemap.xml. null names all of them, including languages published later. | |
| seoDescription | No | The line under the title in search results, cut at about 155 characters. Empty falls back to the tagline. | |
| socialImageUrl | No | The picture shown when the shop's address is shared on social networks, as a full https:// URL. Empty clears it. | |
| structuredData | No | What search engines are told about the business beyond its other settings, on every page: Settings > Search engines > Business in search results. Only the fields given change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description carries behavior no annotation can express: calling the tool applies nothing, it returns a preview of the diff plus a confirmation link, and the real change requires the merchant on that page. This resolves the tension with readOnlyHint=false (the call stages a pending change rather than altering live settings) instead of contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then the units caveat, then the critical no-op/confirmation behavior. Nothing is padded, though the units sentence sits slightly apart from the confirmation-flow message it precedes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with nested objects, enums, and no output schema, the description supplies the two things structured data cannot: the deferred-confirmation lifecycle and a sketch of the return (preview of changes + confirmation link). Parameters themselves are fully covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested structuredData fields are thoroughly documented inline, so the schema does the heavy lifting. The description only adds a units reminder (money in integer minor units / cents), which restates what the schema already says for returns.fee.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb+resource ("Set how the shop describes itself to search engines"), so the operation and its domain are unambiguous. It does not explicitly route against siblings such as settings_*, branding_set, or shop_state, but no sibling shares the SEO resource, so the boundary is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource (configure the shop's search-engine metadata), and the description usefully notes that only the merchant can actually apply the change. However, it never states when to reach for seo_set versus adjacent settings tools, nor any preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_sectionsAInspect
Replace a page's layout. Writes to the DRAFT only: nothing a shopper sees changes until the merchant presses Publish. Unknown section types and unknown setting keys are dropped, so read list_section_types first. Set enabled:false on a section to hide it while keeping its settings. Call get_design_guide first if you have not: it has the layout language and the rules.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | One short line on what you changed and why. | |
| handle | Yes | ||
| sections | Yes | The whole page, in order. Include sections you are keeping. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=false and readOnlyHint=false already declaring this a non-destructive write, the description still adds critical behavioral facts: the write lands only in DRAFT and is invisible to shoppers until Publish, and unknown section types/setting keys are silently dropped. The drop behavior is a genuine hazard disclosure that 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the action and its draft-only scope, then prerequisites and the enabled:false trick. No filler; every clause carries operational weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers draft semantics, silent-drop risk, section-hiding, and prerequisite reads. Minor gaps remain: no mention of return value, permission requirements, or whether the replacement is atomic, but nothing essential for calling it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 67%, with `type`, `blocks`, `settings`, `enabled`, and `handle` undocumented in the schema. The description compensates for the important ones by explaining enabled:false (hide while keeping settings) and that unknown types/keys are dropped, though `handle` and `blocks` remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete verb+resource+scope: 'Replace a page's layout.' An agent immediately knows this is a whole-page layout write, distinct from sibling granular tools like define_section, set_theme_settings, or upsert_content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives ordered prerequisites clearly ('read list_section_types first', 'Call get_design_guide first if you have not'), which is real routing guidance. It does not name a when-not-to-use case or point at alternative page-editing tools for partial edits, so it falls short of an explicit 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_theme_settingsAInspect
Change the theme's own settings. These apply to every page at once. Values are held to the theme's declared fields; unknown keys are dropped.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds real behavioral context beyond them: writes are validated against the theme's declared fields and unknown keys are silently dropped. It omits other mutation-relevant behavior such as whether unlisted existing settings are preserved or cleared, and whether changes require publishing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the scope constraint and the validation caveat front-loaded. Every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and a fully undescribed nested parameter, the description covers the validation/drop behavior but leaves the merge-vs-replace semantics, permission requirements, and any publish step unstated. Adequate but with clear gaps an agent could trip over.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the sole parameter is an untyped nested object, so the description carries the burden. It partially compensates by explaining that keys map to the theme's declared fields and unknown keys are dropped, but it never shows the field/value shape or whether the object merges with or replaces existing settings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (change the theme's own settings) and clarifies scope ('apply to every page at once'), which separates it from page-level and token-level siblings like set_theme_tokens or set_page_sections. It stops short of naming an alternative tool explicitly, so it is clear but not sibling-differentiating by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'apply to every page at once' clause implies global-scope usage and helps an agent choose this over per-page tools, but there is no explicit when-to-use/when-not-to-use statement and no mention of the read counterpart get_theme_settings or when to prefer set_theme_tokens instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_theme_tokensAInspect
Change the shop's colours, fonts or shape. Keys come from get_theme_tokens, call it first. Colours are hex or rgb(); lengths carry a unit; picture shapes (imageRatioCard, imageRatioProduct) are width / height, like 2 / 3, or auto for pictures as uploaded. Anything that is not a valid value for that token is refused, and you will be told which.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| tokens | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (not read-only, not destructive, closed-world), so the description correctly spends its budget elsewhere: it discloses that invalid token values are refused and that the caller is told which one failed. It does not say whether changes apply to a draft or go live immediately, which for a theme mutation would be useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, zero filler, front-loaded with the action and then escalating into the prerequisite and value-format rules. Every sentence changes how the agent would call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and zero schema description coverage on a nested-object parameter, the description supplies exactly the missing pieces: key provenance, accepted value formats, and error behaviour. The remaining omission (the meaning of 'note') is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and tokens is a free-form nested object, so the description must carry the semantics — and it does, specifying hex/rgb() for colours, unit-bearing lengths, and width/height or 'auto' for imageRatioCard/imageRatioProduct. Only the optional 'note' parameter goes unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Change the shop's colours, fonts or shape') and names get_theme_tokens as the source of valid keys, which sharpens what the tool operates on. It does not distinguish itself from the closely-named sibling set_theme_settings, so an agent must infer the split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite and prerequisite ordering: keys come from get_theme_tokens and the agent should 'call it first'. That is real routing guidance. It stops short of stating when-not to use this versus set_theme_settings or branding_set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_checkoutAInspect
Choose which checkout shoppers pay on. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| checkoutMode | Yes | Where a shopper pays. own: the shop's own checkout page, which takes cards, plus PayPal, Mollie and offline methods on Pro; Whizzy Payments always uses it. hosted: Stripe's hosted page, cards only, on the shop's own Stripe keys (Pro). Allowed before any provider keys are in; the storefront falls back to hosted until then. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing preview semantics ('it returns a preview of what would change and a confirmation link') and an out-of-band completion step. The annotation set (readOnlyHint=false, destructiveHint=false) is consistent with a flow that issues a confirmation token but performs no destructive change; no contradiction, though the 'changes nothing' wording sits in mild tension with readOnlyHint=false and could have been reconciled explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the preview/confirmation caveat is valuable, but 'Money is integer minor units (cents)' is dead weight for a tool whose only parameter is an enum with no amounts. That sentence consumes roughly a third of the text without helping an agent call this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-enum, one-required-parameter tool with no output schema, the description usefully states what the call returns (a preview plus confirmation link) and who can finalize the change. Combined with the rich enum documentation, an agent has enough to act; only prerequisite/ordering guidance is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the enum's own description already explains 'own' vs 'hosted', provider coverage, and the fallback behaviour in more detail than the description does. The description adds no parameter meaning — its one parameter-related sentence ('Money is integer minor units (cents)') is irrelevant, since this tool has no monetary parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Choose which checkout shoppers pay on' — an agent knows this sets the payment checkout mode. It does not differentiate from the nearby sibling settings_checkout_extras, so an agent comparing the two settings_checkout* tools gets no routing help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by context (configuring checkout) and the description hints at a workflow — the merchant must complete the change on a returned page. But there is no explicit when-to-use vs alternatives guidance, no mention of prerequisites such as provider keys, and no exclusion against settings_checkout_extras.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_checkout_extrasBInspect
Set tipping and abandoned basket emails. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| tipPresets | No | The 3 preset tips as whole percentages of the goods, like [10, 15, 20]. Duplicates are dropped and fewer than 3 are padded from 10, 15, 20. | |
| tippingEnabled | No | Whether checkout offers a tip on top of the goods. | |
| tipHiddenUntilAsked | No | Whether the presets sit behind an "Add a tip" link rather than on the page. | |
| abandonedEmailEnabled | No | Whether a shopper who started checkout and left is emailed once about their basket. Saved on any plan; only plans with recovery send it. | |
| abandonedEmailAudience | No | subscribers: only people who asked to hear from the shop, the safe default in the EU. all: anyone who typed an address into checkout. | |
| abandonedEmailAfterHours | No | Hours after the checkout was started before the email goes, snapped to 1, 6, 10, 24. 10 is recommended. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Calling this changes nothing: it returns a preview of what would change and a confirmation link,' which describes read-only behavior. This directly contradicts the annotation readOnlyHint=false, making the definition internally inconsistent about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and compact, with the purpose and preview behavior stated early. The sentence about money units is irrelevant to this schema's parameters, so it is minor wasted space but not severe.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description appropriately explains what the call returns: a preview and a confirmation link. Combined with the fully documented input schema and the clarification that only the merchant can confirm the change, an agent has enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself gives detailed semantics for all six parameters. The description adds only 'Money is integer minor units (cents),' which does not apply to any actual parameter here, so it provides no useful parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Set tipping and abandoned basket emails.' This clearly distinguishes the tool from sibling settings tools such as settings_checkout, settings_notifications, and settings_identity by scoping it to checkout extras.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use the tool, and the description notes that only the merchant can finalize the action via a confirmation link. However, it does not explicitly state when to use this tool versus alternatives like settings_checkout or settings_notifications, nor does it define exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_currenciesAInspect
Set which currencies shoppers can read prices in. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| rounding | No | exact: exact conversion (89 EUR reads 96.32 USD). whole: round up to a whole number (89 EUR reads 97 USD). ninetyNine: round up to .99 (89 EUR reads 96.99 USD). All of them round up. | |
| currencies | No | The whole list of extra currencies shoppers may switch to, as ISO 4217 codes (USD, GBP). The shop's own currency is implied and never listed. An empty list offers only the shop's own currency and hides the switcher. | |
| fixedRates | No | Rates fixed by hand, as units of that currency per 1 unit of the shop's own currency, keyed by code: {"USD": 1.10}. Replaces the whole set when given; a currency left out uses the daily reference rate. A rate more than ten times off the daily rate is refused as a typo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give the generic profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false); the description adds the far more important behavioral fact that the call has no immediate effect on the shop and instead produces a preview plus a confirmation link that only the merchant can act on. That deferred-application model is exactly the kind of context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the resource and immediately followed by the most decision-relevant fact (no immediate change). The minor-units sentence is a slight tangent for a tool whose inputs are currency codes and rates, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by describing the preview and confirmation link, plus the actor who can apply the change. It leaves open what the preview contains and whether repeated calls accumulate pending changes, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — rounding, currencies and fixedRates are each documented in detail in the schema — so the baseline is 3. The description adds only 'Money is integer minor units (cents)', which is loosely tied to fixedRates and arguably ambiguous given the schema's example rate of 1.10.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — which currencies shoppers can read prices in — which is unique among the settings_* siblings (settings_tax, settings_language, settings_store_defaults all cover different resources). It also immediately discloses the twist that the call sets up a change rather than applying it, so the agent knows exactly what this tool is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the workflow ('returns a preview ... a confirmation link. Only the merchant, on that page, can make it happen'), which implies when to reach for this tool, but it never names an alternative or states an explicit when/when-not condition against siblings like settings_store_defaults or settings_details. Usage is inferable rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_customer_accountsAInspect
Choose whether shoppers can sign in. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| accountsMode | Yes | enabled: shoppers can sign in and register on the storefront. disabled: no sign-in on the shop front; every paid order still gets an account and its owner is emailed a link into it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the most important behavioral fact: calling it mutates nothing, it returns a preview plus a confirmation link, and only the merchant on that page can complete the change. That is high-value context not derivable from readOnlyHint=false/destructiveHint=false. There is mild tension between 'Calling this changes nothing' and readOnlyHint=false, but the description explains rather than contradicts the conservative annotation (the tool is part of a write flow).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The flow description is front-loaded and earns its place, but the 'Money is integer minor units (cents)' sentence is dead weight for a tool with a single non-monetary enum parameter and dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the return shape (a change preview and a confirmation link), which is what an agent needs to sequence this two-step flow. Only the irrelevant money sentence detracts from an otherwise complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the accountsMode enum values are thoroughly documented in the schema itself. The description adds no parameter-level detail — the one sentence about money is irrelevant to accountsMode — so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Choose whether shoppers can sign in') and is distinguishable from the neighboring settings_* tools. The stray sentence 'Money is integer minor units (cents)' is unrelated to any parameter of this tool and slightly muddies an otherwise crisp purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description explains the preview-then-confirm flow, which hints at when to call it, but it names no alternatives (e.g. settings_details, customers_create) and gives no explicit when-not-to-use condition. Adequate minimum but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_detailsAInspect
Set the shop's name, tagline and contact email. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| tagline | No | The line under the name, used as the search-result description. Up to 140 characters; empty clears it. | |
| shopName | No | The name on the storefront, receipts and search results, 2 to 60 characters. The web address does not change with it. | |
| contactEmail | No | Where customer replies to receipts go. Empty sends them to the account that owns the shop. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only partially covering the safety profile, the description adds real behavioral context: the call is non-mutating, returns a preview plus a confirmation link, and only the merchant can complete the change. 'Calling this changes nothing' sits in tension with readOnlyHint=false, but the description explains the two-phase design that reconciles them (this call stages, the page commits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the purpose before the behavioral caveat. The money/units sentence earns no place here and slightly muddies an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-optional-parameter tool with no output schema, the description supplies the crucial missing context: no state change occurs, a preview and confirmation link come back, and the merchant performs the actual change. It could go further by resolving the read-only tension or pointing to the confirm/publish sibling, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the three parameters are already fully documented with lengths and empty-value semantics. The description adds nothing about them, and its 'Money is integer minor units (cents)' sentence is irrelevant since no monetary parameter exists, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource set: setting the shop's name, tagline and contact email. That scope is narrow enough to distinguish it from broad siblings like settings_identity or settings_store_defaults, but no sibling is named explicitly and the tool name 'settings_details' misleadingly suggests a read tool, so the description must do the work alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the mechanics of use (calling returns a preview, the merchant confirms elsewhere), which is important guidance about what a call actually accomplishes. It never states when to prefer this over overlapping siblings such as branding_set or settings_identity, so the when-to-use decision is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_identityAInspect
Set who the seller legally is. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| legalName | No | The registered business name, as it should appear on invoices. | |
| vatNumber | No | The VAT number as registered, country prefix included, e.g. PT123456789. Empty clears it. | |
| businessPhone | No | The business phone, with country code, e.g. +351 200 000 000. Empty clears it. | |
| businessAddress | No | The registered business address, given whole: street, city and country are required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring readOnlyHint=false / destructiveHint=false / idempotentHint=false, the description supplies the genuinely non-obvious behavior: the call is a no-op that returns a diff preview plus a confirmation link, and only the merchant can commit it. That two-phase, human-confirmed flow is exactly the kind of context annotations cannot encode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, with the effect (or lack of it) front-loaded after the one-line purpose. The 'Money is integer minor units' sentence earns no place because no money parameter is present, which is the only real waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with full schema coverage, no output schema and only hint-level annotations, the description covers purpose, side-effect semantics and the confirmation mechanism — everything an agent needs to call it correctly and set expectations about the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so field meanings are already carried by the schema and the baseline is 3. The description adds no parameter-level detail, and its sentence about money being integer minor units is irrelevant here since no monetary parameter exists in the schema, so it does not raise the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Set who the seller legally is') and the schema confirms it covers legal name, VAT number, phone and registered address — distinct from generic siblings like settings_details or settings_tax. An agent can tell what this tool configures without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames the calling context — this call only produces a preview, and the actual change must be confirmed by the merchant on a linked page. It does not, however, contrast itself with adjacent settings tools (settings_details, settings_store_defaults), so routing guidance is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_inventoryAInspect
Set how the shop counts stock. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| trackInventory | No | What "Track quantity" starts switched to on a new product. Off means new products are created uncounted and always available. | |
| backorderPolicy | No | deny: sold out at zero. allow: keeps selling past zero silently, the count goes negative. allow_notify: sells past zero and the product page says "Available on backorder". | |
| lowStockThreshold | No | The count at or under which the storefront says how few are left. 0 to 1000; 0 never says it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses genuinely non-obvious behavior beyond the annotations: the call mutates nothing itself, returns a preview plus a confirmation link, and only the merchant can complete the change. That is important because readOnlyHint=false could otherwise suggest the call writes directly; the description reconciles this by describing a two-phase confirmation flow rather than a direct mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behaviorally important content (no direct change, preview + confirmation link) is front-loaded after the one-line purpose. The intervening "Money is integer minor units (cents)" sentence is boilerplate that earns no place in a tool with no monetary parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly spends words on the return contract: a preview of what would change plus a confirmation link. Combined with the fully-covered input schema, an agent has enough to call this correctly, though it lacks any mention of prerequisites or tenant/permission requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the meaning of trackInventory, backorderPolicy and lowStockThreshold, including the enum semantics. The description adds no per-parameter guidance, and its "Money is integer minor units (cents)" sentence is irrelevant here since no parameter is monetary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource pair ("Set how the shop counts stock") is concrete and matches the three inventory-tracking settings. It does not, however, differentiate itself from neighbors like inventory_adjust (which changes counts) or settings_store_defaults, so an agent must infer the boundary 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description usefully explains the call workflow (returns a preview, merchant confirms on a page), which implies when the call is appropriate. It never states when NOT to use it or names an alternative such as inventory_adjust for actually changing counts, so routing remains partly inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_languageAInspect
Change the shop's languages. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The language. pt is Portuguese as written in Portugal, pt-BR as in Brazil. | |
| action | Yes | make_default: the storefront is written in this language (what "make the shop Portuguese" means); it is added if missing. add: offer it as a second language, unpublished until translated. publish / unpublish: put a second language live at /<code> or take it off. remove: drop it, translations kept. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: calling it is non-mutating (returns a preview plus confirmation link) and the final change requires merchant action on a separate page. This is exactly the 'what actually happens / what gets destroyed' information annotations alone can't convey. Minor tension with readOnlyHint=false and idempotentHint=false, but that reads as conservative endpoint classification rather than a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavioral sentences are tight and front-loaded, but the sentence 'Money is integer minor units (cents).' is irrelevant boilerplate for a language-setting tool with no monetary parameters and costs credibility. Two of three sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param tool with no output schema, the description covers the key runtime expectation (preview + confirmation link, merchant-gated) that the schema cannot express. It omits any mention of what the preview payload looks like or whether repeated calls are safe, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both params (code, action) carry detailed enum explanations, including the pt vs pt-BR nuance and per-action semantics. The description adds no parameter detail of its own, so the baseline 3 applies; the money/cents sentence is not tied to any parameter here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Change the shop's languages') and immediately clarifies the real effect (returns a preview, not a live change), which separates it from the many settings_* siblings that mutate directly. An agent can identify the tool's scope without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames when this is the right call: it is a two-step flow where this tool produces a preview and confirmation link, and 'only the merchant, on that page, can make it happen.' It does not name a sibling alternative (e.g. translations_set for translation content, settings_store_defaults for other defaults), so it stops 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.
settings_notificationsCInspect
Write the shop's own words on its order emails. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| refund | No | The shop's own paragraph under the refund email, up to 600 characters. Empty clears it. | |
| receipt | No | The shop's own paragraph under the order confirmation and the payment-received email, up to 600 characters. Empty clears it. | |
| shipment | No | The shop's own paragraph under the dispatch note, up to 600 characters. Empty clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation readOnlyHint=false declares the tool is not read-only, yet the description explicitly says 'Calling this changes nothing' and places the actual mutation behind a merchant-only confirmation page. That directly contradicts the annotation's read-only signal. Some auth context is provided, but the contradiction forces a score of 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the 'Money is integer minor units' sentence does not belong to this schema and adds noise. The remaining sentences about preview/confirmation are useful, so structure is only partially efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a settings-write workflow with no output schema, the description usefully explains the preview and confirmation-link return behavior and merchant-only execution. However, the contradiction around whether the call itself changes anything leaves the agent without a coherent safety model.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so refund/receipt/shipment parameters are documented in the schema. The description adds no meaningful parameter guidance, and the 'Money is integer minor units (cents)' sentence is irrelevant and potentially confusing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Write') and resource ('shop's own words on its order emails'), enough to identify the customization of order email paragraphs. It does not differentiate from the many settings_* siblings, and the money-units sentence is unrelated, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for editing order notification text and notes that only the merchant can execute the change via a confirmation link. It does not say when to choose this over related settings tools or what prerequisites apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_privacyCInspect
Set what the shop asks its shoppers. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| cookieBanner | No | Whether shoppers are asked before the shop's analytics and advertising tags load. On holds every merchant tag until the shopper says yes. | |
| marketingOptIn | No | Whether checkout shows the box asking permission to email offers later. Off is for a shop that does no marketing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false, indicating the tool may modify state, yet the description says 'Calling this changes nothing' and that it only returns a preview and confirmation link. That is a direct contradiction of the annotation's safety/read-only signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is vague, and the second sentence about money being integer minor units is entirely irrelevant to this tool. The important preview/confirmation behavior is useful but not front-loaded, so the description wastes space on misleading content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-boolean privacy-preview tool with no output schema, the description usefully explains that the call returns a preview and confirmation link rather than applying changes. It omits explicit naming of the privacy concepts, but the schema covers those parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so cookieBanner and marketingOptIn are already fully documented. The description adds no valid parameter semantics and instead includes an irrelevant money-in-cents sentence that does not map to any parameter and may confuse the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it sets 'what the shop asks its shoppers,' which implies consent/privacy settings but never explicitly names privacy, cookies, or marketing. It does not distinguish this tool from the many sibling settings_* tools, leaving the agent to infer the purpose from the tool name and schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the key usage caveat: calling the tool changes nothing, returns a preview and confirmation link, and only the merchant can complete the change. It does not name alternative tools, but the workflow context is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_store_defaultsBInspect
Set the shop's clock, order names and units. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | The IANA zone the shop reads its clock in, like Europe/Lisbon or America/New_York. It decides which day a sale is counted on. Empty means UTC. | |
| unitSystem | No | Metric or imperial: which weights new products are offered and how lengths read. | |
| weightUnit | No | The unit a new product's weight starts in. Must belong to the unit system (kg or g for metric, lb or oz for imperial); one that does not is corrected to the system's first. | |
| orderPrefix | No | The prefix on every order number a customer sees, up to 8 characters of letters, digits and # - _ . /. Empty clears it. The number itself never changes. | |
| orderSuffix | No | The suffix on every order number a customer sees, up to 8 characters of letters, digits and # - _ . /. Empty clears it. The number itself never changes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description flatly asserts 'Calling this changes nothing' — i.e., no environment modification — while the annotations declare readOnlyHint=false and idempotentHint=false. That is a direct conflict on exactly the property the readOnly hint encodes, and the otherwise valuable disclosure of the preview/confirmation flow cannot be trusted alongside it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and short, with the purpose stated first and the preview behavior immediately after. However, the money/cents sentence earns no place in a tool whose parameters are timezone, unit system, weight unit and order prefix/suffix — it is off-topic filler that can mislead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains what a call returns (a preview of pending changes plus a confirmation link) and that fulfillment requires the merchant on that page, covering the return semantics the schema does not. The remaining gap is the unresolved conflict with the annotation safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries full parameter meaning, making 3 the baseline. The one extra sentence ('Money is integer minor units (cents)') does not map to any of the five declared parameters — no monetary field exists in the schema — so it adds no usable parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the shop's clock, order names and units'), which scopes it precisely to timezone/order numbering/unit-system settings and separates it from the other settings_* siblings (checkout, tax, currencies, language). It does not name any sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool applies (changing the shop clock, order-number prefixes/suffixes, unit preferences) but offers no when-to-use versus when-not comparison against siblings such as settings_language or shipping_set_defaults. The confirmation-flow sentence is contextual help rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_taxAInspect
Set the shop's tax line. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| taxRateBps | No | The default tax rate in basis points: 23% is 2300, 0 switches tax off. | |
| taxIncludedInPrice | No | Whether shelf prices already include tax (true, the EU way) or it is added at checkout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give generic hints (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds the genuinely important behavior: the call destroys nothing, it returns a preview of the change plus a confirmation link, and execution is deferred to the merchant. This is real context beyond annotations, though the 'changes nothing' phrasing sits in mild tension with readOnlyHint=false (defensible, since the tool initiates a deferred write flow).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, then the units caveat, then the critical 'nothing changes yet' behavior. No filler and no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains what the call returns (a preview and a confirmation link) and who can complete the change. Annotations cover the safety profile. Only minor gaps remain, such as what the preview contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and taxRateBps/taxIncludedInPrice are fully self-documented (basis points with a 2300 example, tax-inclusive flag). The description's note that money is integer minor units adds a general unit convention but no extra meaning for these two parameters, so the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set the shop's tax line'), so an agent knows it configures the store's tax setting. It does not, however, differentiate itself from the nearby sibling 'settings_tax_rates', which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys context ('Only the merchant, on that page, can make it happen'), which implies the intended workflow. But it never states when to reach for this tool versus 'settings_tax_rates', and gives no explicit exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settings_tax_ratesBInspect
Set or remove the tax rate for a place. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | What it is called on the order: "Irish VAT", "NY sales tax". Required for a new rate; up to 60 characters. | |
| action | Yes | set: add a rate for the place, or change the one already there (only the fields given move). remove: delete the place's rate. | |
| country | Yes | ISO 3166-1 alpha-2, like PT or US. Empty or * is the catch-all for anywhere not named by another rate. | |
| rateBps | No | The rate in basis points: 23% is 2300, 8.875% is 888. Required for a new rate. | |
| province | No | State, county or region inside the country, as the checkout address spells it (CA, Dublin). Empty or * is the whole country. | |
| isEnabled | No | Whether the rate is applied at all; off keeps it in the list without charging it. New rates default to true. | |
| appliesToShipping | No | Whether the rate is charged on the delivery line as well as the goods. New rates default to true, the EU way. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false, but the description says 'Calling this changes nothing' and that only the merchant can make the change happen. That directly contradicts the annotation and makes the tool's actual mutation behavior confusing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and compact, using three short sentences. The money-integer-minor-units sentence is slightly disconnected from the actual schema parameters, keeping it from being perfectly economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It gives the essential workflow context, including the preview and confirmation-link behavior, and the schema covers all parameters. However, the contradiction with the readOnlyHint annotation leaves the tool's side effects ambiguous, and no output schema exists to clarify the returned preview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters thoroughly. The description adds a general note about money being integer minor units, but it does not add parameter-specific meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: set or remove the tax rate for a place. It is clear what the tool does, though it does not explicitly distinguish itself from the sibling settings_tax tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear operational context: calling it changes nothing, returns a preview and confirmation link, and only the merchant can complete the action. It does not explicitly name alternatives or when-not-to-use conditions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shipping_remove_methodADestructiveInspect
Remove a delivery method. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The delivery method to remove, by name. Case does not matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructiveHint=true and readOnlyHint=false; the description goes much further by revealing the call is non-mutating in practice ("Calling this changes nothing"), returns a preview plus a confirmation link, and that only the merchant can complete the removal. That two-phase preview/confirm semantics is exactly the kind of context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and the preview/confirmation disclosure is valuable, but the middle sentence about money being integer minor units is dead weight — this tool has no monetary parameter, and it reads like boilerplate carried over from other shipping tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states what comes back (a preview of changes and a confirmation link), which is exactly what an agent needs to know for a one-parameter tool. It could say slightly more about what happens after the merchant confirms, but coverage is solid for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single `name` parameter and schema description coverage is 100%, so the schema already documents the matching behavior (case-insensitive). The description adds no parameter-level detail, which is the expected baseline when the schema fully covers the input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Remove a delivery method" states a specific verb and resource, and the name makes it easy to separate from sibling setters like shipping_set_method or shipping_set_zones. It stops short of explicitly contrasting itself with those alternatives, so it is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the mechanics of the call but never says when to reach for this tool versus shipping_set_method or other shipping configuration tools, nor are there any prerequisites or exclusions. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shipping_set_countriesAInspect
Set where the shop ships to. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | replace: the lists given become the whole lists. add / remove: the codes given join or leave the current lists. | replace |
| shipTo | No | Countries the shop delivers to, as ISO 3166-1 alpha-2 codes like PT, ES. An empty list means anywhere. | |
| postcodeOptional | No | Countries where checkout does not ask for a postcode, because they have none. Everywhere else one is required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation coverage is real (readOnlyHint=false, idempotentHint=false), yet the description adds the genuinely non-obvious behavior that the call mutates nothing and instead yields a preview plus a confirmation link the merchant must act on. This is valuable context an agent could not derive 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The important content (scope and the preview/confirmation behavior) is front-loaded, but the sentence 'Money is integer minor units (cents)' is irrelevant boilerplate — no parameter in this schema deals with money — and risks confusing the agent. Removing it would tighten the definition considerably.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by stating what the call returns (a diff preview and a confirmation link) and how the change actually takes effect. With all three parameters documented in the schema, an agent has what it needs to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so mode semantics, ISO code format, the empty-list-means-anywhere rule and the 300-item cap are already fully documented in the schema. The description adds no parameter information beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource (set the shop's shipping destinations), and the rest explains the workflow. It does not explicitly distinguish itself from close siblings like shipping_set_zones or shipping_set_method, but the scope is unambiguous enough to select correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clarifies the unusual apply-model (preview + confirmation link, merchant-only execution), which is real usage context. However, it never says when to use this versus shipping_set_zones/shipping_set_defaults/shipping_set_method, so the agent must infer routing 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.
shipping_set_defaultsAInspect
Set the fallback delivery price. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| flatRate | No | The fallback price charged when no delivery method covers the order, in the shop's minor units (cents for EUR: 500 is 5.00). 0 is free delivery. | |
| freeAbove | No | The fallback is free once the order reaches this, in the shop's minor units (cents for EUR: 500 is 5.00). null means never. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a genuinely non-obvious behavioral trait that annotations cannot convey: calling it mutates nothing, it returns a preview plus a confirmation link, and only the merchant on that page can commit the change. It also states the money unit convention. The one caveat is that readOnlyHint=false sits slightly at odds with "changes nothing," though this is reconcilable since the tool is the first step of a write workflow rather than a pure read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and the key behavioral clarification, with no filler. The money-units sentence is somewhat redundant given the schema but is brief enough not to be wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with full schema coverage and annotations, the description is nearly complete: it explains the preview/confirmation return behavior, which usefully compensates for the absent output schema. It could still note the permissions or who may invoke it, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: flatRate and freeAbove are fully documented in the schema, including the minor-units convention and the null/never semantics. The description's "Money is integer minor units (cents)" merely restates what the schema already says, so it adds no meaning beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Set the fallback delivery price") that is immediately distinguishable from the sibling shipping tools (shipping_set_method, shipping_set_zones, shipping_set_countries), which govern other aspects of shipping. It further clarifies the fallback semantics so the agent knows exactly what resource is being targeted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, no when-not-to-use conditions, and names no alternative (e.g. shipping_set_method). The only contextual hint is the word "fallback," and the surrounding condition (no delivery method covers the order) is supplied by the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shipping_set_methodAInspect
Add or change a delivery method. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | flat: one price. table: a price per country, region, postcode and order-value or weight band. New methods are flat unless said. | |
| name | Yes | The method's name as shoppers see it, like Standard or Next day. Names an existing method (case does not matter) to change it, or a new one to add. | |
| rows | No | Table methods only: the whole table, replacing what is there. Most specific row wins, then the highest band at or below the order. | |
| price | No | The flat price in the shop's minor units (cents for EUR: 500 is 5.00). 0 is free. Flat methods only; a table method's prices are in its rows. | |
| renameTo | No | A new name for an existing method. Up to 60 characters. | |
| freeAbove | No | Free once the order reaches this, in the shop's minor units (cents for EUR: 500 is 5.00), before tax and after discount. null means never free, which is different from free at 0. | |
| isEnabled | No | Whether checkout offers it. New methods are on unless said. | |
| tableBasis | No | Table methods only: whether the rows' bands are order value (subtotal, minor units) or weight (grams). | |
| description | No | The line under the name at checkout, like 3 to 5 working days. Up to 120 characters; empty clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the single most important non-obvious trait that no annotation covers: the call is non-mutating, returns a preview plus a confirmation link, and only the merchant on that page can apply the change. This is far richer than the annotations' generic readOnlyHint=false / destructiveHint=false / idempotentHint=false, and it also flags that names are matched case-insensitively. Idempotency of the preview token and link expiry are left unstated, but the critical behaviour is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the money convention that saves the agent from re-reading nine parameter descriptions, then the critical behavioural caveat. No filler and no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter tool with full schema coverage, annotations and no output schema, the description supplies the one thing structured fields cannot: that the call is a preview requiring merchant confirmation, and roughly what is returned. It does not mention prerequisites such as an existing shipping zone for the method to belong to, and does not route the agent to the related shipping_set_zones/shipping_set_defaults siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains kind, rows, price, freeAbove, tableBasis and the rest. The only description-level addition is the global convention "money is integer minor units (cents)", which merely restates what the parameter descriptions already say. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb+resource ("Add or change a delivery method"), which an agent can immediately distinguish from shipping_remove_method, shipping_set_zones or shipping_set_countries. It stops short of explicitly naming those siblings or its place in the shipping configuration flow, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (adding or editing a method) and usefully explains that invocation starts a confirm-then-apply flow, which shapes how an agent should sequence it. It never states when NOT to use it versus sibling tools such as shipping_set_defaults or shipping_set_countries, nor what prerequisite state (e.g. an existing zone) is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shipping_set_zonesAInspect
Set delivery areas. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | add: these areas join the list, replacing any with the same country and area. remove: these leave it. replace: these become the whole list; an empty list clears it. | add |
| zones | Yes | The areas. With remove, only country and area are read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that the call itself mutates nothing, returns a preview of pending changes plus a confirmation link, and that only the merchant can commit on that page. This is exactly the context an agent needs, since readOnlyHint=false alone would suggest an immediate write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and immediately followed by the critical preview caveat. The money/units sentence is the only element that does not earn its place for this parameter set.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations describing the staged flow, the description correctly carries that burden and explains the confirmation link. It stops short of describing error behavior or how zone conflicts resolve, which are minor residual gaps for a 2-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so mode/zones/rule/area are already fully documented in the schema, making 3 the baseline. The one extra note, 'Money is integer minor units (cents)', does not map to any parameter in this schema, so it adds no usable semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set delivery areas'), so the agent knows it configures shipping zones. It does not, however, distinguish itself from close siblings like shipping_set_countries, shipping_set_method, or shipping_set_defaults, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies context by explaining the preview-and-confirm flow, which tells the agent this is a staged, merchant-approved operation. It never states when to prefer this tool over the sibling shipping_set_countries/set_method tools, so routing guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_feeds_listBRead-onlyInspect
The shop's shopping feeds. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
'Read-only; changes nothing' merely restates the readOnlyHint/destructiveHint annotations, earning no extra credit. The one genuinely additive detail is 'Money is integer minor units (cents)', which discloses a format convention the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no padding. The 'Read-only; changes nothing' clause is largely redundant with the annotations, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param read tool with annotations covering safety, the description is adequate but thin: it never says what a feed entry contains. That content is only described in the input schema's description field, and there is no output schema, so return-shape expectations rest on the schema rather than the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to add or omit on the parameter front.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun phrase ('The shop's shopping feeds') rather than a verb+resource statement, so the list/retrieve action is only conveyed by the tool name. It does identify the resource distinctly from the mutating sibling shopping_feeds_set, but never states that it returns the feeds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of the obvious alternative, shopping_feeds_set, which is the write counterpart. The agent must infer that this is the read path purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_feeds_setAInspect
Set the shop's shopping feeds. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| feeds | Yes | The whole list, in order; a feed left out is removed. The first also answers at /products.xml. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is the description's strongest contribution: it discloses that invoking the tool mutates nothing, that it returns a preview plus a confirmation link, and that only the merchant on that page can apply the change. None of that is derivable from the annotations, and it materially changes how an agent should sequence its calls. The tension with readOnlyHint=false is resolved by the text itself — the operation is a proposal, not a direct write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the purpose and the no-op behavior, with no padding. The money-units sentence earns no place here because the schema contains no monetary field, which is the only real deduction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of describing the return value (a preview of changes plus a confirmation link), which is exactly the missing piece an agent needs. The single parameter is fully documented in the schema, so little is left unspecified beyond error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the nested feed object documents name, slug, and collection semantics (including the slug-preservation warning) far better than the description does, so the baseline of 3 applies. The only parameter-relevant sentence in the description — "Money is integer minor units (cents)" — refers to no field in this schema and reads as noise from another tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Set the shop's shopping feeds") and immediately clarifies that the call is a preview rather than a commit, which sharpens the purpose considerably. It does not, however, contrast itself with the sibling shopping_feeds_list, so an agent must infer the read/write split from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the confirmation workflow (preview, confirmation link, merchant approves) but never states when to reach for this tool versus shopping_feeds_list or how to recover from an unwanted proposal. Usage is implied by the tool name rather than spelled out, which is adequate but leaves the routing decision to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shop_stateARead-onlyInspect
How the shop stands. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so "Read-only; changes nothing" largely restates structured data. The genuinely additive disclosure is that monetary values are integer minor units (cents), a data-shape trait not captured by any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler. Minor deduction because "Read-only; changes nothing" duplicates the readOnlyHint annotation and spends a sentence on information already present in structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description plus schema note convey the entry-point role, the kind of content returned (counts, currency, pending items, suggested actions), and the money format. Return structure remains only loosely sketched ("what is waiting" is vague), but the safety profile is fully covered by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description still adds a useful unit convention (integer cents) that governs how the returned money fields should be interpreted, which is more than most no-param tools offer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"How the shop stands" is evocative but not a specific verb+resource; the real substance comes from the schema description ("Counts, currency, what is waiting, and what the shop's own state says needs doing"). Combined, an agent can infer this is a shop status/dashboard read, but the description alone does not clearly distinguish it from siblings like changes_status, sales_report, or promotions_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The schema description gives a strong, explicit sequencing cue — "Call this first" — which is exactly the kind of when-to-use guidance this tool needs as the entry point. It stops short of naming alternatives or exclusions (e.g., when to prefer sales_report or changes_status instead), so it is clear context without full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stage_own_themeADestructiveInspect
Put an own theme on this shop as its draft and return a link to walk the draft. The live shop does not change; the merchant publishes the draft from Design, Themes. Replaces whatever draft theme the shop had.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | A template handle: home, collection, product, cart, search, login, register, header, footer, blog or blog-post. Default home. | |
| slug | Yes | The theme's slug, as list_own_themes shows it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds real context beyond them by pinning the destructive scope to 'replaces whatever draft theme the shop had' and confirming the live shop is unaffected. It also discloses the return artifact (a link to walk the draft), which matters since there is no output schema. Missing only auth/permission or rate-limit details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and a return value, then the live-shop consequence, then the replacement warning. No sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema, the description covers what is created (draft), what is untouched (live shop), what is overwritten (existing draft), how the draft becomes live, and what is returned (preview link). 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the slug's origin ('as list_own_themes shows it') and the page template handles, so the schema carries the full burden. The description adds no parameter meaning beyond it, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — putting a theme on the shop as its draft and returning a preview link — which an agent can distinguish from create_own_theme, list_own_themes and check_own_theme without opening schemas. The scope ('as its draft') is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the context of use: staging a draft for preview while the live shop stays unchanged, with the merchant publishing later from Design, Themes. It does not explicitly name a sibling alternative (e.g. create_own_theme vs. stage_own_theme) or when-not-to-use, so it stops 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.
storefront_publishAInspect
Open the shop to visitors, or take it offline. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| online | Yes | true opens the shop to visitors: a demo becomes a paid shop first, which is what the dashboard's Go live button does, and its password comes off; a shop taken offline earlier simply comes back. false takes the storefront offline: visitors see a coming-soon page and nothing is deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds real context beyond the annotations: the call is a no-op preview, it returns a confirmation link, and only the merchant on that page can actually flip the storefront. One caveat keeps it from a 5: 'Calling this changes nothing' reads as read-only, which sits in tension with readOnlyHint=false (a confirmation artifact is presumably created); read supportively, the sentence is disclosing that the mutation happens off-tool, not contradicting the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is correctly front-loaded and the preview/confirmation explanation is tight, but the middle sentence about money in cents earns nothing in this tool and invites the agent to look for monetary parameters that do not exist. Roughly one of four sentences is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one boolean parameter, no output schema, and annotations covering the safety profile, the description supplies what is missing: that the call is a preview returning a confirmation link, and that a human completes the change. It does not mention how to inspect the current open/closed state (shop_state), which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'online' parameter already documents both branches (demo becomes paid shop, password comes off, coming-soon page, nothing deleted) in more detail than the description does. The only parameter-adjacent sentence in the description, about money in integer minor units, is off-topic for a shop-open/close tool, so the baseline 3 applies with a small noise penalty rather than any added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a concrete verb pair (open / take offline) on a concrete resource (the shop/storefront), so an agent immediately knows this is a state-toggling tool and cannot confuse it with reads like shop_state or with unrelated siblings like storefront_set_password. The scope is stated without jargon and needs no schema inspection to understand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two-step affordance (preview then merchant confirmation) but never states when to reach for this versus alternatives such as shop_state for checking current status, nor any precondition for calling it. Usage is implied rather than guided, so 3 is the honest level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storefront_set_passwordAInspect
Put a password on the shop's front door, change it, or take it off. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| password | Yes | Four to twenty letters or numbers; capitals are lowered, since it is read aloud. null removes the password and opens a live shop to everyone. A demo is always behind its password: go live first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower, yet the description adds the non-obvious two-phase workflow — this call is a no-op preview and the real change requires merchant confirmation on a link. The only slight tension is that 'changes nothing' reads as read-only while readOnlyHint=false, but the preview/link generation plausibly accounts for that flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and tight, but the sentence 'Money is integer minor units (cents)' is a non-sequitur — there is no monetary parameter — and it introduces confusion rather than value. Removing it would make the description notably cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, annotations present, and rich schema text, the description covers the essential behavior: multi-mode operation and the preview/confirmation flow. The stray money reference is the main completeness/structure flaw, and prerequisites like 'go live first' live only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'password' parameter (length, character set, case-folding, null-removes) is already fully documented in the schema. The description adds nothing about the parameter — the 'Money is integer minor units (cents)' sentence refers to no existing parameter and is irrelevant here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the shop's storefront password) and the three modes of operation — set, change, remove — in one vivid sentence. It is unmistakably distinct from siblings like customers_reset_password, which targets customer accounts rather than the storefront gate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: the call produces a preview plus a confirmation link, and only the merchant on that page can effect the change. It does not explicitly say when NOT to use it or name alternatives, but no competing sibling exists for this resource, so the practical guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translations_missingCRead-onlyInspect
What still needs translating. Read-only; changes nothing. Money is integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many fields to return at most. Default 40. | |
| entity | No | Only this kind of thing. Omit for everything. | |
| locale | Yes | The language to check, as the shop offers it: pt, de, pt-BR. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so 'Read-only; changes nothing' merely restates structured data and earns no credit. Nothing is added about ordering, pagination, what the default limit of 40 means in practice, or whether results are cached; the trailing sentence about money in minor units is irrelevant noise for a tool with no monetary parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is short and front-loaded, which is good, but only two of its three sentences serve this tool. The currency-formatting sentence is dead weight here and dilutes an otherwise tight statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing what comes back, and it does not: the agent cannot tell whether the result is a list of field paths, a count, a grouped-by-entity structure, or whether it includes the source string. Combined with the absent sibling routing, the definition is under-specified for its role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents locale, entity and limit with an enum and a stated default. The description adds nothing about parameter meaning, and its only concrete statement (money as integer minor units) does not apply to any of these parameters, so the baseline of 3 is the right ceiling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'What still needs translating' identifies the resource (untranslated content) clearly enough that an agent knows what the tool surfaces. However it is a noun phrase with no verb (list/return), and it never distinguishes itself from the sibling translations_set, which is the natural point of confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g. a locale must be configured), and no routing to alternatives. The obvious counterpart, translations_set, is never mentioned, so the agent must infer that this tool reads and that one writes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translations_setAInspect
Store translations. Money is integer minor units (cents). Calling this changes nothing: it returns a preview of what would change and a confirmation link. Only the merchant, on that page, can make it happen.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | Yes | The language the values are written in, as the shop offers it: pt, de, pt-BR. Never the shop's own language. | |
| entries | Yes | Every field translated in this batch. One call per batch, not one per field. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without relying on annotations, the description discloses the crucial behavior: the call returns a preview of what would change plus a confirmation link, and nothing is committed until the merchant confirms. This goes well beyond the structured hints and is exactly the kind of staging/authorization semantics an agent needs. The annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) are consistent with this staged-write model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavioral sentences are front-loaded and earn their place, but the second sentence ("Money is integer minor units (cents)") is unrelated to translations and is likely boilerplate copied from a pricing tool, which wastes attention and risks confusing the agent. Otherwise the text is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully characterizes the return value (a preview of changes plus a confirmation link) and the authorization flow, which is the most important missing piece. It stops short of describing the shape of the preview payload or what happens to a batch of up to 200 entries, and the stray money sentence is noise rather than completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself is unusually rich (locale, entity enum, field key formats, handle vs id, value HTML semantics), so the baseline of 3 applies. The description adds no parameter-level meaning; the one detail it offers (money in minor units) is irrelevant to this tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ("Store translations") and immediately qualifies it as a preview-only staging operation. It clearly distinguishes this from translations_missing, which the schema references for discovering keys, though the description itself does not name that sibling. The opening phrase is slightly at odds with the preview semantics, but an agent can still tell what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the key usage fact — that calling it does not apply changes and that only the merchant can confirm — which is important context. However, there is no explicit guidance on when to prefer this over editing content directly, nor a pointer to run translations_missing first to obtain valid keys (that dependency is only implied by the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_contentBInspect
Create or update one entry of a custom content type, for example a banner. Fields are held to the type's declared shape.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| fields | Yes | ||
| handle | Yes | Lower case, dashes for spaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds one useful constraint — fields are validated against the type's declared shape — but says nothing about partial-update behavior, required permissions, or what happens to unspecified fields on update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, zero filler. Slightly under-informative for a nested-object mutation tool, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-required-param mutation with a nested 'fields' object and no output schema, the description is adequate but thin. It omits how to discover valid content types, error behavior on schema mismatch, and update-vs-create semantics — gaps the annotations don't cover either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: 'handle' is documented ('Lower case, dashes for spaces') while 'type' and 'fields' are bare. The description helps slightly by implying 'fields' must match the type declaration, but it never explains what 'type' refers to (a content-type handle vs. a display name), leaving a required parameter ambiguous in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (create or update) and a specific resource (one entry of a custom content type), with an illustrative example ('for example a banner'). It distinguishes itself from list_content_types and get_page by being the write path, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't say the caller must first know the type's declared shape (e.g. via list_content_types), nor what happens if the handle already exists — the 'upsert' name implies overwrite-on-match but that is not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_own_theme_filesADestructiveInspect
Write several files of an own theme at once: changes maps a path to its whole new content, or null to delete it. Pass the revision you last read as baseRevision; if the theme changed since, nothing is written. The theme is checked first: a write that would leave it not installing saves nothing and says why. Changes the theme's files only, not the shop: stage_own_theme puts them on the shop as its draft.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The theme's slug, as list_own_themes shows it. | |
| changes | Yes | ||
| baseRevision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, and the description adds substantial context beyond that: optimistic concurrency via baseRevision (nothing is written on conflict), a pre-write validation gate that rejects changes leaving the theme not installing 'and says why', and the explicit scope boundary that it changes theme files only, not the shop.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each earning its place: semantics of changes, concurrency guard, validation behavior, and the sibling hand-off. The operation and its delete semantics are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, nested-object mutation with no output schema, the description covers atomicity, conflict handling, validation failure behavior, and scope relative to sibling tools. An agent has everything needed to call it correctly and interpret failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only slug is described), so the description must carry the load for the other two parameters. It does: 'changes' is explained as a path-to-whole-new-content map with null meaning delete, and baseRevision is explained as the last-read revision whose mismatch aborts the write.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Write several files of an own theme at once'. It is clearly separable from read_own_theme_file (reads), create_own_theme (creates), and stage_own_theme (publishes to the shop), which the description also names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage conditions: multi-file writes with whole-content replacement, null to delete, and pass baseRevision to guard against concurrent edits. It also points to stage_own_theme as the follow-up step that puts changes on the shop. It lacks an explicit 'do not use for X' exclusion, but the context is otherwise unambiguous.
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.
117 tool updates
- First observed
blog_posts - First observed
blog_posts_create - First observed
branding_set - First observed
changes_status - First observed
check_own_theme - First observed
collections_add_products - First observed
collections_create - First observed
collections_delete - First observed
collections_edit - First observed
collections_remove_products - First observed
collections_set_rules - First observed
create_own_theme - First observed
customers_change_email - First observed
customers_create - First observed
customers_delete - First observed
customers_lookup - First observed
customers_message - First observed
customers_note - First observed
customers_reset_password - First observed
define_section - First observed
discounts_catalog_sale - First observed
discounts_coupon - First observed
get_design_guide - First observed
get_page - First observed
get_theme_settings - First observed
get_theme_tokens - First observed
gift_cards_create - First observed
gift_cards_set_status - First observed
imports_create - First observed
imports_delete - First observed
imports_inspect - First observed
imports_list - First observed
imports_run - First observed
imports_update - First observed
instagram_accounts - First observed
inventory_adjust - First observed
inventory_low - First observed
list_collections - First observed
list_content_types - First observed
list_own_themes - First observed
list_pages - First observed
list_products - First observed
list_section_types - First observed
menu_get - First observed
menu_set - First observed
orders_cancel - First observed
orders_create - First observed
orders_fulfil - First observed
orders_lookup - First observed
orders_mark_delivered - First observed
orders_mark_paid - First observed
orders_note - First observed
orders_refund - First observed
orders_remove_shipment - First observed
orders_send_payment_link - First observed
orders_update_shipment - First observed
pickup_remove_location - First observed
pickup_set_location - First observed
plugins_list - First observed
plugins_set_enabled - First observed
plugins_settings - First observed
policies_write - First observed
products_add_image - First observed
products_bulk_price_edit - First observed
products_create - First observed
products_delete - First observed
products_edit - First observed
products_set_status - First observed
promotions_delete - First observed
promotions_edit - First observed
promotions_set_active - First observed
promotions_state - First observed
propose_plan - First observed
read_own_theme_file - First observed
redirects_list - First observed
redirects_set - First observed
reviews_list - First observed
reviews_set_status - First observed
reviews_settings - First observed
routines_create - First observed
routines_delete - First observed
routines_list - First observed
routines_update - First observed
sales_report - First observed
screenshot_own_theme - First observed
seo_set - First observed
set_page_sections - First observed
set_theme_settings - First observed
set_theme_tokens - First observed
settings_checkout - First observed
settings_checkout_extras - First observed
settings_currencies - First observed
settings_customer_accounts - First observed
settings_details - First observed
settings_identity - First observed
settings_inventory - First observed
settings_language - First observed
settings_notifications - First observed
settings_privacy - First observed
settings_store_defaults - First observed
settings_tax - First observed
settings_tax_rates - First observed
shipping_remove_method - First observed
shipping_set_countries - First observed
shipping_set_defaults - First observed
shipping_set_method - First observed
shipping_set_zones - First observed
shop_state - First observed
shopping_feeds_list - First observed
shopping_feeds_set - First observed
stage_own_theme - First observed
storefront_publish - First observed
storefront_set_password - First observed
translations_missing - First observed
translations_set - First observed
upsert_content - First observed
write_own_theme_files
Publisher details
- Operator
- Whizzy Digital Solutions Lda
- Operator website
- https://whizzycommerce.com
- Vendor relationship
- Not applicable
- Documentation
- https://whizzycommerce.com/connect
- Trust center
- Not applicable
- Restrictions
- Not applicable
Related MCP Connectors
- MaShop MCPOAuthapp.mashop
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
Manage WordPress blogs and WooCommerce shops from Claude, ChatGPT, Cursor and other MCP apps.
Create instxnt.xyz storefronts through Claude: add products, connect Stripe, go live.
Related MCP Servers
- AlicenseAqualityCmaintenanceThe first MCP server for the wafle commerce platform. It enables Claude, agents, and MCP-compatible clients to manage stores, products, orders, pricing, gateways, and more through natural language.100MIT
- AlicenseBqualityCmaintenanceMCP server for managing WooCommerce stores through AI assistants like Claude. Provides 101 tools covering products, orders, customers, coupons, shipping, taxes, webhooks, settings, reports, and more.10096 npm2MIT
- FlicenseNot gradedqualityDmaintenanceAI-powered Shopify Admin via Claude + MCP, enabling full store management through conversation including products, collections, analytics, and bulk operations.-
- AlicenseNot gradedqualityBmaintenanceEnables connecting 13 e-commerce platforms such as Amazon, eBay, WooCommerce, and OTTO to Claude, ChatGPT, Copilot, and Cursor, exposing 160 tools to manage stores, orders, products, and marketplaces through natural language.AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.