Skip to main content
Glama

Server Details

Run a custom-merchandise store end to end from an AI agent: generate designs, build products with mockups and margin-safe pricing, list them on Shopify, WooCommerce, Wix and TikTok Shop, and route orders to Printful, Printify or Gelato for fulfillment. Sign in with OAuth, no API key to handle.

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

TDQS

B3.4/5.0

Scored across 123 tools

Disambiguation3/5

Descriptions are extremely detailed and many tools have clear boundaries, but the sheer number of related tools (e.g., multiple analytics_*, channel_*, design_* and order lifecycle tools) creates real overlap in intent. An agent could easily misselect among similar analytics or design tools without careful reading.

Naming Consistency4/5

All tool names use snake_case, which is consistent. Most follow a verb_noun pattern, but there are notable deviations like noun_noun (analytics_summary, channel_coverage) and the 'my' prefix (list_my_products), which slightly breaks the otherwise predictable convention.

Tool Count1/5

123 tools is an extreme mismatch for a single server, far exceeding the 50+ threshold for a score of 1. Even for a complex domain, this many tools imposes excessive cognitive load and likely includes redundant or overly granular operations.

Completeness5/5

The tool surface covers virtually every aspect of the print-on-demand lifecycle: design generation and editing, product creation and variants, store and workspace management, fulfillment provider integration, sales channel syncing, order lifecycle, analytics, agency features, and even QA gates. No obvious gaps remain.

Available Tools

123 tools
accept_inviteAInspect

Accept a pending invite by token. The authenticated key-holder’s email must match the invite. Works on any tier and with a workspace-scoped key (the invitee side). Returns the account + workspace you were added to.

[#e7e5ee]

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesThe invite token (from the invite email / accept URL).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only supply openWorldHint=true, so the description carries the behavioral load and does it well: it discloses the identity-match requirement, tier compatibility, and key-scoping behavior. It even reports the return payload (account + workspace), which is useful given 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.

Conciseness4/5

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

Three compact sentences, front-loaded with the action and precondition, with no redundant restatement of the name. The trailing '[#e7e5ee]' artifact is stray noise but does not obscure meaning.

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

Completeness4/5

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

For a single-parameter tool with no output schema, the description covers auth requirement, scope/tier, and the return shape, which is enough for an agent to call it correctly. Only the absence of explicit sibling routing keeps it from a 5.

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

Parameters3/5

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

Only one parameter and schema description coverage is 100%, so the schema already explains the token fully (from the invite email / accept URL). The description's 'by token' adds nothing beyond what the schema states, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb (accept) and resource (pending invite) plus the mechanism (by token). It is clearly separable from siblings like invite_member, resend_invite, and revoke_invite, which operate on the inviter side.

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

Usage Guidelines4/5

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

Gives real preconditions: the authenticated key-holder's email must match the invite, and it works on any tier and with a workspace-scoped key, identifying this as the invitee-side action. It never explicitly names the counterpart tools (invite_member / revoke_invite) or states when not to use it, 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.

activate_storeA
Idempotent
Inspect

Activate a store so it can list products and ingest orders. Requires at least one fulfillment provider (e.g. Printful) to be connected first — otherwise this fails. Use after create_store or unarchive_store once a provider is connected.

[#87c31f]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidYesThe store uuid to activate.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations supply openWorldHint and idempotentHint (retry safety), and the description adds genuinely new behavioral context: the hard prerequisite of a connected fulfillment provider and the failure it causes if unmet. It stops short of covering auth/permission requirements or what the response returns.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the purpose and then the prerequisite and sequencing. The stray '[#87c31f]' artifact is noise that slightly detracts from an otherwise efficient description.

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

Completeness4/5

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

For a two-parameter state-mutation tool with no output schema and annotations covering the safety profile, the description covers purpose, prerequisite, failure mode, and sequencing adequately. It could say more about permissions or reversibility, but nothing critical to a correct call is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both store_uuid and workspace are already documented in the schema. The description adds no parameter-level syntax or format detail beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (activate) and resource (store), plus the concrete consequence: it can 'list products and ingest orders'. This clearly separates it from sibling lifecycle tools like archive_store, unarchive_store, and create_store.

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

Usage Guidelines5/5

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

Explicitly states the prerequisite ('Requires at least one fulfillment provider ... to be connected first') and the sequencing ('Use after create_store or unarchive_store once a provider is connected'). It names the alternatives and the condition that selects them, leaving nothing to inference.

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

add_order_itemAInspect

Add an item (e.g. another variant of the same product) to a DRAFT order, before it is confirmed to production. Optionally set custom_price (the new item's per-unit retail price) and/or shipping_cost (the order-level retail shipping the customer pays — NOT the provider's cost); omit them and the variant price / existing shipping are kept. Only works while the order is in "draft" status. Printful and Gelato edit the existing provider draft IN PLACE; Printify has no edit API, so it CANCELS + RE-CREATES the order — the result then carries edit_method="recreated" and a new fulfillment_external_id. Nothing is charged on a draft, so re-creation is safe. Returns 409 "order_not_editable" if the order was already confirmed/submitted to production.

[#f416d1]

ParametersJSON Schema
NameRequiredDescriptionDefault
quantityNoQuantity to add (default 1).
workspaceNoWorkspace uuid (agency accounts). Omit for Default.
order_uuidYesThe DRAFT order uuid (from list_my_orders / get_order_details).
custom_priceNoPer-unit retail price for the new item. Omit to use the variant's own price.
variant_uuidYesThe product variant to add (e.g. another color/size of the same product).
shipping_costNoOrder-level retail shipping price (what the customer pays, not the provider cost). Omit to keep the order's current shipping.

TDQS

A4.6/5.0
Behavior5/5

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

With only openWorldHint in annotations, the description carries the burden and does so richly: per-provider semantics (Printful/Gelato edit in place, Printify cancels and re-creates), the resulting edit_method="recreated" and new fulfillment_external_id, and the reassurance that nothing is charged on a draft. It also names the exact error code for the non-editable case.

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

Conciseness4/5

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

Front-loaded with the core action and the draft constraint, and the provider-specific risk is placed where an agent will read it before acting. It is dense but nearly every clause carries decision-relevant information; the trailing '[#f416d1]' artifact is stray noise.

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

Completeness5/5

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

For a 6-param mutation tool with no output schema, the description covers preconditions, per-provider side effects, price semantics, and error behavior, so an agent has everything needed to call it correctly and interpret the recreated-order case.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description adds real value by disambiguating custom_price (per-unit retail) and shipping_cost (order-level retail the customer pays, NOT provider cost) and by stating the omit-behavior for both. Quantity and workspace are left to the schema.

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

Purpose5/5

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

States a specific verb+resource (add an item to a DRAFT order) and scopes it precisely against the surrounding order tools, e.g. it is not remove_order_item and not a catalog operation. The draft-only constraint further disambiguates it from order-creation tools.

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

Usage Guidelines4/5

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

Clearly states when it applies ('Only works while the order is in "draft" status' before confirmation to production) and gives the failure condition (409 order_not_editable if already confirmed). It does not explicitly point at sibling alternatives such as remove_order_item or submit_order_to_fulfillment, 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.

add_products_to_collectionAInspect

Add one or more products (by uuid) to a collection. The products must already be associated with the store. If the collection is synced to a channel, the products are added there too.

[#e8080a]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
product_uuidsYes
collection_uuidYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations only declare openWorldHint=true, so the description carries most of the behavioral burden. It does disclose a genuinely useful side effect (products propagate to a synced channel) and an input precondition, but says nothing about permissions, idempotency, or what happens if a product is already in the collection.

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

Conciseness3/5

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

The two informative sentences are front-loaded and efficient, but the definition is polluted by a stray color-code artifact ('[#e8080a]') that has no semantic value and adds noise.

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

Completeness3/5

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

For a mutation tool with no output schema and near-empty annotations, the description covers the precondition and the cross-channel effect but omits failure modes, permission requirements, and confirmation of the result. Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the schema names the parameters but explains none. The description clarifies the uuid semantics of product_uuids and collection_uuid and confirms multi-add via 'one or more', but leaves the workspace parameter and the store_uuid/collection_uuid relationship unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Add one or more products ... to a collection') and constrains input to uuids, so the agent knows exactly what the tool does. It does not explicitly distinguish itself from the sibling remove_product_from_collection, but the direction of the operation is unambiguous.

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

Usage Guidelines4/5

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

Provides a clear precondition ('products must already be associated with the store') that tells the agent when the call is valid, and explains the channel-sync consequence. It stops short of naming alternative tools (e.g. remove_product_from_collection, update_collection) or when-not to use it.

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

add_variantsAInspect

Add variants to an existing product (split primitive). Resolves provider_variant_ids by color+size from the product's provider options (or pass them explicitly). Warns on the AQUA-vs-Navy trap. Variants must exist before syncing.

[#0d5443]

ParametersJSON Schema
NameRequiredDescriptionDefault
variantsYes
workspaceNo
product_uuidYes
product_ref_idNoEnables the AQUA-vs-Navy guard for BC 3001 ("71").

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only carry openWorldHint=true, so the description adds meaningful behavior: it resolves provider_variant_ids by color+size from provider options, flags the AQUA-vs-Navy trap, and states variants must exist before syncing. It still omits permission needs, reversibility, and duplicate-handling behavior.

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

Conciseness4/5

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

Three dense, front-loaded statements with no filler, each carrying information. The trailing '[#0d5443]' artifact is noise that earns nothing and slightly harms cleanliness.

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

Completeness3/5

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

A mutation tool with no output schema and thin annotations; the description covers the core operation, a resolution rule, a trap, and a prerequisite, but leaves error cases, workspace scoping, and result behavior unexplained.

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

Parameters3/5

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

Schema description coverage is low (25%), so the description must compensate. It adds real semantics for provider_variant_ids (resolved by color+size or passed explicitly), but says nothing about workspace or product_uuid, and defers the AQUA-vs-Navy guard mechanism to the schema.

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

Purpose4/5

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

States a specific verb+resource ('Add variants to an existing product') and clarifies it is a 'split primitive', which distinguishes it from create_product and update_product in the sibling list. It does not name a sibling directly, but the resource and operation are unambiguous.

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

Usage Guidelines3/5

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

Provides implied usage context via 'Variants must exist before syncing', giving a prerequisite/ordering constraint, and explains when to pass provider_variant_ids explicitly vs resolving them. It does not name alternatives or state when NOT to use this tool, leaving usage largely inferred.

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

analytics_breakdownA
Read-only
Inspect

Aggregate KPIs broken down by one dimension: product_type, sales_channel, fulfillment_provider, product, variant, or hold_reason. Rows are sorted for display; overflow past the limit folds into an "(everything else)" row so totals still reconcile. Requires an Advanced Analytics plan. Read-only.

[#127113]

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM-DD). Omit to default to today (UTC).
limitNoMax rows before folding the rest into "(everything else)" (default 50).
startNoStart date (YYYY-MM-DD). Omit to default to 30 days before end.
storeNoStore uuid to narrow to one store. Omit for all accessible stores.
currencyNoReporting currency (e.g. "USD"). Currencies are segmented, never summed.
dimensionYesThe dimension to break down by (required).
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnlyHint=true, so the trailing "Read-only" adds nothing. The description does earn credit for two non-annotation facts: the Advanced Analytics plan gate and the "(everything else)" folding behavior that keeps totals reconciling. It still omits how long a large breakdown takes or any rate-limit/auth nuance.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core action and scope, with no filler. The stray "[#127113]" artifact is dead weight but minor.

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

Completeness4/5

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

With no output schema, the description covers what an agent needs: scope (one dimension), the row-cap/folding semantics, the plan prerequisite, and read-only nature. It stops short of explaining reconciliation output fields or currency segmentation, though the schema's currency description partially covers the latter.

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

Parameters3/5

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

Schema description coverage is 100%, so all 7 parameters (dates, limit, store, currency, dimension, workspace) are already documented in the schema with defaults and constraints. The description restates the dimension options already present in the enum and the limit-folding behavior already noted on the limit param, adding no new parameter meaning. Baseline 3 is correct.

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

Purpose4/5

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

States a specific verb+resource ("Aggregate KPIs") and enumerates the exact dimensions it can break down by, which distinguishes it from a by-time tool. It never names the analytics siblings (summary/timeseries/portfolio), so an agent must infer the split from the phrase "broken down by one dimension" rather than being told.

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

Usage Guidelines3/5

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

It supplies one hard prerequisite ("Requires an Advanced Analytics plan") which is genuinely useful for routing. However, it gives no explicit when-to-use guidance against analytics_summary, analytics_timeseries, or analytics_portfolio, leaving the agent to infer usage from the dimension phrasing alone.

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

analytics_opsA
Read-only
Inspect

Operational health for a date range: fulfillment velocity (payment→submit→ship→deliver averages), order counts, and cancellation / refund / hold rates, plus a hold-reason breakdown. Requires an Advanced Analytics plan. Read-only.

[#ed8ddd]

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM-DD). Omit to default to today (UTC).
startNoStart date (YYYY-MM-DD). Omit to default to 30 days before end.
storeNoStore uuid to narrow to one store. Omit for all accessible stores.
currencyNoReporting currency (e.g. "USD"). Currencies are segmented, never summed.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' merely restates structured data. The description does add one thing annotations cannot express: the Advanced Analytics plan requirement, which gates whether the call can succeed. It says nothing about latency, pagination, or result limits, so it is useful but not rich.

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

Conciseness4/5

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

The core content is a single dense sentence front-loading the scope ('Operational health for a date range') then the metric list, with the plan requirement and read-only note appended. It is well sized for the tool's complexity, but a stray render artifact ('[#ed8ddd]') leaks into the text and earns no place.

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

Completeness4/5

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

With no output schema, the description takes on the job of telling the agent what comes back, and it does so by enumerating velocity averages, counts, rates, and a hold-reason breakdown. Combined with a fully-documented 100%-coverage input schema and readOnly annotations, an agent has enough to call it correctly; only the response shape (formatting, granularity) is left unstated.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter (end, start, store, currency, workspace) already carries a well-written description including defaults and the currency-segmentation caveat. The description adds only the generic phrase 'for a date range', so the schema is doing essentially all of the parameter work and the 3 baseline applies.

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

Purpose4/5

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

The description names a specific resource and enumerates exactly what the report covers (fulfillment velocity stages, order counts, cancellation/refund/hold rates, hold-reason breakdown), which is far more specific than a bare name. It does not, however, distinguish itself from the nearby siblings analytics_summary, analytics_breakdown, analytics_portfolio, or analytics_timeseries, leaving the agent to guess which analytics surface to pick.

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

Usage Guidelines3/5

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

Usage is implied by the metric list and the 'Requires an Advanced Analytics plan' prerequisite, which is a genuinely useful gating condition. There is no explicit when-to-use versus the other analytics_* siblings and no statement of when-not-to-use, so an agent picking among four analytics tools still has to infer.

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

analytics_portfolioA
Read-only
Inspect

Cross-client portfolio: per-workspace (per-client) KPIs plus rolled-up totals — the agency view. Groups store rollups by each store's current workspace over every workspace you can view analytics in. Requires an agency (Enterprise) account with Advanced Analytics; other accounts get a feature_unavailable error. Read-only.

[#65a008]

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM-DD). Omit to default to today (UTC).
startNoStart date (YYYY-MM-DD). Omit to default to 30 days before end.
currencyNoReporting currency (e.g. "USD"). Currencies are segmented, never summed.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, and the description usefully adds account-tier prerequisites, the specific error returned for ineligible accounts, and the grouping rule (stores bucketed by current workspace across all viewable workspaces). That is real behavioral context beyond the annotation. It stops short of describing pagination, result size or refresh semantics.

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

Conciseness3/5

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

The body is dense and front-loaded with the core concept, which is good, but it ends with a stray artifact '[#65a008]' that carries no meaning for an agent and slightly undermines trust in the text. The middle sentence about store rollups is jargon-heavy relative to its value.

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

Completeness3/5

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

No output schema exists, so the description carries some burden for the return shape; it names 'per-workspace KPIs plus rolled-up totals' but not the concrete metric fields or result structure. Prerequisites and error behavior are covered, so the definition is adequate but incomplete for a 4-parameter analytics tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters including date defaults and currency segmentation. The description adds only the conceptual framing of 'per-workspace' grouping, which loosely motivates the workspace parameter but supplies no syntax or constraint the schema lacks. Baseline 3 applies.

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

Purpose4/5

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

States a specific resource (cross-client portfolio KPIs with rolled-up totals) and frames it as 'the agency view', which is a meaningful distinction. It does not, however, name the sibling analytics tools (analytics_summary, analytics_breakdown, analytics_timeseries) it must be chosen over, leaving that differentiation to inference.

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

Usage Guidelines3/5

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

It gives one strong usage gate — requires an agency (Enterprise) account with Advanced Analytics, otherwise a feature_unavailable error — but gives no explicit when-to-use comparison against the sibling analytics_* tools. The agent must infer that 'cross-client' means this tool is for agency rollups and not single-workspace queries.

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

analytics_summaryA
Read-only
Inspect

Headline order/merch KPIs for a date range (gross revenue, orders, units, AOV, COGS, gross profit, margin, cancel/refund/hold rates, fulfillment velocity) plus prior-period deltas. Defaults to the last 30 days. Requires an Advanced Analytics plan (Professional or Enterprise). Read-only.

[#6b72a2]

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM-DD). Omit to default to today (UTC).
startNoStart date (YYYY-MM-DD). Omit to default to 30 days before end.
storeNoStore uuid to narrow to one store. Omit for all accessible stores.
currencyNoReporting currency (e.g. "USD"). Currencies are segmented, never summed.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the read-only safety profile, and the description adds real context beyond them: the plan requirement (Advanced Analytics/Pro/Enterprise), the default 30-day window, and prior-period deltas. It does not state rate limits or the shape of the delta output, but the auth/access disclosure is genuinely valuable.

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

Conciseness4/5

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

Front-loaded with the resource and metric list, followed by defaults and plan requirement in efficient sentences. However, the trailing '[#6b72a2]' artifact is stray noise that slightly detracts from an otherwise tight, low-waste definition.

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

Completeness4/5

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

No output schema exists, but the description enumerates the returned KPIs, effectively documenting the response. Combined with the plan prerequisite and default window, an agent has what it needs to invoke correctly, with only minor gaps (no mention of breakdown/timeseries routing).

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

Parameters3/5

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

Schema coverage is 100%, so all five params (start, end, store, currency, workspace) are already fully documented in the schema. The description only restates the date-range default, adding no new syntax or semantics. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb+resource (headline order/merch KPIs for a date range) and enumerates the concrete metrics returned, so an agent knows exactly what it produces. It implicitly distinguishes itself from analytics_breakdown and analytics_timeseries via 'headline'/'summary', but never names those siblings, so the differentiation is left to inference.

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

Usage Guidelines3/5

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

Provides useful scoping context ('defaults to the last 30 days') and a plan prerequisite, but gives no explicit when-to-use guidance versus the analytics_breakdown, analytics_timeseries, or analytics_portfolio siblings. Usage is only implied by the word 'headline'.

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

analytics_timeseriesA
Read-only
Inspect

KPI trend series over a date range, bucketed by day, week, or month (zero-filled). Each bucket carries gross revenue, gross profit, COGS, order count, units, AOV, average margin, and margin coverage. Requires an Advanced Analytics plan. Read-only.

[#48246d]

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM-DD). Omit to default to today (UTC).
startNoStart date (YYYY-MM-DD). Omit to default to 30 days before end.
storeNoStore uuid to narrow to one store. Omit for all accessible stores.
currencyNoReporting currency (e.g. "USD"). Currencies are segmented, never summed.
intervalNoBucket granularity (default day).
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only and open-world, so the description adds value with the plan gate, the 'zero-filled' bucket behavior, and the enumeration of returned metrics. It does not disclose result-size or rate limits, but the extra behavioral context above the annotations is meaningful.

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

Conciseness4/5

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

Three front-loaded sentences that lead with the purpose and bucket granularity before the plan requirement and metrics list. The trailing '[#48246d]' token is stray noise that does not earn its place, keeping this from a 5.

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

Completeness4/5

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

With no output schema, enumerating the returned metrics per bucket is genuinely useful, and the plan prerequisite is captured. Date defaults and enum values live in the schema, so the description is essentially complete for a moderate-complexity read tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all six parameters including defaults and the interval enum. The description only restates the day/week/month bucketing and date-range concept, adding no format or nuance beyond the schema; baseline 3 applies.

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

Purpose4/5

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

States a specific resource and scope: a 'KPI trend series over a date range, bucketed by day/week/month'. This clearly separates it by shape from time-point siblings like analytics_summary or analytics_breakdown, though it never names those siblings explicitly to route the agent.

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

Usage Guidelines3/5

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

Usage is implied (reach for this when you need KPI trends bucketed over time) and one prerequisite is stated ('Requires an Advanced Analytics plan'), but there is no explicit guidance on when to choose this over analytics_summary, analytics_breakdown, or analytics_ops.

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

analyze_what_worksC
Read-only
Inspect

Surface insights from the merchant's own products + orders: best sellers, top channel, average order value. Read-only. Own-account signal (cross-merchant intelligence is a future feature).

[#f6f4f3]

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
workspaceNo
store_uuidNo
time_windowNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that this is an own-account signal and that cross-merchant intelligence is not yet available, but it does not describe return shape, pagination, auth requirements, or rate limits.

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

Conciseness4/5

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

The description is short and front-loaded, leading with the core purpose and metrics before adding scope caveats. The stray trailing '[#f6f4f3]' artifact is minor noise that keeps it from being a clean 5.

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

Completeness2/5

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

For a four-parameter analytics tool with no parameter descriptions and no output schema, the description is too thin. It conveys the high-level purpose but leaves scope, time window, workspace/store targeting, and return structure unexplained.

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

Parameters1/5

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

Schema description coverage is 0%, with four parameters including two enums, and the description does not explain scope, workspace, store_uuid, or time_window. It names example metrics but does not map them to any parameter or clarify valid values beyond what the bare schema already lists.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Surface insights from the merchant's own products + orders', with concrete examples like best sellers, top channel, and average order value. It also clarifies own-account scope versus future cross-merchant intelligence, though it does not explicitly differentiate from the many analytics_* siblings.

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

Usage Guidelines2/5

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

The description implies an analytics use case but does not state when to use this tool instead of alternatives such as analytics_summary, analytics_breakdown, channel_performance, or analytics_ops. It notes own-account scope and read-only behavior, but offers no explicit when/when-not guidance.

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

api_requestAInspect

Escape hatch: make an authenticated request to any ApparelHub agent API endpoint under /agents/v1, as the connected account. PREFER a dedicated tool when one exists (they return clean, guarded results) — use this only for capabilities no tool covers. Call get_api_reference first to find the right path. path is relative (e.g. "orders", "store//settings"); no full URLs. Scoped to the account's own permissions.

[#d82569]

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON request body (for POST/PUT/PATCH).
pathYesRelative path under /agents/v1, e.g. "orders" or "product/<uuid>/archive". No host, no "..".
queryNoQuery-string parameters.
methodYesHTTP method.
workspaceNoWorkspace uuid to scope to (agency accounts).

TDQS

A4.3/5.0
Behavior4/5

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

Only openWorldHint is annotated, so the description carries the burden and does deliver useful behavior context: it runs as the connected account, is scoped to the account's own permissions, and the parenthetical that dedicated tools return "clean, guarded results" implies this raw path is unguarded. It still omits that DELETE/mutating calls are possible and says nothing about rate limits or failure modes.

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

Conciseness4/5

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

Front-loads the "Escape hatch" framing and keeps the guidance to a few tight sentences with an inline path example. The stray marker "[#d82569]" at the end is noise that earns no place.

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

Completeness4/5

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

For an open-ended, open-world tool with no output schema, the definition covers the essentials: scope, path format, prerequisite lookup, and routing to dedicated tools. It leaves return/error shape and destructive-call behavior to inference, which is a real but acceptable gap given the escape-hatch framing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents method, path, body, query and workspace; baseline is 3. The description adds only the relative-path constraint and one example, which mildly extends beyond the schema but doesn't clarify body/query/workspace semantics.

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

Purpose5/5

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

States a specific verb+resource ("make an authenticated request to any ApparelHub agent API endpoint under /agents/v1") and explicitly frames itself as an escape hatch relative to the ~100 dedicated sibling tools. An agent can immediately tell this apart from accept_invite, create_product, etc.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ("only for capabilities no tool covers"), when-not ("PREFER a dedicated tool when one exists"), plus a prerequisite ordering instruction ("Call get_api_reference first to find the right path"). This is about as complete as usage guidance gets.

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

approve_orderA
Idempotent
Inspect

Approve an order that is awaiting approval, releasing it for fulfillment. For sales-channel (webhook) orders this also auto-submits the order to the fulfillment provider (Printful/Printify). Use when an order is held for review and the user wants to let it proceed.

[#9b6ea5]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for Default.
order_uuidYesThe order uuid (from list_my_orders / get_order_details).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare openWorldHint and idempotentHint, but the description adds a genuinely important side effect not captured there: sales-channel/webhook orders are auto-submitted to Printful/Printify. That external action changes the agent's risk calculus and is exactly the kind of disclosure expected beyond annotations.

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

Conciseness3/5

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

The core content is two well-ordered sentences with the side effect front-loaded appropriately. However, the trailing '[#9b6ea5]' token is inexplicable noise that appears to be a template artifact and should not be in a tool description.

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

Completeness4/5

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

For a two-parameter mutation with no output schema, the description covers purpose, trigger condition, and the non-obvious fulfillment side effect. Missing are any mention of failure modes or what the response indicates, which would be minor additions.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, including the workspace-scoping note and the order_uuid provenance, so the schema already carries the semantics. The description adds nothing about parameter formats or constraints, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Approve an order that is awaiting approval') plus the downstream effect ('releasing it for fulfillment'). It differentiates itself from the nearby submit_order_to_fulfillment by explaining that fulfillment submission happens automatically for webhook orders, though it never names that sibling explicitly.

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

Usage Guidelines4/5

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

'Use when an order is held for review and the user wants to let it proceed' gives a clear triggering condition. It stops short of naming alternatives (e.g. unapprove_order, approve_order_hold) or stating when-not to use it, so it is context without routing.

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

approve_order_holdA
Idempotent
Inspect

Approve a design-approval hold on an order so the provider can proceed. If the provider can't flip the hold via its API (Printful today), the result is deferred with a dashboard_url to finish the approval manually — the hold stays active until the provider's release fires. Get the hold_uuid from list_order_holds.

[#7b5295]

ParametersJSON Schema
NameRequiredDescriptionDefault
hold_uuidYesThe hold uuid (from list_order_holds).
workspaceNoWorkspace uuid (agency accounts).
order_uuidYesThe order uuid the hold belongs to.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only cover idempotency and open-world scope, so the description carries most of the behavioral burden. It discloses a genuinely non-obvious trait: when the provider's API cannot flip the hold (Printful today), the call is deferred and returns a dashboard_url, with the hold remaining active until the provider's release fires. Minor gap: no statement about required permissions.

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

Conciseness4/5

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

Two front-loaded sentences that lead with the action and then the fallback behavior; no filler. The trailing '[#7b5295]' artifact is stray noise that slightly detracts from otherwise tight prose.

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

Completeness4/5

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

With no output schema, the description correctly compensates by explaining the deferred-result shape (dashboard_url) an agent should expect. For a 3-param mutation tool this covers what's needed, though the absence of any permission or failure-mode guidance leaves a small gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (hold_uuid, order_uuid, workspace) are already documented in the schema. The description's note that hold_uuid comes from list_order_holds restates what the schema already says, adding no new semantics — baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Approve a design-approval hold on an order') plus the downstream effect ('so the provider can proceed'). This cleanly separates it from sibling tools like approve_order, hold_order, and request_hold_changes.

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

Usage Guidelines3/5

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

It tells the agent where to source the identifier ('Get the hold_uuid from list_order_holds'), which is a useful routing hint. However, it never states when to prefer this over approve_order or unapprove_order, nor any preconditions; usage is implied rather than spelled out.

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

archive_designA
Idempotent
Inspect

Archive a design so it stops showing in the default gallery listing. Reversible with restore_design, and safe: it never touches products that already use the design. This is the right way to retire an unwanted or orphan design. Prefer it over delete_design unless the design must be removed permanently. Find orphan designs first with list_my_designs(on_products=false).

[#16a475]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid (agency accounts).
design_uuidYesThe design uuid to archive.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only provide openWorldHint and idempotentHint, so the description carries the important behavioral burden and does so well: it discloses reversibility ('Reversible with restore_design') and non-destructiveness toward dependent products ('never touches products that already use the design'). It does not mention auth/permission requirements or whether the archived design's data is retained elsewhere, leaving a small gap.

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

Conciseness4/5

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

Front-loaded with the core action and scope, then progressively adds reversibility, safety, and sibling routing; every sentence earns its place. Slightly marred by the stray '[#16a475]' token trailing the text, which adds noise.

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

Completeness5/5

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

For a reversible mutation with no output schema, the description covers what changes, how to undo it, what it does not affect, and how to choose it over siblings. 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.

Parameters3/5

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, and the description adds no format or syntax detail beyond naming the operation. It does hint at the list_my_designs filter semantics, but that is for a sibling tool. 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.

Purpose5/5

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

States a specific verb and resource ('Archive a design') plus the resulting scope effect ('stops showing in the default gallery listing'), which distinguishes it from restore_design and delete_design named in the same text. An agent can identify the operation without opening the schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it ('the right way to retire an unwanted or orphan design'), when to prefer alternatives ('Prefer it over delete_design unless the design must be removed permanently'), and how to find targets ('Find orphan designs first with list_my_designs(on_products=false)'). Routing is fully specified.

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

archive_productA
Idempotent
Inspect

Archive a product: unsync it from every connected sales channel and its fulfillment provider, then hide it. Fails (returns blocking_orders) if any pending order still references its variants — cancel or fulfill those first. Restore it later with restore_product. Use archive rather than delete_product when a product has order history.

[#4b1462]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
product_uuidYesThe product uuid to archive.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare openWorldHint and idempotentHint, so the description carries the behavioral load and does so well: it discloses the cross-system effects (channel + fulfillment unsync, hide) and a specific failure mode with a named error payload ('returns blocking_orders'). Nothing here contradicts the annotations; the cross-channel reach is consistent with openWorldHint=true.

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

Conciseness4/5

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

Three front-loaded sentences, each earning its place: effect, failure mode with remedy, then the alternative/restore pointer. The stray artifact token '[#4b1462]' at the end is unexplained noise that slightly blemishes an otherwise tight structure.

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

Completeness5/5

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

No output schema exists, yet the description covers the one return signal that matters (blocking_orders on failure) plus reversibility via restore_product. For a 2-param, non-nested mutation 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.

Parameters3/5

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

Schema description coverage is 100% for both parameters (workspace and product_uuid are fully documented in the schema), so the description is not required to explain them. It adds no parameter-specific detail, which is the correct baseline when the schema already does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Archive a product') and expands into concrete side effects: unsync from every sales channel and fulfillment provider, then hide. It explicitly distinguishes itself from the sibling delete_product and points to restore_product, so the agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit selection rule ('Use archive rather than delete_product when a product has order history'), names the restore counterpart, and states the precondition for failure (pending orders on its variants) plus the remedy. When-to-use and a real alternative are both present.

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

archive_storeA
Idempotent
Inspect

Archive a store (use instead of delete for stores with order history — order records are kept for accounting, but the store is hidden from the default listing and stops ingesting new orders). Restore it later with unarchive_store. Set disconnect_provider=true to also disconnect every connected fulfillment provider and remove its stored credentials.

[#b85c96]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidYesThe store uuid to archive.
disconnect_providerNoAlso disconnect connected fulfillment providers and remove their credentials (default false).

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply openWorldHint and idempotentHint. The description adds the substantive behavioral facts annotations omit: order records are preserved for accounting, the store is hidden from the default listing, new orders stop ingesting, and the disconnect_provider flag removes fulfillment credentials. This is exactly the side-effect disclosure an agent needs.

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

Conciseness4/5

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

The scoping rule and reversibility are front-loaded in dense, efficient sentences with no redundancy. The trailing '[#b85c96]' artifact is stray noise that slightly mars otherwise tight structure.

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

Completeness4/5

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

For a reversible mutation with no output schema, the description covers when-to-use, reversibility, and flag side effects well. It omits permission/agency-scoping requirements implied by the workspace parameter, and whether the credential removal from disconnect_provider is itself irreversible.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented. The description restates disconnect_provider with slightly more emphasis ('every connected fulfillment provider') but adds no syntax or value details beyond the schema. Baseline 3 applies when the schema carries the load.

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

Purpose5/5

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

States a specific verb (archive) and resource (store), and immediately differentiates itself from delete by scoping archive to 'stores with order history'. An agent can distinguish archive_store from archive_product/archive_design and from delete_workspace without opening schemas.

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

Usage Guidelines5/5

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

'use instead of delete for stores with order history' gives an explicit selection rule and implies the complementary case (no order history -> delete). It also names the reverse tool unarchive_store, so the agent knows the recovery path. Nothing is left to inference.

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

assign_workspace_memberA
Idempotent
Inspect

Assign an account member to a workspace with a role, or update their existing role (agency / Enterprise). The target must already be a member of the account (invite_member first). Needs an account-wide key.

[#5ec6df]

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesWorkspace role: director (full control), creator (design/build), merchandiser (price/publish), operator (post-sale), viewer (read-only).
user_public_idYesThe member's user public_id (from list_account_members).
workspace_uuidYesWorkspace uuid (from list_my_workspaces).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only state openWorldHint and idempotentHint; the description adds real value by disclosing the account-wide key requirement and the precondition that the user must already be an account member. It does not mention whether role changes are reversible or notifiable, but it goes meaningfully 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.

Conciseness4/5

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

Two tight sentences, front-loading the action and the create-or-update duality, with prerequisites last. The stray '[#5ec6df]' artifact is formatting noise but costs little.

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

Completeness4/5

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

For a 3-parameter mutation with no output schema, the description covers the action, prerequisite chain, and auth requirement. An agent has what it needs to call it correctly; only error/failure behavior is left unspecified.

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

Parameters3/5

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

Schema coverage is 100% and the role enum is fully documented with per-role meanings in the schema itself, so the description adds nothing beyond 'with a role'. Baseline 3 is appropriate when the schema carries parameter semantics.

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

Purpose4/5

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

States a specific verb (assign/update role) and resource (account member ↔ workspace), and covers both the create and update cases in one line. Distinguishable from unassign_workspace_member by the outcome, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

Gives a clear prerequisite (target must already be an account member; run invite_member first) and an authorization requirement (account-wide key). It does not name when NOT to use it or point at list_account_members/get_role_matrix for discovering valid inputs, so it stops just short of explicit routing.

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

auto_optimize_listingsAInspect

Propose (and, with dry_run=false, apply) optimizations across listings. Uses the sales channel's own demand data, so a listing that people SEE but do not buy is flagged for a listing fix rather than archived — that listing is proven demand with broken conversion, and archiving it destroys the best opportunity in the catalogue. Only a listing the channel reports as genuinely inert is ever archived. Where no demand data is available the proposal is "review" and NOTHING is applied. DEFAULTS TO DRY-RUN; applying only ever archives (never deletes, never goes live).

[#170c11]

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
dry_runNoDefault true — preview only.
workspaceNo
store_uuidNo

TDQS

A3.9/5.0
Behavior5/5

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

With only openWorldHint declared, the description carries the full disclosure burden and does so richly: it states DEFAULTS TO DRY-RUN, that applying only ever archives (never deletes, never goes live), that archiving is restricted to genuinely inert listings, and that with no demand data the proposal is 'review' and nothing is applied. This is exactly the safety framing an agent needs for a potentially destructive mutation.

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

Conciseness4/5

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

The safety-critical constraints are front-loaded and the prose is dense with useful content rather than filler. It loses a point for the trailing stray artifact '[#170c11]', which is noise with no informational value.

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

Completeness4/5

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

With no output schema and only openWorldHint annotation, the description supplies the mutation semantics, default mode, and fallback behaviour an agent needs. The main remaining gap is the meaning of the scope enum values, which matters for selecting rather than merely invoking the tool.

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

Parameters3/5

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

Schema coverage is only 25%, and the description compensates well for dry_run (confirming the default and what happens when false) but not for the scope enum values (underperformers/out_of_date/all) or for workspace/store_uuid, which are undocumented in both schema and prose. Genuine added value on one parameter against clear gaps on the others.

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

Purpose4/5

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

The description names a specific verb (propose/apply) and resource (optimizations across listings), and implicitly distinguishes itself from sibling archive tools by explaining that a seen-but-unbought listing is fixed rather than archived. It is clear what the tool does, though it never explicitly contrasts itself against near neighbors like listing_changes or diagnose_tiktok_listings.

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

Usage Guidelines3/5

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

Usage context is implied rather than stated: the tool operates 'across listings' with a scope enum, and dry-run is the default. There is no explicit when-to-use/when-not guidance relative to siblings such as archive_product, sync_to_channel, or listing_changes, so an agent must infer routing from the behavioural prose.

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

browse_catalogA
Read-only
Inspect

Browse ONE fulfillment provider's catalog for garments to print on. category is resolved against THAT provider's own taxonomy (providers use different vocabularies for the same idea) and an unknown category is rejected with the valid list rather than quietly returning everything. keyword matches product names across the whole catalog. ALWAYS read warnings in the response: they tell you when your results are narrower than you asked for -- e.g. a category that only exists inside one department. Each garment carries decoration_method / accepts_photoreal (accepts_photoreal absent means the provider publishes no signal -- unchecked, NOT unsuitable). This searches a SINGLE provider: to ask what the whole account can do, or before concluding a garment cannot take a design, use find_garments. Read-only.

[#5e449d]

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
has_aopNoFilter to all-over-print garments. All-over print is the weakest part of the decoration signal (not every provider declares the technique, so some are recognised by name) and this searches ONE provider — use find_garments before concluding no provider carries it. Read the response warnings.
keywordNo
categoryNoe.g. "t-shirts", "hoodies", "mugs".
per_pageNo
providerYesThe fulfillment provider to browse, by name (case-insensitive). Must be a provider this account has access to — call list_catalog_providers to see valid values (the set is account-specific). An unrecognized name returns the list of providers available to the account.
workspaceNo

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint annotation: unknown categories are rejected with the valid list rather than silently returning everything; the `warnings` array signals narrower-than-requested results; and `accepts_photoreal` absence means 'no published signal', NOT 'unsuitable'. These are non-obvious behaviors an agent needs.

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

Conciseness4/5

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

Front-loaded with the core purpose and scoping, and each clause carries information. Minor redundancy: find_garments is invoked twice and the warnings caveat is restated, plus a stray '[#5e449d]' artifact at the end.

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

Completeness4/5

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

With no output schema, the description usefully explains the response's `warnings`, `decoration_method`, and `accepts_photoreal` fields. Pagination semantics and the `workspace` parameter remain unexplained, a small residual gap for a 7-parameter tool.

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

Parameters4/5

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

Schema coverage is only 43%, so the description carries weight: it explains `category` resolution against the provider's own taxonomy with rejection on unknown values, `keyword` matching across the whole catalog, and how to obtain valid `provider` values. Only `page`, `per_page`, and `workspace` are left uninterpreted, which are largely self-evident.

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

Purpose5/5

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

States a specific verb (browse), resource (catalog), and scope (ONE fulfillment provider, garments to print on). It explicitly distinguishes itself from sibling find_garments, which covers a different scope (whole account).

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

Usage Guidelines5/5

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

Explicitly names the alternative and the condition that selects it: 'This searches a SINGLE provider: to ask what the whole account can do, or before concluding a garment cannot take a design, use find_garments.' It also routes to list_catalog_providers for valid provider values.

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

cancel_orderA
Destructive
Inspect

Cancel an order. Cancels it locally and, where possible, cancels the draft/order at the fulfillment provider (Printful/Printify). This does NOT refund the customer on the sales channel — the channel is the source of payment. Destructive: only cancel when the user explicitly asks.

[#9e800b]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for Default.
order_uuidYesThe order uuid (from list_my_orders / get_order_details).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is known. The description still adds material context beyond that: the cancellation is local plus best-effort at Printful/Printify, and crucially that it does NOT refund on the sales channel. That refund caveat is exactly the kind of side-effect disclosure an agent needs.

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

Conciseness4/5

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

Front-loaded with the action, followed by the two consequential caveats (provider cancellation, no refund) and the usage guardrail. Efficient overall, but the trailing '[#9e800b]' artifact is stray noise that does not belong in the text.

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

Completeness4/5

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

With no output schema, the description must carry behavioral weight, and it does: it explains what is destroyed (the local order and the provider-side draft/order) and what is explicitly not done (no refund). For a destructive mutation tool this is nearly complete; only the return shape is unaddressed, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (workspace, order_uuid) are already documented in the schema. The description adds no syntax or format detail beyond the schema, so the baseline of 3 for a schema-covered tool is appropriate.

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

Purpose5/5

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

States a specific verb and resource (cancel an order) and immediately scopes what is actually cancelled: locally plus best-effort at the fulfillment provider. This clearly differentiates it from adjacent siblings such as hold_order, approve_order, unapprove_order, or reconcile_order.

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

Usage Guidelines4/5

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

Gives an explicit guardrail -- 'only cancel when the user explicitly asks' -- which is real when-to-use guidance. It does not, however, name a non-destructive alternative (e.g., hold_order) an agent should prefer when cancellation is not explicitly requested.

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

cascade_price_changeAInspect

Change a product price once and propagate it: the platform cascades to all variants, and (when store_uuid is given) this re-syncs each connected channel so the price is consistent everywhere. Avoids the "changed on one channel, forgot the others" footgun.

[#b8aca8]

ParametersJSON Schema
NameRequiredDescriptionDefault
new_priceYes
workspaceNo
store_uuidNoRequired to re-sync channels.
product_uuidYes
also_update_channelsNoDefault true.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations provide only openWorldHint=true, so the description carries most of the behavioral burden. It does disclose a real side effect beyond the annotations — propagation to all variants and re-sync of every connected channel — but says nothing about reversibility, permissions, failure handling, or partial-success behavior on channels.

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

Conciseness4/5

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

Two tightly written sentences with the operation and its propagation consequence front-loaded. The trailing '[#b8aca8]' token is stray noise that slightly degrades the structure but does not obscure meaning.

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

Completeness4/5

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

For a 5-parameter mutation with no output schema and minimal annotations, the description conveys the essential behavior (variant cascade + conditional channel re-sync). Gaps remain around the workspace parameter and what happens if a channel re-sync fails, but the core calling context is present.

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

Parameters3/5

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

Schema coverage is 40%, so the description should compensate more than it does. It usefully ties store_uuid to channel re-sync and confirms the cascade semantics of new_price, but leaves 'workspace' undocumented and does not explain the interaction between store_uuid and also_update_channels.

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

Purpose4/5

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

The description states a concrete verb+resource ('Change a product price') and immediately scopes it ('cascades to all variants', re-syncs connected channels). This implicitly separates it from generic siblings like update_product or set_prices_by_margin, but no sibling is named, 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.

Usage Guidelines3/5

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

Usage is implied rather than stated: the 'changed on one channel, forgot the others' framing tells the agent this is the tool for keeping prices consistent across channels, and the parenthetical gives the store_uuid condition. There is no explicit when-not guidance and no named alternatives (e.g. set_prices_by_margin, sync_to_channel).

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

channel_coverageA
Read-only
Inspect

Which of your connected sales channels report performance data, and which metrics each one supplies. Check this before concluding a listing has no traffic: a channel that reports nothing looks identical to a channel reporting zeros unless you look here. Also flags shops that must be RECONNECTED before performance data can flow. Read-only.

[#df2820]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so 'Read-only' is redundant, but the description adds real behavioral context: that unreporting channels are indistinguishable from zero-traffic ones, and that shops needing reconnection are flagged. These interpretation caveats go beyond what annotations convey.

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

Conciseness4/5

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

Three sentences, front-loaded with the core purpose and followed by the key interpretive warning. The trailing 'Read-only' is redundant with annotations and the '[#df2820]' artifact is noise, but overall it is tight and well-ordered.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does explain conceptually what comes back (reporting channels, metrics, reconnection flags). For a zero-required-parameter diagnostic tool this is largely complete, though coverage of metric naming/format is absent.

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

Parameters3/5

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

Only one parameter (workspace) with 100% schema description coverage, so the schema fully documents it. The description adds no syntax or scoping detail about the workspace argument, making baseline 3 appropriate.

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

Purpose4/5

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

States a specific resource and scope: which connected sales channels report performance data and which metrics each supplies. This is clearly distinct from performance-reading siblings like channel_performance, though no sibling is named explicitly. An agent can grasp the tool's role without opening the schema.

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

Usage Guidelines4/5

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

Gives an explicit when-to-use trigger: 'Check this before concluding a listing has no traffic,' which is a concrete precondition. It does not name a competing alternative tool or state when not to use it, so it falls 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.

channel_opportunitiesA
Read-only
Inspect

The listings wasting the most demand: proven traffic, broken conversion, ranked by how many people saw them and did not buy. This is the natural starting point for an optimisation pass — fix these before touching anything else, because the demand is already there and only the listing is in the way. Also returns per-state counts and, separately, the listings that are genuinely inert (state "dead") and therefore safe to archive. Nothing else is safe to archive. READ shop BEFORE acting on anything else here. If the shop as a whole is getting almost no views, safe_to_archive will be empty and top_opportunities will be thin — not because the listings are fine, but because nothing has been seen enough to judge. That is a distribution problem and no listing edit will move it. Read-only.

[#7c8c30]

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM-DD), channel-local. Defaults to yesterday.
startNoStart date (YYYY-MM-DD), in the sales channel's own local dates. Defaults to 28 days back.
storeNoNarrow to one store uuid.
providerNoNarrow to one sales channel, by name.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover readOnlyHint, and the description reinforces it with 'Read-only.' Beyond that it discloses return shape (per-state counts, safe_to_archive, top_opportunities), the archive-safety guarantee ('Nothing else is safe to archive'), and a meaningful edge case where empty results signal a distribution problem rather than healthy listings.

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

Conciseness4/5

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

Front-loaded with the core definition, then usage, then edge cases — a sensible ordering. Every sentence carries information, but the paragraph is long and contains a stray artifact ('[#7c8c30]') that adds noise.

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

Completeness5/5

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

With no output schema, the description carries the full burden of explaining returns, and it delivers (categorical outputs, per-state counts, archive list). It also covers the interpretation caveat an agent needs to avoid misreading thin results. Nothing essential is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (start, end, store, provider, workspace) are already fully documented in the schema. The description adds no format or default details 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.

Purpose5/5

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

States a specific resource and its defining characteristic up front — listings with proven traffic but broken conversion, ranked by viewers-who-didn't-buy. An agent can immediately distinguish it from analytics_summary or channel_performance siblings. The phrasing is slightly metaphorical but is clarified in the same sentence.

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

Usage Guidelines5/5

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

Explicitly positions it as 'the natural starting point for an optimisation pass' and instructs to fix these before anything else. It also sequences a prerequisite ('READ `shop` BEFORE acting') and explains when the output is misleading (low shop views). Rare, high-value when-to-use guidance.

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

channel_performanceA
Read-only
Inspect

What the sales channel reports about each of your listings: impressions, clicks, click-through rate and units sold, plus a state telling you what to do about it. Use this to find listings people SEE but do not BUY — the order-based analytics tools cannot show you those, because to them a listing with 5,000 views and no sales looks identical to one nobody has ever seen. States: winner (scale it), conversion_blocked (lots of views, few clicks — the listing card is losing them), pdp_blocked (they click but do not buy — the product page is losing them), starved (too few views to judge; needs discovery, NOT a rewrite), dead (no activity at all; the only state safe to archive), no_channel_data (synced to the channel, but the channel has never reported it — usually means it is not actually live; check the listing before anything else), insufficient_data (not enough signal, or this channel does not report it). READ summary.shop FIRST. If it says no_channel_traffic, the whole shop is barely being served and no per-listing state means anything yet — the problem is distribution, and editing titles or images cannot fix a listing nobody is shown. Each row says which channel and store it came from — always check that before comparing two rows, since a channel product id is only unique within its own channel. ALWAYS check the coverage block before treating a missing metric as zero. Read-only.

[#73dd2d]

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date (YYYY-MM-DD), channel-local. Defaults to yesterday.
limitNoCap listings returned.
startNoStart date (YYYY-MM-DD), in the sales channel's own local dates. Defaults to 28 days back.
stateNoFilter to one state, e.g. "conversion_blocked" to list only proven-demand listings that are failing to convert.
storeNoOnly listings from this store uuid.
providerNoOnly listings from this sales channel, by name (e.g. "TikTok Shop"). Case-insensitive. channels_present lists the channels that actually have data.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover readOnlyHint/openWorldHint, but the description adds substantial behavioral context: the full state taxonomy and what each implies, the summary.shop no_channel_traffic guardrail (the problem is distribution, not titles/images), the warning that channel product ids are only unique within their own channel, and the caution about interpreting missing metrics. This is well beyond annotation coverage.

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

Conciseness4/5

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

Front-loads purpose, then the differentiating use case, then the state legend and guardrails. Every section is load-bearing, though the density and length (especially the inline state enumeration) is on the heavy side for a listing metrics tool.

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

Completeness5/5

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

With no output schema, the description compensates by explaining the state field's meaning, the summary.shop and coverage blocks, and the channel/store provenance of rows. An agent has enough to call the tool and interpret results correctly without further documentation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds real interpretive value on top: it explains that each row carries its channel and store and that these must be checked before comparing rows (because channel product ids are channel-scoped), which clarifies the provider/store filter semantics beyond their schema descriptions.

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

Purpose5/5

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

Opens with a specific verb+resource: 'What the sales channel reports about each of your listings: impressions, clicks, click-through rate and units sold, plus a state.' It also explicitly distinguishes itself from the order-based analytics siblings by explaining that those cannot show see-but-don't-buy listings, so an agent can route without opening a schema.

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

Usage Guidelines5/5

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

Gives concrete when-to-use ('find listings people SEE but do not BUY'), when-not (order-based tools cannot show this), and sequencing rules ('READ `summary.shop` FIRST', 'ALWAYS check the coverage block before treating a missing metric as zero'). The state definitions double as action guidance (winner=scale, starved=needs discovery NOT a rewrite, dead=only state safe to archive).

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

check_connection_statusA
Read-only
Inspect

Poll whether a dispatched connection has completed. Call this repeatedly after start_channel_connect while the user authorizes in their browser, and announce the result when it lands: they cannot see this conversation from the tab they authorized in, so if you do not tell them, nobody does. Read-only, makes no provider call, and is safe to poll every few seconds. connected true means say so and continue setup. connected false means keep waiting. needs_reconnect means retrying will never work and you must dispatch a fresh link with start_channel_connect.

[#807361]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid the store lives in (agency accounts) — use the store's workspace.uuid from list_my_stores. Omit only for single-workspace accounts; omitting it on a multi-workspace account targets the Default workspace and the call will fail to find a store that lives elsewhere.
store_uuidNoNarrow the answer to one store. Omit to get the whole account.
provider_uuidNoThe provider you are waiting for — pass the same provider_uuid you gave start_channel_connect. REQUIRED in practice when waiting on a sales channel (Shopify, TikTok Shop): without it this answers only about fulfillment and will report false however long you poll. It also prevents a false positive, where an unrelated existing connection makes this look successful.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover only readOnlyHint and openWorldHint; the description adds material behavior beyond them: it makes no provider call, is safe to poll every few seconds (rate-limit guidance), and defines a three-state result contract including the failure mode where retrying never helps. That is exactly the context an agent needs to drive a polling loop.

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

Conciseness5/5

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

Front-loads the core action in the first clause, then supplies the polling loop, the user-notification rationale, safety, and the result-state handling in tight sentences. Despite its length, every sentence carries an instruction an agent would otherwise have to guess.

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

Completeness5/5

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

There is no output schema, and the description compensates by enumerating the return states (connected true/false, needs_reconnect) and the correct follow-up for each. Combined with the annotations' safety profile, nothing needed to invoke and act on this tool is missing.

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

Parameters3/5

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

Schema description coverage is 100% and each of the three parameters is already fully documented there, including the provider_uuid warning about false negatives and false positives. The description restates the same guidance ('pass the same provider_uuid you gave start_channel_connect') without adding syntax or constraints beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('poll whether a dispatched connection has completed') and ties it directly to the sibling it follows, start_channel_connect. An agent can distinguish this polling tool from connect_sales_channel or check_setup_readiness without opening any schema.

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

Usage Guidelines5/5

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

Explicitly says when to call (repeatedly after start_channel_connect while the user authorizes in the browser), why (the user can't see this conversation), and how to react to each outcome: connected true, connected false, and needs_reconnect with the mandated alternative action. No ambiguity remains.

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

check_design_complianceA
Read-only
Inspect

Advisory pre-flight for IP / trademark / prohibited-content risk. Scans the prompt/name and any detected text against common protected marks. NOT legal advice, and NOT an image-content trademark check.

[#fba5cb]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe intended product name (scanned).
promptNoThe prompt that produced the design (scanned for risk terms).
image_urlNo
workspaceNo
design_uuidNo
target_channelsNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds genuine non-obvious context: the check is advisory rather than blocking, it surfaces detected text only, and it carries no legal weight.

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

Conciseness4/5

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

Three short, front-loaded sentences with no filler, and the disclaimers are placed where they matter. The stray trailing markup token "[#fba5cb]" is leftover artifact noise that should not be in a definition.

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

Completeness3/5

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

With six parameters, a third of them described, and no output schema, the description leaves the agent guessing at the rest of the inputs and at what the check returns (pass/fail, risk flags, severity). Scope and limits are clear; invocation details are not.

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

Parameters2/5

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

Schema coverage is only 33%, and the two documented parameters (name, prompt) are exactly the ones the description repeats. The undocumented parameters — image_url, workspace, design_uuid, and especially target_channels, which likely selects which prohibited-content rules apply — remain unexplained in both places.

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

Purpose4/5

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

States a specific verb and resource: an advisory pre-flight scan of prompt/name/detected text for IP, trademark, and prohibited-content risk. It is distinguishable from nearby design-verification siblings through its stated scope (protected marks, prohibited content), though it never names those siblings explicitly.

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

Usage Guidelines4/5

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

"Advisory pre-flight" implies the usage moment (before shipping/publishing a design), and the description gives two explicit exclusions: not legal advice and not an image-content trademark check. It stops short of naming the alternative tools an agent should reach for instead.

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

check_design_moveA
Read-only
Inspect

Dry run: report whether a generated design can be MOVED to another workspace, without changing anything. Returns {eligible, blockers} — a non-empty blockers list (a product using the design is in use, or forbidden_source/destination) means move would fail, so copy instead. Read-only.

[#1e988c]

ParametersJSON Schema
NameRequiredDescriptionDefault
design_uuidYesThe design to check.
source_workspaceNoThe design's current workspace uuid; omit only if it is in your Default workspace.
destination_workspaceYesDestination workspace uuid (from list_my_workspaces).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, but the description adds real value beyond them: it defines the return shape ({eligible, blockers}) and enumerates concrete blocker causes (product in use, forbidden source/destination), which is exactly the behavioral context an agent needs to interpret results. It stops short of permissions/rate-limit detail.

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

Conciseness4/5

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

Front-loads the key concept ('Dry run') and packs return-shape and failure semantics into two tight sentences. The trailing '[#1e988c]' artifact is stray noise that detracts slightly from otherwise clean structure.

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

Completeness4/5

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

For a read-only check tool with no output schema, the description supplies the return shape and blocker meaning that the agent needs. With annotations covering the safety profile and a fully-described schema, the definition is sufficient, though it could explicitly link to move_design_to_workspace as the follow-up action.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are documented in the schema itself, including the optional source_workspace caveat. The description adds no parameter-specific meaning, 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.

Purpose5/5

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

States a specific verb, resource, and scope: a dry-run report of whether a design can be moved to another workspace. It is immediately distinguishable from siblings like move_design_to_workspace (the actual mutation) and copy_design_to_workspace (the fallback), so an agent can route without opening the schema.

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

Usage Guidelines4/5

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

Clearly frames this as a pre-flight check ('Dry run... without changing anything') and tells the agent what to do on failure ('so copy instead'). It does not explicitly name the sibling tools to run before/after, so a small inference remains, but the when-to-use context is strong.

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

check_fulfillment_issueA
Read-only
Inspect

Fetch one fulfillment issue in full (affected items, evidence attachments, provider claim tracking, resolution) and, by default, the provider-ready problem report: a copy-paste summary_text plus the provider dashboard deep-link where the report must be filed (Printful/Printify accept problem reports only in their own dashboards). Read-only.

[#2f6bdb]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
issue_uuidYesThe issue uuid (from list_fulfillment_issues).
include_reportNoAlso build the provider-ready problem report (default true).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the redundant 'Read-only' adds nothing, but the description adds real behavioral context: the report is returned by default (include_report defaults true) and the tool only prepares a copy-paste summary_text plus a deep-link because providers require filing in their own dashboards. That tells the agent the tool does not actually file the claim.

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

Conciseness3/5

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

The main action is front-loaded and the content is dense and information-rich, but it is delivered as one sprawling compound sentence with heavy parentheticals. The trailing '[#2f6bdb]' fragment is an unexplained artifact that earns no place and slightly degrades the definition.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns and does so well by enumerating the issue contents and the shape of the report (summary_text plus deep-link). It is essentially complete for calling the tool; only explicit routing guidance versus sibling issue tools is missing.

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

Parameters4/5

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

Schema coverage is 100%, so issue_uuid and workspace semantics are already covered and the baseline is 3. The description adds meaning beyond the schema by explaining what include_report actually produces (a summary_text and a provider dashboard deep-link), which clarifies the consequence of the parameter rather than just restating it.

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

Purpose5/5

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

States a specific verb (fetch) and resource (one fulfillment issue), then enumerates exactly what 'in full' contains: affected items, evidence attachments, provider claim tracking, resolution, plus the optional provider-ready report. The singular 'one' plus the 'in full' framing cleanly separates it from the sibling list_fulfillment_issues.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: an agent can infer this is the detail view after list_fulfillment_issues, and the note that Printful/Printify accept problem reports only in their own dashboards explains the report's purpose. But there is no explicit when-to-use or when-to-avoid guidance relative to siblings like list_fulfillment_issues, report_fulfillment_issue, or resolve_fulfillment_issue.

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

check_order_statusA
Idempotent
Inspect

Poll the fulfillment provider for the latest status of an order and update it locally (including any design-approval holds). Read-mostly refresh — safe to call repeatedly. Use to see whether an order has shipped or is on hold at the provider.

[#81b1a2]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for Default.
order_uuidYesThe order uuid (from list_my_orders / get_order_details).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare openWorldHint and idempotentHint. The description adds genuinely useful context beyond them: it is 'read-mostly' rather than a pure read (it writes local state, including design-approval holds), that it hits an external provider, and that it is safe to call repeatedly. It stops short of stating required permissions or failure behavior.

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

Conciseness4/5

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

Two tight sentences with the core action front-loaded and the usage hint following. No filler text. The trailing '[#81b1a2]' artifact is noise but does not affect comprehension.

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

Completeness4/5

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

No output schema exists, so the description carries some return burden; it tells the agent it yields shipping/hold status, which is adequate. Combined with annotations covering external-call and idempotency behavior, an agent has what it needs to call this correctly, though exact status vocabulary is unspecified.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (order_uuid, workspace) are already fully documented in the schema. The description adds no parameter-level syntax or format detail beyond implied order scope, so the baseline 3 applies.

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

Purpose4/5

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

States specific verbs and resource: poll the fulfillment provider for order status and update it locally. It is distinguishable from a plain read like get_order_details because it names the external polling and local-update behavior. It does not explicitly distinguish itself from sibling sync_orders, so it falls just 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.

Usage Guidelines4/5

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

Gives a clear usage context: 'Use to see whether an order has shipped or is on hold at the provider.' That tells the agent when to reach for it. No explicit when-not conditions or named alternatives (e.g., get_order_details, list_order_holds, sync_orders), so it is not a 5.

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

check_product_moveA
Read-only
Inspect

Dry run: report whether a product can be MOVED to another workspace, without changing anything. Returns {eligible, blockers} — a non-empty blockers list (e.g. asset_in_use, asset_has_orders, forbidden_source/destination) means move would fail, so copy instead. Read-only.

[#81f916]

ParametersJSON Schema
NameRequiredDescriptionDefault
product_uuidYesThe product to check.
source_workspaceNoThe product's current workspace uuid; omit only if it is in your Default workspace.
destination_workspaceYesDestination workspace uuid (from list_my_workspaces).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real value beyond that: it explains this is a dry run that mutates nothing, and interprets the return payload ({eligible, blockers}) including concrete blocker codes (asset_in_use, asset_has_orders, forbidden_source/destination). Missing only pagination/timeout or auth caveats.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the dry-run intent and followed by the interpretation rule. Minor noise: the trailing bracketed token '[#81f916]' is unexplained and adds nothing.

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

Completeness5/5

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

With no output schema, the description carries the burden of describing the return shape, and it does so ({eligible, blockers}) plus the semantics of a non-empty blockers list. An agent has everything needed to call and interpret this read-only check.

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

Parameters3/5

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

Schema description coverage is 100%, including the note that source_workspace may be omitted if the product is in the Default workspace and that destination_workspace comes from list_my_workspaces. The description adds no parameter 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.

Purpose5/5

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

States a specific verb+resource+scope: a dry-run check of whether a product can be moved to another workspace, explicitly 'without changing anything.' This cleanly separates it from the sibling move_product_to_workspace (which performs the move) and check_design_move (different resource).

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

Usage Guidelines5/5

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

Gives the decision rule explicitly: a non-empty blockers list means the move would fail, so use copy instead. That routes the agent to the copy_product_to_workspace alternative and defines the precondition for calling this tool at all.

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

check_setup_readinessA
Read-only
Inspect

What this account already has, what it still needs, and the single next action to take. Returns ready_to_design / ready_to_fulfill / ready_to_sell, a per-store breakdown, and an ordered next_steps list. Start here for any first-time setup, and call it again after each connection to confirm the state actually changed. Read-only, makes no provider calls, and is safe to poll.

[#01f20c]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid the store lives in (agency accounts) — use the store's workspace.uuid from list_my_stores. Omit only for single-workspace accounts; omitting it on a multi-workspace account targets the Default workspace and the call will fail to find a store that lives elsewhere.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only give readOnlyHint and openWorldHint; the description adds that it makes no provider calls and is safe to poll, which is real behavioral context beyond the structured fields. It doesn't detail latency or rate limits, but for a read-only status tool this is strong.

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

Conciseness4/5

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

Front-loaded with purpose and return shape, then usage guidance; every sentence earns its place. The trailing '[#01f20c]' artifact is stray noise that slightly detracts.

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

Completeness4/5

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

With no output schema, the description does the work of describing the return payload (readiness flags, per-store breakdown, next_steps). An agent has enough to call and interpret it, though the semantics of each readiness flag aren't spelled out.

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

Parameters3/5

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

Schema description coverage is 100% and the single workspace parameter is fully documented in the schema, including the multi-workspace failure mode. The description adds nothing about the parameter, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource (check account setup readiness) and enumerates what it returns (ready_to_design / ready_to_fulfill / ready_to_sell, per-store breakdown, ordered next_steps). This distinguishes it from sibling diagnostics like get_account_overview or check_connection_status.

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

Usage Guidelines4/5

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

Explicit when-to-use: 'Start here for any first-time setup, and call it again after each connection to confirm the state actually changed.' No named alternative/exclusion, so it stops short of a 5, but the context is clear.

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

check_workspace_deletionA
Read-only
Inspect

Dry run: preview deleting a workspace (agency / Enterprise) — the stores that would move to the Default workspace and the members whose assignment would be revoked. Changes nothing. Read-only.

[#bcfd4e]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_uuidYesWorkspace uuid (from list_my_workspaces).

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, and the description aligns by saying 'Changes nothing. Read-only.' It adds useful behavioral detail beyond the annotations: the preview shows which stores would move to the Default workspace and which members would have assignments revoked. It does not cover permissions or rate limits, but those gaps are minor for a dry-run tool.

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

Conciseness4/5

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

The description is a single compact sentence that front-loads the dry-run purpose and affected entities. The trailing '[#bcfd4e]' token is extraneous and slightly harms structure, but the core text is efficient.

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

Completeness5/5

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

For a one-parameter, read-only preview tool, the description is complete enough: it states the action, scope, non-effect, and the categories of information the preview surfaces. Annotations cover the safety profile, and the schema covers the only parameter.

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

Parameters3/5

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

Schema description coverage is 100%, so the workspace_uuid parameter is already fully documented in the schema. The description adds no additional parameter meaning or usage syntax beyond what the schema provides, making the baseline score of 3 appropriate.

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

Purpose5/5

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

The description gives a specific verb and resource: 'Dry run: preview deleting a workspace'. It explicitly scopes the preview to agency/Enterprise workspaces and distinguishes itself from the destructive sibling delete_workspace by stating 'Changes nothing. Read-only.'

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

Usage Guidelines4/5

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

The phrase 'Dry run: preview deleting a workspace' clearly establishes the use case as pre-deletion validation. However, it does not explicitly name delete_workspace as the alternative action or state when not to use this preview, so it stops short of full when/when-not routing.

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

confirm_orderA
Idempotent
Inspect

Confirm a DRAFT order to send it into production at the fulfillment provider. Only works for orders in "draft" status that have already been submitted to a provider (have a provider order id). Use after submit_order_to_fulfillment on a "prepare, then I confirm" store.

[#ebe558]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for Default.
order_uuidYesThe order uuid (from list_my_orders / get_order_details).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only supply openWorldHint and idempotentHint, so the description usefully adds the provider-side, production-sending side effect and the two preconditions that make the call valid. It does not state whether confirmation is reversible or what happens if the provider rejects it, which is the remaining gap for a state-changing external call.

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

Conciseness4/5

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

Front-loaded with the action and its effect, followed by preconditions and sequencing — three tight sentences with no filler. Docked one point for the stray '[#ebe558]' artifact token that adds no meaning and should not be in a tool description.

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

Completeness4/5

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

For a 2-parameter mutation with no output schema, the description covers action, effect, preconditions, and workflow ordering adequately. It omits failure/error behavior and reversibility, which would matter for an agent deciding whether to call it optimistically.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented in the schema, including the source of order_uuid (list_my_orders / get_order_details). The description adds the concept of a 'provider order id' precondition but no new syntax or format detail, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Confirm a DRAFT order') plus the consequence ('send it into production at the fulfillment provider'). It is clearly distinguishable from approve_order and submit_order_to_fulfillment, which are named or implied by the preconditions.

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

Usage Guidelines5/5

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

Explicit when-to-use conditions are given: only DRAFT-status orders that already have a provider order id, and explicitly sequenced 'after submit_order_to_fulfillment' for 'prepare, then I confirm' stores. No alternative routing is left to inference for this workflow.

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

connect_fulfillment_providerAInspect

Connect an API-token fulfillment provider (Printify, Gelato) to a store, entirely in chat. Validates the token first, so a bad token fails before anything is stored. If the token maps to more than one shop the result asks you to pick one and lists them — call again with shop_id set. For Printful use start_channel_connect instead: it needs a browser. Never repeat the token back to the user.

[#98598c]

ParametersJSON Schema
NameRequiredDescriptionDefault
shop_idNoWhich shop to connect, when the token maps to several. Omit on the first call.
api_tokenYesThe merchant's provider API token. Get the generation URL from list_connectable_providers (credential_url). Treat as a secret: do not echo it.
workspaceNoWorkspace uuid the store lives in (agency accounts) — use the store's workspace.uuid from list_my_stores. Omit only for single-workspace accounts; omitting it on a multi-workspace account targets the Default workspace and the call will fail to find a store that lives elsewhere.
store_uuidYesStore uuid (from list_my_stores or create_store).
provider_uuidYesProvider uuid (from list_connectable_providers).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only supply openWorldHint, so the description carries the burden and does it well: it discloses that the token is validated before anything is stored (ordering/failure semantics), how the multi-shop result behaves, and a security constraint (never echo the token). These are meaningful traits beyond 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.

Conciseness5/5

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

Four tight sentences, front-loaded with the primary action and scoping, then validation behavior, then the multi-shop retry path, then the sibling redirect. Every sentence carries distinct information.

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

Completeness5/5

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

For a five-parameter mutation tool with no output schema, the description covers the failure mode, the multi-shop result shape, the retry path, and the security handling — enough for an agent to invoke and recover correctly without further context.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented, including shop_id's 'omit on the first call' note. The description reinforces the shop_id retry flow but adds no syntax or format meaning beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Connect), a specific resource (API-token fulfillment provider with examples Printify and Gelato), and the target (a store). It also carves itself apart from the nearest sibling by explicitly routing Printful users to start_channel_connect.

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

Usage Guidelines5/5

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

Gives explicit when-to-use routing (Printify/Gelato here, Printful via start_channel_connect because it needs a browser) and a concrete when-to-reuse condition (call again with shop_id set when the token maps to multiple shops). No alternatives are left to inference.

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

connect_sales_channelAInspect

Connect an API-key sales channel (WooCommerce, Wix) to a store, entirely in chat. For Shopify and TikTok Shop use start_channel_connect instead: they need a browser. Credentials are write-only and are never returned.

[#c9093d]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid the store lives in (agency accounts) — use the store's workspace.uuid from list_my_stores. Omit only for single-workspace accounts; omitting it on a multi-workspace account targets the Default workspace and the call will fail to find a store that lives elsewhere.
store_uuidYesStore uuid (from list_my_stores or create_store).
credentialsYesChannel credentials, e.g. WooCommerce { store_url, consumer_key, consumer_secret }; Wix { api_key, site_id }. Treat as secrets: do not echo them.
provider_uuidYesProvider uuid (from list_connectable_providers).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only provide openWorldHint, so the description carries most of the burden — and it does disclose the key trait that credentials are write-only and never returned, which matters for a tool taking a secrets object. It stops short of stating success/failure semantics or whether verification is needed (check_connection_status exists as a sibling), so it is strong but not complete.

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

Conciseness4/5

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

Two tightly written sentences with the routing condition front-loaded after the primary purpose. However, the trailing artifact '[#c9093d]' is stray noise that does not belong in a tool description and costs a point.

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

Completeness4/5

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

No output schema exists, yet the description never says what a successful connection yields or whether the agent should follow up with check_connection_status. Everything else an agent needs — provider routing, credential secrecy, required identifiers via schema — is covered.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter already names its source (list_my_stores, list_connectable_providers, list_connectable_providers) plus the workspace omission caveat. The description adds nothing per-parameter beyond the write-only credential note, which is behavioral rather than semantic — baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Connect an API-key sales channel ... to a store') and immediately scopes the provider set to WooCommerce and Wix. It also names the sibling it is not (start_channel_connect) and gives the reason, so an agent can discriminate without opening either schema.

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

Usage Guidelines5/5

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

Explicit routing rule: use this tool for API-key channels, use start_channel_connect for Shopify and TikTok Shop because they need a browser. The schema further points to list_connectable_providers for provider_uuid, completing the prerequisite chain.

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

copy_design_to_workspaceAInspect

Copy a generated design image into another workspace (agency accounts). Non-destructive: the original stays put and the copy gets its own duplicated image file. Use list_my_workspaces for the destination uuid; pass source_workspace if the design is not in your Default workspace.

[#3090dc]

ParametersJSON Schema
NameRequiredDescriptionDefault
design_uuidYesThe design to transfer.
source_workspaceNoThe workspace the asset currently lives in. Omit only if it is in your Default workspace; otherwise you must pass it (the platform scopes reads to a single workspace).
destination_workspaceYesDestination workspace uuid to copy/move into. Get it from list_my_workspaces (resolve a client/brand name to its uuid).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare openWorldHint, so the description must carry disclosure and it does: it states the operation is non-destructive, that the original stays put, and that the copy gets its own duplicated image file. It also explains the single-workspace read scoping that forces source_workspace. It could still note permission/agency-account requirements, but the added context is solid.

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

Conciseness4/5

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

Front-loaded with the action and its non-destructive nature, then the parameter guidance, with no wasted sentences. The trailing '[#3090dc]' is an unexplained artifact that slightly undercuts an otherwise tight structure.

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

Completeness4/5

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

For a 3-parameter copy operation with no output schema, the description covers the key behaviors (non-destructive duplication, workspace scoping, where to get the destination uuid) sufficiently to invoke correctly. Only minor gaps remain, such as return value shape or error conditions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, including the source_workspace condition and the list_my_workspaces pointer. The description echoes that guidance, which is helpful routing but adds little the schema does not already say, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (copy) plus resource (design image) and destination (another workspace), then immediately distinguishes itself from the sibling move_design_to_workspace by clarifying it is non-destructive. An agent can tell copy from move without opening either schema.

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

Usage Guidelines4/5

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

Gives concrete routing: use list_my_workspaces to resolve the destination uuid, and pass source_workspace when the design is not in the Default workspace. It implies when to use copy over move via the non-destructive emphasis, but never names the alternative tool explicitly, 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.

copy_product_to_workspaceAInspect

Copy a product into another workspace (agency accounts). Non-destructive: the original is untouched and the copy lands as an unsynced DRAFT (no store mapping, fresh variants). Use list_my_workspaces to get the destination workspace uuid. If the product lives in a non-Default workspace, pass source_workspace too.

[#d046a8]

ParametersJSON Schema
NameRequiredDescriptionDefault
product_uuidYesThe product to transfer.
source_workspaceNoThe workspace the asset currently lives in. Omit only if it is in your Default workspace; otherwise you must pass it (the platform scopes reads to a single workspace).
destination_workspaceYesDestination workspace uuid to copy/move into. Get it from list_my_workspaces (resolve a client/brand name to its uuid).

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only supply openWorldHint=true, so the description carries the behavioral burden and does so well: it discloses the resulting state (unsynced DRAFT, no store mapping, fresh variants), confirms non-destructiveness, and states the source-workspace scoping precondition. This is exactly the side-effect context an agent needs before a cross-workspace copy.

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

Conciseness4/5

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

Three efficient sentences, front-loaded with the action and its key property (non-destructive) before the prerequisite lookups. Docked one point for the trailing '[#d046a8]' artifact, which is noise that does not earn its place.

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

Completeness4/5

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

With no output schema and minimal annotations, the description adequately covers the outcome (new draft product in the destination workspace) and the preconditions. It stops short of saying what the call returns (e.g., the new product uuid), which an agent may want, but nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100% and all three parameters are documented in the schema, including the source_workspace omission rule and the list_my_workspaces lookup for destination_workspace. The description restates the same guidance in prose without adding new syntax, formats, or constraints, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Copy a product into another workspace'), scopes it to agency accounts, and immediately distinguishes itself from the sibling move_product_to_workspace by declaring the operation non-destructive with the original untouched. An agent can tell it apart from move/copy siblings without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete routing help: use list_my_workspaces to obtain the destination uuid, and pass source_workspace whenever the product is not in the Default workspace. It does not, however, explicitly state when to prefer move_product_to_workspace or copy_design_to_workspace over this tool, so the exclusion side of the guidance is missing.

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

create_collectionAInspect

Create a new (empty) collection in a store. Provide a name (sent to the platform as the collection title) and an optional description. Add products with add_products_to_collection, then sync_collection to push it to a sales channel.

[#ff2c5e]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
workspaceNo
store_uuidYes
descriptionNo

TDQS

A3.7/5.0
Behavior3/5

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

With only openWorldHint in annotations, the description adds some behavioral context: the collection is created empty and the name is sent as the collection title. However, it omits permissions, duplicate-name behavior, idempotency, and visibility or sync implications, so it only partially carries the disclosure burden for a create mutation.

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

Conciseness4/5

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

The description is front-loaded and mostly concise: three useful sentences covering creation, fields, and workflow. The trailing '[#ff2c5e]' token is irrelevant noise that slightly undercuts conciseness.

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

Completeness3/5

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

For a relatively simple create tool with no output schema, the description covers the core action, key fields, and next steps. Still, missing workspace parameter semantics and mutation caveats leave meaningful gaps given minimal annotations and 0% schema description coverage.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains name and description, and 'in a store' loosely implies store_uuid, but the workspace parameter is never mentioned and no format or source details are added for store_uuid.

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

Purpose5/5

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

The description states a specific verb and resource with scope: 'Create a new (empty) collection in a store.' It distinguishes the tool from update_collection, delete_collection, get_collection, and list_collections, and names the follow-up tools add_products_to_collection and sync_collection.

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

Usage Guidelines4/5

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

It gives a clear creation workflow: provide a name and optional description, then use add_products_to_collection and sync_collection. It does not explicitly state when not to use this tool or contrast it with update_collection, but the intended usage context is clear.

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

create_productAInspect

Create a STANDALONE product from a design (split primitive) — it is NOT placed on any store yet. Applies the correct field names + pricing floor, routes EMBROIDERY garments (caps/beanies) to their real embroidery placement with Printful thread colors (derived or explicit), and defaults face goods (canvas/backpacks/bags/socks/towels/blankets/pillows/cases...) to print_style "fill" (design recomposed onto a matching background, printed edge-to-edge). Set generate_mockup: true to render a garment mockup as the display image (it auto-derives representative variants from the catalog, so you do NOT need mockup_variant_ids) — otherwise the raw design is used as the display image. To get it onto a store and listed, the required sequence is: add_variants -> sync_to_fulfillment(product_uuid, store_uuid) [associates it with the store + syncs to Printful/Printify] -> sync_to_channel [sales channel]. To run that whole pipeline in one call instead, use ship_product.

[#5f6554]

ParametersJSON Schema
NameRequiredDescriptionDefault
garmentYes
pricingYes
workspaceNo
design_urlNo
design_uuidYesThe design to print. Comes from generate_image / design_apparel, OR from upload_design when the merchant already owns the artwork (a logo, a brand mark, a cleared cover). Never regenerate a mark you were given as a file.
print_styleNoHow the design sits on the print face. "fill": recompose onto a matching background and print edge-to-edge (default for face goods). "placed": transparency preserved (default for apparel and embroidery). "auto" (default) picks by garment.
product_metaYes
thread_colorsNoEMBROIDERY garments only: explicit Printful thread palette colors. Omit to auto-derive from the design.
generate_mockupNo
mockup_variant_idsNoRepresentative variant ids for the mockup preview (numeric on Printful/Printify, string productUids on Gelato).

TDQS

A4.8/5.0
Behavior5/5

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

With only openWorldHint in annotations, the description carries the full burden and delivers: it discloses the non-persistent-to-store lifecycle, auto-applied field names and pricing floor, automatic embroidery placement with derived thread colors, the print_style 'fill' default for face goods, and mockup auto-derivation. Little about the tool's side effects is left implicit.

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

Conciseness4/5

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

Front-loaded with the standalone-product constraint before the operational details, and every clause carries information. It is long and clause-dense, and the trailing '[#5f6554]' artifact is stray noise that should not be there.

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

Completeness5/5

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

For a 10-parameter mutation tool with no output schema and minimal annotations, the description covers lifecycle, defaults, downstream required steps, and the one-call alternative. An agent can call it and knows what it must do next, with no missing decision-relevant context.

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

Parameters4/5

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

Schema description coverage is only 40% across 10 params, and the description compensates for the important ones: print_style enum semantics and per-garment defaults, thread_colors being embroidery-only with omission meaning auto-derive, and generate_mockup auto-deriving variants so mockup_variant_ids is unnecessary. It does not explain workspace, design_url, or the pricing/garment substructures, so it stops short of full coverage.

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

Purpose5/5

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

States a specific verb+resource ('create a STANDALONE product from a design') and immediately scopes it ('it is NOT placed on any store yet'), which cleanly separates it from ship_product and add_variants. The garment-routing and print_style default behavior further pin down exactly what this tool produces.

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

Usage Guidelines5/5

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

Explicitly names the alternative path: the add_variants -> sync_to_fulfillment -> sync_to_channel sequence for getting it listed, and 'To run that whole pipeline in one call instead, use ship_product.' This is a textbook when-to-use vs when-to-use-the-sibling statement.

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

create_storeAInspect

Create a new ApparelHub store. Only a name is required. The store starts CLOSED — connect a fulfillment provider (Printful/Printify), then call activate_store to make it ACTIVE. In an agency account pass workspace= to create it in a specific client workspace.

[#9d5cbc]

ParametersJSON Schema
NameRequiredDescriptionDefault
logoNoOptional logo image URL.
nameYesStore name (must be unique within the account).
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
descriptionNoOptional store description.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only carry openWorldHint=true, so the description does the heavy lifting and does it well: it discloses the store's initial state (CLOSED) and the prerequisite to reach ACTIVE. It stops short of auth/permission requirements or error behavior (e.g., duplicate name), so not a full 5.

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

Conciseness4/5

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

Front-loaded with the core action and lifecycle note; every sentence carries meaning. The trailing "[#9d5cbc]" artifact and the stray value are unexplained noise that slightly undercuts an otherwise tight definition.

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

Completeness5/5

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

With no output schema and minimal annotations, the description still supplies what an agent needs to call this correctly: the required param, the resulting state, the follow-up activation step, and the workspace-scoping caveat. Nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description restates the workspace scoping rule that the schema already documents ("agency accounts", "Omit for the Default workspace") rather than adding format or constraint detail beyond it.

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

Purpose5/5

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

States a specific verb+resource ("Create a new ApparelHub store") and immediately differentiates from the sibling activate_store by describing the creation-to-activation lifecycle. An agent can distinguish it from update_store_settings or create_workspace without opening a schema.

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

Usage Guidelines5/5

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

Explicitly says only a name is required, explains the post-creation workflow (connect a fulfillment provider, then call activate_store to make it ACTIVE), and gives the agency-account condition for passing workspace=<uuid>. Both when-to-use and the next-step alternative are named.

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

create_workspaceAInspect

Create a new workspace in the account (agency / Enterprise). Name must be unique within the account. Needs an account-wide key; a tier without the agency feature gets feature_unavailable. Returns the new workspace uuid.

[#51f6a7]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWorkspace name (unique within the account, max 128 chars).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only carry openWorldHint=true, so the description must supply the behavioral picture, and it does: name uniqueness, an account-wide key requirement, the feature_unavailable failure mode, and the returned uuid. For a mutation tool this is solid disclosure, though it doesn't state reversibility or downstream effects of creation.

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

Conciseness3/5

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

The substance is front-loaded and efficient, but the trailing "[#51f6a7]" fragment is stray noise that detracts from an otherwise tight four-sentence description.

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

Completeness4/5

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

For a single-param create mutation with thin annotations and no output schema, the description covers the auth requirement, error condition, uniqueness constraint, and return value — enough for an agent to call it correctly. Minor gaps remain (no guidance on post-creation membership setup).

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

Parameters3/5

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

Only one parameter and the schema already documents it at 100% coverage (unique within account, max 128 chars). The description's mention of uniqueness merely restates the schema, adding no format or syntax detail, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ("Create a new workspace in the account") and scopes it to agency/Enterprise accounts, so an agent can distinguish it from update_workspace, delete_workspace, or list_my_workspaces by verb. It does not name a sibling or contrast conditions, so it falls 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.

Usage Guidelines3/5

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

The description gives prerequisite context (needs an account-wide key; tier without the agency feature returns feature_unavailable), which is genuinely useful usage information. However, it never says when to reach for create_workspace versus alternatives like invite_member (joining an existing workspace), leaving selection logic implied.

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

delete_collectionA
Destructive
Inspect

Delete a collection. If it is synced to any sales channel, the platform unsyncs it there first. The member products are NOT deleted, only the grouping.

[#afdbfe]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
collection_uuidYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds genuinely useful nuance: the platform unsyncs the collection from sales channels first, and member products survive while only the grouping is destroyed. This clarifies the blast radius beyond the binary destructive flag, though it does not address permissions or reversibility.

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

Conciseness4/5

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

Front-loaded with the destructive verb and two tight sentences that each add value about side effects. The trailing '[#afdbfe]' token is stray markup that earns no place in the description.

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

Completeness3/5

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

There is no output schema, but the description adequately covers the key behavioral consequence an agent must know before a destructive call (channel unsync, products preserved). It falls short on parameter meaning and permission/reversibility concerns, leaving the 0%-covered schema unassisted.

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

Parameters2/5

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

Schema description coverage is 0% across 3 parameters, so the description carries the full burden and adds almost nothing: it never explains store_uuid, collection_uuid, or the optional workspace parameter. Only the singular 'a collection' hints that one collection is targeted, which the schema already implies via required UUIDs.

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

Purpose5/5

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

States a specific verb+resource ('Delete a collection') and immediately clarifies scope by distinguishing what is removed (the grouping) from what is not (member products). An agent can distinguish it from delete_product, delete_design, and delete_workspace without opening any schema.

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

Usage Guidelines2/5

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

The description explains cascading behavior but never says when to use deletion versus alternatives such as archive or unsync_from_channel, nor does it name any sibling tool. No prerequisites or exclusions are stated.

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

delete_designA
Destructive
Inspect

Permanently delete a design and its stored files. Irreversible. Refused with design_in_use if any live product still uses the design, in which case archive_design is the safe alternative. Use archive_design unless the design genuinely must be erased.

[#02e216]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid (agency accounts).
design_uuidYesThe design uuid to delete permanently.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and openWorldHint=true, but the description goes well beyond that: it discloses irreversibility, that stored files are also destroyed, the exact refusal error code (design_in_use), and the precondition triggering that refusal. That is meaningful behavioral context the structured fields 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.

Conciseness4/5

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

Three tight sentences, front-loaded with the destructive nature and the irreversible warning, and every sentence contributes routing or safety information. The trailing '[#02e216]' artifact is stray noise that slightly undercuts otherwise clean structure.

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

Completeness5/5

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

For a destructive two-parameter mutation with no output schema, the description covers irreversibility, side effects on stored files, the failure mode, and the safer alternative. An agent has everything needed to call it correctly or avoid it.

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

Parameters3/5

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

Schema description coverage is 100% with only two parameters, so design_uuid and the optional workspace are fully documented in the schema. The description adds no syntax or format detail beyond it, which is the expected baseline here.

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

Purpose5/5

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

States a specific verb ('Permanently delete') and resource ('a design and its stored files'), and makes the scope of deletion explicit rather than tautological. An agent can distinguish it from archive_design and delete_product without opening any schema.

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

Usage Guidelines5/5

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

Names the exclusion condition ('Refused with design_in_use if any live product still uses the design'), names the alternative tool ('archive_design is the safe alternative'), and gives a default recommendation ('Use archive_design unless the design genuinely must be erased'). When-to-use, when-not, and the alternative are all explicit.

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

delete_productA
Destructive
Inspect

Delete (default) or archive a product. Hard delete cascades to variants; if the product is synced to channels, unsync it first to avoid orphan listings — unsync_from_channel for one channel, archive_product for all of them. (sync_to_channel cannot unsync; it only syncs.)

[#020483]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
archive_onlyNoDefault false (hard delete).
product_uuidYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply destructiveHint and openWorldHint; the description goes well beyond by disclosing that hard delete cascades to variants and that synced products risk orphan listings unless unsynced first. The ordering prerequisite and cascading side effects are exactly the behavioral context an agent needs for a destructive op.

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

Conciseness4/5

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

Dense and front-loaded: the default behavior, the cascade, and the unsync prerequisite are all in the first two sentences. The trailing '[#020483]' tag is unexplained noise that slightly detracts from otherwise tight structure.

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

Completeness4/5

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

For a destructive 3-param tool with no output schema, the description covers side effects, ordering, and sibling routing well. It stops short of stating irreversibility/recovery (e.g. restore_product) or the scope of the undocumented workspace parameter, which are the remaining meaningful gaps.

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

Parameters3/5

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

Schema coverage is 33%, so only archive_only is documented inline ('Default false (hard delete)'); the description reinforces the archive-vs-hard-delete distinction with no schema help. The workspace parameter's scope and any restrictions on product_uuid remain undocumented in either place, so the description only partially compensates for the coverage gap.

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

Purpose5/5

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

States a specific verb and resource ('Delete (default) or archive a product') and immediately distinguishes itself from the archive_product and unsync_from_channel siblings. An agent can tell what this tool does without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit when/when-not guidance: unsync before hard-deleting a synced product, use unsync_from_channel for one channel and archive_product for all, and clarifies that sync_to_channel cannot unsync. This routes the agent among three siblings by name.

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

delete_workspaceA
Destructive
Inspect

Delete a workspace (agency / Enterprise). Its stores are reassigned to the Default workspace and member assignments revoked first. The Default workspace cannot be deleted. Preview with check_workspace_deletion. Needs an account-wide key.

[#c566a1]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_uuidYesWorkspace uuid (from list_my_workspaces).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint and openWorldHint, but the description goes further by disclosing exactly what happens: stores are reassigned to the Default workspace and member assignments are revoked first, plus the account-wide key requirement. This is the kind of side-effect disclosure a destructive tool needs.

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

Conciseness4/5

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

Three tight sentences with the destructive scope front-loaded and the safety constraint prominent. The trailing '[#c566a1]' token is stray noise that slightly detracts from an otherwise clean structure.

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

Completeness5/5

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

For a single-parameter destructive mutation with no output schema, the description covers effects, blocking conditions, prerequisites, and a preview path. Nothing an agent needs before invoking it is missing.

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

Parameters3/5

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

Schema coverage is 100% and the schema already tells the agent the uuid comes from list_my_workspaces. The description adds no further parameter detail, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Delete a workspace') and narrows the scope to agency/Enterprise workspaces, distinguishing it from sibling update_workspace and create_workspace. An agent can identify the operation immediately.

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

Usage Guidelines5/5

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

Explicitly names the preview alternative ('Preview with check_workspace_deletion'), states a blocking exclusion ('The Default workspace cannot be deleted'), and gives a prerequisite ('Needs an account-wide key'). This is full when/when-not/alternative guidance.

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

describe_listing_attributesA
Read-only
Inspect

Discover the channel-defined listing fields you can set — TikTok product attributes, eBay item specifics, WooCommerce product attributes — and what is currently set. READ-ONLY. Call this BEFORE set_listing_attributes or set_channel_settings: the field names and their allowed values are defined by the channel, so guessing them gets the value dropped.

Pass product_uuid for one listing, or integration_uuid alone for the shop-wide settings (compliance answers, the shipping template, and a fallback size chart).

BRAND and the per-listing SIZE CHART are per-PRODUCT, not shop-wide — both describe the blank, so a shop selling two blanks needs two values, and a shop-wide size chart would replace the accurate per-garment one on every other listing at once. Ask for them with product_uuid.

Each field carries value_type, cardinality (single vs multi), free_text (whether a value outside the list is accepted) and requirement. Those are separate on purpose: most fields are enumerated AND accept free text, so neither flag alone tells you what is legal. requirement: "conditional" means the field only becomes required once required_when holds — typically after you answer a related question one particular way.

values is what is LIVE ON THE CHANNEL, which is not the same as what was last written from here: platform auto-fills and merchant edits made directly in the channel's own admin show up here too. That drift is usually the most useful thing in the response.

unset_required lists fields that are required and empty. Those are NOT filled in for you, deliberately — several are legal attestations. Left unset, the channel picks its own default or grades the listing down, so they are worth resolving with the merchant.

⚠️ CHECK resolved_for.resolution when it is present. explicit_override means the merchant chose the category. keyword_match means it was GUESSED from the product name, and a wrong guess means these fields belong to a different kind of product entirely — setting attributes against it is worse than setting none. Treat keyword_match as unverified and say so.

Big value lists are omitted by default and reported as allowed_values_count; pass include_values to expand them (one real field carries 647 values).

A field whose value_type is object takes a STRUCTURE, not a string, and publishes its shape in channel_ref.object_schema. Build the value from that schema — size_chart_measurements is one, and import_size_measurements will fill it for you from the fulfillment provider.

A channel with no listing attributes answers supported: false with an empty fields — a real answer, not an error.

[#b71f15]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
product_uuidNoThe listing to inspect. Omit for the shop-wide settings.
include_valuesNo'all', or a comma-separated list of field keys, to inline allowed values that are elided by default.
integration_uuidNoWhich connected sales channel. Required when `product_uuid` is omitted; otherwise only needed if the store has more than one channel connected.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover readOnlyHint/openWorldHint; the description adds substantial context beyond them: `values` reflects live channel state including platform auto-fills and merchant edits (drift), `unset_required` fields are deliberately not auto-filled, `resolved_for.resolution` keyword_match is an unverified guess, large value lists are elided, and object value_type requires a channel_ref.object_schema structure.

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

Conciseness4/5

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

Front-loaded with purpose and the critical ordering rule, and paragraphs are logically grouped by concern (scope, response fields, warnings). It is long and includes a stray trailing artifact token, so it is efficient but not maximally tight.

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

Completeness5/5

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

With no output schema, the description carries the full burden by explaining the return shape (fields, value_type, cardinality, free_text, requirement, values, unset_required, resolved_for) and edge cases like supported:false. An agent has everything needed to call it and interpret results.

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

Parameters4/5

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

Schema coverage is 60%, and the description compensates by explaining product_uuid (one listing) vs integration_uuid (shop-wide) and the include_values expansion. store_uuid and workspace remain only self-evident from the schema, so it stops short of full coverage.

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

Purpose5/5

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

States a specific verb and resource: 'Discover the channel-defined listing fields you can set ... and what is currently set.' It explicitly names the sibling tools it complements (set_listing_attributes, set_channel_settings), so an agent can distinguish it from the write-side tools without opening schemas.

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

Usage Guidelines5/5

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

Gives an explicit sequencing rule ('Call this BEFORE set_listing_attributes or set_channel_settings') with the reason (guessing field names gets the value dropped), and explains the product_uuid-vs-integration_uuid selection condition for shop-wide vs per-listing scope.

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

design_apparelAInspect

End-to-end apparel design with the platform lessons baked in: solid-green-background prompt, transparency keying, and (optionally) a local text check. Returns ready-to-use design(s). Streams progress. Set needs_transparency=false for all-over-print products. Rate-limit errors are classified (model_rate_limited = one model's provider vs platform_rate_limited = this key's ApparelHub throttle vs request_not_sent = the call never reached ApparelHub), and each design's fallback_trail shows any model substitutions. This GENERATES new artwork — when the merchant already owns the file (a logo, a brand mark, a cleared cover), use upload_design instead and do not regenerate their mark.

[#d84efc]

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
styleNo
promptYes
sourceNo
workspaceNo
no_fallbackNoDisable the model-fallback ladder. By default a rate-limited/transient model transparently retries with a different model (per-design fallback_trail); set true to fail on the chosen source alone.
verify_textNo
garment_typeNoHints source selection.
needs_transparencyNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply openWorldHint, so the description carries the behavioral burden and does it well: it discloses streaming progress, the rate-limit error taxonomy (model_rate_limited vs platform_rate_limited vs request_not_sent), and the per-design fallback_trail with model substitutions. This is rich operational context an agent cannot get from annotations.

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

Conciseness4/5

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

Front-loads the core capability and keeps the routing constraint early, with dense but useful sentences. It loses a point for the trailing stray artifact '[#d84efc]', which adds no meaning and only noise.

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

Completeness4/5

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

With no output schema, the description does the work of explaining returns ('ready-to-use design(s)'), streaming, and error classes, which is strong. Minor incompleteness remains around several input parameters and any cost or latency expectations for a generative call.

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

Parameters3/5

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

Schema description coverage is only 22% across 9 parameters, so the description must compensate and only partly does: it adds meaning for needs_transparency (all-over-print rule), no_fallback (redundant with the schema's own description), and the prompt convention. count, style, source, workspace, verify_text, and garment_type remain undocumented in both places, leaving a real gap.

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

Purpose5/5

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

Starts with a specific verb+resource ('End-to-end apparel design') and immediately states the output ('Returns ready-to-use design(s)'). It explicitly distinguishes itself from the sibling upload_design by stating 'This GENERATES new artwork' and routing existing merchant files elsewhere.

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

Usage Guidelines5/5

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

Gives explicit when-not guidance: use upload_design when the merchant already owns the file and 'do not regenerate their mark', plus the conditional 'Set needs_transparency=false for all-over-print products'. Both conditions name the scenario that selects the behavior.

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

diagnose_tiktok_listingsAInspect

Diagnose TikTok Shop listing quality and optionally apply TikTok's own recommendations. TikTok grades each listing POOR/FAIR/GOOD and a low grade suppresses reach. Returns, per listing: the current tier, the machine-readable issues behind it (code + how_to_solve + the tier that ONE fix unlocks), and TikTok's recommended search terms / titles / descriptions. READ-ONLY unless you pass apply. apply:['search_terms'] is the safe default action — search terms are hidden listing metadata. Passing 'title' or 'description' replaces merchant-visible copy with machine-generated text, so ask the user first; those land on a TikTok-ONLY override and never rewrite the shared product record (which would also change the Shopify/WooCommerce/Wix listings). Use dry_run to preview. IMPORTANT — TikTok often flags a title WITHOUT offering a replacement, so apply:["title"] returns no_recommendation. That is not a dead end: each listing also carries requirements (the computed target, e.g. 40-150 chars — TikTok's own length rules contradict each other and this is the intersection), building_blocks (the product's real garment/colors/sizes, so you write from facts rather than inventing them), and candidates.title (ready-to-use options, shortest first, each already validated against the requirements). Offer the candidates to the user, or write your own title to the requirements and set it via update_product tiktok_listing.title. Check issues[].fixable_by before acting: photography means the listing needs new imagery, not better writing — report it rather than trying to write around it. ⚠️ diagnosable means "TikTok returned a diagnosis", NOT "this listing is live". TikTok also answers for deactivated and deleted listings, so a catalog can come back entirely diagnosable:true while a third of it is no longer for sale. Read listing_health for liveness: "Removed" is gone, "Needs Attention" is present but not visible to buyers, and null means we have never checked — which is NOT the same as healthy. Do not advise a user to delist something on the strength of diagnosable alone. Tier is a US-market signal. After applying, re-run this tool LATER to see the new tier: TikTok re-grades asynchronously, so the tier does not move the instant an edit lands.

[#a912af]

ParametersJSON Schema
NameRequiredDescriptionDefault
applyNoOmit for a read-only diagnosis. Provide the fields to overwrite with TikTok's recommendations.
dry_runNoWith `apply`: report what would change without writing or syncing.
workspaceNo
store_uuidYes
product_uuidsNoLimit to these products. Omit to cover every listing synced to TikTok.
integration_uuidNoOnly needed when the store has more than one connected TikTok Shop integration.

TDQS

A4.8/5.0
Behavior5/5

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

With only openWorldHint provided, the description carries the behavioral burden and does so richly: it discloses that title/description writes land on a TikTok-ONLY override and never rewrite the shared product record, that `dry_run` prevents writes, that `diagnosable` does not mean live (citing deactivated/deleted listings), and that tier is a US-market signal. This is well beyond what the annotation covers.

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

Conciseness4/5

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

Long but front-loaded, leading with the purpose before the apply semantics and the diagnosable/listing_health warning. Dense prose earns most of its length, though a trailing artifact fragment and some stacking of caveats add minor noise.

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

Completeness5/5

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

There is no output schema, so the description must explain returns — and it does, itemizing tier, machine-readable issues (code, how_to_solve, unlocked tier), recommendations, requirements, building_blocks, candidates, and listing_health. Nothing an agent needs to interpret results or act safely is missing.

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

Parameters4/5

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

Schema coverage is 67%, and the description adds real meaning to the undocumented-in-schema semantics of `apply` (safe default, hidden metadata vs merchant-visible copy) and `dry_run`. It leaves `workspace` and `store_uuid` unexplained, so it falls just short of fully compensating for the coverage gap.

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

Purpose5/5

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

States a specific verb and resource (diagnose TikTok Shop listing quality) plus the optional mutation (apply TikTok's recommendations), and implicitly distinguishes itself from siblings like auto_optimize_listings and update_product by describing the diagnosis-plus-graded-tier workflow. An agent can tell what this does without opening the schema.

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

Usage Guidelines5/5

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

Explicit when-to-use guidance: read-only unless `apply` is passed, `apply:['search_terms']` is the named safe default, `dry_run` previews, `issues[].fixable_by` gates action, and the tool must be re-run LATER due to async re-grading. It also routes the agent to update_product for manual title writes.

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

estimate_order_costsA
Read-only
Inspect

Estimate production + shipping + tax + total for an order WITHOUT creating it (read-only against the fulfillment provider, no order placed). Give the store, the recipient, and the variants + quantities. Use to preview landed cost before placing an order. AVAILABLE FOR PRINTFUL AND GELATO ONLY: Printify offers no pre-order estimate, so a Printify-fulfilled store returns a refusal rather than a number — do not retry it, and do not present a cross-provider landed-cost comparison that silently omits Printify. Both country_code AND address1 are required; the platform rejects the request without a street address. The variants must already be synced to the fulfillment provider.

[#a2bd48]

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesLine items to price.
currencyNoCurrency code (defaults to USD).
recipientYesShip-to details. country_code and address1 are both required; city/state/zip improve accuracy.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidYesThe store the order would be placed in.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, but the description goes well beyond them: it discloses that the call is read-only against the fulfillment provider with no order placed, that Printify stores return a refusal (not an error worth retrying), and that variants must already be synced. These are non-obvious failure modes an agent could not 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.

Conciseness4/5

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

Front-loaded with the core behavior in the first clause, and subsequent sentences all carry distinct, useful constraints. It runs long and ends with a stray artifact token ('[#a2bd48]') that adds no value, which keeps it out of the top band.

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

Completeness5/5

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

For a 5-parameter read-only estimator with no output schema, the description covers purpose, preconditions, provider limits, and even the returned cost components. Nothing an agent needs in order to call it correctly or interpret a refusal is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it names the three inputs to supply (store, recipient, variants + quantities), stresses that country_code AND address1 are both required because the platform rejects street-address-less requests, and introduces the out-of-schema constraint that variants must be pre-synced.

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

Purpose5/5

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

States a specific verb and resource ('Estimate production + shipping + tax + total for an order') and immediately scopes it as non-creating ('WITHOUT creating it'). An agent can distinguish this from submit_order_to_fulfillment or add_order_item without opening any schema.

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

Usage Guidelines5/5

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

Explicit when-to-use ('preview landed cost before placing an order') plus hard when-not guidance: Printify has no pre-order estimate, so it refuses — do not retry, and do not present a cross-provider comparison that silently omits Printify. This is exactly the alternative-routing an agent needs.

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

find_garmentsA
Read-only
Inspect

Search EVERY fulfillment provider on the account at once for garments matching a capability. USE THIS BEFORE TELLING A USER AN ITEM CANNOT BE BUILT. A capability limit is almost always scoped to one provider, not to the category of garment: one provider carrying only embroidered headwear says nothing about another's printed caps. browse_catalog answers 'what does THIS provider carry'; this answers 'what on this ACCOUNT can take this design'. Provider scope defaults to every provider available — pass providers only to deliberately narrow it. Returns a compact ranked shortlist (confirmed capability first), plus providers_searched so you can state your coverage honestly rather than implying you checked everything. An empty result means nothing matched THESE filters on THESE providers; it is not proof the garment does not exist, and the warnings say so. Read-only.

[#e5ad81]

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 20.
verifyNoConfirm low-confidence matches with a per-garment lookup. Defaults on when filtering by capability. Bounded, so a very broad search may leave some unverified.
keywordNoExtra substring match on name/brand.
categoryNoGarment kind, e.g. "hat", "t-shirt", "mug". Matched against product names across each provider's whole catalog, including the words providers actually use ("hat" also finds cap / beanie / snapback / trucker).
providersNoProvider NAMES to restrict to. OMIT to search every provider on the account — that is the default and the recommended usage.
workspaceNo
include_unknownNoKeep garments whose decoration method the provider never published. Default true: unclassified is not the same as unsuitable, and excluding them hides real options.
accepts_photorealNotrue for photographic / gradient-heavy / fine-detail artwork; false to find garments you can embroider. This is the filter that answers "can this design go on this thing".
decoration_methodNoAny match qualifies. "print" means a print process the provider does not name more precisely.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the trailing 'Read-only.' adds little. However the description discloses substantive behavior beyond annotations: a ranked shortlist with confirmed capability first, the `providers_searched` field for honest coverage reporting, and the crucial semantics that an empty result is not proof of nonexistence (echoed in warnings).

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

Conciseness4/5

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

Dense but front-loaded: the imperative and scope come first, then the sibling contrast, then defaults and return semantics. Nearly every sentence earns its place, though a stray trailing artifact and the redundant 'Read-only.' sentence are minor waste.

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

Completeness5/5

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

With no output schema, the description carries the return contract (ranked shortlist, providers_searched) and the empty-result interpretation, which is exactly what an agent needs for a 9-parameter open-world search tool. Nothing material is missing.

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

Parameters4/5

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

Schema coverage is 89%, so the baseline is 3, but the description adds real meaning: the default provider scope and when to override it, the role of accepts_photoreal as the 'can this design go on this thing' filter, and the rationale for include_unknown's default. This goes beyond restating the schema.

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

Purpose5/5

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

States a specific verb+resource+scope: searches EVERY fulfillment provider on the account for garments matching a capability. Explicitly distinguishes itself from the sibling browse_catalog ('what does THIS provider carry' vs 'what on this ACCOUNT can take this design'), so the agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit imperative when-to-use ('USE THIS BEFORE TELLING A USER AN ITEM CANNOT BE BUILT'), the reasoning behind it (capability limits are provider-scoped, not category-scoped), the named alternative browse_catalog, and the condition for narrowing scope via `providers`. Nothing is left to inference.

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

fit_aspectAInspect

Fit an EXISTING design image to a target aspect ratio without generating a new one. mode="pad" letterboxes it onto a background (keeps the whole design, nothing cropped); mode="crop" center-crops (trims the edges to fill the shape). QUOTA-FREE: this reshapes an existing image and does NOT consume an image-generation credit. Use to adapt a square design to a product's print area (e.g. a tall 9:16 for a phone case or poster, a wide 16:9 for a mug or banner). Returns a NEW design (image uuid + url). Note: for an AI-generated EXTENSION of the borders (outpainting) instead of a flat pad/crop, generate a new image with generate_image at the target size — that DOES use the image-generation quota.

[#9ca805]

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYespad (default): letterbox onto a background, keeping the whole design (nothing lost). crop: center-crop to fill the shape, trimming the edges.pad
aspectYesTarget aspect ratio as "W:H". Common: 9:16 tall (phone cases, posters), 16:9 wide (mugs, banners), 1:1 square, 4:5 portrait.
workspaceNo
backgroundNoFill color for the padded bars as #RRGGBB (pad mode only; ignored for crop). Defaults to transparent/white on the platform when omitted.
image_uuidYesThe uuid of an existing design to reshape (from generate_image / list_my_designs).

TDQS

A4.4/5.0
Behavior3/5

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

The only annotation is openWorldHint=true, so the description carries nearly the full behavioral burden, which it does well: it discloses that the operation is quota-free and does NOT consume an image-generation credit, and that it returns a NEW design (uuid + url). However, it doesn't state authorization requirements, whether the source image is left untouched, or any size/format limits, so it stops short of full disclosure.

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

Conciseness4/5

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

Front-loads the core action and the quota-free guarantee, then elaborates on modes and the generate_image alternative. It is information-dense rather than padded, though the trailing '[#9ca805]' token is stray noise and the parenthetical alternatives make it longer than strictly necessary.

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

Completeness5/5

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

With no output schema, the description compensates by specifying the return shape (uuid + url), and it covers mode semantics, the quota implication, and the sibling alternative. An agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 80%, so most parameters are already documented. The description still adds genuine value by mapping aspect ratios to real use cases (tall 9:16 for phone cases, wide 16:9 for mugs) and by re-explaining pad vs crop in outcome terms (nothing cropped vs trims the edges).

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

Purpose5/5

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

States a specific verb and resource ('Fit an EXISTING design image to a target aspect ratio without generating a new one') and explicitly negates the adjacent generative operation, so it is unmistakable against generate_image. The scope ('reshapes an existing image') is front-loaded and unambiguous.

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

Usage Guidelines5/5

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

Gives concrete when-to-use context (adapt a square design to a product's print area, with 9:16 phone case / 16:9 mug examples) and names the alternative explicitly: use generate_image for outpainting instead of flat pad/crop. Both the routing condition and the exclusion are stated.

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

generate_imageAInspect

Generate a design image (split primitive of design_apparel). Returns the raw generated image; follow with process_transparency for apparel that needs a transparent background. Rate-limit errors are classified (model_rate_limited = one model's provider vs platform_rate_limited = this key's ApparelHub throttle vs request_not_sent = the call never reached ApparelHub), and fallback_trail shows any model substitutions.

[#e8fffe]

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoOutput shape. 1024x1024 = square; 1024x1792 = tall/portrait (phone cases, posters, banners); 1792x1024 = wide/landscape (mugs, laptop sleeves, wide banners). Pick to match the product's print area — full-bleed goods like phone cases want a tall design that fills the whole area, or the mockup pads/crops it. To re-shape an EXISTING design without spending another generation, use fit_aspect instead.
styleNo
promptYes
sourceNoExplicit model name, or omit to auto-pick (Nano Banana; OpenAI for abstract).
workspaceNo
no_fallbackNoDisable the model-fallback ladder. By default a rate-limited/transient model transparently retries with a different model (see fallback_trail); set true to fail on the chosen source alone.
augment_prompt_for_transparencyNoAdd the solid-green-background hint so the background can be keyed out (default true).

TDQS

A3.9/5.0
Behavior5/5

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

With only openWorldHint=true in the annotations, the description carries the behavioral burden and does so well: it discloses the return value shape ('raw generated image'), the three-way rate-limit error taxonomy (model_rate_limited vs platform_rate_limited vs request_not_sent), and the fallback_trail substitution signal. This is exactly the kind of operational context an agent cannot get from the schema.

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

Conciseness4/5

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

Purpose is front-loaded, then the follow-up workflow rule, then error semantics — a sensible ordering with dense but non-padded prose. The stray trailing '[#e8fffe]' token is unexplained clutter that costs it a point.

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

Completeness4/5

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

For a 7-parameter, multi-model generation tool with no output schema, the description adequately covers what comes back, what to do next, and the failure modes. It is silent on the cost/credit implication of a generation and on the workspace/style parameters, which prevents a 5.

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

Parameters3/5

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

Schema coverage is 57%, so the schema already documents size, source, no_fallback, and augment_prompt_for_transparency in detail, while style, prompt, and workspace are undocumented in both places. The description touches transparency indirectly (via process_transparency) and mentions fallback_trail, but adds no new parameter-level meaning beyond what structured fields provide, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ('Generate a design image') and positions itself as the split primitive of design_apparel, which helps an agent separate it from the higher-level pipeline tool. It does not, however, distinguish itself from other image-producing siblings such as generate_listing_image or iterate_design, so the differentiation is real but partial.

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

Usage Guidelines3/5

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

Gives one concrete sequencing rule: follow with process_transparency for apparel needing a transparent background. That is genuine conditional guidance, but there is no statement of when to prefer this over design_apparel (the pipeline it belongs to) or when not to use it at all, leaving the alternative-selection reasoning largely implied.

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

generate_listing_imageAInspect

Generate listing photography for an existing product — an on-model shot, a detail crop, a flat lay, or the product in a real setting.

HOW IT WORKS: this EDITS the product's own rendered mockup. It is not text-to-image, and that is the point — the photo shows the actual colourway and the actual printed design, so it depicts the product a shopper will receive.

⚠️ A PRODUCT WITH NO MOCKUP IS REFUSED, not silently generated from scratch. A from-scratch product photo invents a product that does not exist and publishes it as photography of one that does — a listing-takedown and chargeback risk, not merely a quality problem. On product_has_no_mockup, render a mockup preview first (ship_product / create_product do this) and call again. Raw print artwork does not count as a mockup.

guidance is EXTRA wording folded in on top of the chosen preset — it does NOT replace it, and it cannot override the constraint that keeps the garment, colour and artwork unchanged. Use it for setting or mood ("outdoors at golden hour"), not to restate the product.

COST: this spends an image generation from the account's quota, like any other. Four styles across thirty products is 120 generations — more than some plans allow in total. Check the plan before looping over a catalogue.

By default the image is generated and RETURNED, not attached: putting a machine-made photo on a live storefront is a separate decision from making one. Pass attach: true to append it to the gallery — appended, so existing images are kept, unlike set_product_images which replaces the whole gallery.

[#b24313]

ParametersJSON Schema
NameRequiredDescriptionDefault
styleYesWhich preset to use. `on_model` = worn by a person; `detail` = close crop showing fabric and print texture; `flat_lay` = styled flat, shot from above; `lifestyle` = the product in a real setting. The preset supplies the prompt.
attachNoAppend the result to the product's listing gallery (default false). Existing images are kept. Leave false to review the image before it reaches a storefront.
guidanceNoOptional extra direction layered on top of the preset (setting, mood, lighting). Truncated at 500 characters by the platform.
workspaceNoWorkspace uuid (agency accounts).
product_uuidYesThe product to photograph. Its existing mockup is what gets edited.
set_as_coverNoWhen attaching, also make it the listing cover. Ignored unless `attach` is true.
source_image_urlNoWhich of the product's existing listing images to edit. Must be one of them and must not be raw print artwork. Defaults to the product's best mockup — usually leave unset.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only carry openWorldHint, so the description must do the heavy lifting — and it does: it discloses the refusal-on-missing-mockup behavior, that it edits the existing mockup rather than inventing a product, that generation spends account quota, and that the result is returned but not attached by default.

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

Conciseness4/5

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

Front-loaded with the what, then labeled HOW IT WORKS, a bolded warning, COST, and default-behavior sections. Efficient for the amount of risk it must convey, though the cost paragraph and warning overlap slightly and the trailing marker token is noise.

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

Completeness5/5

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

For a 7-parameter mutating/generating tool with no output schema, the description covers refusal conditions, cost, default-vs-attach semantics, and sibling contrast. An agent has everything needed to call it correctly and safely.

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

Parameters4/5

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

Schema coverage is already 100%, but the description still adds meaning: `guidance` is additive and cannot override product fidelity, `attach` appends rather than replaces, and `source_image_url` must be an existing listing image and defaults to the best mockup. This goes beyond the schema text.

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

Purpose5/5

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

States a specific verb and resource — generating listing photography for an existing product — and enumerates the four styles (on-model, detail, flat lay, lifestyle). It crucially distinguishes itself from text-to-image and from from-scratch generation, which an agent cannot infer from the name alone.

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

Usage Guidelines5/5

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

Gives explicit when-not (no mockup → refused, use ship_product/create_product first), names the sibling it contrasts with (set_product_images replaces the gallery, this appends), and explains how to use `guidance` correctly. Even includes a cost/looping caution for catalogue-wide use.

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

get_account_overviewA
Read-only
Inspect

Account name, your role, whether the agency feature is enabled, and seat accounting (used / included / billable). Agency / Enterprise; needs an account-wide key. Read-only.

[#bf5472]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' simply repeats that. The genuinely additive parts are the credential requirement (account-wide key) and the plan gating (Agency/Enterprise), which an agent needs before invoking and cannot get from annotations. No return format or freshness detail is given, but the auth/plan context carries real weight.

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

Conciseness4/5

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

The content is dense and front-loaded: returned fields first, then eligibility/credential constraints, with almost no filler. The stray trailing token '[#bf5472]' is noise that should not be in the definition, which keeps it from a perfect score.

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

Completeness4/5

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

With no output schema present, the description correctly compensates by enumerating the returned fields, and it states plan eligibility and key scope. It is complete enough to call the tool safely, though it omits any note on how seat figures are scoped or whether the agency flag can be absent.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description instead spends its space describing outputs (account name, role, agency flag, seat counts), which is appropriate and adds no conflicting parameter information.

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

Purpose4/5

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

The description enumerates exactly what the tool returns at account level: account name, caller's role, agency-feature flag, and seat accounting (used/included/billable). That is specific and distinguishes it from account-adjacent siblings like list_account_members or get_role_matrix, though it never states an explicit verb such as 'retrieve'.

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

Usage Guidelines3/5

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

It supplies applicability context ('Agency / Enterprise; needs an account-wide key'), which tells an agent the plan tier and credential scope required. However, it names no alternatives and gives no when-not-to-use condition against the many sibling account/settings tools, so 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.

get_api_referenceA
Read-only
Inspect

Discover the full ApparelHub agent API: returns a compact index of every endpoint (path, methods, summary) from the live OpenAPI spec. Use this when no dedicated tool covers what you need, then call it with api_request. Read-only.

Also returns connector, which reports what THIS server actually serves: its version, and the name of every tool. If a capability seems missing, check that first. A tool listed in connector.tool_names that you cannot call means your own tool list is stale, not that the tool is unbuilt — say so and tell the user to reconnect, rather than reporting the feature as missing.

[#5dc40c]

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOnly return endpoints whose path contains this substring (e.g. "orders", "collections").

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds meaningful context beyond that: the return shape (endpoint index plus a `connector` object with version and tool names) and the critical interpretation rule about stale tool lists vs. unbuilt features. It omits any auth or rate-limit notes, keeping 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.

Conciseness4/5

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

Purpose and the api_request handoff are front-loaded, which is correct. The second paragraph is somewhat repetitive (stale list / reconnect / don't report missing are restated), and the trailing '[#5dc40c]' token is unexplained noise that dilutes an otherwise tight definition.

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

Completeness5/5

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

There is no output schema, but the description compensates by explaining both return components (endpoint index and connector block). For a discovery tool with one optional param and read-only annotations, everything an agent needs to call and interpret it is present.

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

Parameters3/5

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

Schema description coverage is 100% and the single `filter` param is fully documented in the schema (substring match with examples). The description adds no extra syntax or semantics for it, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Discover the full ApparelHub agent API') and precisely describes the payload: 'a compact index of every endpoint (path, methods, summary) from the live OpenAPI spec.' It is clearly distinguishable from its sibling api_request, which it explicitly feeds.

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

Usage Guidelines5/5

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

Gives an explicit trigger — 'Use this when no dedicated tool covers what you need' — and names the follow-up tool ('then call it with api_request'). It also states what to do if a capability is missing, which is real routing guidance.

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

get_collectionB
Read-only
Inspect

Get a single collection by uuid, including its member products and per-channel sync status. Read-only.

[#71cbae]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
collection_uuidYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' merely restates that. It does add value by disclosing the returned contents (member products, per-channel sync status), but says nothing about permissions, whether a missing uuid errors versus returns empty, or freshness of the sync data.

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

Conciseness4/5

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

Two short sentences with the scope and payload front-loaded, no filler. Slightly marred by the stray trailing artifact '[#71cbae]' that carries no meaning for an agent.

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

Completeness3/5

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

With no output schema, the description does reasonably well by enumerating the return contents, and annotations cover the safety profile. However, three undocumented parameters, including two required uuids, and no guidance on the workspace scoping leave it short of complete.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters. The description only gestures at 'by uuid' and never addresses the distinction between store_uuid and collection_uuid, both required, nor what the optional 'workspace' parameter does. 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.

Purpose4/5

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

States a specific verb and resource ('Get a single collection by uuid') and goes further to name what the payload contains (member products, per-channel sync status). It is implicitly distinguished from the sibling list_collections by 'single', though it never names the alternative explicitly.

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

Usage Guidelines3/5

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

Usage is implied: 'by uuid' tells the agent this is the direct-lookup path versus a list tool, but there is no explicit when-to-use, no prerequisite statement, and no named alternative such as list_collections or sync_collection.

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

get_garment_detailsB
Read-only
Inspect

Full detail for one garment: the variant matrix (colors/sizes/costs), print templates, ApparelHub pricing floor, and quality tier. Read-only.

[#16a079]

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesThe fulfillment provider to browse, by name (case-insensitive). Must be a provider this account has access to — call list_catalog_providers to see valid values (the set is account-specific). An unrecognized name returns the list of providers available to the account.
workspaceNo
product_ref_idYesThe garment ref id from browse_catalog (a string).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so 'Read-only.' merely repeats structured data. The description does add behavioral value by disclosing exactly what detail set is returned (variant matrix, print templates, pricing floor, quality tier), but says nothing about error behavior or the fact that an unrecognized provider returns a list.

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

Conciseness4/5

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

One front-loaded sentence that earns its place by enumerating the returned fields. The trailing '\n\n[#16a079]' artifact is unexplained noise that slightly hurts a otherwise tight structure.

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

Completeness4/5

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

No output schema exists, so the description must carry return-value meaning, and it does by naming the components of the detail payload. Safety is covered by annotations and the 'Read-only' note; usage routing is the remaining gap.

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

Parameters3/5

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

Schema coverage is 67%: provider and product_ref_id are richly documented in the schema (including the fallback behavior for bad names), while workspace is undocumented in both places. The description adds no parameter meaning beyond the schema, so the baseline-3 holds.

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

Purpose4/5

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

States a specific verb+resource ('Full detail for one garment') and enumerates the returned content (variant matrix, print templates, pricing floor, quality tier), which is more than a restatement of the name. It lacks explicit differentiation from siblings like find_garments or browse_catalog, but 'one garment' vs a browse is implicit.

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

Usage Guidelines2/5

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

The description offers no when-to-use, when-not, or alternative routing guidance. The workflow hint (product_ref_id from browse_catalog) lives in the schema, not the description, so an agent gets no help choosing this tool over find_garments or recommend_garment.

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

get_order_detailsB
Read-only
Inspect

Full detail for one order: line items, payment + fulfillment status, and shipments/tracking. Read-only.

[#c40849]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
order_uuidYesThe order uuid (from list_my_orders).

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the 'Read-only' sentence largely repeats structured data rather than adding to it. The description does disclose the returned content areas (payments, fulfillment, shipments), but says nothing about auth, pagination, or behavior when the order is missing.

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

Conciseness3/5

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

The core sentence is tight and front-loaded, but the trailing '[#c40849]' artifact is stray, non-semantic noise that clutters an otherwise clean definition.

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

Completeness3/5

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

With no output schema, the description carries the return-value burden and does name the main content areas, which is adequate. However, the undocumented workspace parameter and lack of any access/scope notes leave it short of fully complete for a detail-fetch tool.

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

Parameters2/5

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

Schema coverage is only 50% - order_uuid is documented but the workspace parameter is not. The description adds no parameter-level meaning at all, so it fails to compensate for the undocumented workspace argument.

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

Purpose4/5

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

States a specific verb+resource ('Full detail for one order') and enumerates the returned facets (line items, payment + fulfillment status, shipments/tracking). This differentiates it from thin status siblings like check_order_status, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the framing 'Full detail for one order' - an agent can infer this is the deep-dive read vs. list_my_orders or check_order_status, but no when-to-use, 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.

get_orders_summaryA
Read-only
Inspect

Aggregated stats for the orders dashboard: counts of orders pending approval / awaiting payment / in fulfillment / shipped today, plus today's revenue and profit, and a per-store breakdown. Read-only.

[#88d8a4]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered; the description redundantly confirms "Read-only." More valuably, because no output schema exists, the enumeration of returned metrics (counts by status, today's revenue/profit, per-store breakdown) is real behavioral disclosure about what the call yields. It stops short of noting freshness, caching, or time-zone handling for "today."

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

Conciseness4/5

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

Front-loaded with the core purpose and delivered in one tight sentence that earns its length by listing concrete metrics. The trailing "[#88d8a4]" artifact is unexplained noise that slightly detracts.

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

Completeness4/5

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

With no output schema, the description appropriately describes the return contents, and the optional scoping param is fully covered by the schema. For a simple read-only aggregate tool this is nearly complete, missing only freshness semantics and explicit routing away from similar analytics siblings.

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

Parameters3/5

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

Schema coverage is 100% and the single workspace parameter is well documented in the schema (uuid, agency accounts, omit for Default). The description adds no parameter information, so the schema carries the load and the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (aggregated stats) and enumerates the exact metrics returned (pending approval / awaiting payment / in fulfillment / shipped today, revenue, profit, per-store breakdown), so an agent knows precisely what this produces. It does not, however, name or distinguish itself from the similarly named siblings analytics_summary or analytics_breakdown, leaving the agent to infer the boundary.

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

Usage Guidelines3/5

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

"For the orders dashboard" implies a reporting context, so usage is weakly implied, but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative such as analytics_summary or get_order_details. Given the dense cluster of order/analytics siblings, this gap matters.

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

get_role_matrixA
Read-only
Inspect

The workspace roles and the role → capability matrix, so you can pick a role before assigning a member. Agency / Enterprise; needs an account-wide key. Read-only.

[#894f5c]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that: it discloses the authentication requirement ('needs an account-wide key') and the plan gating ('Agency / Enterprise'). It stops short of describing return shape or completeness of the matrix.

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

Conciseness4/5

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

A single front-loaded sentence that carries the resource, the workflow cue, the plan gate, and the auth requirement with no wasted prose. Docked one point for the stray '[#894f5c]' artifact that has no meaning for an agent.

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

Completeness4/5

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

For a zero-parameter, read-only reference lookup with no output schema, the description supplies what an agent needs to call it: purpose, plan eligibility, and key requirement. The returned matrix contents are only summarized ('roles and the role → capability matrix'), leaving some ambiguity about exact output, but it is adequate.

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

Parameters4/5

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

The tool takes no parameters, so per the rubric the baseline is 4 with no parameter semantics to document. Schema coverage is trivially 100%.

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

Purpose4/5

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

States a specific resource (workspace roles and the role → capability matrix) and its end-use (picking a role before assigning a member), which ties it to the assign_workspace_member workflow. It is clearly a read of a role/capability reference, distinct from mutation siblings. Lacks an explicit named sibling comparison, so 4 rather than 5.

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

Usage Guidelines4/5

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

Gives clear context: use this to obtain the matrix 'so you can pick a role before assigning a member,' which orients the agent to the assign flow. It also gates applicability with 'Agency / Enterprise.' No explicit when-not or named alternatives, so not a 5.

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

get_store_settingsA
Read-only
Inspect

Read a store's fulfillment workflow + notification settings: fulfillment_mode (auto/confirm/review), approval_authority (human/agent/rules), the margin / high-value / first-time-customer hold guardrails, auto-reconcile, and payment settings. Read-only.

[#3b3cd0]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidYesThe store uuid (from list_my_stores).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's closing 'Read-only' adds nothing. What it does contribute is scoping context — that the read covers fulfillment workflow, guardrail and payment configuration for a single store — which is genuinely useful, but it discloses no auth requirements, rate limits, or behavior when settings are unset.

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

Conciseness4/5

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

One front-loaded sentence with the verb first, and the long enumeration of settings all earns its place by telling the agent what the read returns. The trailing '[#3b3cd0]' artifact is stray noise that slightly undercuts an otherwise tight structure.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned setting categories (fulfillment_mode with its enum values, approval_authority, guardrails, auto-reconcile, payments), which compensates for the missing return documentation. Parameters are fully covered by the schema, so the only gap is the absence of usage routing.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (workspace and store_uuid, the latter cross-referencing list_my_stores), so the schema carries the burden. The description adds no syntax, format, or workspace-scoping nuance 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.

Purpose5/5

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

States a specific verb ('Read') and resource ('a store's fulfillment workflow + notification settings') and enumerates the exact setting families exposed (fulfillment_mode, approval_authority, hold guardrails, auto-reconcile, payment settings). An agent can distinguish this read-side tool from the sibling update_store_settings without opening either schema.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no explicit routing to sibling tools such as update_store_settings or check_setup_readiness. The field enumeration hints at utility but the description never states the condition that should select this tool.

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

hold_orderAInspect

Put an order on hold with an optional reason, pausing it before it is submitted to fulfillment. Use when the user wants to stop an order from proceeding (e.g. to double-check the design or address). Release it later with approve_order.

[#9a2fd5]

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoWhy the order is being held (defaults to "Manual hold").
workspaceNoWorkspace uuid (agency accounts).
order_uuidYesThe order uuid to hold.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only supply openWorldHint, so the description carries most of the burden and does well: it discloses the timing of the effect (before fulfillment submission) and the reversibility path (release later with approve_order). It omits permission requirements and what state the order enters while held, but the core mutation semantics are covered.

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

Conciseness3/5

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

The prose is tight and front-loads the action and the usage condition. However, the definition is marred by a stray artifact ('[#9a2fd5]') appended to the text, which is noise that does not earn its place.

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

Completeness4/5

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

With no output schema and only a single low-value annotation, the description must carry the context, and it covers what the tool does, when to use it, and how to undo it. Missing details such as required permissions and the resulting order status 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.

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented in the schema. The description only restates that the reason is optional, adding no format, constraint, or interaction detail beyond the schema description. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('Put an order on hold') plus the operational effect ('pausing it before it is submitted to fulfillment'). It does not, however, differentiate itself from close siblings like approve_order_hold, request_hold_changes, or list_order_holds, and its release pointer ('approve_order') is ambiguous given both approve_order and approve_order_hold exist.

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

Usage Guidelines4/5

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

Explicitly names the triggering situation ('when the user wants to stop an order from proceeding') and gives concrete examples (double-checking design or address). It also names the counterpart action for release, but offers no exclusions distinguishing it from the other hold-related siblings.

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

import_size_measurementsA
Read-only
Inspect

Get the blank's real per-size measurements from its fulfillment provider, in the exact shape size_chart_measurements takes. READ-ONLY. Use this instead of asking a merchant to type a size chart, and never instead of asking them when it comes back unavailable.

It imports nothing by itself — adopting a set of measurements is the merchant's decision. Show them the table, let them correct it, then write it back with set_listing_attributes as size_chart_measurements.

available: false is an ANSWER, not a failure. Branch on reason: • provider_publishes_no_size_guide — this provider has no size-guide API at all (Printify and Gelato), so no product of theirs will ever import. Permanent: ask the merchant for the blank manufacturer's own numbers. • no_size_guide_for_this_blank — the provider does publish guides, just not for this item. Normal for non-apparel. • provider_lookup_unavailable — transient. Retry. • product_has_no_fulfillment_provider — nothing to import from.

⚠️ TELL THE MERCHANT WHERE THE NUMBERS CAME FROM. source names the provider and the catalog item. These are measurements a buyer makes a purchase decision on, published in the merchant's name — present them as the provider's figures for a specific blank, not as something you know.

notes, when present, lists what was adjusted on the way through (a provider sometimes files a measurement under a size outside its own size list). Pass those on rather than dropping them.

[#19618b]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
product_uuidYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description reinforces 'READ-ONLY'. Beyond that it discloses the failure envelope (`available: false` is an answer, not a failure) and enumerates four `reason` values with permanence/retry semantics, plus the source-attribution and `notes` caveats. This is behavioral context the schema and annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with purpose and the READ-ONLY flag, then usage, then a bulleted error taxonomy. Long, but each block earns its place; the error bullets are dense rather than redundant. The trailing issue tag is inert noise.

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

Completeness5/5

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

No output schema exists, and the description effectively supplies one by describing the return envelope: `available`, `reason`, `source`, and `notes`, with the meaning of each. Combined with the read-only profile and the handoff to set_listing_attributes, an agent has everything needed to call and interpret it.

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

Parameters2/5

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

Schema coverage is 0% and the description never explains store_uuid, product_uuid, or workspace. It implies the lookup hinges on a product/blank and its provider, but an agent gets no statement of which identifier scopes what or whether workspace is required. With three undocumented parameters this is a real gap.

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

Purpose5/5

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

States a specific verb and resource ('Get the blank's real per-size measurements from its fulfillment provider') plus the shape guarantee ('in the exact shape `size_chart_measurements` takes'). It also implicitly separates itself from the write path (`set_listing_attributes`) that a confused agent might reach for.

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

Usage Guidelines5/5

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

Explicit when-to-use ('use this instead of asking a merchant to type a size chart') and when-not ('never instead of asking them when it comes back unavailable'), plus the downstream workflow (show table, let merchant correct, write back via set_listing_attributes). The 'it imports nothing by itself' clause pre-empts the most likely misinvocation.

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

invite_memberInspect

Invite someone to the account by email, optionally pre-assigning a workspace + role (agency / Enterprise). An existing ApparelHub user is auto-added immediately; a new email gets a pending invite. Needs an account-wide key.

[#d3c424]

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoWorkspace role (required when workspace_uuid is set).
emailYesEmail to invite.
account_roleNoAccount role (default member).
workspace_uuidNoOptional: pre-assign to this workspace uuid.
iterate_designAInspect

Generate a variation of an existing design via img2img (e.g. "make the cactus blue"). Almost every source supports editing; only Google Imagen 4 is text-to-image-only (rejected). Multi-reference edits (several source images) work on Seedream, Flux 2 Pro, and Wan; slow-model edits return 202 and are polled automatically.

[#63592e]

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoEditing source (default Nano Banana).
preserveNo
workspaceNo
no_fallbackNoDisable the model-fallback ladder. By default a rate-limited/transient editing model transparently retries with another edit-capable model (see fallback_trail); set true to fail on the chosen source alone.
change_descriptionYes
source_design_uuidYes

TDQS

A3.5/5.0
Behavior4/5

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

With only openWorldHint in annotations, the description carries most of the burden and does add real behavior: slow-model edits return 202 and are polled automatically, and multi-reference edits are constrained to specific models. It does not disclose cost, failure modes on rejected sources beyond Imagen, or what a polled result returns, so not fully transparent.

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

Conciseness3/5

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

The core sentence is front-loaded and dense with useful facts, but the trailing '[#63592e]' token is stray noise that earns no place, and cramming three model-support clauses into one paragraph slightly blurs the signal.

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

Completeness3/5

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

With 6 parameters, low schema coverage, and no output schema, the description covers async/polling behavior and model constraints but leaves `preserve`, `workspace`, and the shape of the returned variation unexplained. Adequate but with clear gaps for a nontrivial generation tool.

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

Parameters3/5

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

Schema coverage is only 33% across 6 parameters. The description meaningfully supplements `source` (which models support editing vs. multi-reference), but `preserve` (composition/subject/style) and `workspace` get no explanation anywhere, and `no_fallback` is documented only in the schema. Partial compensation for a low-coverage schema.

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

Purpose4/5

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

States a specific verb and resource: generate a variation of an existing design via img2img, with a concrete example. It is distinguishable from the sibling generate_image because it operates on an existing design, but it never names that sibling explicitly, so the differentiation is 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.

Usage Guidelines3/5

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

Gives useful model-selection context (almost every source supports editing; only Google Imagen 4 is rejected; multi-reference works on Seedream/Flux 2 Pro/Wan), which is guidance about the source parameter rather than about when to choose this tool over generate_image or design_apparel. No explicit when-not-to-use or alternative-tool routing.

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

list_account_membersA
Read-only
Inspect

List account members and their per-workspace assignments (agency / Enterprise). Filterable + paginated. Needs an account-wide key. Read-only.

[#b3bd65]

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text match on email/username.
pageNoPage number (default 1).
per_pageNoPage size (default 50, max 100).
account_roleNoFilter by account role.
in_workspaceNoOnly members assigned to this workspace uuid.
workspace_roleNoMembers holding this workspace role (combine with in_workspace for "role in that workspace").

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so 'Read-only' is redundant. However, the description adds genuinely useful behavioral context beyond the annotations: the account-wide key authentication requirement and that results are paginated. Return shape and total counts are still unspecified.

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

Conciseness4/5

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

Front-loaded and tight — purpose, scope, filtering/pagination, auth need, and safety all in two short sentences. The trailing '[#b3bd65]' artifact is meaningless noise that slightly detracts.

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

Completeness4/5

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

For a 6-parameter list tool with no output schema but full schema coverage and read-only annotations, the definition covers the essentials (scope, filters, pagination, auth). It would be complete with a note on what pagination metadata is returned or how it relates to sibling member tools.

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

Parameters3/5

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

Schema coverage is 100%, so all six parameters (query, page, per_page, role filters) are already documented in the schema. The description only summarizes them as 'Filterable + paginated' without adding syntax or combining rules 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.

Purpose4/5

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

States a specific verb (list) and resource (account members) plus the extra value proposition (per-workspace assignments) and the plan scope (agency/Enterprise). It is clearly distinguishable from most siblings, but does not explicitly contrast with near-neighbors like list_invites or get_account_overview.

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

Usage Guidelines3/5

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

Implies usage through 'Filterable + paginated' and a prerequisite ('Needs an account-wide key'), but never states when to choose this over alternatives such as list_invites, assign_workspace_member, or get_account_overview. The context 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.

list_catalog_providersA
Read-only
Inspect

List the fulfillment providers this account can browse catalogs from. Use this to discover valid provider values for browse_catalog / get_garment_details — the set is account-specific and auth-gated on the platform (a provider only appears if this account is entitled to it), so never assume a fixed list. Read-only.

[#f0ed53]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already declare readOnlyHint and openWorldHint, so safety is partly covered, but the description adds real behavioral context: the result set is account-specific, auth-gated on entitlement, and dynamic. That entitlement/authorization disclosure is exactly the kind of value structured fields cannot carry.

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

Conciseness4/5

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

Two well front-loaded sentences with no wasted clauses; the purpose leads and the usage guidance follows. The trailing stray artifact "[#f0ed53]" is noise that should not be in the text.

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

Completeness4/5

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

For a zero-required-param read tool with no output schema, this covers purpose, usage, and the key dynamic/entitlement behavior an agent needs. The only real gap is the undocumented `workspace` parameter and any hint about result shape or pagination.

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

Parameters2/5

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

There is one parameter (`workspace`) with 0% schema description coverage, and the description never mentions it — not whether it scopes the listing, whether it is required, or what the default is. With schema coverage this low, the description was supposed to compensate and does not.

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

Purpose4/5

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

The description gives a specific verb+resource with scope: "List the fulfillment providers this account can browse catalogs from." It is clear what the tool returns, but it never distinguishes itself from the sibling `list_connectable_providers`, which an agent could easily confuse with this one.

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

Usage Guidelines4/5

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

It explicitly tells the agent when to use it (to discover valid `provider` values for browse_catalog / get_garment_details) and adds a strong caution not to assume a fixed list. It stops short of naming when-not to use it vs. the similarly named `list_connectable_providers`.

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

list_collectionsC
Read-only
Inspect

List a store's product collections (categories/groups), each with its product count and per-channel sync status. Read-only.

[#1d7020]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' merely restates structured data. It does add useful return-shape context (product count, per-channel sync status), but says nothing about pagination, ordering, or scope limits.

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

Conciseness3/5

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

The core sentence is front-loaded and efficient, but the trailing '[#1d7020]' artifact is stray noise that should not be in a tool description. The content is otherwise tight.

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

Completeness3/5

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

With no output schema and 0% parameter documentation, the description partially compensates by naming the returned fields, but omits the workspace parameter and any pagination or scoping behavior. Adequate but with clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It implies the store scope ('a store's') matching the required store_uuid, but the workspace parameter is never mentioned, leaving half the params undocumented in both places.

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

Purpose4/5

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

States a specific verb (list) and resource (a store's product collections) and clarifies what the entries are (categories/groups). It implicitly contrasts with the singular get_collection sibling, but never names it, 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.

Usage Guidelines2/5

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 alternative guidance is given despite siblings like get_collection, browse_catalog, and sync_collection overlapping this space. 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.

list_connectable_providersA
Read-only
Inspect

Fulfillment providers and sales channels this account may connect, each marked with how it connects: connect_mode "in_chat" means you can complete it here by asking for a credential, "browser" means you must dispatch an authorization link with start_channel_connect and poll. Also returns where the merchant generates the credential, when there is one. Use this before asking a user for anything, so you ask for the right thing.

[#21af2f]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid the store lives in (agency accounts) — use the store's workspace.uuid from list_my_stores. Omit only for single-workspace accounts; omitting it on a multi-workspace account targets the Default workspace and the call will fail to find a store that lives elsewhere.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true) allowing the lower bar, but the description still adds real behavioural context: the two connect_mode semantics and that it returns where the merchant generates the credential. It does not discuss pagination or result size, which keeps it from a 5.

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

Conciseness4/5

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

Two dense sentences that front-load the resource before the connect_mode rules, and every clause earns its place. The stray '[#21af2f]' artifact at the end is noise that costs a point.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns and does so for the two fields that matter (connect_mode and credential origin). Nothing essential for calling or interpreting it is missing, though a note on ordering or scope of the provider list would round it out.

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

Parameters3/5

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

Schema description coverage is 100% and the single workspace parameter is fully documented in the schema, including the multi-workspace failure mode. The description adds nothing about parameters, so the baseline 3 applies.

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

Purpose5/5

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

States a specific resource — the fulfillment providers and sales channels this account may connect — and goes further by defining the connect_mode field values it returns. An agent can distinguish this from list_catalog_providers, connect_fulfillment_provider, or connect_sales_channel without opening any schema.

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

Usage Guidelines5/5

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

Explicitly prescribes when to call it ('Use this before asking a user for anything, so you ask for the right thing') and routes the agent onward: in_chat mode is handled in-conversation by requesting a credential, browser mode requires start_channel_connect plus polling. That is a complete decision path, not just context.

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

list_fulfillment_issuesA
Read-only
Inspect

List fulfillment issues. With order_uuid: that order's issues plus its report-window eligibility. Without: the workspace-wide issues inbox, filterable by status ('open_any' = open + filed upstream) and store, with limit/offset paging. Read-only.

[#533758]

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoInbox page size (default 50).
storeNoInbox filter: a store uuid.
offsetNoInbox page offset.
statusNoInbox filter; 'open_any' = open + submitted_upstream.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
order_uuidNoScope to one order (the inbox filters below apply only without it).

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the trailing 'Read-only.' largely restates structured data. The description does add that the order-scoped call also returns 'report-window eligibility,' a useful behavioral detail, but says nothing about result volume, pagination behavior beyond schema fields, or what an 'issue' contains.

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

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and mode split in three tight sentences; almost no waste. The unexplained trailing tag '[#533758]' is unexplained noise and the only reason this is not a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter read tool with no output schema, the description does enough: it defines both call shapes and the filter scoping rule. It could say more about the shape of a returned issue or pagination semantics, but nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds a genuine cross-parameter rule the schema does not state: the inbox filters (status, store, limit/offset) apply only when order_uuid is absent. It also restates the 'open_any' expansion, which the enum description already covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List fulfillment issues') and goes further by delineating two distinct modes (per-order vs. workspace-wide inbox), which cleanly separates it from siblings like check_fulfillment_issue, report_fulfillment_issue, and resolve_fulfillment_issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use each mode ('With order_uuid... Without: the workspace-wide issues inbox') and what filtering is available, giving clear invocation context. It stops short of naming an explicit alternative or exclusion condition, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listing_changesA
Read-only
Inspect

What has been changed on your listings, and whether it worked. The other half of channel_performance: that says what to fix, this says whether the last fix landed.

Every shopper-visible change — title, description, images, price, search terms, variants, availability — is recorded automatically when it is made, along with the signal state that prompted it. Once the channel has finalised enough days either side, a verdict is computed on the ONE metric that change should have moved (a title is judged on click-through, not revenue).

⛔ unmeasurable IS THE DEFAULT VERDICT, NOT AN ERROR, and it does not mean the change had no effect. It means the data cannot support a conclusion — most often because the shop is not getting enough views for any single edit to register, in which case the answer is distribution and not more editing. Read verdict_reason before saying anything about a change: no_shop_traffic, window_not_final, metric_not_reported, no_baseline.

confounded means two changes landed close enough together that neither owns the result. Do not attribute it to whichever was most recent.

Read-only. Verdicts settle when read, so a window that closed since you last looked is already answered.

[#a02f68]

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow far back to look. Default 90.
kindNoLimit to one kind of change, e.g. "title" or "price".
storeNoLimit to one store uuid.
productNoLimit to one product uuid — that listing's change history.
verdictNoLimit to one verdict, e.g. "improved" or "worsened".
workspaceNoWorkspace uuid to scope to.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint/openWorldHint; the description adds substantial context beyond them — verdicts are auto-computed per kind on the single metric the change should move, `unmeasurable` is the default rather than an error, `confounded` means overlapping changes, and verdicts settle at read time. These are non-obvious behaviors an agent could not infer from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and the sibling contrast, and most sentences carry real interpretive value. It is somewhat long and ends with a stray artifact token ('[#a02f68]') that serves no purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter read-only analytics tool with no output schema, the description covers the domain concepts an agent needs (verdict taxonomy, verdict_reason values, settling behavior) thoroughly enough that no essential context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all six filters are already documented in the schema; the description adds almost no per-parameter syntax or format detail. It only indirectly touches `days` via the 'finalised enough days either side' remark, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource — what changed on your listings and whether the change worked — and explicitly frames itself against the sibling channel_performance ('that says what to fix, this says whether the last fix landed'). An agent can distinguish it from channel_performance without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (channel_performance) and the condition that separates them, then gives explicit interpretive guidance: read `verdict_reason` before saying anything, treat `unmeasurable` as normal, and don't attribute `confounded` to the most recent change. This is close to a full when-to-use/when-not-to-use contract.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invitesA
Read-only
Inspect

List the account’s pending invites, each with the target workspace name and a copyable accept URL (agency / Enterprise). Needs an account-wide key. Read-only.

[#0cf62c]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'Read-only' is redundant, but the description adds genuine context: the return shape (workspace name + copyable accept URL), the account-wide key requirement, and a tier restriction. It does not cover pagination or result limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that covers purpose, constraints, and safety, with no filler. Minor deduction for the stray '[#0cf62c]' artifact trailing the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless list tool with no output schema, the description is sufficiently complete: it explains what is returned, the auth requirement, and the plan gating. Only pagination/volume behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the description carries no parameter burden and the baseline of 4 applies. No misleading parameter hints are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('List the account's pending invites') and even previews the return payload (workspace name and accept URL). It is easy to distinguish from mutation siblings like invite_member, revoke_invite, and accept_invite, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an availability constraint ('agency / Enterprise') and a prerequisite ('Needs an account-wide key'), which implies when the tool is valid. However, it gives no guidance on when to prefer this over siblings such as resend_invite or revoke_invite, leaving usage largely inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_designsA
Read-only
Inspect

List the merchant's generated design images (newest first). Read-only. Use these design_uuids with the design/product tools. Pass on_products=false to find orphan designs (designs not used by any live product), the supported way to audit a workspace for unused designs before archiving them. Pass archived=true to list already-archived designs. A design with no full_url carries processing_status: "pending"/"processing" means it is still being made and is worth polling, while "failed" means it gave up and processing_error says why. Branch on processing_error_code rather than matching the message text, and do not retry a design whose failure is a content block — it will fail the same way every time.

[#58124e]

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order (default newest).
limitNoMax results (default 20).
searchNoMatch title/prompt where supported.
sourceNoFilter by AI source name, e.g. "Nano Banana". Comma-separated for several; case-insensitive. An unrecognised name is rejected with the list of valid sources, so a result set that comes back is genuinely filtered.
archivedNotrue returns archived designs instead of active ones (default false).
workspaceNoWorkspace uuid (agency accounts).
on_productsNofalse returns only designs NOT used by any live product (orphans, safe to archive). true returns only designs in use. Omit for no filter.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description still adds real behavioral context: newest-first ordering, the meaning of a missing full_url, the pending/processing/failed lifecycle, polling advice, and the non-obvious rule to branch on processing_error_code and not retry content-block failures. That is meaningful disclosure beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage branches, then failure semantics — a sensible order with no filler sentences. However, it is dense and carries a stray artifact token '[#58124e]' that does not belong in a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming the return fields that matter (design_uuids, full_url, processing_status, processing_error_code, processing_error). Pagination behavior beyond a limit default (no cursor/total) is unaddressed, which is the only real gap for a 7-parameter, no-required-args list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds interpretive value the schema lacks — framing on_products=false as the supported orphan-audit path and clarifying that archived=true switches result sets rather than filtering. It does not explain sort/limit/search/workspace beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the merchant's generated design images') plus ordering ('newest first'), which cleanly separates it from siblings like list_my_products and list_my_orders. It also names the return artifact (design_uuids) and points at the downstream tools that consume it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use scenarios: on_products=false for orphan auditing before archiving, archived=true for archived designs, and polling while processing_status is pending/processing. It doesn't explicitly name an alternative sibling tool to use instead in any 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.

list_my_ordersC
Read-only
Inspect

List the merchant's recent orders across channels. Read-only.

[#c5f34c]

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNoISO date lower bound where supported.
statusNo
workspaceNo
store_uuidNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description's only behavioral claim, 'Read-only', merely restates the existing readOnlyHint=true annotation, so it adds no value beyond structured data. It discloses nothing about pagination, result volume, or cross-channel behavior despite openWorldHint=true, which the agent cannot act on without more context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences are front-loaded and free of filler, but the trailing '[#c5f34c]' token is meaningless noise, and the second sentence duplicates the annotation rather than earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five optional filters, no output schema, and low schema documentation, the description leaves an agent without enough information on how to filter or what to expect in return. It is thin for a listing tool in a dense order-management sibling group.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Five parameters exist with only 20% schema description coverage (only 'since' is documented), yet the description names none of limit, status, workspace, or store_uuid. With coverage this low the description should compensate for scope/filter semantics and it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the merchant's recent orders') with a scope qualifier ('across channels') and a recency constraint via 'recent'. It is clearly distinguishable from get_order_details or list_pending_fulfillments, though it never names the sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives in a sibling set containing get_order_details, get_orders_summary, and list_pending_fulfillments. An agent must infer the selection criteria entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_productsA
Read-only
Inspect

List the merchant's products with their fulfillment and sales-channel sync status. Each channel entry also carries health — what the channel last said about the listing. A channel can remove or deactivate a listing at any time, so check health, not just sync_status: a product can read 'Synced' historically and still be gone. Pass store_uuid to scope to one store; omit for all products. Read-only.

[#06afd6]

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo
statusNo
workspaceNo
store_uuidNoScope to one store (omit for all products).
sync_stateNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/openWorldHint already covering the safety profile, the description adds real domain behavior: a channel can remove or deactivate a listing at any time, sync_status can be historically stale, and health reflects the channel's last word. This is exactly the kind of context an agent cannot infer 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by the important stale-sync caveat and scope guidance. Efficient prose, though the trailing '[#06afd6]' artifact is stray noise that should not be in a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of explaining the key return fields (sync_status and health), which is the main thing an agent needs. It remains thin on several input parameters, but as a read-only list tool it is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17% (store_uuid is the lone documented param), so the description carries the burden—but it only restates store_uuid and never explains limit, search, status, workspace, or sync_state. The health/sync_status discussion loosely supports interpreting sync_state but does not define the enum values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the merchant's products') plus the payload it returns (fulfillment and sales-channel sync status). An agent can tell it apart from create_product/archive_product. It does not, however, explicitly contrast itself with nearby listing siblings like browse_catalog or channel_coverage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides parameter-scoped guidance ('Pass store_uuid to scope to one store; omit for all products') and hints at result interpretation via the health check. There is no explicit when-to-use/when-not or named alternative tool, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_storesB
Read-only
Inspect

List the merchant's ApparelHub stores, each with its fulfillment providers (Printful/Printify) and connected sales channels (Shopify/WooCommerce/Wix). Read-only.

[#739377]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' merely restates that. It does add useful context about what each returned store contains (providers and channels), which partly compensates for the absence of an output schema, but omits pagination, ordering, and workspace-scoping behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the primary purpose front-loaded and no filler. The trailing '[#739377]' tracking token is inert noise that slightly detracts from an otherwise clean, well-structured definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with full annotation coverage and no output schema, the description supplies the essential missing piece: what each listed store includes. Pagination and result-size behavior remain unspecified, but nothing critical to invoking it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'workspace' parameter, and that description already explains the agency-scoping and default-workspace behavior. The description adds nothing about the 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list stores) and enriches it with scope: each store's fulfillment providers and connected sales channels. This is clearly distinguishable from siblings like list_my_workspaces or list_my_products. It stops short of naming an alternative tool for the same job, but none of the siblings obviously competes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, no mention of prerequisites, and no alternatives named. The agent can infer that this is the store-enumeration call, but the description does nothing to route it relative to create_store, archive_store, or move_store_to_workspace.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_workspacesA
Read-only
Inspect

List the workspaces this account can act in, each with its uuid. Agency / multi-brand accounts have more than one (e.g. a workspace per client); a single account just has Default. The store / product / order / design tools operate on the Default workspace unless you pass workspace=. Use this FIRST to resolve a workspace by name (e.g. a client's name) to the uuid those tools need. Read-only.

[#358d40]

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint and openWorldHint are already declared, so the trailing 'Read-only' adds nothing. However, the description contributes real behavioral context beyond the annotations: that other tools default to the Default workspace unless workspace=<uuid> is passed, and that agency accounts may have several workspaces. That default-resolution behavior is not inferable from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences that are front-loaded with the purpose, then usage, then the workspace convention; little waste. The trailing token '[#358d40]' is stray noise that slightly degrades an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the full load and does so: it states what is returned (workspaces with uuids), why the count varies, and how the result is used downstream. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description's mention of workspace=<uuid> describes a convention of the consuming tools rather than this tool's inputs, but it usefully explains how the returned uuid is consumed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the workspaces this account can act in') and specifies the payload ('each with its uuid'). It distinguishes itself from workspace siblings (create_workspace, update_workspace, delete_workspace) by being the read/discovery counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this FIRST to resolve a workspace by name ... to the uuid those tools need,' naming the condition that selects it and the follow-on tools it feeds. It also explains when multiple workspaces exist (agency/multi-brand vs single account), giving the agent enough to decide when this call matters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_order_holdsA
Read-only
Inspect

List the design-approval holds on an order (active and released). Set refresh=true to also poll the fulfillment provider for newly-discovered holds. Read-only. Use to see why an order is stuck at the provider and get the hold_uuid for approve_order_hold / request_hold_changes.

[#2c7422]

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNoAlso poll the provider for new holds (default false).
workspaceNoWorkspace uuid (agency accounts).
order_uuidYesThe order uuid to list holds for.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's 'Read-only' is consistent but low-value on its own. It does add real behavioral context beyond the annotations: that holds of both active and released status are returned, and that refresh=true actively polls the external fulfillment provider for newly-discovered holds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight, front-loaded sentences that lead with the resource and scope before usage and the refresh flag. Minor deduction for the trailing '[#2c7422]' artifact, which is stray noise rather than content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description usefully tells the agent that a hold_uuid is returned and that holds come in active and released states. For a three-parameter read-only tool whose annotations already cover the safety profile, this is close to complete, with only pagination/return-shape details absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (refresh, workspace, order_uuid) are already documented in the schema. The description restates refresh's polling behavior and adds the purpose of order_uuid only implicitly (as the source of the holds), which is marginal added value over the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the design-approval holds on an order') and immediately scopes it to active and released holds. This is clearly separable from nearby siblings such as check_fulfillment_issue or list_fulfillment_issues, which are about issues rather than design-approval holds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use case ('see why an order is stuck at the provider') and names the downstream tools that consume its output (approve_order_hold / request_hold_changes), plus the condition for refresh=true. It does not explicitly exclude the other fulfillment/problem-diagnosis siblings, so it stops short of a full when-not statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pending_fulfillmentsB
Read-only
Inspect

List orders in a store that have pending fulfillment data needing attention (used by the reconciliation view). Read-only. Use to find orders that stalled before reaching the provider.

[#80ba1e]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidYesThe store uuid to check.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the 'Read-only' sentence is largely redundant. The description does add useful behavioral context by identifying these as orders stuck before the fulfillment provider, but says nothing about pagination, result size, or ordering, which matters for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the three sentences are short, but the appended token '[#80ba1e]' is stray noise with no meaning, and 'Read-only' duplicates the annotation. The definition is not bloated, but only the middle sentences earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only list tool with no output schema, the description supplies enough to call it correctly: the resource, its scope, and the reconciliation-view context. It correctly does not need to describe return values, though more on result shape or ordering would have pushed it higher.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (store_uuid, workspace) are already documented, including the agency-scoping semantics of workspace. The description adds no format or constraint 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List orders in a store that have pending fulfillment data needing attention') and adds a qualifier ('orders that stalled before reaching the provider') that helps distinguish it from the many order/fulfillment siblings. It is clearer than a generic list tool, though it never names an explicit sibling it should not be confused with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find orders that stalled before reaching the provider' gives an implied use case, and mentioning the reconciliation view adds context. However, with near neighbours like list_fulfillment_issues, check_fulfillment_issue and reconcile_order in the toolset, there is no when-not guidance or explicit alternative routing, leaving the agent to infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_order_no_paymentA
Idempotent
Inspect

Mark an order as having no payment expected (e.g. a free / comp / sample order). Sets its payment status to "no payment". Use when an order should proceed without a recorded payment.

[#23c7f4]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
order_uuidYesThe order uuid to mark as no-payment.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and idempotentHint, so the description carries most of the behavioral burden. It discloses the concrete effect on order state (payment status becomes "no payment") and implies idempotence, but says nothing about reversibility, permissions, or auth requirements for a mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and short, but the second sentence ("Sets its payment status to 'no payment'") largely restates the first, and a stray artifact ("[#23c7f4]") is appended with no meaning. Both are wasted tokens against an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status-setting mutation with no output schema, the description covers what it does and when to use it, which is mostly sufficient. However, it omits whether the marking can be undone and any permission requirements, leaving gaps an agent might hit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so order_uuid and workspace are already fully documented in the schema. The description adds no syntax, format, or sourcing detail 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (mark an order) and the exact state transition (payment status set to "no payment"), with concrete examples (free/comp/sample). This clearly distinguishes it from siblings like record_order_payment or set_order_payment_method without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use condition: "Use when an order should proceed without a recorded payment." It does not name explicit alternatives (e.g. record_order_payment) or state when-not to use it, 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.

move_design_to_workspaceAInspect

Move a generated design image to another workspace (agency accounts). Fails with a 409 (blocking list) if a product that uses the design is mapped to a store or has orders — copy it instead in that case (check first with check_design_move). Use list_my_workspaces for the destination uuid; pass source_workspace if the design is not in your Default workspace.

[#8b8b8a]

ParametersJSON Schema
NameRequiredDescriptionDefault
design_uuidYesThe design to transfer.
source_workspaceNoThe workspace the asset currently lives in. Omit only if it is in your Default workspace; otherwise you must pass it (the platform scopes reads to a single workspace).
destination_workspaceYesDestination workspace uuid to copy/move into. Get it from list_my_workspaces (resolve a client/brand name to its uuid).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Only openWorldHint is annotated, so the description carries most of the burden — and it delivers: it discloses the 409 failure condition and its cause (store mapping / existing orders), plus a prerequisite check. It does not state reversibility or required permissions, but the failure semantics are the key behavior an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and scope, then the failure/alternative, then the parameter sourcing. Every sentence earns its place, though the trailing '[#8b8b8a]' artifact is noise and the third sentence is dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an openWorld mutation with no output schema, the description covers scope, failure mode, fallback tool, prerequisite check, and parameter sourcing — everything needed to invoke correctly. No output schema means return-value explanation is unnecessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already fully documented. The description reinforces destination sourcing via list_my_workspaces and when to pass source_workspace, but this largely restates the schema rather than adding meaning beyond it — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Move a generated design image to another workspace (agency accounts).' This clearly distinguishes it from copy_design_to_workspace and check_design_move without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers when it fails (409 blocking list, when a product using the design is mapped to a store or has orders), the conditional alternative (use copy instead), and the prerequisite tool (check_design_move first). Also routes to list_my_workspaces for the destination uuid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_product_to_workspaceAInspect

Move a product to another workspace (agency accounts) by re-stamping its workspace. Fails with a 409 (blocking list) if the product is mapped to a store or has orders — copy it instead in that case (check first with check_product_move). Use list_my_workspaces for the destination uuid; pass source_workspace if the product is not in your Default workspace.

[#f36e77]

ParametersJSON Schema
NameRequiredDescriptionDefault
product_uuidYesThe product to transfer.
source_workspaceNoThe workspace the asset currently lives in. Omit only if it is in your Default workspace; otherwise you must pass it (the platform scopes reads to a single workspace).
destination_workspaceYesDestination workspace uuid to copy/move into. Get it from list_my_workspaces (resolve a client/brand name to its uuid).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide openWorldHint=true, so the description carries the burden and does so thoroughly: it discloses the 409 failure mode, the exact blocking conditions (store mapping or existing orders), and the required fallback path. This is rich behavioral context an agent cannot get 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action, scope, and failure/fallback path are front-loaded and dense with useful constraints. A stray artifact ('[#f36e77]') at the end is noise and slightly detracts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description supplies everything needed to call it correctly: destination uuid sourcing, source_workspace defaulting, the 409 precondition, and the alternative operation. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters including the source_workspace default caveat and destination uuid source. The description reinforces but adds little beyond what the schema states, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Move a product to another workspace') and scopes it to agency accounts. It also implicitly distinguishes itself from check_product_move and copy_product_to_workspace by naming them as the check/fallback tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers when this will fail ('409 if mapped to a store or has orders'), what to do instead ('copy it'), and the prerequisite check ('check first with check_product_move'). It also tells the agent to use list_my_workspaces for the uuid and when to pass source_workspace.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_store_to_workspaceAInspect

Move a store into one of the account's workspaces (agency / Enterprise). This changes who can access the store, so it needs account owner/admin + an account-wide key.

[#9dde84]

ParametersJSON Schema
NameRequiredDescriptionDefault
store_uuidYesThe store to move (from list_my_stores).
workspace_uuidYesDestination workspace uuid (in the same account).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations carry only openWorldHint, so the description carries nearly the full burden. It does disclose two valuable traits: the mutation changes store access permissions, and it requires owner/admin rights and an account-wide key. It says nothing about reversibility, whether existing store members lose access, or whether the move is atomic — meaningful gaps for an access-control mutation. 3 rather than lower because the access-control side effect and auth requirement are genuinely disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences: the action first, then the consequence and prerequisite. Both earn their place. Minor deduction for the stray '[#9dde84]' token appended to the description, which is noise rather than content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and for a two-parameter mutation the definition covers identity, destination scope, permission requirement, and the key behavioral consequence (access changes). It is close to complete for a call decision; only the post-move effects on existing members and reversibility are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema (store_uuid sourced from list_my_stores, workspace_uuid constrained to the same account). The description adds only the framing that the destination is 'one of the account's workspaces', which does not extend beyond the schema text. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: move a store into one of the account's workspaces, with the scope (agency / Enterprise) called out. It does not distinguish itself from the closely named siblings move_product_to_workspace, move_design_to_workspace, or copy_*_to_workspace, so the agent must infer the store-vs-product 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete precondition — account owner/admin plus an account-wide key — and names the plan tiers where workspaces exist, which tells the agent when the call is viable. It stops short of naming alternatives or stating what to do for non-Enterprise accounts / how this differs from a copy operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_transparencyAInspect

Key a solid background out of a generated image to true RGBA transparency (flood-fill + enclosed-region sweep + tight crop) and upload the result. Runs server-side (Python + Pillow). If the generator produced a tinted/muted green instead of pure #00FF00, it auto-recovers by re-keying in green-dominance mode (safe for art with no bright-green/lime elements). Returns a NEW image_uuid plus keying_mode.

[#3cd7e7]

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoBypass the pure-green safety check and box-key anyway. Use only when you have visually confirmed the palette has no colors near the green background.
image_urlNoThe image URL, if known (else resolved from the uuid).
workspaceNo
image_uuidYes
background_modeNoHow to detect the background. auto (default): box-key a pure-green screen, else auto-recover in dominance mode for a tinted/muted green. box: strict pure-#00FF00 keying (best for colorful designs with warm/lime elements). dominance: green-dominance keying, robust to tinted green screens (safe when the design has no bright-green/lime elements).

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint, so the description carries the burden and does it well: it discloses the server-side implementation (Python + Pillow), the actual keying steps, the auto-recovery path and its risk condition, and that the operation uploads and returns a NEW image_uuid plus keying_mode. That is meaningfully more than the structured fields provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and the follow-on sentences carry real information about the fallback path. However, the trailing stray token '[#3cd7e7]' is pure noise, and the parenthetical algorithm list ('flood-fill + enclosed-region sweep + tight crop') is more detail than an agent needs to select the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by naming the returned values (new image_uuid, keying_mode). It covers implementation, modes, fallback and return shape, but omits failure behavior (e.g., what happens when the source lacks a green screen and force is not set) and says nothing about the non-required workspace/image_url parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60% and the description largely restates the background_mode enum semantics ('auto-recovers by re-keying in green-dominance mode', 'safe for art with no bright-green/lime elements') rather than adding new information. The force parameter and the undocumented workspace parameter are never addressed in the description, so the coverage gap is only partly compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource: 'Key a solid background out of a generated image to true RGBA transparency ... and upload the result,' with the algorithm family (flood-fill + enclosed-region sweep + tight crop) named. This is unambiguous and clearly distinct from siblings like generate_image or fit_aspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: it runs server-side, auto-recovers when the generator emitted a tinted green, and notes the safety condition '(safe for art with no bright-green/lime elements)'. It never explicitly states when to use this versus a regenerate/iterate path, nor names an alternative tool, 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.

recommend_garmentA
Read-only
Inspect

Recommend a garment type for a design/use-case, encoding ApparelHub's garment trade-offs (BC 3001 vs Comfort Colors, budget vs premium, pricing floors). Returns a pick + rationale + alternatives. Advisory / knowledge-based.

[#66d03b]

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_tierNo
design_uuidNoOptional design for context. Design-content-based ranking is a future enhancement; not required today.
target_audienceNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral context: it is advisory rather than acting on data, and it returns a 'pick + rationale + alternatives' — return-shape information that is valuable since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is dense and front-loaded, which is good, but the trailing '[#66d03b]' artifact is unexplained noise that wastes space and could confuse an agent about its meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-required-parameter advisory tool with no output schema, the description covers both what goes in (design/budget/audience context) and what comes out (pick, rationale, alternatives). Only the meaning of the enum values and the 'auto' fallback behavior remain unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (budget_tier and target_audience have enums but no descriptions; design_uuid is documented in the schema). The description partially compensates by tying the recommendation to budget/premium trade-offs and a design/use-case, but it does not explain the 'auto' enum values or how target_audience influences the pick.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Recommend a garment type') plus the domain scope (ApparelHub garment trade-offs: brand, budget tier, pricing floors). It is clearly distinguishable from lookup siblings like get_garment_details and find_garments by being advisory, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a design/use-case' and the tag 'Advisory / knowledge-based' imply when the tool applies, but there is no explicit when-to-use guidance or statement of how it differs from find_garments/get_garment_details, which an agent could easily pick instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconcile_orderA
Idempotent
Inspect

Reconcile a sales-channel order with the channel it came from: pull payment / cancellation FROM the channel and push fulfillment status + tracking TO it. Only sales-channel orders can be reconciled (native orders return reconcilable=false). Use to re-sync an order that drifted (e.g. tracking not relayed to the storefront).

[#ac6b88]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for Default.
order_uuidYesThe order uuid (from list_my_orders / get_order_details).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and idempotentHint, so the description must carry most of the behavioral load, and it does: it discloses the direction of data movement in both directions and the precondition that native orders are not reconcilable. It stops short of noting permission requirements or side effects on channel-side data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences that front-load the action and direction of sync, followed by the eligibility caveat and an example. The stray '[#ac6b88]' token at the end is noise that slightly mars an otherwise clean structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by mentioning the reconcilable=false outcome and the sync semantics. For a two-parameter mutation tool with annotations covering safety, this is nearly complete, though it omits any note on failure modes or what a successful reconcile returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains workspace scoping and that order_uuid comes from list_my_orders / get_order_details. The description adds nothing parameter-specific beyond this, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reconcile) plus resource (order), and spells out the bidirectional data flow: pull payment/cancellation FROM the channel, push fulfillment status/tracking TO it. This is precise enough to separate it from siblings like sync_orders or sync_to_channel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use case ('re-sync an order that drifted, e.g. tracking not relayed to the storefront') and an explicit eligibility rule ('only sales-channel orders can be reconciled; native orders return reconcilable=false'). It does not, however, name the neighbouring sync_orders / sync_to_channel / unsync_from_channel tools as alternatives, so the routing guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_order_paymentAInspect

Record a manual payment on an order that is awaiting payment (payment_status="pending"). Use payment_method="sales_channel" for an order already paid on its storefront (Shopify/WooCommerce/Wix — the channel is the source of payment), or "stripe" for an order taken through ApparelHub's own card flow. This marks the order paid; it does not charge a card.

[#81d42b]

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoOptional amount for the caller's intent; the recorded amount comes from the order total.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
order_uuidYesThe order uuid (from list_my_orders).
payment_methodYese.g. "sales_channel" (paid on the storefront) or "stripe" (ApparelHub card flow).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only openWorldHint in the annotations, the description carries most of the burden, and it does real work: it clarifies the operation records state rather than charging a card ("it does not charge a card") and states the required order status. It still omits reversibility, idempotency, and permission requirements, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded and dense, with the scoping condition and the method-selection rule each in their own sentence. The trailing artifact "[#81d42b]" is stray noise that slightly detracts from an otherwise clean structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-mutating tool with no output schema, the description covers purpose, precondition, no-charge behavior, and method semantics adequately. It leaves out what happens downstream (e.g., fulfillment) and error conditions such as recording against a non-pending order.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining the semantic distinction between the payment_method values with concrete scenarios rather than the schema's bare "e.g." examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Record a manual payment on an order") and states the precondition (payment_status="pending"), which lets an agent identify the operation. It does not explicitly distinguish itself from close siblings like set_order_payment_method or mark_order_no_payment, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use context (order awaiting payment) and explains which invocation applies for each real-world scenario (storefront-paid vs. ApparelHub card flow). It lacks an explicit when-not or a named alternative tool, 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.

recover_from_outageAInspect

Find products in a failed sync state (fulfillment or channel) and, with dry_run=false + a store_uuid, retry the syncs. DEFAULTS TO DRY-RUN (diagnose only).

[#57cf54]

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
dry_runNoDefault true — diagnose only.
workspaceNo
store_uuidNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide openWorldHint=true, so the description carries the safety burden and does well: it discloses that the tool defaults to dry-run (diagnose only) and that a real retry requires two things together. It does not disclose whether retries are idempotent, what happens to partially-failed items, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences that carry the key default and the condition for mutating. A stray '[#57cf54]' token at the end is noise with no informational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for the retry mechanic, but the description mentions only fulfillment/channel sync failures while the schema's scope enum also covers credentials, sync_drift and all, which go unexplained. With no output schema and no required params, the agent is left guessing at scope selection and return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (just dry_run), and the description meaningfully explains the dry_run/store_uuid co-dependency for the retry path. However it says nothing about what the 'scope' enum values (inventory, credentials, sync_drift, all) mean or what 'workspace' does, leaving half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: find products in a failed sync state and retry the syncs, scoped to fulfillment or channel failures. This clearly separates it from the plain sync_to_channel/sync_to_fulfillment siblings, though it does not name an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the operative condition for action versus diagnosis: dry_run=false plus a store_uuid to retry, otherwise default dry-run. Clear usage context, but no explicit when-not or named alternative tool for pure diagnosis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_memberA
Destructive
Inspect

Remove a member from the account entirely (agency / Enterprise): all their workspace assignments are revoked and seat billing synced. The account owner cannot be removed. Needs an account-wide key.

[#e5169b]

ParametersJSON Schema
NameRequiredDescriptionDefault
user_public_idYesThe member's user public_id (from list_account_members).

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, and the description goes well beyond that by disclosing cascade effects (all workspace assignments revoked, seat billing synced), the protected entity (owner cannot be removed), and the auth requirement (needs an account-wide key). These are exactly the behavioral facts an agent needs before invoking a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficiently front-loaded sentences lead with the destructive scope before the caveats. Deducted for the trailing artifact token '[#e5169b]', which is noise that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive tool with annotations covering the safety profile and no output schema, the description covers cascade effects, auth needs, and protected entities. It omits reversibility/irreversibility and failure behavior, which would be valuable for a permanent removal operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already tells the agent the user_public_id comes from list_account_members. The description adds no additional parameter syntax or format detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Remove a member from the account entirely') and pins the scope precisely, making it distinguishable from workspace-scoped siblings like unassign_workspace_member. The parenthetical eligibility scope (agency/Enterprise) and the note about revoking workspace assignments further sharpen what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context and constraints (account-wide key required, account owner cannot be removed), which tells the agent when the call is valid. It stops short of explicitly naming the workspace-level alternative (unassign_workspace_member) or revoke_invite, so routing between removal variants 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.

remove_order_itemAInspect

Remove a line item from a DRAFT order (the order must keep at least one item). Same provider semantics as add_order_item: Printful/Gelato edit in place, Printify cancels + re-creates. Only works while the order is a draft. Get the order_item_id from get_order_details (each item carries an id).

[#b20b6e]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid (agency accounts).
order_uuidYesThe DRAFT order uuid.
order_item_idYesThe order item id to remove (from get_order_details items[].id).

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations expose only openWorldHint, so the description carries nearly the full burden. It usefully discloses provider-specific semantics (Printful/Gelato edit in place, Printify cancels + re-creates) and the minimum-item constraint, but never states that removal is irreversible, whether permissions are required, or whether the order/item identifiers change as a result of the re-create path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and constraint, then supporting semantics, in four tight sentences. A stray bracketed artifact ('[#b20b6e]') at the end is noise but minor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-required-param mutation with only openWorldHint and no output schema, the description covers scope, precondition, provider behavior, and id sourcing, which is substantial. The remaining gap is the destructive/irreversible profile and how the Printify re-create affects identifiers, which matters for a removal tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the schema already documents all three params including the order_item_id source ('from get_order_details items[].id'). The description restates that source rather than adding new meaning, and says nothing about the workspace param, so it adds no net value here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Remove a line item from a DRAFT order') with scope (draft-only) and names the sibling add_order_item it mirrors. An agent can distinguish it from add_order_item and other order-mutation tools without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states when it applies ('Only works while the order is a draft') and a hard precondition ('the order must keep at least one item'), and points to add_order_item for the inverse operation. It does not name an alternative for non-draft removal or explain what to do instead, so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_product_from_collectionB
Destructive
Inspect

Remove a single product from a collection (the product itself is not deleted). If the collection is synced to a channel, the product is removed there too.

[#c2fc5a]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
product_uuidYes
collection_uuidYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is known. The description adds genuinely non-redundant behavior: the blast radius is limited to the collection membership (product survives), and removal propagates to any synced sales channel. That second point is a side effect not derivable from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the primary action first and the two caveats ordered by importance (non-deletion, then channel propagation). The trailing '[#c2fc5a]' fragment is a meaningless artifact that wastes tokens and should be removed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema and undocumented parameters, the description covers the crucial consequences (membership-only removal, channel propagation) but omits permissions, whether the change is reversible via add_products_to_collection, and any confirmation of success. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Four parameters with 0% schema description coverage and no enums, and the description says nothing about any of them — not the required store_uuid/collection_uuid/product_uuid triple, nor the optional 'workspace' selector. With coverage this low the description is expected to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource with scope qualifiers ('a single product'), and it explicitly bounds the operation by noting the product itself is not deleted. This makes it distinguishable from delete_product/archive_product without opening their schemas, though it doesn't name a sibling tool directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and the scope clarification ('single product'), and the parenthetical steers the agent away from conflating this with product deletion. However, there is no explicit when-to-use guidance, no mention of the bulk alternative (add_products_to_collection / update_collection), and no stated prerequisites such as permissions needed on the collection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_fulfillment_issueAInspect

Report a post-sale fulfillment issue (defect) on an order: the item does not match the approved mockup, poor print quality, damaged in transit, wrong/missing item, late or lost. Creates a tracked issue and computes the provider report window (30 days from delivery). Follow up with check_fulfillment_issue for the provider-ready problem report and resolve_fulfillment_issue to file/close it or create a replacement order.

[#dc88bc]

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoThe affected line items. Omit to report the issue against the order as a whole.
titleNoShort title (defaults to the category label).
categoryYesWhat went wrong (e.g. mockup_mismatch = print does not match the approved mockup).
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
order_uuidYesThe order the issue is on (from list_my_orders / get_order_details).
descriptionYesWhat happened, in the words the provider report should carry.
shipment_refNoThe shipment reference the issue belongs to (multi-shipment orders).
resolution_requestedNoWhat to ask the provider for (default 'reprint'). Providers typically resolve as a free reprint or a wallet refund.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only openWorldHint present, the description carries the behavioral burden. It usefully discloses that it creates a tracked issue and computes the provider report window (30 days from delivery), which is real value beyond the annotations. However, it omits permissions/auth requirements, whether the issue is editable or reversible after creation, and any idempotency behavior for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences that earn their place, with the core action stated first and the follow-up chain second. The stray '[#dc88bc]' artifact at the end is meaningless noise that slightly detracts from otherwise tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by saying a tracked issue is created and a report window is computed, plus naming the tools that consume the result. For a mutation tool with rich schema coverage, this is nearly complete; only the response shape and permission prerequisites are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all eight parameters including enums and defaults. The description adds little parameter-level meaning beyond restating categories already present 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Report a post-sale fulfillment issue (defect) on an order') and enumerates the concrete conditions it covers (mockup mismatch, print quality, damaged, wrong/missing, late/lost). It distinguishes itself from siblings by naming check_fulfillment_issue and resolve_fulfillment_issue as the downstream steps, so an agent can place it in the workflow without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: report here first, then check_fulfillment_issue for the provider-ready report, and resolve_fulfillment_issue to file/close or create a replacement. It gives clear usage context and sequencing but stops short of stating when NOT to use this tool (e.g. pre-fulfillment or non-fulfillment order problems).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_hold_changesAInspect

Request design changes on a held shipment instead of approving it. change_kind is 'minor' (notes REQUIRED — describe the edit) or 'full_replacement' (re-do the design). If the provider can't action it via API (Printful today), the result is deferred with a dashboard_url. Get the hold_uuid from list_order_holds.

[#acd99f]

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoWhat to change. Required when change_kind='minor'.
hold_uuidYesThe hold uuid (from list_order_holds).
workspaceNoWorkspace uuid (agency accounts).
order_uuidYesThe order uuid the hold belongs to.
change_kindYes'minor' = tweak the current design (notes required); 'full_replacement' = new design.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide openWorldHint, so the description carries most of the burden and does well: it discloses that notes is REQUIRED for the 'minor' kind, and that when a provider cannot action the request via API (Printful today) the result is deferred with a dashboard_url. This is meaningful outcome behavior not present in structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then the change_kind semantics, then the deferred-result caveat and prerequisite lookup. Efficient overall, though the trailing '[#acd99f]' artifact is stray noise that should not be in the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly covers the possible outcomes (immediate action vs. deferred with dashboard_url) and the required prerequisite lookup, which is what an agent needs to call it correctly. Only the absence of explicit failure/permission behavior keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including the change_kind enum. The description reinforces the notes-required-when-minor rule but adds no syntax or format detail beyond the schema, making baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Request design changes on a held shipment') and explicitly positions it against the sibling action ('instead of approving it'), so an agent can distinguish it from approve_order_hold without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the condition for use (on a held shipment, as an alternative to approving) and names the prerequisite source for hold_uuid via list_order_holds. It does not spell out when the tool should NOT be used beyond the implicit contrast with approval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resend_inviteA
Idempotent
Inspect

Re-send a pending invite’s email with the SAME token and extend its TTL 14 days (agency / Enterprise). Needs an account-wide key.

[#4dd71c]

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_uuidYesThe pending invite uuid (from list_invites).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover openWorldHint and idempotentHint, and the description adds material context beyond them: the SAME token is reused (explaining the idempotent behavior) and the TTL is extended by 14 days. It also states an auth requirement ('account-wide key'). It does not say what happens if the invite is no longer pending.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence, front-loaded with the action and its consequences; the plan and auth requirements follow immediately. The stray '[#4dd71c]' token is minor noise but does not dilute the payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter mutation with no output schema, the description supplies everything an agent needs: eligibility, plan restriction, auth scope, and the token/TTL side effects. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100% – the schema already documents invite_uuid and its origin (list_invites). The description adds no format or sourcing detail 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Re-send a pending invite's email') with the operative behavior spelled out (SAME token, +14 day TTL). It is clearly distinguishable from invite_member (which creates a new invite) and revoke_invite (which cancels one) without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description scopes eligibility to pending invites and states a plan prerequisite (agency / Enterprise), which is real when-to-use context. It stops short of explicitly naming the sibling to use when the invite is not pending or when the user actually wants a fresh invite (invite_member).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_fulfillment_issueAInspect

Progress a fulfillment issue. action='submit_upstream' records that the problem report was filed with the provider (optionally with their claim reference) and returns the dashboard link + summary. action='resolve' closes it with a resolution_type (reprint, refund_wallet, refund_customer, replacement_order, other, none). action='create_replacement' builds a one-click zero-charge replacement (reship) draft order from the affected items; if it cannot be built automatically (no recipient on the provider record, an unlinked variant, or a replacement already exists) the error says what to do instead.

[#a819f9]

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoResolution notes (for action='resolve').
actionYesWhich lifecycle step to take.
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
issue_uuidYesThe issue uuid (from list_fulfillment_issues).
resolution_typeNoHow the issue was resolved. REQUIRED when action='resolve'.
provider_claim_refNoThe provider's claim/case reference (for action='submit_upstream').

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only openWorldHint in annotations, the description carries the burden and does well: it discloses that submit_upstream records the upstream filing and returns a dashboard link plus summary, that resolve closes the issue, and that create_replacement builds a zero-charge draft order. It also names failure modes and says the error tells you what to do instead. Permissions, idempotency, and reversibility are still unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences that walk through actions in lifecycle order with no filler; each sentence earns its place. A stray '[#a819f9]' token at the end is noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-action mutation tool with no output schema and minimal annotations, the description covers action semantics, required pairings, and create_replacement failure modes. Return values are only described for submit_upstream, leaving the other two actions' responses implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real context by mapping parameters to actions (claim reference is 'optionally' used with submit_upstream, resolution_type is required for resolve) and by spelling out the six resolution_type values with their intent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('progress a fulfillment issue') and then enumerates the three lifecycle actions with distinct effects, so an agent can tell it apart from report_fulfillment_issue, check_fulfillment_issue, and list_fulfillment_issues without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each action is tied to a concrete situation ('records that the problem report was filed', 'closes it with a resolution_type', 'builds a one-click zero-charge replacement'), which gives clear context for choosing among them. It does not state prerequisites (e.g., that an issue must already exist via report_fulfillment_issue) or when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_designA
Idempotent
Inspect

Restore a previously archived design so it appears in the default gallery listing again. List archived designs with list_my_designs(archived=true).

[#f0d74b]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid (agency accounts).
design_uuidYesThe design uuid to restore.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint and openWorldHint, so the safety/idempotency profile is covered. The description adds the observable outcome (reappearance in the default listing), but does not mention permissions, reversibility, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight, front-loaded sentences with zero wasted words. The trailing '[#f0d74b]' hex artifact is stray noise that slightly detracts from an otherwise clean structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a restore mutation with no output schema, the description conveys the effect and a discovery path, and annotations carry the idempotency/open-world profile. Adequate for correct invocation, though it omits auth/permission expectations and error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with both parameters documented (design_uuid, workspace). The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (restore) and resource (design) and clarifies the effect: the design reappears in the default gallery listing. It is clearly distinguishable from siblings like archive_design and delete_design.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to use it (to un-archive a design) and routes the agent to list_my_designs(archived=true) to find candidates. It doesn't explicitly state exclusions versus delete or move tools, but the usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_productA
Idempotent
Inspect

Restore a previously archived product (sets it back to active). It is not re-synced to any sales channel automatically — sync it again afterward if you want it live. Use to undo archive_product.

[#8d20f7]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
product_uuidYesThe product uuid to restore.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and idempotentHint, so the description carries the behavioral burden. It discloses a non-obvious side effect — the product is not automatically re-synced to sales channels — which the agent could not 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the action and effect, then the sync caveat, then the undo relationship. The trailing '[#8d20f7]' token is meaningless noise that slightly detracts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter mutation with annotations present and no output schema, the description covers action, resulting state, side effects, and follow-up. Nothing an agent needs to invoke it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both workspace and product_uuid are already documented in the schema. The description adds no format or scoping detail 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (restore) and resource (product) plus the resulting state change (sets it back to active). It also explicitly names the inverse sibling archive_product, so an agent can disambiguate without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use signal (undo archive_product) and a critical follow-up condition (re-sync if you want it live on a channel). It does not state explicit exclusions, but the routing guidance is concrete enough to act on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_inviteA
Destructive
Inspect

Revoke a pending invite so its token can no longer be used (agency / Enterprise). Needs an account-wide key.

[#8a3ee8]

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_uuidYesThe pending invite uuid (from list_invites).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint and openWorldHint, so the safety profile is covered. The description adds real value beyond them: the authentication requirement (account-wide key) and the irreversible outcome that the invite token becomes unusable. It stops short of noting whether the invite record itself is deleted or retained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences that front-load the action and effect. Minor deduction for the stray '[#8a3ee8]' artifact appended to the description, which is noise an agent must ignore.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive mutation with annotations covering the safety profile and no output schema, the description supplies the missing pieces — auth requirement and effect. The only gap is what happens to the invite record post-revocation, which is not strictly needed to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (invite_uuid) and the schema documents it at 100% coverage, including its provenance ('from list_invites'). The description adds nothing further about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (revoke a pending invite) and the concrete effect on the resource (the token can no longer be used). That effect phrasing separates it from accept_invite, resend_invite, and list_invites without needing to name them. It also scopes applicability with '(agency / Enterprise)'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditions: the invite must be pending, it applies to agency/Enterprise, and an account-wide key is required. It does not name alternatives (e.g. resend_invite when the invite should be re-issued rather than killed), so it falls short of explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_channel_settingsAInspect

Set SHOP-WIDE listing settings for one connected sales channel: product compliance attestations, the shipping template, and a fallback size chart. These apply to every listing on that channel, so they are set once rather than per product. Call describe_listing_attributes with integration_uuid (and no product_uuid) first to see which settings this channel defines and what each one accepts.

⚠️ BRAND and the per-listing SIZE CHART are NOT here — they are per-product (use set_listing_attributes), because both describe the blank rather than the shop. default_size_measurements is the one size-chart setting that is shop-wide, and only as a FALLBACK for listings with no provider measurements of their own. Set it only when the whole catalogue is ONE blank: with a mixed catalogue it would be applied to garments it does not describe.

⛔ SOME OF THESE ARE LEGAL ATTESTATIONS. Product-compliance answers (for example California Proposition 65 questions) are statements the MERCHANT makes about their goods, and they carry legal weight. ⛔ NEVER INVENT A VALUE. Relay what the merchant told you. If you cannot get a value from them, leave it UNSET and say so — an unset field is honest, an invented one is not. Do not infer it from the product type, do not copy it from another shop, and do not pick the nearest allowed value because it looks close. In particular: do not answer "No" because it is usually "No", and do not reason from the product being printed apparel — Proposition 65 covers clothing, and some inks and finishes do contain listed chemicals. Ask the merchant, relay their answer, and if they do not have one, leave it unset and tell them it is outstanding.

Answering one of these questions "Yes" can make a follow-up field required — naming the specific chemicals, from a list of hundreds. That follow-up appears in unset_required and is never filled in for the merchant.

A value the channel refuses comes back in rejected with a machine-readable reason and the allowed values echoed, so you can correct it in one more turn rather than guessing. Rejections are never dropped silently.

Existing listings pick these up on their next sync.

[#40e61c]

ParametersJSON Schema
NameRequiredDescriptionDefault
removeNoSetting keys to clear.
valuesYessetting key -> value, exactly as the merchant supplied it. Use an object for a setting whose `value_type` is "object".
workspaceNo
store_uuidYes
integration_uuidYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide openWorldHint, so the description carries the full burden and does so: it discloses the `rejected` response shape (machine-readable reason plus echoed allowed values), the `unset_required` follow-up field, and that existing listings pick these up on their next sync. It also warns that these are legally-weighted merchant attestations and instructs on failure modes (leave unset rather than invent).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is long and uses heavy emphasis markers, but it is well front-loaded: the scope and the primary alternative come first, then the per-product exclusion, then the legal-attestation warning. Every block carries actionable content, though the legal warning is repeated at length and could be tightened without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still explains the relevant return behaviors (`rejected`, `unset_required`) and the deferred-application timing. For a 5-param nested-object mutation tool with only openWorldHint annotation coverage, nothing an agent needs to call it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40% across 5 params, so the description must compensate. It does add real meaning for `values` (setting key -> value exactly as the merchant supplied it, object form for value_type "object") and for `integration_uuid` (used with describe_listing_attributes to discover channel settings), but `remove`, `workspace`, and `store_uuid` get no semantic elaboration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with explicit scope: 'Set SHOP-WIDE listing settings for one connected sales channel', then enumerates the setting families (compliance attestations, shipping template, fallback size chart). It explicitly contrasts itself with set_listing_attributes for the per-product settings, so an agent can distinguish it from that sibling immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use and when-not-to-use guidance: call describe_listing_attributes with `integration_uuid` and no `product_uuid` first, use set_listing_attributes for BRAND and per-listing size charts, and set `default_size_measurements` only when the whole catalogue is one blank. Alternatives and preconditions are named rather than implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_listing_attributesAInspect

Set channel-defined listing attributes on ONE product (Material, Style, Washing Instructions and similar). Call describe_listing_attributes first to learn the field keys and their allowed values.

A PARTIAL WRITE SUCCEEDS. Send four values with one bad and the three good ones are stored while the bad one is reported — you do not have to get them all right at once. A value the channel refuses comes back in rejected with a machine-readable reason and the allowed values echoed, so you can correct it in one more turn rather than guessing. Rejections are never dropped silently.

⛔ NEVER INVENT A VALUE. Relay what the merchant told you. If you cannot get a value from them, leave it UNSET and say so — an unset field is honest, an invented one is not. Do not infer it from the product type, do not copy it from another shop, and do not pick the nearest allowed value because it looks close.

📏 SIZE CHART. US apparel is graded down without one. A chart is normally rendered automatically from the fulfillment provider's real measurements, so most listings need nothing. When one IS flagged, prefer size_chart_measurements (an object — call import_size_measurements to fill it from the provider) over size_chart_template_id: the template id can only come from a human in the channel's own admin, because the channel publishes no way to list, verify or correct one.

⛔ NEVER INVENT MEASUREMENTS. They are what a buyer reads before choosing a size. Do not derive a table from the garment type, do not copy one from a similar product, and do not fill a gap with a plausible number. A malformed table is refused whole, with a reason — nothing is half-applied. A missing cell is fine and renders blank; an invented one means somebody receives a garment that does not fit.

Setting a value does NOT change the live listing on its own — the channel is updated on the next sync. Pass sync: true to push it immediately, or run sync_to_channel afterwards.

[#ef218b]

ParametersJSON Schema
NameRequiredDescriptionDefault
syncNoPush the listing to the channel immediately after storing.
removeNoField keys to clear.
valuesYesfield key -> value. Use an array for a field whose `cardinality` is "multi", and an object for one whose `value_type` is "object" (build it from that field's `channel_ref.object_schema`). Values are relayed exactly as given.
workspaceNo
store_uuidYes
product_uuidYes
integration_uuidNoOnly needed when the store has more than one connected channel.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry openWorldHint, so the description does the heavy lifting and does it well: partial-write semantics, rejected values returned with machine-readable reason and allowed values, no silent drops, deferred sync behavior, and whole-table rejection for malformed size charts. These are exactly the behavioral traits an agent needs and cannot get from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long, but front-loaded with purpose and the partial-write rule, then proceeds in headed blocks. The two anti-invention warnings are emphatic and slightly repetitive in tone, but each carries distinct content (attribute values vs measurements) and the slack is small.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description supplies the return contract (rejected with reason and allowed values), the sync lifecycle, and the prerequisites. An agent has everything needed to call and recover from failure without opening another tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 57% with 7 params, so the description compensates: it clarifies how values are keyed, that arrays are for 'multi' cardinality and objects for 'object' value_type, and it explains sync and the size-chart fields beyond their one-line schema descriptions. It does not cover remove, workspace, or integration_uuid, hence not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set channel-defined listing attributes on ONE product') and names the field families. The 'ONE product' scoping and the pointer to describe_listing_attributes distinguish it cleanly from update_product and describe_listing_attributes in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit sequencing ('Call describe_listing_attributes first'), an alternative path for syncing ('Pass sync: true ... or run sync_to_channel afterwards'), and a preference rule between size_chart_measurements and size_chart_template_id with the reason the latter is limited. This is genuine when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_order_payment_methodA
Idempotent
Inspect

Change the recorded payment method on an order that already has a payment recorded (e.g. correct "stripe" to "sales_channel"). This is a bookkeeping label change; it does not move any money.

[#588a7f]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
order_uuidYesThe order uuid to update.
payment_methodYesThe new payment method label (e.g. "sales_channel", "stripe").

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and idempotentHint, leaving the mutation's side effects unstated. The description fills that gap well by clarifying this is a 'bookkeeping label change' that 'does not move any money', which is exactly the risk an agent needs to know before altering payment data. It does not mention permissions or whether historical records are affected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences that front-load the action and immediately bound its scope; every sentence earns its place. The trailing '[#588a7f]' artifact is stray noise that slightly detracts from an otherwise clean structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation with no output schema, the description covers the key concerns: the precondition, the narrow scope, and the absence of financial impact. Missing only peripheral detail such as permission requirements or error behavior when no payment exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters, including the same payment method examples. The description reinforces the semantics of payment_method but adds no format, validation, or lookup guidance beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (change) and resource (recorded payment method on an order) and adds a precondition — the order must already have a payment recorded — which cleanly separates it from sibling tools like record_order_payment and mark_order_no_payment. The concrete example ("stripe" to "sales_channel") pins down the concept immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The precondition 'an order that already has a payment recorded' tells the agent when this tool is appropriate versus recording a new payment, and the follow-up sentence frames it as a correction scenario. It stops short of naming the alternative tools explicitly, so it falls just under the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_prices_by_marginAInspect

Set each variant's price to hit a target profit margin off its OWN cost: price = cost / (1 - margin). Reads per-variant production cost (populated after the fulfillment sync), applies a per-variant price, then re-syncs connected channels. Use this instead of one flat price when costs tier by size (larger sizes cost more, so a single price gives a different margin per size — and can go negative on the biggest). Requires store_uuid (cost lives on the store-products list, not product detail).

[#54cd6b]

ParametersJSON Schema
NameRequiredDescriptionDefault
marginYesTarget profit margin as a fraction of the selling price, e.g. 0.15 = 15%.
workspaceNo
store_uuidYesThe store the product is in — needed to read per-variant cost and to re-sync channels.
product_uuidYes
also_update_channelsNoDefault true.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide openWorldHint=true, so the description carries most of the behavioral burden and does so well: it discloses that cost is read per-variant, a price is written, then connected channels are re-synced (a side effect), plus the fulfillment-sync prerequisite. It stops short of stating reversibility or what happens to manually-set prices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action and formula are front-loaded, followed by prerequisite, rationale, and the requires note. Every sentence earns its place, though the trailing '[#54cd6b]' artifact adds noise and the single paragraph is somewhat dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema and thin annotations, the description covers the key side effect (channel re-sync), the cost prerequisite, and the required identifier reason. It could say more about failure modes when cost is missing or channel overwrite behavior, but it is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 60% schema coverage, the description adds real meaning: it defines the margin formula, explains why store_uuid is required (cost lives on the store-products list, not product detail), and ties the channel re-sync to also_update_channels. product_uuid and workspace remain unexplained here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (set each variant's price) and goes further by stating the exact formula, price = cost / (1 - margin). This distinguishes it from flat-price siblings like cascade_price_change because the per-variant, cost-driven scope is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use rule ('Use this instead of one flat price when costs tier by size') and explains the consequence of not doing so (single price gives different margins per size, can go negative). It also states the prerequisite that cost is populated after the fulfillment sync.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_product_imagesAInspect

Set an existing product's listing images: attach an uploaded photo or a generated lifestyle shot, reorder them, and choose the cover. Use this AFTER the product exists — create_product / ship_product pick the initial mockup themselves.

⚠️ THE LIST REPLACES, IT DOES NOT MERGE. What you send becomes the whole gallery, in the order given. To add one image, READ the current list first and send it back with the new entry in it — sending the new entry alone deletes every other image. Pass images: null to reset the gallery back to the product's provider mockups.

⚠️ ORDER IS FUNCTIONAL, NOT COSMETIC. Channels cap how many images a listing may carry and TRUNCATE IN GALLERY ORDER, so position decides what actually ships: TikTok Shop takes 9, Wix 15, Shopify and WooCommerce are unlimited. On a capped channel an image in position 10 is not a lower-priority image, it is an absent one. Put the images that must survive first. The platform stores at most 20.

Each entry carries provenance. source says where the file came from (mockup / upload / ai_mockup / print_file / unknown). ai_generated is SEPARATE and tri-state on purpose: an uploaded photo may itself have been AI-generated and the platform cannot detect that, so only you can say. Set it truthfully — true, false, or leave it unset when you genuinely do not know. Do not guess it from source.

cover sets the display image independently of order, so the cover need not be first. A cover that is not in the gallery is added to it. Replace the gallery without naming a cover and the cover follows to the new first image.

CONCURRENCY: this reads the product first and passes its version back with the write, so a change someone else made in between is REFUSED rather than silently overwritten. On a conflict the tool re-reads and returns conflict: true with the current images — it does NOT retry, because the list you built was based on a gallery that no longer exists. Rebuild from current_images and call again.

[#1d62ac]

ParametersJSON Schema
NameRequiredDescriptionDefault
coverNoURL of the image to show as the listing cover. Independent of gallery order. Added to the gallery if it is not already in it.
imagesNoThe COMPLETE ordered gallery, replacing whatever is there. Null resets to the product's provider mockups. Omit to change only the cover.
workspaceNoWorkspace uuid (agency accounts).
product_uuidYesThe product whose listing images to set.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply openWorldHint, so the description carries the burden and does so richly: replace-not-merge semantics, the destructive consequence of sending a lone entry, provider truncation caps (TikTok 9, Wix 15), the 20-item platform limit, optimistic-concurrency refusal with conflict:true and no auto-retry, and cover resolution rules. This is far beyond structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but densely front-loaded: the highest-risk fact (the list replaces) is the first warning, followed by order semantics, provenance, cover, and concurrency in descending priority. Slightly heavy with warning glyphs and a trailing color token, but nearly every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still tells the agent what comes back on conflict (conflict:true plus current_images) and how to proceed. Combined with the ordering/limit rules and reset semantics, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself already documents source and ai_generated well, but the description adds cross-parameter meaning the schema lacks: images:null resets to provider mockups, omitting images changes only the cover, cover need not sit first and is auto-added if absent, and that ai_generated must not be inferred from source. Some overlap with schema, hence not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (set a product's listing images) and immediately distinguishes itself from create_product / ship_product, which pick the initial mockup themselves. An agent can select this over siblings without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit on when to use ('AFTER the product exists'), names the alternatives that do it implicitly, and even spells out the read-then-resend workflow for adding a single image. Exclusions and prerequisites are stated, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ship_productAInspect

End-to-end pipeline in ONE call: take a design, generate + verify a mockup (one per imported color, so every color variant has a matching mockup), create the product with the correct field names, add all variants, associate with a store, sync to fulfillment, then (optionally) sync to sales channels as DRAFT. Handles EMBROIDERY garments automatically WHEN the garment is actually embroidered: routes the design to the real embroidery placement and attaches thread colors (derived from the design, or pass thread_colors). Headwear is NOT inherently embroidered -- some providers carry printed (DTF) caps that take photoreal art as-is, so check accepts_photoreal on the garment rather than assuming, and call find_garments before concluding a design cannot go on a hat. Face goods (canvas, posters, backpacks, bags, socks, towels, blankets, pillows, cases...) default to print_style "fill": the design is recomposed onto an aesthetically matching background and printed edge-to-edge, so no green-screen background or contrasting borders reach the product. Enforces pricing floors and guards the AQUA-vs-Navy variant trap. Streams progress. PREFER this over chaining create_product + add_variants + sync_to_fulfillment + sync_to_channel yourself — especially for AUTOMATED or SCHEDULED runs — because it guarantees the correct order (store association + fulfillment sync BEFORE any channel sync). Use the split primitives only when you deliberately need a partial/interactive flow.

[#57ec3c]

ParametersJSON Schema
NameRequiredDescriptionDefault
garmentYes
pricingYes
variantsYes
workspaceNo
design_urlNoThe design URL, if known (else resolved).
store_uuidNoOmit to create a standalone (unassociated) product.
design_uuidYesThe design to print. Comes from generate_image / design_apparel, OR from upload_design when the merchant already owns the artwork (a logo, a brand mark, a cleared cover). Never regenerate a mark you were given as a file.
print_styleNoHow the design sits on the print face. "fill": recompose onto a matching background and print edge-to-edge (default for face goods like canvas/backpacks/bags/socks/towels/blankets/pillows/cases). "placed": the design floats with transparency preserved (default for apparel and embroidery). "auto" (default) picks by garment.
product_metaYes
thread_colorsNoEMBROIDERY garments only: explicit Printful thread palette colors. Omit to auto-derive from the design (mapped to the fixed 15-color palette).
generate_mockupNoDefault true.
sync_to_channelsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Only openWorldHint is annotated, so the description carries the behavioral burden and does so richly: one mockup per imported color, automatic embroidery routing with thread colors, DTF vs embroidery distinction via accepts_photoreal, the 'fill' recomposition for face goods, pricing-floor enforcement, the AQUA-vs-Navy variant guard, and guaranteed ordering (store association + fulfillment sync BEFORE channel sync). It also notes progress streaming. This is far beyond what the single annotation conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipeline is front-loaded in the first sentence and each subsequent clause conveys distinct operational detail, so length is mostly justified by the tool's complexity. Minor deductions for dense parenthetical asides and a stray trailing artifact ('[#57ec3c]') that add noise without meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-param, nested-object, no-output-schema tool, the description covers the end-to-end flow, the key defaults, the ordering guarantee, and progress streaming, which is close to sufficient. It stops short of stating failure/error semantics or permission requirements, but nothing an agent needs to invoke it correctly is critically missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 12 parameters and only 50% schema description coverage, the description compensates well for several: thread_colors is scoped to embroidery with an auto-derive fallback, print_style defaults ('fill' for face goods, 'placed' for apparel/embroidery), and sync_to_channels is described as producing DRAFT items. However, params such as workspace, design_url, generate_mockup, pricing internals, and provider_variant_ids are left to the schema, so it does not fully close the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('End-to-end pipeline in ONE call') and enumerates the exact steps performed (mockup, create product, add variants, store association, fulfillment, channel sync). It explicitly distinguishes itself from the chained primitives create_product + add_variants + sync_to_fulfillment + sync_to_channel, so an agent can route without opening sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit preference rule ('PREFER this over chaining... especially for AUTOMATED or SCHEDULED runs') and names the exclusion condition ('Use the split primitives only when you deliberately need a partial/interactive flow'). It also adds a domain precondition: call find_garments / check accepts_photoreal before assuming a design cannot go on a hat.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_channel_connectAInspect

Begin a browser-based connection (Printful, Shopify, TikTok Shop, Fourthwall). Shopify additionally requires shop_url, the merchant myshopify domain — ask for it before calling. Returns an authorization URL to give the user. THE CONNECTION IS NOT FINISHED WHEN THIS RETURNS. You must keep polling check_connection_status (passing the same provider_uuid) until it reports connected, then tell the user. The browser tab where they authorize is NOT this conversation and cannot report back to you, so polling is the only way you or they will learn it worked. Poll every few seconds, up to about two minutes, and if it has not landed by then ask whether they finished authorizing rather than giving up silently. If they need to create an upstream account first, let them, then call this again for a fresh link.

[#6d4006]

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich family this provider belongs to (from list_connectable_providers.family).
shop_urlNoRequired for Shopify only: the merchant's myshopify domain, e.g. your-store.myshopify.com. Ask the user for it; it is the domain in their Shopify admin URL, not their custom storefront domain. Omit for every other provider.
workspaceNoWorkspace uuid the store lives in (agency accounts) — use the store's workspace.uuid from list_my_stores. Omit only for single-workspace accounts; omitting it on a multi-workspace account targets the Default workspace and the call will fail to find a store that lives elsewhere.
store_nameNoName for a NEW store, when connecting fulfillment without an existing store_uuid.
store_uuidNoStore to attach to. Required for sales_channel. For fulfillment, omit it together with store_name to create a new store.
callback_urlNoOMIT THIS. The platform fills in the callback registered with the provider, and for Shopify that registered URL is the only one that works — anything else is refused, either by us or by Shopify with an error naming neither what was sent nor what was wanted. Set it only if you have been given a specific URL to use.
provider_uuidYesProvider uuid (from list_connectable_providers).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide only openWorldHint=true, so the description carries the burden and does so: it discloses that the connection is NOT finished on return, that the browser tab cannot report back, the polling cadence (~2 minutes), the fallback if it hasn't landed, and the callback_url restriction. This is exactly the async/failure-mode context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Cap-heavy but front-loaded and well ordered: what it does, the Shopify precondition, the return value, then the polling obligation. The trailing unlabeled artifact '[#6d4006]' is stray noise that slightly detracts from otherwise disciplined prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only a sparse annotation, the description fills the gaps completely: it names the return value (authorization URL), the required follow-up tool and argument, and the terminal condition. Nothing needed to call and complete this flow is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including shop_url and callback_url is already documented in the schema. The description restates the Shopify shop_url precondition and reinforces omitting callback_url, adding emphasis but little new semantics beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Begin) plus resource (browser-based connection) and enumerates the providers it covers (Printful, Shopify, TikTok Shop, Fourthwall), so the agent knows exactly what it starts. It does not distinguish itself from the very similar siblings connect_fulfillment_provider and connect_sales_channel, so sibling differentiation is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: ask for shop_url before calling for Shopify, poll check_connection_status after, re-call for a fresh link if the user must first create an upstream account. It is strong on sequencing but never says when to prefer this over the two connect_* sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_order_to_fulfillmentA
Idempotent
Inspect

Manually submit an order to its fulfillment provider (Printful/Printify) as a DRAFT. For sales-channel orders this auto-fetches the recipient from the channel. Use to un-stick a paid order that never got submitted; confirm it afterward with confirm_order if the store requires confirmation.

[#437d68]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for Default.
order_uuidYesThe order uuid (from list_my_orders / get_order_details).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and idempotentHint, leaving side-effect disclosure to the description, which does deliver: the submission lands as a DRAFT at an external provider, sales-channel orders auto-fetch the recipient, and some stores require a confirming call afterwards. It does not say whether a submission can be retracted or what the provider returns, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with the action and its draft nature stated first, then the use case and follow-up. The trailing token '[#437d68]' is unexplained noise that costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-output-schema mutation tool with complete schema coverage, the description supplies everything an agent needs: the manual trigger, the draft semantics, the auto-fetch behavior, and the confirm_order follow-up.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage on only two parameters, the schema already explains workspace scoping and the order_uuid source (list_my_orders / get_order_details). The description adds no parameter-level detail, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (submit) + resource (order) + destination (fulfillment provider, naming Printful/Printify) + scope (as a DRAFT). The word 'Manually' immediately separates it from the automated sync_to_fulfillment sibling, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition ('un-stick a paid order that never got submitted') and names confirm_order as a required follow-up when the store requires confirmation. It stops short of stating when NOT to use it (e.g. when sync_to_fulfillment is the right path for non-stuck orders), so it is strong but not fully explicit about the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_collectionAInspect

Sync a collection to a sales channel (creates/updates the channel-side category and places all products in it that are already synced there). integration_uuid selects which channel; not all channels support collections (e.g. TikTok Shop), which returns a clear "collections_unsupported" error.

[#7f246a]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
collection_uuidYes
integration_uuidYesThe sales-channel integration to sync this collection to (required by the platform).

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint, so the description must carry the mutation story and it does: it discloses the create/update side effect on the channel-side category, the product-placement behavior, and a named error condition. It omits permissions, idempotency, and what happens when products are later removed from the collection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two-sentence body is dense and front-loaded with the operation and its channel effect, which is good. However, the trailing artifact '[#7f246a]' is pure noise, and the parenthetical pushes the core effect ahead of the selection rule.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with only an openWorldHint annotation, no output schema, and low schema description coverage, the description covers side effects and one failure mode but leaves required identifiers (store_uuid, collection_uuid), auth requirements, and return behavior unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, so the description must compensate, and it does not: store_uuid and collection_uuid are undocumented in both places, and the only parameter it discusses (integration_uuid) is already described in the schema. It adds no new parameter meaning beyond the schema's own text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Sync a collection') plus the target ('to a sales channel') and spells out the channel-side effect (creates/updates the channel-side category and places synced products in it). That clearly separates it from sync_to_channel/sync_to_fulfillment by object, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the selection rule for the channel (integration_uuid) and gives a real when-not case: channels that don't support collections, e.g. TikTok Shop, return 'collections_unsupported'. There is still no routing pointer to a fallback tool for unsupported channels, 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.

sync_ordersA
Idempotent
Inspect

Pull the latest orders from connected fulfillment providers. Pass store_uuid to sync one store; omit it to sync all of your stores. Use to refresh orders that have not come through yet.

[#64e731]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidNoScope the sync to one store (omit for all stores).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare openWorldHint (external provider contact) and idempotentHint (safe to repeat), so the safety profile is covered. The description adds that it pulls/refreshes, but says nothing about latency, rate limits, partial failures, or what is returned, which would be valuable for a network sync.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose, and each earns its place. The stray '[#64e731]' token is unrelated noise that slightly detracts, but the body is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a scoped sync action with no output schema needed and annotations covering safety and external contact, the description gives enough to invoke correctly. Missing only operational detail such as timing or failure behavior, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates the store_uuid semantics ('sync one store' vs 'sync all') but adds no syntax or format detail, and does not mention the workspace parameter at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Pull the latest orders from connected fulfillment providers'), and the pull direction distinguishes it from push-oriented siblings like sync_to_fulfillment. It does not explicitly name or compare against those siblings, but the direction and source are clear enough to identify the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to refresh orders that have not come through yet' gives a clear trigger condition, and the sentence on store_uuid vs. omission explains the scoping decision. No exclusionary guidance or named alternatives, but the context is sufficient for correct use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_to_channelAInspect

Sync one product to a sales channel (WooCommerce/Shopify/Wix) as a listing. PREREQUISITE: the product must first be associated with the store AND synced to its fulfillment provider — call sync_to_fulfillment(product_uuid, store_uuid) FIRST (it does the store association too). If that prerequisite is missing, this tool now AUTO-HEALS it (associate + fulfillment-sync, then retries once) instead of failing with "product not associated with store" — but the clean, explicit order is sync_to_fulfillment then sync_to_channel, and ship_product does the whole pipeline in one call. Defaults to DRAFT — only push live when the user explicitly asks.

[#32962d]

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo
workspaceNo
store_uuidYes
product_uuidYes
integration_uuidYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide only openWorldHint, so the description carries the behavioral burden and does so well: it discloses a non-obvious side effect (auto-heal that performs association + fulfillment sync and retries once), the default state, and the resulting write semantics. These are exactly the hidden behaviors an agent needs before invoking a mutating sync.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and prerequisite are front-loaded correctly and most sentences earn their place, but the final line is a stray bracketed artifact ('[#32962d]') and the auto-heal clause is dense enough to require re-reading. Minor bloat rather than efficient brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param, no-output-schema mutation tool, the description covers the risky parts well (prerequisites, auto-heal, draft default), so an agent can call it safely. It is still incomplete on parameter semantics — integration_uuid and workspace are unexplained, and there is no note on what a successful sync returns or how to detect partial success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters. The description compensates partially: it gives meaning to 'state' (defaults to draft, live only on explicit request) and names product_uuid and store_uuid in the prerequisite call signature. However, integration_uuid and workspace are never explained anywhere, leaving two required/optional params undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Sync one product to a sales channel ... as a listing') and even names the concrete channel types (WooCommerce/Shopify/Wix). An agent can immediately distinguish this from sync_to_fulfillment, unsync_from_channel, or set_channel_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit prerequisite ordering (sync_to_fulfillment must run first), the exact failing condition to avoid ('product not associated with store'), an alternative that collapses the pipeline (ship_product), and a usage constraint ('Defaults to DRAFT — only push live when the user explicitly asks'). This is textbook when/when-not/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_to_fulfillmentAInspect

Associate a product with a store AND sync it to that store's fulfillment provider (Printful/Printify). This is the REQUIRED step before sync_to_channel: it both puts the product on the store (a product from create_product is standalone) and creates the manufacturing path the sales-channel listing binds to. Run it after the product has variants.

[#58f859]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
product_uuidYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry openWorldHint=true, so the description carries most of the behavioral burden and does well: it discloses the two side effects (placing the product on the store AND creating the manufacturing path) and a prerequisite (variants must exist). It does not cover reversibility, failure behavior, or auth/provider prerequisites, so it stops short of full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and sequencing, with no filler. A stray token '[#58f859]' at the end is noise that slightly detracts from otherwise tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with no output schema and only an openWorldHint annotation, the description covers purpose, ordering relative to siblings, and prerequisites, giving an agent enough to call it correctly. The undocumented workspace parameter and untold failure modes are the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all three parameters. It usefully grounds product_uuid and store_uuid in the associate/sync semantics and notes that a create_product result is standalone, but the workspace parameter is never mentioned or explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise compound verb+resource: it associates a product with a store and syncs it to that store's fulfillment provider (Printful/Printify). It also distinguishes itself from the lookalike sibling sync_to_channel by describing the manufacturing path this creates versus the sales-channel binding that comes later.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames itself as 'the REQUIRED step before sync_to_channel', naming the alternative and the ordering condition. It also gives a prerequisite ('Run it after the product has variants'), leaving no inference about when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unapprove_orderA
Idempotent
Inspect

Revert an approved order back to pending so it can be reviewed / re-approved. Only works if the order has NOT yet been submitted to the fulfillment provider. Use to undo an approve_order that was done too early.

[#1d050e]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for Default.
order_uuidYesThe order uuid (from list_my_orders / get_order_details).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and idempotentHint, so the description properly carries the burden and adds a crucial behavioral precondition (the order must not have reached the fulfillment provider) and the resulting state transition to pending. It stops short of describing permission requirements or failure behavior, but the key gating constraint 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight, front-loaded sentences that each carry information (effect, precondition, motivation). The trailing formatting artifact '[#1d050e]' is noise that slightly mars an otherwise clean structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description covers effect, precondition, and intent. It doesn't address error semantics when the precondition fails, which is the only meaningful remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — order_uuid and workspace are already documented in-schema (including where to obtain the uuid elsewhere) — and the description adds nothing parameter-specific. Baseline 3 is correct when the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Revert an approved order back to pending') plus the resulting state, which lets an agent distinguish it from approve_order and hold_order without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the originating action it undoes ('undo an approve_order that was done too early') and states the hard exclusion ('Only works if the order has NOT yet been submitted to the fulfillment provider'), so both when-to-use and when-not-to-use are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unarchive_storeA
Idempotent
Inspect

Restore an archived store. It comes back as CLOSED (or ACTIVE if a fulfillment provider is still connected); if it landed CLOSED, connect a provider and call activate_store to reopen it.

[#468f04]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidYesThe store uuid to unarchive.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint and idempotentHint, so the description's disclosure of the resulting state machine (CLOSED vs ACTIVE depending on provider connectivity) is genuinely additive behavior the annotations cannot express. It does not mention permissions/auth requirements, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, and the conditional follow-up is compressed into one sentence with no filler. The trailing token "[#468f04]" is stray noise that slightly dents an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully explains what state the store ends up in after the call, and it covers the follow-up path via activate_store. Only auth/error conditions are left unspecified, which is a minor omission for a two-parameter restore operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (workspace, store_uuid) are documented in the schema, so the baseline is 3. The description adds no format or scoping detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (restore) and resource (archived store), and the post-condition (returns as CLOSED, or ACTIVE if a fulfillment provider remains connected) makes it unambiguous against the sibling archive_store. An agent can distinguish it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes the agent onward: if the store lands CLOSED, connect a provider and call activate_store to reopen it. Naming the sibling tool plus the condition that selects it is exactly the when/when-next guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unassign_workspace_memberA
Destructive
Inspect

Revoke a member's assignment to a workspace (agency / Enterprise). The account owner cannot be unassigned from the Default workspace. Needs an account-wide key.

[#7d3ad6]

ParametersJSON Schema
NameRequiredDescriptionDefault
user_public_idYesThe member's user public_id.
workspace_uuidYesWorkspace uuid (from list_my_workspaces).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true. The description adds genuine behavioral context beyond that: an authentication requirement (account-wide key) and a hard restriction on the Default workspace owner. Minor gaps remain (reversibility, side effects on other workspaces), but this is solid added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two lean sentences with the action front-loaded and the constraint following immediately; nothing is padded. The trailing '[#7d3ad6]' artifact is unexplained noise that slightly hurts otherwise clean structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 2-parameter mutation with no output schema, the description covers the action, an auth prerequisite, and a key restriction, while annotations carry the safety profile. It is essentially complete for correct invocation, missing only sibling routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (workspace_uuid, user_public_id) are already documented in the schema, and the workspace_uuid description even points to list_my_workspaces. The description adds no format or sourcing detail beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Revoke') and resource ('a member's assignment to a workspace'), scoping it to agency/Enterprise accounts. This clearly distinguishes it from the inverse sibling assign_workspace_member and from account-level remove_member.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a useful prerequisite ('Needs an account-wide key') and a constraint ('account owner cannot be unassigned from the Default workspace'), which implies usage context. However, it never explicitly contrasts with the adjacent siblings assign_workspace_member or remove_member, so the agent must infer the correct choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unsync_from_channelA
DestructiveIdempotent
Inspect

Remove a product from ONE sales channel, leaving every other channel and the fulfillment provider untouched. The product stays in ApparelHub; only that channel listing goes away. Use this to delist from a single channel — do NOT hand-roll it against the raw unsync endpoint: that endpoint is product-level and defaults to detaching fulfillment AND cascading to every channel, so getting the parameters slightly wrong unsyncs far more than you asked for. To remove a product from EVERYTHING, use archive_product instead.

[#bd6407]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
store_uuidYes
product_uuidYes
integration_uuidYesThe sales-channel integration to remove the listing from. Required: without it the platform would cascade to fulfillment and every other channel.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, and the description adds genuinely non-redundant behavior: the product survives in ApparelHub, only the channel listing is removed, and omitting the integration parameter cascades to fulfillment and every other channel. That is exactly the kind of failure-mode disclosure annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the scoping constraint, then the warning, then the alternative — a sensible priority order with little filler. The trailing '[#bd6407]' token is a stray artifact that adds no value and slightly mars an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, no-output-schema mutation tool, the description covers side effects, scope, the raw-endpoint pitfall and the correct alternative. It does not mention auth/permission requirements or what a successful call returns, but the critical invocation risks are addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, so the description needs to compensate. It does explain integration_uuid's role and the consequence of getting parameters wrong, which adds real meaning. However, store_uuid, product_uuid and workspace are left entirely to the schema, so the low coverage is only partly offset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with explicit scope: 'Remove a product from ONE sales channel, leaving every other channel and the fulfillment provider untouched.' It also clarifies the blast radius ('the product stays in ApparelHub') and names the sibling for the broader operation (archive_product), so an agent can distinguish it from sync_to_channel and archive_product without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('delist from a single channel'), explicit when-not-to-use ('do NOT hand-roll it against the raw unsync endpoint'), and names the correct alternative for removing from everything ('use archive_product instead'). The reasoning for avoiding the raw endpoint is given, not just the prohibition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_collectionCInspect

Update a collection's name and/or description. A name change is sent to the platform as the collection title. Editing a synced collection marks it for re-sync.

[#1d73cf]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
workspaceNo
store_uuidYes
descriptionNo
collection_uuidYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide only openWorldHint=true, so the description carries most of the behavioral burden. It helpfully discloses that the name is transmitted upstream as the collection title and that edits to a synced collection flag it for re-sync, which is genuine side-effect information. It does not address permissions, whether removal of name/description is possible, or reversibility, leaving meaningful gaps for a mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded, efficient sentences convey the core action and side effects with no filler. However, the trailing artifact '[#1d73cf]' is stray noise that does not belong in a tool description and slightly undermines structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter mutation with no output schema and minimal annotations, the description covers the core action and one important side effect but leaves required identifiers and the workspace parameter unexplained. It is adequate to attempt a call but not complete enough to anticipate edge cases like synced-collection behavior on other fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description only illuminates 2 of the 5 parameters (name, description), while store_uuid, collection_uuid, and workspace receive no explanation anywhere. The note that name maps to the platform 'collection title' is valuable, but the selector parameters an agent must supply are undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Update a collection's name and/or description.' An agent can distinguish this from create_collection, delete_collection, and update_product on name alone. It stops short of explicitly differentiating from near-neighbors like sync_collection or add_products_to_collection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no preconditions, and no named alternatives despite many plausible ones (sync_collection, add_products_to_collection, update_store_settings). The one contextual note — that editing a synced collection marks it for re-sync — describes a consequence rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_productAInspect

Update a product (name, description, price). For a price change that must propagate to synced channels, prefer cascade_price_change. Optionally set tiktok_listing to enrich the TikTok Shop listing (SEO search terms, product highlights, brand, packaging, TikTok-only title/description, and category_id) — applied when the product is synced to a TikTok channel; ignored by other channels. For channel-defined ATTRIBUTES (Material, Style, Washing Instructions...) use set_listing_attributes instead: it validates against the listing category's real schema and tells you which values the channel refused, which this tool cannot.

[#ebe81c]

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYes
workspaceNo
product_uuidYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only openWorldHint=true in annotations, the description carries most of the burden and does well: it states tiktok_listing is applied only when the product is synced to TikTok and silently ignored by other channels, explains merge/null-to-clear semantics, and discloses a limitation ('which this tool cannot' validate attributes). It does not mention permissions, reversibility, or error behavior, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information is front-loaded (primary purpose first, then two sibling redirects, then the tiktok_listing detail) and nearly every clause earns its place. The trailing artifact '[#ebe81c]' is meaningless noise that should not be in a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested, no-output-schema mutation tool this is close to complete: it covers channel scoping, sibling alternatives, and the clearing semantics of the nested object. What is missing is the outcome side — whether the update is partial or full replacement, and what the caller gets back — which matters for a tool whose schema forbids additional properties.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level schema coverage is 0%, so the description must compensate, and it does for the important surface: it enumerates the updatable fields inside `changes` and explains the tiktok_listing merge/clear contract plus its channel-scoping. The `workspace` and `product_uuid` parameters get no explanation at all, which keeps this below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening verb+resource is explicit ('Update a product (name, description, price)') and it immediately names the two siblings that could be confused with it, cascade_price_change and set_listing_attributes. An agent can distinguish this tool from its nearest neighbours without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Routing is explicit in both directions: price changes that must propagate to synced channels go to cascade_price_change, and channel-defined attributes (Material, Style, Washing Instructions) go to set_listing_attributes with a stated reason (schema validation and refusal reporting). No condition is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_store_settingsA
Idempotent
Inspect

Update a store's fulfillment workflow / notification settings. Only the fields you pass are changed. fulfillment_mode: "auto" (auto-pilot: paid -> draft -> auto-confirm -> production), "confirm" (auto-draft, you confirm each order), "review" (held before submission for approval). The hold_* guardrails escalate an otherwise-auto/confirm order to a pre-submission review. Set hold_orders_above_amount / hold_below_margin_pct to null to disable that guardrail. hold_channel_risk_review is ON by default and OVERRIDES fulfillment_mode (including "auto"): an order the sales channel is reviewing is never sent to fulfillment while it may still be voided.

[#18fd3b]

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoWorkspace uuid to scope to (agency accounts). Omit for the Default workspace.
store_uuidYesThe store uuid to update.
fulfillment_modeNoAutomation level: auto (auto-pilot), confirm (you confirm each), review (approve before submit).
approval_authorityNoWho decides when a review is required: human (UI queue), agent (API/callback), rules (auto unless a guardrail trips).
notify_on_shipmentNoSend a notification when an order ships.
notify_on_new_orderNoSend a notification when a new order arrives.
auto_reconcile_ordersNoPeriodically re-sync open sales-channel orders with their channel (manual reconcile always works regardless).
hold_below_margin_pctNoAuto-hold orders below this profit-margin percent. null disables the guardrail.
auto_fulfill_on_paymentNoAuto-submit to the provider once payment clears.
hold_on_negative_marginNoAuto-hold orders that would lose money.
hold_channel_risk_reviewNoON by default. Hold an order the SALES CHANNEL has flagged as under its own risk review, so it is never sent to fulfillment while the channel may still void it. Unlike the other guardrails this one OVERRIDES fulfillment_mode, including "auto". Turning it off restores the chosen workflow for those orders.
hold_first_time_customerNoAuto-hold the first order from a new customer.
hold_orders_above_amountNoAuto-hold orders whose total exceeds this amount. null disables the guardrail.
require_payment_before_fulfillNoBlock fulfillment until the order is paid.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide openWorldHint and idempotentHint, so the description adds substantial behavioral context: only passed fields are changed, guardrails escalate orders to review, hold_orders_above_amount / hold_below_margin_pct accept null to disable, and hold_channel_risk_review is on by default and overrides fulfillment_mode. It does not cover auth requirements or rate limits, but it handles the important mutation semantics well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and information-dense, but it is lengthy and duplicates some schema content, and it ends with an unexplained trailing artifact ("[#18fd3b]") that adds noise. It is not wasteful enough to be poor, but it lacks the tight economy of a top-scoring definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 14-parameter schema with full field descriptions and no output schema, the description covers the complex fulfillment workflow, guardrail overrides, and default behaviors well. It is nearly complete for the tool's complexity, though it could mention its relationship to sibling settings tools more explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3, but the description adds cross-parameter interactions and defaults not fully captured by the per-field schema descriptions. It explains how hold_* guardrails interact with fulfillment_mode and how null disables specific guardrails, adding genuine meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Update a store's fulfillment workflow / notification settings." It clearly conveys the mutation scope, but it does not explicitly distinguish this tool from related siblings like get_store_settings or request_hold_changes, so it falls 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by explaining what settings are updated and how fields behave, but it never states when to choose this tool over alternatives such as get_store_settings or request_hold_changes. There are no explicit when-to-use or when-not-to-use statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workspaceA
Idempotent
Inspect

Rename a workspace or archive/unarchive it (agency / Enterprise). The Default workspace cannot be archived. Needs an account-wide key.

[#e8ebf4]

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name (max 128 chars).
archivedNoArchive (true) or unarchive (false). Ignored for the Default workspace.
workspace_uuidYesWorkspace uuid (from list_my_workspaces).

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply openWorldHint and idempotentHint, leaving safety and permission behavior undocumented, and the description usefully fills part of that gap: account-wide key required, plan gating, and the Default-workspace archive exclusion. It still does not say what happens to contained resources (designs, stores, products) when a workspace is archived, nor whether archiving is reversible, so the mutation's blast radius is only partly disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences that each carry information: action, restriction, prerequisite. The trailing '[#e8ebf4]' is stray markup noise that slightly detracts but does not obscure meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden, but for a rename/archive mutation the key operator facts (plan requirement, key scope, default-workspace exclusion) are present alongside annotations that already signal idempotency. What is missing is the post-archive state of dependent resources.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the three parameters (name with max length, archived boolean, workspace_uuid with its source tool) is already documented in the schema. The description adds no parameter-level detail 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs and resource: rename a workspace, or archive/unarchive it. This cleanly separates it from create_workspace, delete_workspace, and list_my_workspaces. It does not name a sibling directly, but the action set is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives prerequisites (agency/Enterprise plan, account-wide key) and one restriction (Default workspace cannot be archived), which is genuinely useful context for deciding whether the call will succeed. However, it never states when to prefer this over alternatives such as delete_workspace or check_workspace_deletion, so usage remains implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_designAInspect

Upload artwork the merchant ALREADY OWNS and turn it into a design_uuid usable by create_product / ship_product. This is the way to build products from a client's own files — a logo, a brand mark, a cleared cover, a photograph — instead of generating something new. If a client says their mark must not be redrawn, use this; never regenerate or approximate a mark to work around a missing file.

Three ways to supply the file, pick the cheapest one available:

  1. source_url — an https URL the server can fetch. One call, no context cost. Best when the asset is already hosted or reachable by link (the link must not require sign-in).

  2. no source at all — returns a presigned upload_url you PUT the bytes to yourself, then call this tool again with the returned image_uuid to finish. No context cost, full resolution, and the right choice whenever you can make an HTTP request (curl, fetch, requests).

  3. image_base64 — inline bytes. Works anywhere, but costs roughly 350k tokens per megabyte of file, so reserve it for small files when neither of the above is possible.

Accepts PNG, JPEG, WEBP and SVG. SVG is the BEST input for a logo or mark: it is rendered server-side at print resolution, so it stays crisp at any size. Two things must be true of the SVG first — text converted to outlines, and any linked image embedded — otherwise the upload is refused with instructions rather than silently losing that part of the artwork. For pixel art, or any hard-edge raster mark that must stay crisp, pass upscale="pixel" so a small file is enlarged without being smoothed.

[#85542c]

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDisplay title for the design. Defaults to the filename stem.
upscaleNoHow to resample if the file is below the 512px print minimum. "pixel" = nearest-neighbour, keeps pixel art and hard-edge marks crisp. "smooth" = for photographic art. "auto" (default) detects. Pass "pixel" for a client mark that must not be approximated.
filenameNoOriginal filename. Used for the default title.
workspaceNoWorkspace uuid (agency accounts).
image_uuidNoFinish a presigned upload: pass the image_uuid from a previous upload_design call after you have PUT the bytes. Also use this to resume polling if processing was still running.
source_urlNoPublic https URL of the artwork. The server fetches it. Must not require sign-in.
content_typeNoDeclared MIME type. Detected from the file when the bytes are supplied, so it is only needed for the presigned mode (defaults to image/png). Use image/svg+xml to upload vector.
image_base64NoBase64-encoded file bytes (a data: URI is accepted). Expensive in context — prefer source_url or the presigned mode. Capped at 4MB decoded.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only openWorldHint in the annotations, the description carries the behavioral burden well: it discloses the two-step presigned-upload finish flow, the server-side SVG rendering at print resolution, the refusal-with-instructions behavior for non-outlined/unembedded SVGs, the ~350k tokens/MB cost of base64, and the 4MB decoded cap. These are real behavioral traits not present in any structured field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose in the first sentence before the three numbered supply modes, each of which ends with a decision rule. The length is justified by the multi-modal input handling; no sentence is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, zero-required tool with no output schema, the description still names the returned artifacts (design_uuid, upload_url, image_uuid) inline, covers supported formats, failure modes, and cost tradeoffs. An agent has everything required to choose a mode and drive the multi-step flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so most parameter meaning is already documented (baseline 3). The description nonetheless adds value the schema does not: the preference ordering among source_url / presigned mode / image_base64, and the reuse of image_uuid both to finish an upload and to resume polling. It does not explain content_type or workspace beyond the schema, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Upload artwork the merchant ALREADY OWNS and turn it into a design_uuid') and names the downstream consumers (create_product / ship_product). It explicitly separates itself from generate_image by contrasting client-owned files against 'generating something new'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use trigger ('If a client says their mark must not be redrawn, use this') plus an explicit prohibition ('never regenerate or approximate a mark'). It ranks the three input modes by cost and names the conditions that select each, which is exactly the routing guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_design_qualityA
Read-only
Inspect

Local QC gate for a design: transparency correctness (alpha, clean corners, white premultiply), resolution, and detected text. Returns a 0-100 score + issues. Needs local Python + Pillow.

[#8e74ec]

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNo
workspaceNo
design_uuidYes
needs_transparencyNoDefault true; set false for all-over-print.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds genuinely useful non-schema context: it returns a 0-100 score plus issues, and it requires local Python + Pillow, an environmental prerequisite an agent could not infer otherwise. It stops short of stating runtime cost or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core is a single front-loaded sentence followed by a useful return/prerequisite note, which is efficient. However, the stray '[#8e74ec]' hex-color fragment at the end is unexplained noise that adds no value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter read-only tool with no output schema, the description does well to state the return shape (score + issues) and the local-runtime requirement. It is incomplete on parameter usage and on how the optional image_url/workspace interact with design_uuid, leaving gaps an agent must guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (four parameters, only needs_transparency documented), so the description must compensate and it does not — image_url, workspace, and design_uuid are never explained or given format/semantics. The 'Needs local Python + Pillow' note describes the environment, not any parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Local QC gate for a design') and enumerates exactly what is checked: transparency correctness (alpha, clean corners, white premultiply), resolution, and detected text. This clearly separates it from siblings like verify_design_text, verify_mockup_quality, and check_design_compliance, which target narrower or different checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by 'QC gate' and the transparent-check scope. It never says when to prefer this over verify_design_text, verify_mockup_quality, or check_design_compliance, nor what preconditions (e.g. an already-uploaded design) must hold.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_design_textA
Read-only
Inspect

Read the text in a design with local OCR (tesseract) when available, so the agent can confirm spelling. Advisory: pass expected_text to get a match verdict, otherwise the detected text is returned for visual review. has_text is null when OCR is unavailable, meaning UNKNOWN — not "no text"; read the design image yourself in that case.

[#57c0af]

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNo
workspaceNo
image_uuidYes
expected_textNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/openWorldHint already covering safety, the description adds substantial non-obvious behavior: it depends on local tesseract availability, degrades to UNKNOWN (has_text null) rather than 'no text', and is advisory. This fallback/null semantics is exactly the kind of operational detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then denses in the advisory and fallback behavior without padding. A stray '[#57c0af]' token at the end is noise but small.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, yet the description helpfully defines the expected_text verdict path and the has_text null case. It is nearly complete for invocation, with the only gap being the untouched image_url/workspace parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains expected_text well (match verdict vs raw text) but says nothing about image_url, workspace, or image_uuid, leaving three of four params undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Read the text in a design with local OCR (tesseract)'. It is clearly distinguishable from sibling verification tools (verify_design_quality, verify_mockup_quality, check_design_compliance) because it targets text/spelling specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditional guidance: pass expected_text for a match verdict, otherwise detected text is returned for visual review, and read the image yourself when has_text is null. It stops short of naming a sibling alternative, but the when-to-use conditions are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_mockup_qualityA
Read-only
Inspect

QC gate for a rendered product MOCKUP (verify_design_quality checks the design; this checks the render on the garment). Deterministically catches three defects that have actually shipped: an un-keyed chroma-green background printed onto the product, an empty render, and a render too small to judge. It does NOT decide whether the design is upright, clipped, seam-split, or whether every face is printed: those need looking at the image, and a pixel statistic that guessed would be confidently wrong on exactly those cases. It returns a fixed visual_checklist for you to answer by VIEWING the render, so grading is consistent across callers. Treat a clean result as "no hard defect found", not "the mockup is good" until you have answered the checklist.

[#feb72a]

ParametersJSON Schema
NameRequiredDescriptionDefault
preview_urlYesURL of the rendered mockup to grade.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation it discloses the tool's deterministic character, the three exact defect classes it detects, the deliberate limits of pixel statistics (confidently wrong on the excluded cases), and that the response includes a fixed visual_checklist the caller must answer by viewing. This is substantially richer than the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence and most sentences carry distinct information (scope, exclusions, interpretation rule). It is on the long side, and the trailing '[#feb72a]' token is stray noise that earns nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the burden of describing the return and does so - a fixed visual_checklist to be answered by viewing the render. Combined with the explicit scope boundaries and readOnly/openWorld annotations, an agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, preview_url, and schema description coverage is 100%, so the schema fully carries the semantics. The description adds nothing specific about the URL (e.g. accepted formats or whether it must be a platform-hosted render), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource - a QC gate for a rendered product MOCKUP - and explicitly separates itself from the sibling verify_design_quality ('verify_design_quality checks the design; this checks the render on the garment'). An agent can route between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly bounds the tool: it catches three named deterministic defects and explicitly does NOT decide upright, clipped, seam-split, or face-count cases, naming the alternative (looking at the image). It also tells the caller how to treat a clean result ('no hard defect found', not 'the mockup is good'), which is real usage guidance, not inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 123 tool updates
    • First observedaccept_invite
    • First observedactivate_store
    • First observedadd_order_item
    • First observedadd_products_to_collection
    • First observedadd_variants
    • First observedanalytics_breakdown
    • First observedanalytics_ops
    • First observedanalytics_portfolio
    • First observedanalytics_summary
    • First observedanalytics_timeseries
    • First observedanalyze_what_works
    • First observedapi_request
    • First observedapprove_order
    • First observedapprove_order_hold
    • First observedarchive_design
    • First observedarchive_product
    • First observedarchive_store
    • First observedassign_workspace_member
    • First observedauto_optimize_listings
    • First observedbrowse_catalog
    • First observedcancel_order
    • First observedcascade_price_change
    • First observedchannel_coverage
    • First observedchannel_opportunities
    • First observedchannel_performance
    • First observedcheck_connection_status
    • First observedcheck_design_compliance
    • First observedcheck_design_move
    • First observedcheck_fulfillment_issue
    • First observedcheck_order_status
    • First observedcheck_product_move
    • First observedcheck_setup_readiness
    • First observedcheck_workspace_deletion
    • First observedconfirm_order
    • First observedconnect_fulfillment_provider
    • First observedconnect_sales_channel
    • First observedcopy_design_to_workspace
    • First observedcopy_product_to_workspace
    • First observedcreate_collection
    • First observedcreate_product
    • First observedcreate_store
    • First observedcreate_workspace
    • First observeddelete_collection
    • First observeddelete_design
    • First observeddelete_product
    • First observeddelete_workspace
    • First observeddescribe_listing_attributes
    • First observeddesign_apparel
    • First observeddiagnose_tiktok_listings
    • First observedestimate_order_costs
    • First observedfind_garments
    • First observedfit_aspect
    • First observedgenerate_image
    • First observedgenerate_listing_image
    • First observedget_account_overview
    • First observedget_api_reference
    • First observedget_collection
    • First observedget_garment_details
    • First observedget_order_details
    • First observedget_orders_summary
    • First observedget_role_matrix
    • First observedget_store_settings
    • First observedhold_order
    • First observedimport_size_measurements
    • First observedinvite_member
    • First observediterate_design
    • First observedlist_account_members
    • First observedlist_catalog_providers
    • First observedlist_collections
    • First observedlist_connectable_providers
    • First observedlist_fulfillment_issues
    • First observedlist_invites
    • First observedlist_my_designs
    • First observedlist_my_orders
    • First observedlist_my_products
    • First observedlist_my_stores
    • First observedlist_my_workspaces
    • First observedlist_order_holds
    • First observedlist_pending_fulfillments
    • First observedlisting_changes
    • First observedmark_order_no_payment
    • First observedmove_design_to_workspace
    • First observedmove_product_to_workspace
    • First observedmove_store_to_workspace
    • First observedprocess_transparency
    • First observedrecommend_garment
    • First observedreconcile_order
    • First observedrecord_order_payment
    • First observedrecover_from_outage
    • First observedremove_member
    • First observedremove_order_item
    • First observedremove_product_from_collection
    • First observedreport_fulfillment_issue
    • First observedrequest_hold_changes
    • First observedresend_invite
    • First observedresolve_fulfillment_issue
    • First observedrestore_design
    • First observedrestore_product
    • First observedrevoke_invite
    • First observedset_channel_settings
    • First observedset_listing_attributes
    • First observedset_order_payment_method
    • First observedset_prices_by_margin
    • First observedset_product_images
    • First observedship_product
    • First observedstart_channel_connect
    • First observedsubmit_order_to_fulfillment
    • First observedsync_collection
    • First observedsync_orders
    • First observedsync_to_channel
    • First observedsync_to_fulfillment
    • First observedunapprove_order
    • First observedunarchive_store
    • First observedunassign_workspace_member
    • First observedunsync_from_channel
    • First observedupdate_collection
    • First observedupdate_product
    • First observedupdate_store_settings
    • First observedupdate_workspace
    • First observedupload_design
    • First observedverify_design_quality
    • First observedverify_design_text
    • First observedverify_mockup_quality

Publisher details

Operator
ApparelHub.AI, LLC · Publisher source
Operator website
https://apparelhub.ai
Vendor relationship
First-party
Trust center
Not available
Restrictions
Requires an ApparelHub account (a free plan is available). Connecting over OAuth issues an API key on that account, and usage follows the plan's limits. Selling and fulfilling orders requires connecting your own sales channels (Shopify, WooCommerce, Wix, TikTok Shop) and fulfillment providers (Printful, Printify, Gelato). · Publisher source

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    22 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources