WhizzyCommerce
Server Details
Run your online shop from Claude: orders, prices, sales, catalogue and design, confirmed by you.
- Status
- Healthy
- Uptime
- 94.7% over 21 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- shopwhizzy/whizzycommerce-mcp
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 136 tools
There are direct duplicate pairs such as get_menu/menu_get and set_menu/menu_set, which describe the same header-menu resource and action. Other overlaps exist between media_upload/upload_images and potentially products_edit/products_bulk_price_edit, making tool selection risky despite many domain-specific names.
Most names use snake_case, but the pattern mixes domain_action (orders_cancel), verb_noun (get_menu, set_menu), and bare plural reads (blog_posts, instagram_accounts). The duplication of get_menu/menu_get and set_menu/menu_set shows naming inconsistency within the same resource.
At 136 tools, the surface is far beyond an appropriate scoped set and is well past the 50+ threshold for extreme mismatch. Many tools could be consolidated into parameterized operations rather than exposing every small action separately.
The surface is broad across commerce domains, but notable gaps remain: there is no obvious list/search tool for orders or customers, which makes ID-based lookup flows hard to start. Some lifecycle operations are covered, but the missing collection-level read/list operations for key transactional resources weaken end-to-end coverage.
Available Tools
136 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 | ||
| publishAt | No | ISO date and time with its offset, for published: a future one schedules the post, e.g. one a week for a month of posts. | |
| 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 annotations declare readOnlyHint=false, implying the tool is not read-only, while the description explicitly says 'Calling this changes nothing' and that only the merchant can make the change happen. This directly contradicts the annotation's read-only signal, so despite useful disclosure of the preview/confirmation workflow, the contradiction requires 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 and the confirmation workflow is stated clearly, but the second sentence about money in integer minor units is irrelevant to a blog post creation tool and does not earn its place. The definition is short but contains a distracting, non-applicable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter creation tool with 85% schema coverage and no output schema, the description supplies the essential behavioral context: it previews changes and requires merchant confirmation. The schema covers parameter details, and the annotations cover safety traits, though the contradictory read-only signal and irrelevant money note 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 description coverage is high at 85%, so the schema already documents parameters thoroughly. The description's only parameter-like statement is 'Money is integer minor units (cents),' but the schema contains no money parameter at all, making this misleading 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 clearly states a specific verb and resource: 'Write a blog post.' It distinguishes itself as a creation tool by name, but it does not explicitly contrast with siblings such as blog_posts_edit or blog_posts_set_status. The unrelated money sentence slightly muddies the purpose but does not obscure the core action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the important two-step confirmation flow: the call returns a preview and confirmation link, and only the merchant can complete the action. However, it does not state when to use this tool versus alternatives like blog_posts_edit or blog_posts_set_status, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_posts_deleteADestructiveInspect
Delete 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 |
|---|---|---|---|
| post | Yes | The post, by its address under the blog (from blog_posts) or its exact title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations mark this destructive and non-idempotent, but the description adds genuinely non-obvious behavior: the call itself changes nothing, returns a preview plus a confirmation link, and only the merchant on that page can complete it. That deferred two-step mechanics is exactly the kind of context annotations cannot express. It stops short of stating auth requirements or what the preview contains.
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 delete-and-confirmation sentences are front-loaded and earn their place, but the second sentence about money in minor units is irrelevant copy-paste noise for a tool with no monetary parameter, 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 one-parameter mutation with no output schema, the description covers the important unknown: that the call returns a preview and confirmation link rather than performing deletion. It omits the change-log undo path and the draft alternative, but those are carried by the schema description, so the definition as a whole is close to 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?
With 100% schema coverage on a single parameter, the schema already documents that 'post' is addressed by blog address or exact title. The description adds no parameter meaning at all, and the stray 'Money is integer minor units (cents)' note references a parameter this tool does not even have.
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 ('Delete a blog post'), so an agent immediately knows the operation. It does not, however, distinguish itself from nearby siblings such as blog_posts_set_status or blog_posts_edit; that differentiation only appears later in the input schema, not in the description.
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 flow, which implies when the tool is appropriate, but it never states when to prefer it over alternatives or names a sibling. The only routing hint ('to only hide it, set it to draft instead') lives in the input schema, not the description, so guidance here is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_posts_editAInspect
Change 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 | No | The whole post as HTML: <p>, <h2>, <h3>, <ul>, <a>. Replaces the body. | |
| post | Yes | The post, by its address under the blog (from blog_posts) or its exact title. | |
| tags | No | Replaces the post's tags; new ones are made. | |
| title | No | ||
| author | No | An existing author by name or address; empty removes the author. | |
| handle | No | A new address under the blog. The old one stops working. | |
| excerpt | No | A short plain-text summary shown in lists; empty clears it. | |
| coverAlt | No | What the cover shows. | |
| coverUrl | No | A new cover picture by public http(s) address, copied onto the shop's storage once confirmed. | |
| featured | No | ||
| seoTitle | No | ||
| categories | No | Existing categories by name or address; replaces the post's. | |
| seoDescription | No | Under 160 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavior not covered by annotations: it returns a preview of changes and a confirmation link, and requires the merchant to confirm before changes are applied. This is essential context for a mutation tool with 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 core action and then the important confirmation-flow caveat. Every sentence is necessary.
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 covers the key behavioral aspect (confirmation flow). It is slightly incomplete regarding when to use it versus other blog post tools, but it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 77%, so the schema already documents most parameters. The description adds a note that money is in integer minor units, but this parameter is not actually present in the schema, making it irrelevant to this tool's parameters. The description does not add meaningful detail beyond schema 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?
States a specific verb and resource ('Change a blog post') that clearly distinguishes it from blog_posts_create, blog_posts_delete, and blog_posts_set_status.
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 clarifies the two-step confirmation flow (preview then merchant confirmation), which sets it apart from the other CRUD tools. However, it does not explicitly say when to use this tool versus blog_posts_create or set_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blog_posts_set_statusAInspect
Publish, schedule or unpublish 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 |
|---|---|---|---|
| post | Yes | The post, by its address under the blog (from blog_posts) or its exact title. | |
| status | Yes | ||
| publishAt | No | ISO date and time with its offset, for published: a future one schedules the post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely valuable behavioral context beyond annotations: the call is non-mutating in practice (returns a preview plus a confirmation link), and only the merchant on that page can enact the change. This is exactly the kind of two-step/confirmation semantics an agent needs. It sits in mild tension with readOnlyHint=false but is better read as clarifying the request-then-confirm flow than as 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 to this tool and appears to be copy-paste noise, wasting space in an otherwise compact 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 discloses what is returned (a preview of changes and a confirmation link). For a mutation-adjacent tool this covers the essentials; only minor gaps remain around the exact preview content.
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 post and publishAt, and its own description maps published/draft to on/off-blog. The description's 'publish, schedule or unpublish' only loosely reinforces the status values and adds no new syntax or format detail.
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 set (publish, schedule, unpublish) and resource (blog post), making the operation clearly distinct from blog_posts_create/edit/delete. It does not explicitly name a sibling or contrast with blog_posts_edit, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via the confirmation flow ('returns a preview... only the merchant can make it happen'), which tells the agent what calling it does. But it gives no explicit when-to-use/when-not guidance or comparison to alternative tools like blog_posts_edit.
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_send_signin_linkCInspect
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?
Annotations declare readOnlyHint=false, but the description explicitly states 'Calling this changes nothing', a direct contradiction. Despite adding useful context about the preview and merchant confirmation, the contradiction mandates 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 description contains an irrelevant sentence: 'Money is integer minor units (cents).' This is unrelated to the tool and adds confusion. The rest is reasonably concise but the extraneous content hurts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with annotations, the description covers the preview behavior and confirmation step. However, the contradiction with annotations and the extraneous sentence reduce 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 coverage is 100% and the single email parameter is fully documented. The description adds no parameter-specific information, and the irrelevant sentence about money does not help.
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: 'Send a customer a sign-in link.' The purpose is clear and distinguishable from most siblings, though it does not explicitly name alternatives.
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 when-not-to-use guidance, and no alternatives are mentioned. It implies usage by describing the action but offers no routing context.
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, the sheet's link as copied from the browser, or the Shopify store's own address (yourstore.com). | |
| 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"; shopify for a merchant moving from a Shopify store that is still online, which brings its products and their collections. | |
| 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 substantial context beyond annotations: calling the tool changes nothing on its own, it returns a preview plus a confirmation link, and only the merchant on that page can complete it — critical for an agent that might otherwise retry expecting effects. It also flags money as integer minor units. Remaining gap: nothing addresses repeat calls or the non-idempotent nature declared in 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?
Four short sentences, front-loaded with the action, then the money-format caution, then the crucial safety note. No filler, no restatement of the title, and each 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 12-parameter creation tool with a nested mapping object, high schema coverage and annotations already covering safety, this is close to complete: the flow, the preview behavior, and the money unit are all covered. What remains missing given the absence of an output schema is any hint of what the preview response looks like.
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 carries the parameter documentation and baseline would be 3. The description adds one genuinely non-obvious semantic not in the schema — money values are in minor units (cents) — which prevents a real class of misuse. It stops there, though; nothing further on the nested mapping or cadence parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: "Set up a product import." An agent immediately knows the operation. However, it does not distinguish itself from the close siblings imports_update, imports_run, and imports_inspect, leaving ambiguity about which of these sets a new import up versus modifies an existing 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?
The description conveys the two-phase flow (preview then merchant-confirmed execution), which implies when this tool is appropriate. But it never names an alternative or an exclusion — nothing says when to use imports_update instead of imports_create, or that imports_run is the tool to trigger a run later. 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.
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_inspectARead-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, the sheet's link as copied from the browser, or the Shopify store's own address (yourstore.com). | |
| 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"; shopify for a merchant moving from a Shopify store that is still online, which brings its products and their collections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so "Read-only; changes nothing" restates what the agent already knows. What the description does add is domain context not in the structured fields: monetary values in the file appear as integer minor units (cents). It is silent on auth/sharing prerequisites for sheets and shopify sources and on what happens on an unreachable URL, both of which are real behaviors for an open-world fetch.
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 purpose and the pre-import ordering constraint. The middle sentence ("Read-only; changes nothing") is largely redundant with the readOnlyHint annotation, a small amount of wasted space in 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 low-parameter read tool with no output schema, the combined text covers what it does, that it mutates nothing, when to use it, and (via the schema description) what comes back: columns, sample rows, suggested field mapping, and XML repeating elements. Remaining gaps are edge behavior on fetch failures and sharing prerequisites, which are notable but secondary.
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 per-parameter docs are rich (enum meanings, the XML record example, the Shopify-still-online caveat), so the schema carries parameter meaning. The description adds only an indirect data-format note ("Money is integer minor units") rather than anything about how to choose source or record, 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?
The main sentence names a specific verb and resource ("Read a product file") and flags its pre-import role, and the schema description sharpens it further ("Fetch a supplier's CSV or XML file (or a Google Sheet) and say what is in it"). It stops short of naming the sibling it precedes by name in the top-level text, so an agent must read the schema description to distinguish it from imports_list or imports_run.
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" plus the schema's "Use before imports.create" gives a clear trigger, and "use before" implies the ordering constraint that matters for a preview step. No explicit when-not case is stated (e.g. what to do if the file is already imported), which keeps it below a 5.
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 added context: money as integer minor units, the preview-only effect, the returned confirmation link, and the merchant-only activation gate — none of which the annotations convey. However, "Calling this changes nothing" textually conflicts with readOnlyHint=false, since a tool that creates a preview/confirmation artifact is not a pure read. The rest of the disclosure is genuinely useful and consistent with destructiveHint=false and idempotentHint=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?
Four short sentences with no filler, and the crucial no-op/confirmation fact is front-loaded right after the purpose. Minor weakness: the money-units sentence appears second with no clear antecedent, slightly interrupting the flow of the safety message.
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 supplies what the call returns (a preview of pending changes plus a confirmation link) and who can finalize it, which is the information an agent most needs to avoid mistaking this for the commit step. Remaining gaps — validation errors, what the preview contains, behavior after merchant confirmation — are 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 100% and the single `import` parameter is documented in the schema as "name or id, as imports.list gives them," so the baseline applies. The money-in-cents note does not describe the parameter at all (which is only a name/id string) and sits oddly without a referent, so it adds no parameter-level clarity.
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 ("Run a product import") immediately corrected by the second and third sentences, which reveal this is actually a preview/dry-run that hands off to a merchant confirmation page. That correction is essential and prevents a false impression, but the description never distinguishes this from siblings like imports_inspect, imports_create, or imports_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the confirmation-link flow suggests this belongs after an import is created and before data is committed, but the description never states when to use this versus imports_inspect (also a preview-ish tool) or imports_update. No prerequisites or exclusions are given.
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_productsARead-onlyInspect
The shop's products: id, handle, title, status, lowest price, and every variant with its id, title, SKU, price and stock. Use the id or handle with the tools that change products or prices. Prices are integer minor units (cents).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Only products whose title, handle or SKU contains this. | |
| includeInactive | No | Include draft and archived products too. |
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; the description usefully adds that prices are integer minor units (cents), which prevents misreading of returned values. It says nothing about pagination, default page size, or whether archived/draft items appear by default, which matters for a list tool with a hard cap of 100.
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 return shape, then the follow-up guidance, then the price-unit caveat. Every sentence carries information; nothing is redundant with the annotations.
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 the necessary work of listing returned fields including nested variants, plus the price-unit convention. Remaining gaps are pagination behavior and the default active-only scope, which are left to the schema's includeInactive text.
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%: query and includeInactive are documented in the schema, while limit has no description at all beyond min/max bounds. The description adds no parameter meaning whatsoever, so the baseline 3 applies, with the undocumented limit keeping it from going higher.
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?
Describes the resource and enumerates exactly what comes back (id, handle, title, status, lowest price, variants with SKU/price/stock), which clearly separates it from products_create/products_edit/products_delete siblings. The listing verb is only implicit ("The shop's products:"), but the return-field enumeration makes the operation 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?
It advises what to do with the returned identifiers ("Use the id or handle with the tools that change products or prices"), which is downstream guidance rather than when-to-use guidance. It never states when to call this versus siblings such as collections_add_products or inventory_low, or when the filters should be applied.
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.
media_uploadAInspect
Store images from this conversation (generated here or attached by the merchant) in the shop's media library and get a public address for each. Use it whenever a picture has no public address of its own, then give each product its picture with products_add_image using the returned url (propose_plan for several). Pass the images as images; a client that cannot pass files may send one small image as data_base64 instead. Images are re-encoded to WebP; nothing on the storefront changes until a product is given the picture.
| Name | Required | Description | Default |
|---|---|---|---|
| images | No | The images, as files from this conversation. | |
| file_name | No | A name for the base64 image, e.g. velinha-baunilha.png. | |
| data_base64 | No | One image's bytes in base64, only when files cannot be passed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly false, destructive false, openWorld true, idempotent false), and the description adds genuinely new context: images are re-encoded to WebP, nothing on the storefront changes until a product is assigned the picture, and a base64 fallback exists for clients that cannot pass files. It does not explicitly warn about re-upload duplication, which is the one gap given idempotentHint=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?
Front-loaded with the core action and the address outcome, then the usage rule, then the fallback. Dense but nearly every clause carries information; the '(propose_plan for several)' aside is the only slightly tangential element.
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 what is returned (a public address per image) and how to use it downstream. Combined with the WebP note and storefront-invisibility caveat, an agent has everything needed to call it and interpret 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 coverage is 100%, so the baseline is 3, but the description goes beyond the schema by stating the selection logic between `images` and `data_base64` (one small image, only when files cannot be passed) rather than merely restating field names. Minor deduction for not mentioning the 10-item cap or the required download_url/file_id pair.
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 — storing conversation images in the shop's media library and returning a public address — and implicitly distinguishes itself from products_add_image, which is named as the downstream consumer of the returned url. An agent can tell exactly what this tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit selection rule: 'Use it whenever a picture has no public address of its own,' followed by the next step (products_add_image with the returned url, propose_plan for several). This routes the agent both into and out of the tool without inference.
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_ship_labelAInspect
Book an order's parcel with the shop's carrier. 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?
Adds genuinely non-obvious behavior: the call is a no-op preview that returns a change summary plus a confirmation link, and only the merchant on that page can complete it. That is real context beyond the annotations. It sits in mild tension with readOnlyHint=false, but the semantics (it stages rather than performs) make that a nuance rather than a contradiction. It does not state what the preview contains or that a tracking number eventually results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then the critical caveat about no immediate change. Three tight sentences. The money-units sentence is generic boilerplate irrelevant to a one-parameter shipping tool and is the one line 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?
For a single-parameter tool with no output schema and annotations covering safety, the description supplies exactly the missing piece: the two-step, merchant-confirmed execution model. Nothing an agent needs in order to invoke it correctly is absent, and return-value detail is unnecessary since the call yields only a 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?
Only one parameter (orderNumber) and schema description coverage is 100%, so the schema fully documents it, including the 'human order number, e.g. 1003' format. The description adds nothing about the parameter. Baseline 3 applies. The 'integer minor units (cents)' sentence concerns money, which this tool does not take, so it does not help parameter understanding.
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: 'Book an order's parcel with the shop's carrier.' An agent immediately knows this is a shipping/label action on a single order. It does not explicitly distinguish itself from nearby siblings like orders_update_shipment, orders_fulfil, or orders_remove_shipment, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the workflow context (preview then merchant confirms on a page) but never says when to pick this over orders_fulfil or orders_update_shipment. The most useful routing hint — 'for orders auto-booking missed or failed' — lives only in the schema description, not here.
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_availableBRead-onlyInspect
Plugins the shop can add. 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 genuinely additive note is "Money is integer minor units (cents)," which discloses a data-format trait not captured by 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 short, front-loaded sentences with no padding. The money-format sentence is slightly tangential to a plugin catalogue but still earns its place as a data-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?
For a read-only, zero-parameter tool the description is close to sufficient, but it omits the catalogue's return content and the free/paid install routing, both of which sit in the schema description rather than the tool description. With no output schema, the description should carry more of that load.
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 no parameter surface for the description to clarify, and the empty schema is self-explanatory.
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?
"Plugins the shop can add" names the resource (available/installable plugins) but is a bare noun phrase with no verb and no explicit contrast against the sibling plugins_list. An agent could infer this is the catalogue vs. installed plugins, but the description itself does not make that distinction.
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 alternatives named in the description. The routing hint (free plugins install via plugins.install, paid ones on the Plugins screen) lives only in the input schema's description field, not the tool description, so the description offers no selection help against plugins_install or plugins_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugins_installAInspect
Install or update a free plugin. 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.available gives them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations present, the bar is lower, and the description still adds genuinely useful behavior: the call is non-mutating, it returns a preview plus a confirmation link, and only the merchant on that page can complete the install. This human-in-the-loop detail is exactly the kind of context annotations cannot convey. Mild tension with readOnlyHint=false (the description says the call 'changes nothing'), which is not resolved, 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?
The mutating-behavior caveat is front-loaded and well placed, but the 'Money is integer minor units (cents)' sentence is dead weight — there is no monetary parameter in this tool — and it 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?
With no output schema, the description correctly carries the return-value burden by describing the preview and confirmation link, which is what an agent needs to interpret the result. The stray money sentence is a minor blemish on an otherwise complete picture for a one-parameter 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?
There is a single parameter with 100% schema description coverage, so the schema already carries the semantics. The description's only parameter-adjacent sentence ('Money is integer minor units (cents)') refers to a money parameter that does not exist in the schema, adding no value and risking confusion.
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+resource combo (install or update a free plugin), which cleanly separates it from read-only siblings like plugins_available and plugins_list. It does not, however, explicitly distinguish itself from plugins_set_enabled or plugins_settings, which an agent could plausibly confuse with 'installing/enabling'.
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 establishes clear usage context: this is for *free* plugins, and the call is a non-binding preview that requires the merchant to confirm on a separate page. The schema's 'as plugins.available gives them' hints at the discovery prerequisite, but no sibling tool is named as an explicit alternative the way a 5 would require.
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.
popups_listCRead-onlyInspect
The shop's popups. 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 the read-only claim is redundant. The one genuinely additive note is "Money is integer minor units (cents)," a useful data-format caveat, but it does not describe return shape, ordering, or size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short fragments with the resource named first and no filler. Nothing is wasted, though the brevity veers into under-specification rather than tight editing.
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 full burden of explaining the payload, which it does not do. The input schema's object description for this no-arg tool does cover the return contents (ids, running state, settings for popups.set), which partially compensates.
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 per the rubric the baseline is 4. The description adds nothing about parameters, but there is nothing to document; the minor-units note is the only adjacent detail.
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 popups" is a verbatim restatement of the tool's own title and only implies the list action via the name. It never states a verb (list/retrieve) or distinguishes the resource beyond the noun, so it reads as a tautology rather than a 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?
There is no when-to-use guidance, no context for what the results are good for, and no routing to the obvious siblings popups_set and popups_remove. "Read-only; changes nothing" describes the operation, not when an agent should pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
popups_removeAInspect
Delete a popup. 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 |
|---|---|---|---|
| popup | Yes | The popup's id or name, as popups.list gives them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply generic hints (readOnlyHint=false, destructiveHint=false, idempotentHint=false); the description goes well beyond them by disclosing that the call is non-mutating, returns a preview of what would change plus a confirmation link, and that only the merchant on that page can execute the deletion. That explains the otherwise puzzling destructiveHint=false and tells the agent what the return contains in the absence of an output schema. There is mild semantic tension between "changes nothing" and readOnlyHint=false, but it reflects a deferred-confirmation mutation rather than a false claim.
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 critical non-mutation/confirmation behavior are front-loaded and earned. But the sentence "Money is integer minor units (cents)" is irrelevant boilerplate for a tool whose only parameter is a popup id or name, so one of four sentences is pure noise.
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 the call does, what it returns (preview and confirmation link), and who finalizes the action — enough for correct invocation. Residual gaps are minor: nothing about confirmation-link expiry or what the preview enumerates.
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 well documented ("The popup's id or name, as popups.list gives them"), so the schema carries the burden. The description adds no syntax or format detail beyond that, making the baseline 3 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?
"Delete a popup" gives a specific verb and resource, and it is trivially distinguishable from siblings popups_list and popups_set. It is slightly muddied by the later claim that calling it "changes nothing," which makes the agent wonder whether the tool deletes or only previews a deletion.
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 real workflow constraint — the call only stages a change and only the merchant, on the returned page, can complete it — which is genuine usage context an agent needs. However, it gives no explicit when-to-use/when-not, no reference to popups_list for obtaining the id, and no comparison against alternatives like popups_set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
popups_setAInspect
Make or change a popup. 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 |
|---|---|---|---|
| popup | No | The popup's id or name, as popups.list gives them. Leave out to make a new one. | |
| shown | No | false hides the popup without deleting it; true shows it again. | |
| values | Yes | Setting key to value, only the ones that change (a new popup starts from the defaults). Keys and choices as popups.list `fields` gives them. startsAt and endsAt take an ISO date with its offset (2026-11-01T09:00:00+00:00), or "" for none. image is a picture's https address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag it as a non-read-only, non-idempotent write, but the description adds the crucial nuance that the call itself mutates nothing, returns a preview plus a confirmation link, and requires merchant action to take effect. It also documents the money unit convention. 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, front-loaded sentences with essentially no waste. The money-unit sentence is slightly misplaced between the purpose and the workflow explanation, but 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?
No output schema exists, yet the description covers what the call returns (a preview of changes and a confirmation link) and who can execute it. For a 3-parameter write tool with a nested object, nothing an agent needs in order 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%, so the baseline is 3, but the description adds a unit convention (money in integer minor units/cents) that the schema does not state. The nested `values` object detail is otherwise left to the schema, so it does not fully reach a 5.
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?
"Make or change a popup" states a specific verb and resource, and the upsert nature (create when no id, edit when id given) is unambiguous against siblings like popups_list and popups_remove. An agent can select this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the full workflow context: calling it produces a preview and confirmation link rather than an immediate change, and only the merchant can finalize. That is strong usage context, though it never states when to prefer this over popups_remove or popups_list or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_add_downloadAInspect
Add a digital file 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 |
|---|---|---|---|
| url | Yes | A public http(s) address of the file the buyer gets once paid: pdf, zip, epub, mp3, wav, mp4, png, jpg, webp, txt or csv, up to 10 MB. A product with a file is digital: checkout asks no address or delivery, and the receipt carries a download link. | |
| name | No | The file name the buyer sees, with its extension. Defaults to the name in the address. | |
| 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?
Adds substantial behavior beyond the annotations: the call is side-effect free, returns a preview and a confirmation link, and requires merchant action on that page to take effect. This meaningfully softens the readOnlyHint=false framing without contradicting it, since the underlying operation is a write gated behind human confirmation. The 'money is integer minor units (cents)' sentence is a stray detail, as no price parameter exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the preview semantics and the merchant gate. Tight overall, but the money-in-cents sentence earns nothing here because the tool takes no monetary field, making it minor noise in an otherwise lean 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 three-parameter, fully documented schema with no output schema, this covers what an agent still needs: that the call is a non-mutating preview and that the real change happens on a merchant confirmation page. Return behavior is described inline rather than requiring an 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?
Schema coverage is 100%, so the schema already documents url (formats, 10 MB cap, digital-product consequences) and name (defaulting to the address's name). The description adds no parameter-level meaning, and its only data-format remark concerns money, which is not among the parameters. 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: 'Add a digital file to a product.' The schema note that 'a product with a file is digital' further clarifies the effect, and the phrasing distinguishes it from products_add_image, which handles visual media. It does not explicitly name that sibling, but the object (digital file attached to the product) 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?
Gives clear operational context for when to reach for this tool: it never performs the change itself, it returns a preview plus a confirmation link, and only the merchant on that page can commit. That tells an agent this is the proposal step in a two-step flow rather than a direct mutation. It stops short of naming alternatives (e.g., media_upload or products_add_image) or saying 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.
products_add_imageAInspect
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. An image generated or attached in the conversation has none: store it with media_upload first and use the url that returns. | |
| 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?
The description adds substantial behavioral context beyond the annotations: calling the tool produces a preview and confirmation link rather than an immediate mutation, and only the merchant can complete the action on that page. There is some tension with readOnlyHint=false because 'calling this changes nothing' sounds read-only at invocation time, but the overall workflow is a write proposal, so this 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 purpose and confirmation flow are front-loaded and useful, but the sentence 'Money is integer minor units (cents)' is irrelevant to an image-adding tool and appears to be template leakage. That wasted sentence lowers the score despite otherwise efficient 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?
For a three-parameter tool with no output schema, the description explains the key return behavior: a preview and confirmation link, plus who can complete the change. It does not cover image constraints or failure cases, but the schema already documents url and alt semantics.
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 detailed guidance for url, product, and alt. The description adds no parameter-level information, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: adding a picture to a product. It is clear enough to distinguish from general product editing, but it does not explicitly differentiate from sibling media_upload or products_edit. The stray money sentence adds noise but does not obscure the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose, and the confirmation-flow sentence hints at when the tool is appropriate. However, there is no explicit guidance on when to use this versus media_upload or products_edit, and the media_upload prerequisite appears only in the schema, not in the description.
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?
Annotations declare readOnlyHint=false and destructiveHint=false but say nothing about the two-step preview/handoff model; the description supplies that entirely — no prices are actually modified by the call, a preview plus confirmation link is returned, and the merchant must confirm out-of-band. This is exactly the kind of behavior-changing context the annotations cannot convey. The only gap is that idempotentHint=false is not addressed (whether calling twice yields two previews).
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 carrying a distinct fact: what it does, the unit convention, the no-op behavior, and who can commit. The most surprising and decision-relevant fact (it's only a preview) is placed early and stated unambiguously.
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 covers the return value (preview of changes + confirmation link), so an agent knows what comes back. Combined with the annotations' safety hints and a fairly self-documenting nested schema, only minor details (preview expiry, behavior on repeated calls, max 500 products) are left uncovered.
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% and the description's one parameter-relevant sentence ("Money is integer minor units (cents)") largely restates what the schema already documents for change.value. It adds no explanation of the filter fields (productIds/collectionId/tag/vendor) or the percent/amount/set semantics, leaning entirely on the schema. Baseline 3 is appropriate given the schema does most of 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?
States a specific verb and resource ("Change prices in bulk") that is clearly distinct from single-product editing siblings like products_edit. It does not explicitly name a sibling to route away from, but the bulk scope alone is distinguishing.
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?
"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" tells the agent exactly how this tool fits in the workflow and where its authority ends, which is critical guidance. What's missing is an explicit alternative for small/single edits (products_edit) or a note on when bulk editing is preferable to editing individually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
products_createBInspect
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 | ||
| barcode | No | The EAN, UPC or ISBN printed on the product, when the merchant gives one. | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is the description's strongest contribution: annotations only say readOnlyHint=false and destructiveHint=false, while the text discloses a two-phase preview-then-merchant-confirm protocol and that the call itself mutates nothing. That is context no annotation field carries. It stops short of saying how long the confirmation link lives, what the preview contains, or whether an identical call is deduplicated, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and immediately followed by the most decision-relevant fact (the call changes nothing). The money-units sentence is the one piece that does not earn its place since the schema already states it.
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 valuably explains what comes back (a preview and a confirmation link), which an agent otherwise could not know. But for a 10-parameter creation tool at 50% schema coverage with no annotations on parameter meaning, half the inputs are undocumented anywhere, and the description adds nothing about them.
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% across 10 parameters, so the description needs to compensate and largely does not — sku, tags, vendor, title, description and stock get no clarification. The one parameter statement, that money is integer minor units, merely restates the schema's own "Minor units (cents)." on price. This is duplication 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?
"Add a product" states a specific verb and resource, and it is distinguishable from products_edit, products_set_status and list_products by the act of creating. The second half re-frames the act as producing a preview rather than an immediate creation, which is clear once read but partially undercuts the opening verb. 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?
The confirmation-flow description implies when the flow applies (an agent should call this to stage a product rather than expect a created record), but there is no explicit when-to-use versus products_edit or products_add_image, and no stated prerequisites such as which fields must be supplied. Usage is inferable but not spelled out.
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. | |
| downloads | No | Names of the digital files to KEEP; the rest are removed. Only removes: products.add_download adds one. An empty list makes the product physical again. | |
| 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 where the definition earns its keep. Annotations only say readOnlyHint=false, destructiveHint=false and idempotentHint=false; the description goes further by disclosing that the call mutates nothing on its own, that it returns a preview plus a confirmation link, and that only the merchant can finalize it. That tells the agent the two-phase flow and that it must surface the link rather than assume the edit landed.
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, no waste, and the most decision-relevant fact (this call changes nothing yet) is stated up front. The unit convention and the confirmation constraint each appear exactly once.
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 ten-parameter mutation with no output schema, the description supplies the critical missing piece: what the call actually returns and who completes the write. Field-level behavior is well covered in the schema, so remaining gaps (error handling, what happens on an invalid handle) are 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 70%, and the per-field descriptions already carry the destructive nuances (tags and collections REPLACE, downloads KEEP-then-remove, status enum effects). The description adds one useful unit convention, money in integer minor units, though no price parameter appears in this schema. Baseline 3 is appropriate given the schema does most of 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?
"Change a product" gives a specific verb plus resource, and the description immediately clarifies the surprising part: the call stages rather than applies a change. It does not distinguish this from siblings like products_set_status or products_bulk_price_edit, so an agent must infer the boundary from those 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?
Usage is implied rather than stated: the wording 'change a product' implies an existing product, and 'Only the merchant, on that page, can make it happen' implies the agent's role ends at proposing the change. There is no explicit guidance on when to prefer products_set_status, products_add_download, or products_bulk_price_edit instead.
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_themeBDestructiveInspect
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, success, wishlist, compare, header, footer, blog, blog-post or store-locator. 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?
The annotations declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, indicating a mutating, non-idempotent operation. The description says 'stage as draft' but does not explain what gets destroyed or overwritten, whether staging replaces an existing draft, what permissions are needed, or what the screenshot output looks like (format, size). This is a significant transparency gap for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-formed sentence that front-loads the core action and states the outcome. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse for a destructive, non-idempotent tool with no output schema. It leaves out critical context: what staging overwrites or destroys, how the screenshot is delivered, and when to use it instead of stage_own_theme or check_own_theme.
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 three parameters thoroughly (page options, slug, width range). The description adds no parameter-specific detail beyond what the schema provides. 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 states a specific action: stage an own theme as a draft and return a screenshot of one page. This distinguishes it from related siblings like stage_own_theme (staging only) and check_own_theme, though it doesn't explicitly name those alternatives.
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 'so you can see what you built' implies a preview/verification use case, but the description does not explicitly state when to use this versus stage_own_theme or other theme tools, nor does it mention prerequisites or exclusions.
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?
This is the description's strongest contribution. Against annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), it discloses the critical non-obvious behavior: calling it changes nothing, it returns a preview plus a confirmation link, and only the merchant can apply the change. That prevents an agent from falsely reporting the settings as updated and explains why readOnlyHint is false despite no immediate 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?
Three short sentences, front-loaded with purpose, then the preview/confirm constraint. The money-units sentence sits oddly between purpose and the critical no-op disclosure, slightly interrupting the flow. Otherwise 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 7-parameter tool with nested objects, no required fields, and no output schema, the description supplies the one thing an agent cannot infer: that the call is a staged preview requiring merchant confirmation. It leaves unstated whether partial updates merge (the schema's 'Only the fields given change' covers it) and what the preview payload looks like, which is acceptable given the annotation 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% with rich per-field docs (robotsPolicy enum, structuredData.hours seven-entry rule, verifications format), so the schema carries parameter meaning. The description only adds the money-is-integer-minor-units note, which is relevant to structuredData.returns.fee but phrased as 'cents' while the schema says minor units of the shop's currency — marginally helpful, slightly imprecise.
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: setting how the shop presents itself to search engines (title, robots, structured data). It is clearly distinct from the settings_* siblings and shopping_feeds_set, though it never names a sibling to route against. The purpose is unambiguous 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?
Usage is only implied: an agent infers it should call this when the merchant wants to change SEO/business-listing metadata. There is no explicit when-to-use vs. when-not, and no pointer to alternatives such as settings_identity or settings_details for overlapping shop-description data. The confirmation-flow explanation is behavioral, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_sectionsADestructiveInspect
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?
Adds context the annotations cannot: writes go to the DRAFT only and nothing shopper-visible changes until Publish — a critical nuance against destructiveHint=true. It also discloses that unknown section types and unknown setting keys are silently dropped, which is exactly the failure mode an agent must guard against.
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, each carrying distinct information: what it does, draft safety, silent-drop behavior plus prerequisite, and the hide-vs-remove idiom. Front-loaded with the action and safety constraint before the prerequisites.
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, no-output-schema mutation tool this covers draft semantics, silent drops, and prerequisite reads. Remaining gaps are minor: no statement of what happens to existing sections omitted from the array, and no handle format guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description compensates for the gaps: it explains that 'sections' is the entire ordered page including retained sections, and that enabled:false hides while preserving settings — meaning beyond a bare boolean in the schema. 'handle' is never explained in the description, so it is not fully covered.
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 specific verb+resource: 'Replace a page's layout.' The whole-page replacement scope is clear and it is distinguishable from siblings like define_section (defines a type) and list_section_types (reads the catalog) by naming them 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?
Gives explicit prerequisites and ordering: 'read list_section_types first' and 'Call get_design_guide first if you have not.' It also names a concrete alternative pattern (enabled:false to hide rather than remove), so the agent knows both when to use this tool and how to use it instead of destructive deletion.
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_catalogue_modeBInspect
Show the products without selling them. 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 |
|---|---|---|---|
| catalogueMode | Yes | true: the shop shows its products and prices and sells nothing; every buy button and the basket are hidden. Pro only. false: it sells again. | |
| catalogueHidePrices | No | In catalogue mode, hide the prices as well, for a shop that quotes. Off by default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Calling this changes nothing,' but the annotations declare readOnlyHint=false, creating a direct conflict about whether the tool modifies state. Although the description usefully explains the preview and confirmation-link behavior, that contradiction undermines its transparency about the tool's 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 purpose is front-loaded, and the preview/confirmation behavior is explained clearly. However, the sentence 'Money is integer minor units (cents)' does not apply to this tool's boolean-only parameters 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 simple two-boolean settings tool with full schema coverage and no output schema, the description provides enough context about the preview and merchant-only confirmation flow. It omits the Pro-only constraint, but the schema already captures that detail.
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 boolean parameters are already well documented in the schema. The description adds no additional parameter-level meaning and includes an irrelevant sentence about money being in minor units despite there being no monetary parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear outcome: showing products without selling them. It does not explicitly name 'catalogue mode' as the setting being changed, but the name and schema make the intended effect recognizable. It also does not distinguish this from sibling settings tools beyond the implied outcome.
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 use case (display products without enabling sales) and adds the constraint that only the merchant can confirm the change on the generated page. It does not explicitly say when to use this versus related settings tools, nor does it state exclusions or alternatives.
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_checkout_questionsAInspect
Ask buyers a question of your own at checkout. 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 |
|---|---|---|---|
| type | No | text (one line, the default), textarea, select (one choice), multiselect (several), number, date, time, file (the buyer attaches a PDF or picture), boolean (a tick). | |
| label | Yes | The question as the buyer reads it, like "Minecraft username" or "Game version". Matched to an existing question case aside. | |
| action | Yes | set: add a question to the checkout, or change the one with this label (only the fields given move). remove: stop asking it; orders already taken keep their answers. | |
| choices | No | The choices, for select and multiselect only. | |
| newLabel | No | A new wording for an existing question; its answers on past orders stay. | |
| required | No | Whether the order cannot be placed without an answer. New questions default to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the tool's real effect: it performs no change itself, it returns a preview of the diff plus a confirmation link, and only the merchant acting on that page can apply it. It also documents the destructive edge case ('orders already taken keep their answers') inside the action parameter. The one caveat is that 'Calling this changes nothing' sits in mild tension with readOnlyHint=false, though a staged proposal plausibly justifies the write hint.
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 preview semantics are front-loaded and well ordered. However, the sentence 'Money is integer minor units (cents)' is irrelevant to this tool, which has no money parameter, and it wastes attention and could mislead an agent into expecting a price field.
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 six parameters, no output schema, and no annotation detail, the description successfully fills the biggest gap by describing the return value (preview plus confirmation link). Minor omission: it does not say what happens when 'set' is called on a label that does not exist yet versus one that does, beyond what the schema already states.
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 description carries no burden here and adds nothing beyond the schema. Baseline of 3 is appropriate; the label matching rule, enum meanings, and removal semantics are all already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource: asking buyers a custom question at checkout. An agent immediately understands the capability. It does not distinguish itself from the adjacent settings_checkout and settings_checkout_extras siblings, so an agent has no text-level cue about which of the three 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?
Usage is only implied by the phrasing 'ask buyers a question of your own at checkout'. There is no explicit when-to-use, no when-not-to-use, and no pointer to settings_checkout or settings_checkout_extras as alternatives for related checkout configuration.
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_taxBInspect
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. Never 0 only to hide the tax line from shoppers: that stops charging VAT the shop may owe; showTaxLine is for that. | |
| showTaxLine | No | false hides the "includes tax" line at checkout, in the cart, on order pages and receipts, for prices that include tax; the tax is still charged and on the invoice. Tax added on top always shows. What a merchant who asks to hide taxes or fees at checkout almost always wants. | |
| 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?
The description says 'Calling this changes nothing' and returns only a preview/confirmation link, while annotations declare readOnlyHint=false. That is a direct conflict about whether the call can modify state, so despite useful workflow detail the score is capped at 1 and 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 short sentences, front-loaded with the core action and immediately followed by the two critical behavioral caveats. No filler; every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, fully documented schema with no output schema, the description supplies the important workflow context: it returns a preview and confirmation link and requires merchant action. The remaining gap is sibling/alternative context, so it is not quite 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%, including detailed semantics for taxRateBps and showTaxLine, so the schema already carries the parameter burden. The description adds only a generic 'integer minor units (cents)' note, which does not materially extend those parameter definitions.
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 the shop's tax line') and clarifies that the call is a preview rather than the final write. It does not, however, distinguish this from the sibling settings_tax_rates tool or explain which tax-related setting belongs where.
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 workflow and that only the merchant can complete the change, which implies when the tool is appropriate. It gives no explicit guidance on when to choose this over settings_tax_rates or other settings tools, and no exclusions.
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, success, wishlist, compare, header, footer, blog, blog-post or store-locator. 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?
Goes beyond the annotations (destructiveHint=true, idempotentHint=false) by naming exactly what is destroyed ('Replaces whatever draft theme the shop had') and clarifying the blast radius ('The live shop does not change'). It also discloses the side effect that a preview link is returned, which an agent would otherwise have to discover.
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, none wasted: the action leads, the live-shop invariant follows, and the replacement caveat closes. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly summarizes the return value (a draft-preview link) and fully explains the resulting state change and the destructive replacement. Nothing needed 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%, so both parameters (slug, page) are already fully documented in the schema, including the template-handle list. The description adds no parameter-level meaning beyond that, 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?
States a specific verb and resource ('Put an own theme on this shop as its draft') plus the return ('a link to walk the draft'), which is enough for an agent to distinguish it from create_own_theme, list_own_themes, and 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?
Gives clear context for when this applies: it stages a draft, leaves the live shop untouched, and the merchant later publishes from Design, Themes. It does not explicitly name a sibling alternative or an exclusion case (e.g., when to prefer create_own_theme), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
store_locator_removeAInspect
Take a store off the map. 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 |
|---|---|---|---|
| store | Yes | The store's name. It leaves the map; the location and its pickup stay. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations present, the description adds real value beyond them by disclosing the two-step preview/confirm model and that the caller cannot effect the change itself. There is mild tension with readOnlyHint=false, but this is resolved if the confirmation-link creation is itself the state change, so it does not rise to 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 mutation-behavior sentences are front-loaded and earn their place, but the money/units sentence is irrelevant to a tool with a single string parameter and reads as copy-paste from another definition, adding confusion rather than 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?
For a one-parameter, non-destructive tool with no output schema, the description covers the invocation flow and the limits of the caller's power adequately. It omits whether the removal is reversible and does not point at the complementary store_locator_set 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 schema already explains that the store name leaves the map while the location and pickup stay. The description adds no parameter detail of its own, and its 'Money is integer minor units (cents)' sentence refers to a parameter that does not exist 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 opening sentence states a specific verb and resource ('Take a store off the map'), which is clearly the inverse of the sibling store_locator_set. It does not name that sibling explicitly, and the stray sentence about integer minor units 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?
It clearly explains the context of invocation: calling it produces a preview and a confirmation link, and only the merchant on that page can complete the removal. It stops short of naming alternatives such as store_locator_set for re-adding or store_locator_stores for listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_locator_setAInspect
Put a store on the map or change it. 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 |
|---|---|---|---|
| lat | No | ||
| lng | No | With lat, the point on the map. Leave both out to have it found from the address after confirming. | |
| url | No | The store's own web page, https or a path on the shop. | |
| note | No | One line shoppers read on its card. | |
| tags | No | What the store offers, each a filter chip: Parking, Café. Replaces the tags. | |
| No | |||
| hours | No | Opening hours per day, e.g. { mon: ["09:00-13:00", "14:00-19:00"], sat: ["10:00-14:00"] }. A day left out is closed. Replaces all the hours. | |
| image | No | A picture's https address. | |
| store | Yes | The store's name, as store_locator.stores gives it. A new store is made with pickup.set_location first. | |
| listed | No | Shown on the store locator. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description carries the load that annotations cannot: it discloses the two-phase confirmation workflow ("returns a preview... and a confirmation link. Only the merchant, on that page, can make it happen"). This is exactly the context an agent needs to avoid assuming an immediate write, and it goes well beyond the readOnlyHint=false / destructiveHint=false 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 purpose, then the preview behavior, in four tight sentences. The stray money/cents sentence is irrelevant to any parameter in this schema and is the one piece of noise.
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, nested-object tool with no output schema, the description correctly explains the return (a preview plus confirmation link) and the confirmation gating. Combined with the rich schema descriptions for lat/lng, hours, tags, and store, this is nearly complete; the missing piece is routing guidance relative to 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 coverage is 80%, so parameters are largely self-documented. The description's only parameter-adjacent note ("Money is integer minor units") refers to no field in the schema, adding no useful semantics. 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?
"Put a store on the map or change it" gives a concrete verb (put/change) and resource (store), which distinguishes it cleanly from store_locator_stores (list) and store_locator_remove (delete). It does not name those siblings explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use versus alternatives is stated. The description doesn't tell the agent how this relates to store_locator_stores, store_locator_remove, or pickup.set_location (that dependency is only hinted at inside the schema's store param). Usage is left to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_locator_storesBRead-onlyInspect
The shop's stores. 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 repeats structured data rather than adding to it. The one piece of new information is the money-format convention ('integer minor units (cents)'), which is a genuine data-handling hint but of uncertain relevance to store records.
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 with the resource stated first and no filler. It is efficient, though the money-units sentence is of questionable applicability to a store-listing tool and consumes space that could have carried usage or scoping information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description would normally need to explain the return shape, but the input schema's description already enumerates the returned fields (address, map presence, point, hours, tags, pickup availability, locator page address). Combined with annotations covering the safety profile, the definition is close to complete; only routing to the sibling mutation 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?
The tool takes zero parameters, so there is nothing for the description to clarify and the baseline is 4. The description neither needs nor provides parameter detail, and the empty input schema is unambiguous.
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 bare noun phrase, 'The shop's stores,' which restates the resource identified by the tool name but supplies no action verb (list/retrieve/return). An agent can infer it returns the shop's store list, but the description itself does not state what the tool does or differentiate it from the store_locator_set/store_locator_remove 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?
The only usage signal is 'Read-only; changes nothing,' which implies the tool is safe to call but gives no explicit when-to-use guidance and never names the adjacent store_locator_set or store_locator_remove tools an agent would otherwise consider. No prerequisites or conditions are stated.
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.
upload_imagesAInspect
Open a card in the chat where the merchant picks or drags pictures from their computer or phone (product photos, a logo, banners); each one goes straight into the shop's media library without passing through the conversation. Use it whenever the merchant wants to add pictures they have with them and did not attach, or when files cannot be passed to media_upload. Say in one sentence that the card is open and wait: when they finish, the card adds the stored addresses to the conversation's context, and you give each product its picture with products_add_image (propose_plan for several). The card is valid for 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| purpose | No | What the pictures are for, shown on the card, e.g. 'Photos for Vanilla candle' or 'Your logo'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description discloses the asynchronous interaction model (card is open, agent must wait), where the artifacts land (media library, not the conversation), that stored addresses return into the conversation context, and a concrete 30-minute validity window. These are exactly the traits an agent cannot infer from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The capability and its destination are front-loaded, and every clause carries operational information (trigger, wait state, follow-up tool, expiry). It is dense and slightly run-on across a single long paragraph, but little 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 single-parameter, no-output-schema tool with async UI semantics, the description covers the full lifecycle: how the card is presented, what happens on completion, the required agent behavior while waiting, the follow-up tooling, and the 30-minute expiry. Nothing needed 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?
There is a single optional parameter and schema description coverage is 100%, with the schema already giving an example ('Photos for Vanilla candle', 'Your logo'). The description adds no further meaning about the purpose field, 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 description uses a specific verb and resource ('Open a card in the chat where the merchant picks or drags pictures') and immediately states the destination ('each one goes straight into the shop's media library without passing through the conversation'). It is clearly distinguishable from media_upload ('files cannot be passed to media_upload') and from products_add_image, which is described as the downstream step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit trigger conditions ('whenever the merchant wants to add pictures they have with them and did not attach, or when files cannot be passed to media_upload') and names the alternative tool that is not appropriate in that case. It also prescribes the follow-up sequence (tell them the card is open and wait; then use products_add_image, or propose_plan for several).
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.
2 tool updates
- Added
products_add_download - Changed
products_edit1 field changed- added
Input schema / properties / downloadsAdded value: +{ + "description": "Names of the digital files to KEEP; the rest are removed. Only removes: products.add_download adds one. An empty list makes the product physical again.", + "items": { + "type": "string" + }, + "type": "array" +}
1 tool update
- Changed
settings_catalogue_mode1 field changed- added
Input schema / properties / catalogueHidePricesAdded value: +{ + "description": "In catalogue mode, hide the prices as well, for a shop that quotes. Off by default.", + "type": "boolean" +}
1 tool update
- Added
settings_catalogue_mode
4 tool updates
- Added
get_menu - Changed
products_create1 field changed- added
Input schema / properties / barcodeAdded value: +{ + "description": "The EAN, UPC or ISBN printed on the product, when the merchant gives one.", + "type": "string" +}
- Added
set_menu - Added
settings_checkout_questions
1 tool update
- Added
upload_images
2 tool updates
- Added
media_upload - Changed
products_add_image1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"A public http(s) address of the image. It is fetched and copied onto the shop's storage."New value: +"A public http(s) address of the image. It is fetched and copied onto the shop's storage. An image generated or attached in the conversation has none: store it with media_upload first and use the url that returns."
4 tool updates
- Removed
customers_reset_password - Added
customers_send_signin_link - Changed
list_products3 fields changed- added
Input schema / properties / includeInactiveAdded value: +{ + "description": "Include draft and archived products too.", + "type": "boolean" +} - changed
Input schema / properties / limit / maximumPrevious value: -50New value: +100 - added
Input schema / properties / queryAdded value: +{ + "description": "Only products whose title, handle or SKU contains this.", + "type": "string" +}
- Changed
products_bulk_price_edit1 field changed- added
Input schema / properties / filter / properties / productIds / descriptionAdded value: +"Products by id or by handle, as list_products returns them."
1 tool update
- Changed
blog_posts_create2 fields changed- changed
Input schema / descriptionPrevious value: -"A new post on the shop's blog. A draft unless status is published."New value: +"A new post on the shop's blog. A draft unless status is published; published with a future publishAt schedules it." - added
Input schema / properties / publishAtAdded value: +{ + "description": "ISO date and time with its offset, for published: a future one schedules the post, e.g. one a week for a month of posts.", + "type": "string" +}
1 tool update
- Changed
seo_set1 field changed- added
Input schema / properties / structuredData / properties / verificationsAdded value: +{ + "description": "Site ownership tags to put in the head of every page, pasted as the service gives them, one <meta> per line: Trustpilot's trustpilot-one-time-domain-verification-id, Google's google-site-verification, Bing's msvalidate.01, Pinterest's p:domain_verify, Meta's facebook-domain-verification. Replaces the list; only verification tags are kept. Settings, Search engines, Verification tags.", + "maxLength": 4000, + "type": "string" +}
4 tool updates
- Changed
imports_create4 fields changed- changed
Input schema / properties / source / descriptionPrevious value: -"url for a CSV or XML file at an http(s) address; sheets for a Google Sheet shared as \"anyone with the link\"."New value: +"url for a CSV or XML file at an http(s) address; sheets for a Google Sheet shared as \"anyone with the link\"; shopify for a merchant moving from a Shopify store that is still online, which brings its products and their collections." - changed
Input schema / properties / source / enumPrevious value: -[ - "url", - "sheets" -]New value: +[ + "url", + "sheets", + "shopify" +] - changed
Input schema / properties / url / descriptionPrevious value: -"The file's address, or the sheet's link as copied from the browser."New value: +"The file's address, the sheet's link as copied from the browser, or the Shopify store's own address (yourstore.com)." - changed
Input schema / properties / url / minLengthPrevious value: -8New value: +4
- Changed
imports_inspect4 fields changed- changed
Input schema / properties / source / descriptionPrevious value: -"url for a CSV or XML file at an http(s) address; sheets for a Google Sheet shared as \"anyone with the link\"."New value: +"url for a CSV or XML file at an http(s) address; sheets for a Google Sheet shared as \"anyone with the link\"; shopify for a merchant moving from a Shopify store that is still online, which brings its products and their collections." - changed
Input schema / properties / source / enumPrevious value: -[ - "url", - "sheets" -]New value: +[ + "url", + "sheets", + "shopify" +] - changed
Input schema / properties / url / descriptionPrevious value: -"The file's address, or the sheet's link as copied from the browser."New value: +"The file's address, the sheet's link as copied from the browser, or the Shopify store's own address (yourstore.com)." - changed
Input schema / properties / url / minLengthPrevious value: -8New value: +4
- Added
orders_ship_label - Changed
settings_tax2 fields changed- added
Input schema / properties / showTaxLineAdded value: +{ + "description": "false hides the \"includes tax\" line at checkout, in the cart, on order pages and receipts, for prices that include tax; the tax is still charged and on the invoice. Tax added on top always shows. What a merchant who asks to hide taxes or fees at checkout almost always wants.", + "type": "boolean" +} - changed
Input schema / properties / taxRateBps / descriptionPrevious value: -"The default tax rate in basis points: 23% is 2300, 0 switches tax off."New value: +"The default tax rate in basis points: 23% is 2300, 0 switches tax off. Never 0 only to hide the tax line from shoppers: that stops charging VAT the shop may owe; showTaxLine is for that."
5 tool updates
- Added
blog_posts_delete - Added
blog_posts_edit - Added
blog_posts_set_status - Changed
screenshot_own_theme1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"A template handle: home, collection, product, cart, search, login, register, header, footer, blog or blog-post. Default home."New value: +"A template handle: home, collection, product, cart, search, login, register, success, wishlist, compare, header, footer, blog, blog-post or store-locator. Default home."
- Changed
stage_own_theme1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"A template handle: home, collection, product, cart, search, login, register, header, footer, blog or blog-post. Default home."New value: +"A template handle: home, collection, product, cart, search, login, register, success, wishlist, compare, header, footer, blog, blog-post or store-locator. Default home."
3 tool updates
- Added
store_locator_remove - Added
store_locator_set - Added
store_locator_stores
5 tool updates
- Added
plugins_available - Added
plugins_install - Added
popups_list - Added
popups_remove - Added
popups_set
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
Run a WooCommerce store from Claude: reports, SEO, prices, stock. You approve every change first.
Run your online store with your own AI: products, orders, customers, ads, emails and reports.
Run your business from Claude: websites, SEO, ads, social, payments, leads and AI media.
Your online store: products, stock, orders, customers and payments into your own account.
Related MCP Servers
- AlicenseBqualityAmaintenanceQuery and edit your OpenCart store from Claude Code. Products, orders, customers, Journal3 modules, SEO URLs, CMS pages — 36 tools, all through natural language.4220MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Shopify store data (products, customers, orders) via GraphQL, providing comprehensive tools for store management through Claude.89 npm3MIT
- FlicenseNot gradedqualityDmaintenanceAI-powered Shopify Admin via Claude + MCP, enabling full store management through conversation including products, collections, analytics, and bulk operations.-
- AlicenseCqualityDmaintenanceConnects your Shopify store data to Claude Desktop, enabling access to products, orders, customers, inventory, and more through natural language.152,205 npm4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.