Skip to main content
Glama
Jacques-Murray

WooCommerce MCP Server

WooCommerce MCP Server

An MCP (Model Context Protocol) server that connects LLM agents to a WooCommerce store via its REST API (wp-json/wc/v3). It provides 40 tools covering products, product variations, categories, tags, orders, order notes, refunds, customers, coupons, and sales reports.

Setup

1. Generate WooCommerce API keys

  1. In WordPress admin, go to WooCommerce > Settings > Advanced > REST API

  2. Click Add key

  3. Give it a description, select a user, and choose Read/Write permissions

  4. Click Generate API key and copy the Consumer key and Consumer secret immediately (the secret is hidden afterwards)

Your store must use pretty permalinks (Settings > Permalinks) and should be served over HTTPS.

2. Install and build

npm install
npm run build

3. Configure environment variables

Variable

Required

Description

WOOCOMMERCE_STORE_URL

Yes

Your store's base URL, e.g. https://mystore.com (no trailing slash needed)

WOOCOMMERCE_CONSUMER_KEY

Yes

Consumer key from step 1

WOOCOMMERCE_CONSUMER_SECRET

Yes

Consumer secret from step 1

WOOCOMMERCE_API_VERSION

No

Defaults to wc/v3

TRANSPORT

No

stdio (default) or http

PORT

No

Port for HTTP transport (default 3000)

4. Run

stdio (for local MCP clients like Claude Desktop):

WOOCOMMERCE_STORE_URL=https://mystore.com \
WOOCOMMERCE_CONSUMER_KEY=ck_xxx \
WOOCOMMERCE_CONSUMER_SECRET=cs_xxx \
node dist/index.js

Example Claude Desktop config entry:

{
  "mcpServers": {
    "woocommerce": {
      "command": "node",
      "args": ["/absolute/path/to/woocommerce-mcp-server/dist/index.js"],
      "env": {
        "WOOCOMMERCE_STORE_URL": "https://mystore.com",
        "WOOCOMMERCE_CONSUMER_KEY": "ck_xxx",
        "WOOCOMMERCE_CONSUMER_SECRET": "cs_xxx"
      }
    }
  }
}

Streamable HTTP (for remote/multi-client use):

TRANSPORT=http PORT=3000 \
WOOCOMMERCE_STORE_URL=https://mystore.com \
WOOCOMMERCE_CONSUMER_KEY=ck_xxx \
WOOCOMMERCE_CONSUMER_SECRET=cs_xxx \
node dist/index.js

The server listens at http://localhost:3000/mcp.

Related MCP server: MCP WooCommerce

Tools

All tools are prefixed woocommerce_ and use snake_case. Every list/get tool accepts a response_format parameter (markdown default, or json for structured data), and list tools support page/per_page pagination with a consistent envelope (total, count, has_more, next_page).

Products

  • woocommerce_list_products - search/filter products (status, type, category, tag, stock, price, sale)

  • woocommerce_get_product - full product detail

  • woocommerce_create_product / woocommerce_update_product / woocommerce_delete_product

  • woocommerce_list_product_variations / woocommerce_get_product_variation

  • woocommerce_create_product_variation / woocommerce_update_product_variation / woocommerce_delete_product_variation

Categories & Tags

  • woocommerce_list_product_categories / _create_ / _update_ / _delete_product_category

  • woocommerce_list_product_tags / _create_ / _update_ / _delete_product_tag

Orders

  • woocommerce_list_orders - filter by status, customer, date range, product

  • woocommerce_get_order - full order detail (line items, addresses, totals)

  • woocommerce_create_order / woocommerce_update_order / woocommerce_delete_order

  • woocommerce_list_order_notes / woocommerce_create_order_note

  • woocommerce_list_order_refunds / woocommerce_create_order_refund (destructive financial operation)

Customers

  • woocommerce_list_customers / woocommerce_get_customer

  • woocommerce_create_customer / woocommerce_update_customer / woocommerce_delete_customer

Coupons

  • woocommerce_list_coupons / woocommerce_get_coupon

  • woocommerce_create_coupon / woocommerce_update_coupon / woocommerce_delete_coupon

Reports

  • woocommerce_get_sales_report - totals for a period or custom date range

  • woocommerce_get_top_sellers_report - best-selling products for a period

  • woocommerce_get_report_totals - status/count breakdown for orders, products, customers, coupons, or reviews

Design notes

  • Auth: HTTP Basic Auth with the consumer key/secret, as recommended for HTTPS stores. If your server can't parse Basic Auth headers (rare, usually FastCGI setups), WooCommerce also accepts consumer_key/consumer_secret as query params - not implemented here since Basic Auth covers the vast majority of installs.

  • Pagination: mirrors WooCommerce's own page/per_page model and echoes back X-WP-Total/X-WP-TotalPages response headers.

  • Response size: responses are capped at ~25,000 characters; list tools truncate their items array with a truncation_message telling the agent how to narrow its query instead of silently dropping data.

  • Destructive actions: delete_* and create_order_refund tools are annotated destructiveHint: true. Deletes default to WooCommerce's trash behavior where supported (force=false); refunds are irreversible and the tool description calls this out explicitly.

  • Line-item edits on existing orders are intentionally out of scope for woocommerce_update_order to avoid an agent accidentally corrupting totals/stock counts; use woocommerce_create_order for new orders and woocommerce_create_order_refund for post-hoc adjustments.

Development

npm run dev     # tsx watch mode
npm run build   # compile TypeScript to dist/
npm run clean   # remove dist/

Test with the MCP Inspector:

npx @modelcontextprotocol/inspector node dist/index.js

Available Tools

40 tools
woocommerce_create_couponCreate WooCommerce CouponA

Create a new discount coupon.

Args:

  • code (string, required): the code customers enter at checkout

  • discount_type: 'percent'|'fixed_cart'|'fixed_product' (default: fixed_cart)

  • amount (string, required): numeric string

  • description, date_expires (YYYY-MM-DD), individual_use, usage_limit, usage_limit_per_user, free_shipping, minimum_amount, maximum_amount, product_ids, excluded_product_ids, email_restrictions (all optional)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created coupon object with its assigned ID.

Examples:

  • Use when: "create a 20% off coupon called SUMMER20 that expires end of August" -> code="SUMMER20", discount_type="percent", amount="20", date_expires="2026-08-31"

Error Handling:

  • Returns "Error: Bad request (400)" if the coupon code already exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCoupon code customers will enter at checkout, e.g. 'SUMMER20'
amountYesDiscount amount as numeric string (percent value or currency amount depending on discount_type)
descriptionNo
product_idsNoRestrict coupon to these product IDs
usage_limitNoMax total number of times this coupon can be used
date_expiresNoExpiry date in YYYY-MM-DD format; omit for no expiry
discount_typeNo'percent', 'fixed_cart', or 'fixed_product' (default: fixed_cart)fixed_cart
free_shippingNoIf true, grants free shipping when applied
individual_useNoIf true, this coupon cannot be combined with other coupons
maximum_amountNoMaximum cart subtotal allowed, numeric string
minimum_amountNoMinimum cart subtotal required, numeric string
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown
email_restrictionsNoRestrict usage to these customer email addresses
excluded_product_idsNoExclude these product IDs from the coupon
usage_limit_per_userNoMax times a single customer can use this coupon

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate write, non-idempotent, safe operation. Description adds return format, error handling, and creation behavior. No contradiction with annotations.

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

Conciseness5/5

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

The description is well-structured with bullet points, sections (Args, Returns, Examples, Error Handling), and front-loaded with the main action. No redundant sentences.

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

Completeness4/5

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

Given 15 parameters and no output schema, the description covers creation details, error handling, and an example. It doesn't detail the returned object, but the context is adequate for an AI agent.

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 93% schema coverage, the description adds value by providing an example, summarizing defaults, and explaining the response_format parameter beyond the schema.

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

Purpose5/5

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

The description clearly states 'Create a new discount coupon', matching the title and specifying the resource. It distinguishes itself from sibling tools like woocommerce_update_coupon and woocommerce_delete_coupon.

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 provides an explicit example with 'Use when' and error handling for duplicate codes. It lacks explicit when-not-to-use guidance, but the example and context make usage clear.

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

woocommerce_create_customerCreate WooCommerce CustomerA

Create a new registered customer account.

Args:

  • email (string, required): must be unique

  • first_name / last_name (string, optional)

  • username / password (string, optional): auto-generated if omitted

  • billing / shipping (object, optional): address fields

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created customer object with its assigned ID.

Error Handling:

  • Returns "Error: Bad request (400)" if the email or username is already registered.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesCustomer email address, must be unique
billingNo
passwordNoLogin password; a random one is generated if omitted
shippingNo
usernameNoLogin username; generated from email if omitted
last_nameNo
first_nameNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.2/5.0
Behavior4/5

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

The description adds value beyond annotations by stating that it returns a newly created customer object with an assigned ID and details error responses. Annotations already indicate a mutating action, so the description enhances understanding without contradiction.

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 well-structured with separate sections for Args, Returns, and Error Handling, making it easy to parse. It is front-loaded with the primary purpose but contains some repetitive details from the schema. Slightly verbose, but every sentence adds 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?

Given the tool's complexity (8 parameters, nested objects) and no output schema, the description explains the return value and error conditions adequately. However, it lacks details on the complete structure of the returned customer object beyond the ID, and does not cover all edge cases.

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 description explicitly lists all parameters and adds meaning for those not fully explained in the schema (e.g., billing/shipping as address fields, response_format options). With 50% schema coverage, the description compensates well, though it could detail nested object structures further.

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 clearly states 'Create a new registered customer account' using specific verb 'Create' and resource 'customer account'. It distinctively differs from sibling tools like 'woocommerce_update_customer' or 'woocommerce_list_customers'.

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 provides clear context for when to use the tool (creating a new customer) and includes error handling for duplicate email/username. However, it does not explicitly state when not to use it (e.g., for updates) or compare to siblings, though it's implicitly clear.

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

woocommerce_create_orderCreate WooCommerce OrderA

Create a new order with one or more line items. WooCommerce will calculate totals, tax, and stock reduction (for statuses that trigger it) automatically.

Args:

  • status: order status (default: pending)

  • customer_id (number, optional): omit for a guest order

  • payment_method / payment_method_title (string, optional)

  • set_paid (boolean, optional): mark as paid immediately

  • billing / shipping (object, optional): address fields

  • line_items (array, required): [{product_id, variation_id?, quantity}]

  • customer_note (string, optional)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created order object with its assigned ID and calculated totals.

Examples:

  • Use when: "create an order for 2x product 55 for customer 10" -> customer_id=10, line_items=[{product_id:55, quantity:2}]

Error Handling:

  • Returns "Error: Bad request (400)" if a product_id/variation_id doesn't exist or is out of stock with backorders disabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoInitial order status (default: pending)pending
billingNo
set_paidNoIf true, mark the order as paid immediately
shippingNo
line_itemsYesProducts to include on the order
customer_idNoExisting customer ID to attach this order to (omit for a guest order)
customer_noteNoNote left by/for the customer
payment_methodNoPayment method ID, e.g. 'bacs', 'cod', 'stripe'
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown
payment_method_titleNoHuman-readable payment method label

TDQS

A4.3/5.0
Behavior4/5

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

The description adds significant behavioral context beyond annotations: automatic totals/tax/stock reduction, error responses for invalid products or stock issues, and the effect of `set_paid`. Annotations declare readOnlyHint=false, which aligns with mutation, and the description elaborates on side effects.

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

Conciseness4/5

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

The description is well-structured with an 'Args' section and examples. It is front-loaded with the main purpose. However, it includes a full parameter list that partially duplicates the schema, making it somewhat verbose. Still, it is clear and efficient overall.

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 complexity (10 parameters, nested objects, no output schema), the description covers creation behavior, return format (order object with ID and totals), error handling, and example usage. It is sufficiently complete for an agent to use the tool 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?

With 80% schema description coverage, the baseline is 3. The description adds value by clarifying the `customer_id` parameter ('omit for a guest order'), the structure of `line_items`, and the `response_format` options. It also explains the `set_paid` boolean effect, enhancing understanding beyond the schema.

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

Purpose5/5

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

The description clearly states 'Create a new order with one or more line items,' which is a specific verb-resource combination. It distinguishes from sibling tools like update, delete, get orders, and other WooCommerce 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?

The description provides clear context with examples and error handling scenarios (e.g., missing product, out of stock). It explains automatic calculations and stock reduction. However, it does not explicitly exclude situations where other tools might be preferred, such as using update_order for modifications.

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

woocommerce_create_order_noteCreate WooCommerce Order NoteA

Add a note to an order. Customer-visible notes trigger an email to the customer; internal notes are only visible in the admin.

Args:

  • order_id (number, required)

  • note (string, required)

  • customer_note (boolean, default false): true = customer-visible (emails customer), false = internal only

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created note object.

Examples:

  • Use when: "let the customer know order 100 has shipped" -> order_id=100, note="Your order has shipped!", customer_note=true

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesNote content
order_idYesThe numeric WooCommerce order ID
customer_noteNoIf true, the note is visible to the customer (e.g. shipped notifications). Default: false (private/internal note)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.4/5.0
Behavior4/5

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

Annotations set readOnlyHint=false and destructiveHint=false, which aligns with the description of adding a note (non-destructive write). The description adds value by disclosing that customer-visible notes trigger an email, which is a behavioral side effect not evident from annotations alone.

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

Conciseness5/5

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

The description is concise and well-structured: an initial summary, an Args list, Returns, and an Example. Every sentence adds necessary information with no redundancy.

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 tool with no output schema, the description states 'Returns: The newly created note object', which is sufficient. It covers the two note types, parameter defaults, and provides an example. Minor omission: no mention of error conditions or prerequisites (e.g., order must exist).

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 input schema already describes all 4 parameters (100% coverage). The description enhances this by clarifying that customer_note=true emails the customer and that response_format defaults to 'markdown'. The example also demonstrates parameter usage, adding practical meaning.

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 clearly states 'Add a note to an order' and distinguishes customer-visible from internal notes. Sibling tools like woocommerce_list_order_notes and woocommerce_create_order_refund have different purposes, so the tool is easily distinguishable.

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

Usage Guidelines4/5

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

Provides a concrete usage example ('let the customer know order 100 has shipped') and explains the customer_note parameter effect. However, it does not explicitly state when not to use this tool vs. alternatives like updating the order or sending a custom email.

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

woocommerce_create_order_refundCreate WooCommerce Order RefundA
Destructive

Issue a refund against an order, either as a flat amount or itemized by line item. This is a DESTRUCTIVE, hard-to-reverse financial operation - confirm details with the user before calling.

Args:

  • order_id (number, required)

  • amount (string, optional): flat refund amount; required if line_items is omitted

  • reason (string, optional)

  • line_items (array, optional): [{id, quantity?, refund_total?}] for itemized refunds

  • api_refund (boolean, default true): attempt gateway refund vs. record-only

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The created refund object.

Examples:

  • Use when: "refund $15 of order 100 for a damaged item" -> order_id=100, amount="15.00", reason="Damaged item"

Error Handling:

  • Returns "Error: Bad request (400)" if the amount exceeds the order total or the gateway rejects the refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoAmount to refund as a numeric string, e.g. '10.00'. If omitted with no line_items, refunds the full order total.
reasonNoReason for the refund, shown in admin and possibly to the customer
order_idYesThe numeric WooCommerce order ID to refund
api_refundNoIf true (default) and the payment gateway supports it, attempts to refund via the gateway API; set false to only record the refund in WooCommerce
line_itemsNoSpecific line items to refund; omit to do a simple amount-based refund
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already provide destructiveHint=true, readOnlyHint=false, idempotentHint=false, openWorldHint=true. The description reinforces this with 'DESTRUCTIVE, hard-to-reverse financial operation' and adds the important behavioral guideline to confirm with the user. No contradictions.

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

Conciseness5/5

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

The description is well-structured: first sentence states purpose, followed by a critical warning, then a clear listing of arguments with types, return value, an example, and error handling. Every sentence adds value, and it is appropriately concise.

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

Completeness5/5

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

Given the tool's financial nature and multiple parameters, the description covers purpose, parameters (with types and relations), return type, example usage, and error handling. No output schema exists, but the return is described. Annotations cover safety. Complete for an agent to use 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% (all parameters have schema descriptions). The description adds value by clarifying the mutual dependency between 'amount' and 'line_items' (amount required if line_items omitted) and includes an example mapping natural language to parameters. This goes beyond the schema's own 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?

The description clearly states the tool's purpose: 'Issue a refund against an order, either as a flat amount or itemized by line item.' The verb 'issue a refund' is specific and the resource is 'order'. It distinguishes from sibling tools that deal with orders (create, update, delete, list) and other entities.

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 explicitly warns that this is a destructive, hard-to-reverse financial operation and advises confirming details with the user before calling. It provides an example scenario. It does not explicitly list alternatives, but among siblings, only 'woocommerce_list_order_refunds' exists for refunds, so 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.

woocommerce_create_productCreate WooCommerce ProductA

Create a new product in the WooCommerce catalog.

Args:

  • name (string, required): Product name

  • type ('simple'|'grouped'|'external'|'variable'): default 'simple'

  • status ('draft'|'pending'|'private'|'publish'): default 'publish'

  • description / short_description (string, optional): HTML allowed

  • sku (string, optional): must be unique store-wide

  • regular_price / sale_price (string, optional): numeric strings

  • manage_stock (boolean), stock_quantity (number), stock_status (string)

  • category_ids / tag_ids (number[]): assign existing taxonomy terms

  • image_urls (string[]): externally hosted image URLs, WooCommerce will import them

  • weight (string, optional)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created product object with its assigned ID.

Examples:

  • Use when: "add a new t-shirt product priced at $25" -> name="T-Shirt", regular_price="25.00"

  • Don't use when: creating a variation of an existing variable product (use woocommerce_create_product_variation)

Error Handling:

  • Returns "Error: Bad request (400)" if sku is already in use by another product.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNoStock keeping unit, must be unique in the store
nameYesProduct name
typeNoProduct type (default: simple)simple
statusNoProduct status (default: publish)publish
weightNoWeight as numeric string, in the store's configured weight unit
tag_idsNoTag IDs to assign to the product
image_urlsNoImage URLs to attach to the product, in display order
sale_priceNoSale price as numeric string, e.g. '19.99'
descriptionNoFull product description (HTML allowed)
category_idsNoCategory IDs to assign to the product
manage_stockNoWhether to track stock quantity for this product
stock_statusNoStock status
regular_priceNoRegular price as numeric string, e.g. '29.99'
stock_quantityNoStock quantity (only used if manage_stock is true)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown
short_descriptionNoShort product description (HTML allowed)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations provide minimal info (readOnlyHint=false, etc.), but the description adds significant behavioral details: image URLs are imported, response can be markdown or JSON, SKU uniqueness enforcement, and error handling. No contradictions.

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?

Well-structured with clear sections (Args, Returns, Examples, Error Handling). However, the Args list is lengthy and largely repeats schema information, which could be more concise. Still, it is front-loaded and easy to parse.

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

Completeness5/5

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

Given no output schema and 16 parameters, the description covers return value, error scenarios, and usage examples. It provides sufficient context for an AI agent to correctly select and invoke the tool, including differentiation from sibling tools.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds value beyond schema by providing examples, default values, constraints (e.g., 'must be unique store-wide' for SKU, 'numeric strings' for prices), and error handling context. The Args section summarizes parameters effectively.

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 clearly states 'Create a new product in the WooCommerce catalog' with a list of parameters and examples. It distinguishes from sibling tools like woocommerce_create_product_variation by explicitly stating not to use for creating variations.

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?

Includes explicit examples of when to use ('add a new t-shirt product') and when not to use ('creating a variation... use woocommerce_create_product_variation'). Also covers error handling for duplicate SKU, guiding proper invocation.

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

woocommerce_create_product_categoryCreate Product CategoryA

Create a new product category.

Args:

  • name (string, required)

  • description (string, optional)

  • parent (number, optional): parent category ID

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created category object with its assigned ID.

Error Handling:

  • Returns "Error: Bad request (400)" if a category with this name/slug already exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCategory name
parentNoParent category ID, for nested categories
descriptionNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4/5.0
Behavior4/5

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

The description discloses error handling (400 on duplicate category) and states that it returns the newly created object with an ID. Annotations indicate this is a write operation with potential side effects (openWorldHint=true), and the description does not contradict them. However, it does not detail any other side effects or authentication requirements.

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

Conciseness5/5

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

The description is very concise: a single line for purpose, a bullet-like listing of arguments, and a brief error handling note. Every sentence adds value without redundancy.

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 tool's simplicity (creating a category with 4 parameters, 1 required), the description covers the main behavior, return value, and error condition. It could mention prerequisites (e.g., authentication) or more on side effects, but overall it is sufficiently complete for an AI agent to use 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?

The input schema already describes 3 of 4 parameters (name, parent, response_format). The tool description adds minimal extra meaning (e.g., for parent and response_format, it echoes the schema). The 'description' parameter is left without elaboration in both schema and description.

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 starts with 'Create a new product category' which is a specific verb+resource combination. The tool name and title also clearly indicate the action of creating a product category in WooCommerce. This effectively distinguishes it from sibling tools like update or delete categories.

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

Usage Guidelines3/5

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

No explicit guidance is provided on when to use this tool versus alternatives (e.g., updating or deleting categories). The error handling hint about duplicate names implies a precondition, but there is no direct statement about when creation is appropriate.

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

woocommerce_create_product_tagCreate Product TagA

Create a new product tag.

Args:

  • name (string, required)

  • description (string, optional)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created tag object with its assigned ID.

Error Handling:

  • Returns "Error: Bad request (400)" if a tag with this name/slug already exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTag name
descriptionNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.1/5.0
Behavior4/5

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

Beyond annotations (which indicate non-readonly, non-destructive), the description adds the error handling condition that a 400 error occurs if a tag with the same name exists. This provides useful behavioral context.

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

Conciseness5/5

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

The description is concise, well-structured with clear sections for Args, Returns, and Error Handling. Every sentence serves a purpose with no redundancy.

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 simple creation tool with 3 parameters and no output schema, the description fully covers the purpose, parameters, return value, and error handling. It is self-contained and informative.

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?

The description repeats the parameter names and types from the schema but adds little additional meaning. The schema already covers name and response_format descriptions; the description adds a note but not deeper 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?

The description clearly states 'Create a new product tag.' It uses a specific verb and resource, and distinguishes itself from sibling tools like woocommerce_list_product_tags and woocommerce_update_product_tag.

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 does not explicitly guide on when to use this tool versus alternatives. It implies its use for creating tags but offers no when-not-to-use advice or comparisons with other tag-relevant tools.

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

woocommerce_create_product_variationCreate WooCommerce Product VariationA

Create a new variation for an existing variable product. The parent product must already have variation-enabled attributes defined (e.g. Size, Color).

Args:

  • product_id (number, required): parent variable product ID

  • attributes (array, required): [{name, option}] matching the parent's variation attributes

  • sku, regular_price, sale_price, manage_stock, stock_quantity, stock_status (optional)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The newly created variation object.

Examples:

  • Use when: "add a Large/Blue variation at $30" -> attributes=[{name:"Size",option:"Large"},{name:"Color",option:"Blue"}], regular_price="30.00"

Error Handling:

  • Returns "Error: Bad request (400)" if the attribute name/option doesn't match the parent product's defined attributes.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNo
attributesYesThe attribute/option combination that defines this variation
product_idYesThe parent variable product's numeric ID
sale_priceNoSale price as numeric string
manage_stockNo
stock_statusNo
regular_priceNoRegular price as numeric string
stock_quantityNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate write operation and non-idempotency. The description adds the prerequisite about parent attributes and specific error handling for attribute mismatches, which goes beyond the annotations.

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

Conciseness5/5

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

The description is concise, well-structured with sections for args, returns, examples, and error handling. Every sentence adds value without redundancy.

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 complexity and lack of output schema, the description covers the main purpose, prerequisites, and error cases. It could mention potential duplicate creation, but overall it is sufficient for agent decision-making.

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 56% schema coverage, the description compensates by listing all optional parameters and providing a clear example of the required 'attributes' array. It explains the structure but could detail more default behaviors.

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 clearly states the tool creates a new variation for an existing variable product, using specific verbs and resource. It distinguishes itself from sibling tools like update or delete variations through its verb and prerequisite of parent product attributes.

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 provides a concrete 'Use when' example and clarifies the prerequisite of having variation-enabled attributes. It lacks explicit when-not instructions but the example and context sufficiently guide usage.

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

woocommerce_delete_couponDelete WooCommerce CouponA
DestructiveIdempotent

Delete a coupon. By default this moves it to the trash (recoverable); set force=true to permanently delete it.

Args:

  • coupon_id (number, required)

  • force (boolean, default false)

Returns: Confirmation with the deleted coupon's id and code.

Error Handling:

  • Returns "Error: Resource not found (404)" if coupon_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoIf true, permanently delete instead of moving to trash (default: false)
coupon_idYesThe numeric WooCommerce coupon ID to delete

TDQS

A3.5/5.0
Behavior1/5

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

The annotation claims idempotentHint=true, but the description's error handling shows that deleting a non-existent coupon returns a 404 error, meaning the tool is not idempotent. This contradiction causes a score of 1.

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

Conciseness4/5

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

The description is concise (5 sentences) and well-structured with sections for purpose, args, returns, and error handling. No fluff, though could be slightly more front-loaded.

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

Completeness4/5

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

For a simple deletion tool, the description covers purpose, behavior (trash vs permanent), and error handling. It lacks mention of authorization or prerequisites, but these are likely assumed in the WooCommerce 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 coverage is 100%, so baseline is 3. The description restates the parameters and their effects, but adds no new meaning 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?

The description clearly states the verb 'delete' and the resource 'coupon', and distinguishes this tool from sibling delete tools for other entities (e.g., product, order). It also adds nuance about trash vs permanent deletion.

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 explains when to use force=true vs default, and provides error handling for invalid coupon_id. While it doesn't explicitly mention alternatives, the sibling context makes it clear that this is the only delete coupon tool.

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

woocommerce_delete_customerDelete WooCommerce CustomerA
DestructiveIdempotent

Permanently delete a customer account. Customers don't support trash; this cannot be undone. Existing orders remain but become unlinked from the account.

Args:

  • customer_id (number, required)

  • reassign (number, optional): user ID to reassign content to

Returns: Confirmation of deletion.

Error Handling:

  • Returns "Error: Resource not found (404)" if customer_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
reassignNoOptional user ID to reassign this customer's posts/content to
customer_idYesThe numeric WooCommerce customer ID to delete

TDQS

A4.3/5.0
Behavior5/5

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

Annotations indicate destructiveHint=true and idempotentHint=true, but the description adds critical context: customers don't support trash, deletion is permanent, and existing orders become unlinked. Error handling is also described (404 if not found). This goes 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?

The description is well-structured with sections for purpose, args, returns, and error handling. It is concise but includes some redundancy (Args list mirrors schema). It earns its place without being verbose.

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

Completeness4/5

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

The description covers irreversibility, effect on orders, error handling, and parameters. There is no output schema, so the mention of 'Confirmation of deletion' is helpful but vague. Overall, it provides sufficient context for an agent to use the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, with descriptions for both parameters (customer_id and reassign). The description lists these in the 'Args' section but does not add significant new meaning. The reassign parameter's purpose is already clear from the schema. Thus, baseline score is appropriate.

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

Purpose5/5

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

The description clearly states the tool permanently deletes a customer account, with the verb 'delete' and resource 'customer account'. It also highlights that the action cannot be undone, effectively distinguishing it from other sibling tools like 'woocommerce_delete_product' or 'woocommerce_delete_coupon'.

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 provides a strong warning about the permanent nature and the effect on existing orders (they remain unlinked). However, it does not explicitly state when to use this tool versus alternatives (e.g., disabling a customer). The guidance is clear but could be more comprehensive.

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

woocommerce_delete_orderDelete WooCommerce OrderA
DestructiveIdempotent

Delete an order. By default this moves the order to the trash (recoverable); set force=true to permanently delete it.

Args:

  • order_id (number, required)

  • force (boolean, default false)

Returns: Confirmation with the deleted order's id, number, and status.

Error Handling:

  • Returns "Error: Resource not found (404)" if order_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoIf true, permanently delete instead of moving to trash (default: false)
order_idYesThe numeric WooCommerce order ID to delete

TDQS

A4.7/5.0
Behavior5/5

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

Disclosures go beyond annotations: annotations give destructiveHint=true and idempotentHint=true; description adds that default is recoverable trash, force=true is permanent, and includes error responses. No contradiction with annotations.

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

Conciseness5/5

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

Description is concise, front-loaded with the main action, and uses clear structure with a bullet-like list for parameters. Every sentence adds value, no fluff.

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

Completeness5/5

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

Given no output schema, description includes return values (id, number, status) and error handling. All relevant context for a delete operation is covered.

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. Description adds value by explaining the impact of force parameter (trash vs permanent) and error handling context, which is not in 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?

The description clearly states 'Delete an order' and distinguishes between moving to trash (default, recoverable) and permanent deletion with force=true. It is specific to orders and differentiates from sibling tools like update_order or create_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?

The description explains the default behavior (trash) and the alternative (force=true), providing clear when-to-use guidance. It also includes error handling for missing orders. Could mention when to use this versus other order-related tools, but not essential.

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

woocommerce_delete_productDelete WooCommerce ProductA
DestructiveIdempotent

Delete a product. By default this moves the product to the trash (recoverable); set force=true to permanently delete it.

Args:

  • product_id (number, required)

  • force (boolean): permanently delete if true (default: false, moves to trash)

Returns: Confirmation with the deleted product's id, name, and status.

Error Handling:

  • Returns "Error: Resource not found (404)" if product_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoIf true, permanently delete instead of moving to trash (default: false)
product_idYesThe numeric WooCommerce product ID to delete

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds that default move-to-trash is recoverable, and error handling for missing product is provided. No contradiction.

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

Conciseness5/5

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

Very concise and well-structured with sections for Args, Returns, and Error Handling. Front-loaded with the key 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?

Even without output schema, the description explains the return (confirmation of id, name, status) and covers error handling. All necessary context is provided.

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% with full parameter descriptions. The description adds behavioral meaning to force (permanent vs trash) and clarifies product_id requirement.

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 clearly states the tool deletes a product, explains default trash behavior vs permanent deletion, and is distinct from sibling tools for tags, categories, etc.

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?

Describes when to use (deleting a product) and covers the force parameter for permanent deletion. Does not explicitly exclude alternatives but context is clear from sibling tool names.

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

woocommerce_delete_product_categoryDelete Product CategoryA
DestructiveIdempotent

Permanently delete a product category. Products assigned to it are not deleted, just unassigned.

Args:

  • id (number, required)

  • force (boolean, default true): required to be true, terms do not support trash

Returns: Confirmation of deletion.

Error Handling:

  • Returns "Error: Resource not found (404)" if the ID doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe category's numeric ID
forceNoTerms don't support trash; deletion is permanent (default: true)

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (destructiveHint, idempotentHint), the description adds that deletion is permanent, force must be true, and products are unassigned. It also documents the expected 404 error response, providing clear behavioral context.

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

Conciseness5/5

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

The description is concise and well-structured with sections for Args, Returns, and Error Handling. Every sentence adds useful information without redundancy.

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

Completeness5/5

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

Given the simplicity of the tool (2 parameters, no output schema), the description covers purpose, parameters, side effects, and error handling completely. No missing information is evident.

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. The description adds meaning by explaining the force parameter's necessity (terms don't support trash) and confirming permanent deletion, adding value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool permanently deletes a product category and distinguishes it by clarifying that products are unassigned, not deleted. This differentiates from product deletion tools among siblings.

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

Usage Guidelines3/5

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

The description implies usage for permanent deletion but does not explicitly specify when to use this tool versus alternatives like updating the category. No direct exclusion criteria or alternative suggestions are provided.

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

woocommerce_delete_product_tagDelete Product TagA
DestructiveIdempotent

Permanently delete a product tag. Products assigned to it are not deleted, just unassigned.

Args:

  • id (number, required)

  • force (boolean, default true): required to be true, terms do not support trash

Returns: Confirmation of deletion.

Error Handling:

  • Returns "Error: Resource not found (404)" if the ID doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe tag's numeric ID
forceNoTerms don't support trash; deletion is permanent (default: true)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructive behavior, but the description adds that deletion is permanent, force must be true, and includes error handling (404). This goes beyond annotations by specifying conditions and outcomes.

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

Conciseness5/5

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

The description is concise and well-structured, using clear sections for args, returns, and error handling. Every sentence provides value, with no wasted words.

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

Completeness4/5

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

For a deletion tool with no output schema, the description covers the key behavioral aspects: permanent deletion, product unassignment, force requirement, and error response. It is sufficiently complete for an agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description repeats schema info for 'force' and adds minimal extra context ('required to be true'). It does not add significant meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states it permanently deletes a product tag, and explicitly clarifies that associated products are not deleted. This provides a specific verb and resource, distinguishing it from sibling delete tools like woocommerce_delete_product.

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 mentions that products are unassigned, implying safe deletion, but does not explicitly state when to use this tool versus alternatives like updating a tag or deleting other resources. No direct when-not-to-use guidance is provided, but the context of unassignment offers some usage insight.

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

woocommerce_delete_product_variationDelete WooCommerce Product VariationA
DestructiveIdempotent

Permanently delete a product variation.

Args:

  • product_id, variation_id (number, required)

  • force (boolean, default true): variations do not support trash, so deletion is always permanent

Returns: Confirmation of deletion.

Error Handling:

  • Returns "Error: Resource not found (404)" if the IDs don't match an existing variation.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoVariations don't support trash; deletion is permanent (default: true)
product_idYes
variation_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, and the description reinforces this by stating deletion is permanent and that variations do not support trash. It also describes error responses, adding context 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.

Conciseness5/5

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

The description is extremely concise, with a clear purpose line followed by structured sections for args, returns, and error handling. Every sentence adds value.

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

Completeness5/5

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

Given the tool's simplicity and annotations, the description covers all necessary aspects: action, parameters, permanence, return confirmation, and error handling. No output schema needed.

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

Parameters5/5

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

The description provides clear explanations for all three parameters, including the default/behavior of 'force', which the schema only partially covers. This compensates for the low schema description coverage (33%).

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 explicitly states 'Permanently delete a product variation,' which clearly identifies the action (delete) and resource (product variation). It distinguishes this tool from sibling delete tools like woocommerce_delete_product or woocommerce_delete_product_tag.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool vs alternatives (e.g., when to delete a variation vs a product). The description only explains that deletion is permanent and how errors are handled.

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

woocommerce_get_couponGet WooCommerce CouponA
Read-onlyIdempotent

Retrieve full details for a single coupon, including restrictions (min/max spend, product/category restrictions, email restrictions).

Args:

  • coupon_id (number, required)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: Full coupon object.

Error Handling:

  • Returns "Error: Resource not found (404)" if coupon_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
coupon_idYesThe numeric WooCommerce coupon ID
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by specifying the error response format and the response_format options, providing additional behavioral context 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.

Conciseness5/5

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

The description is concise with clear sections (Args, Returns, Error Handling). It front-loads the main purpose and uses minimal text to convey essential information. Every sentence serves a purpose without redundancy.

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 no output schema, the description states 'Returns: Full coupon object' and lists included restrictions. It also covers error handling. While it could list more details (e.g., usage counts), it is adequate for a single-resource retrieval 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 fully describes both parameters. The description merely restates parameter names and options without adding new semantic meaning. Baseline score 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?

The description clearly states it retrieves full details for a single coupon, including specific restrictions. This distinguishes it from sibling tools like woocommerce_list_coupons (list) and woocommerce_create_coupon (create). The verb 'Retrieve' and resource 'single coupon' are explicit.

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 does not provide explicit guidance on when to use this tool versus alternatives (e.g., list vs get, or when to use markdown vs json). It only mentions error handling for non-existent IDs. Usage context is implied but not stated.

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

woocommerce_get_customerGet WooCommerce CustomerA
Read-onlyIdempotent

Retrieve full details for a single customer, including billing/shipping addresses, order count, and lifetime spend.

Args:

  • customer_id (number, required)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: Full customer object.

Error Handling:

  • Returns "Error: Resource not found (404)" if customer_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesThe numeric WooCommerce customer ID
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds useful context: the return of a full customer object and explicit error handling for missing customer IDs. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is concise with a clear structure: a one-sentence purpose, followed by Args, Returns, and Error Handling sections. Every sentence adds value, with no unnecessary repetition or filler.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, read-only, no output schema), the description covers purpose, parameters, return type, included fields, and error behavior. It sufficiently equips an agent to invoke the tool correctly, though more detail on the return object structure could be provided.

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?

Both parameters are fully described in the schema (100% coverage). The description merely restates the parameter names and types without adding new semantic information beyond what the schema provides. Thus, it meets the baseline expectation.

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 clearly states 'Retrieve full details for a single customer', specifying the action (retrieve) and the target (single customer). It lists specific data returned (billing/shipping addresses, order count, lifetime spend), distinguishing it from sibling tools like list, create, update, and delete customers.

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?

While the purpose implies use for retrieving a specific customer's full details, the description does not explicitly state when to use this tool versus alternatives (e.g., woocommerce_list_customers for browsing multiple customers). No direct when-not or alternative guidance is provided.

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

woocommerce_get_orderGet WooCommerce OrderA
Read-onlyIdempotent

Retrieve full details for a single order, including line items, billing/shipping addresses, payment info, shipping/fee/coupon lines, and totals.

Args:

  • order_id (number, required)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: Full order object.

Error Handling:

  • Returns "Error: Resource not found (404)" if order_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesThe numeric WooCommerce order ID
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive. Description adds value by detailing the return (full order object) and error handling behavior (specific 404 message). No contradictions.

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?

Description is concise with clearly separated sections for purpose, arguments, returns, and error handling. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given the tool is a simple retrieval with 2 parameters and no output schema, the description fully covers what the tool does, its parameters, return content, and error handling. No 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 already describes both parameters with 100% coverage (order_id as integer, response_format as enum with default). Description reiterates response_format default and mentions markdown/json but adds no new semantics beyond 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?

Description clearly states 'Retrieve full details for a single order' and lists included fields (line items, addresses, payment, etc.). This distinguishes it from sibling list_orders, which returns a list, not full details.

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?

Description implies use for retrieving a single order's full details. It does not explicitly contrast with list_orders, but the purpose is clear. Error handling for 404 adds practical guidance.

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

woocommerce_get_productGet WooCommerce ProductA
Read-onlyIdempotent

Retrieve full details for a single product by ID, including description, pricing, stock, images, categories, tags, attributes, and (for variable products) the list of variation IDs.

Args:

  • product_id (number): The product's numeric ID

  • response_format ('markdown'|'json'): default 'markdown'

Returns: Full product object.

Error Handling:

  • Returns "Error: Resource not found (404)" if the product ID doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe numeric WooCommerce product ID
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety. The description adds value by specifying error handling (returns 404 on not found) and mentioning the return format, providing behavioral details 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.

Conciseness5/5

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

The description is highly concise with two paragraphs and bullet-style Args. It front-loads the main purpose and includes all essential information without any filler, making every sentence valuable.

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?

Despite lacking an output schema, the description lists the fields returned (description, pricing, stock, etc.) and covers error handling. Given the tool's simplicity (single product retrieval), the description is complete enough for an agent to understand what to expect.

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

Parameters4/5

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

Schema coverage is 100%, so the schema fully describes both parameters. The description paraphrases product_id and response_format, but also adds the note that the function returns a 'Full product object,' which is not in the schema, adding meaningful context beyond the structured data.

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 explicitly states 'Retrieve full details for a single product by ID' and lists the specific fields included, clearly distinguishing it from sibling tools like 'woocommerce_list_products' which lists multiple products and 'woocommerce_get_product_variation' for variations.

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 clearly indicates this tool is for retrieving a single product by ID. While it does not explicitly say when not to use it or mention alternatives, the context of sibling tools makes the usage context evident. It is adequate but could be improved with explicit exclusions.

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

woocommerce_get_product_variationGet WooCommerce Product VariationA
Read-onlyIdempotent

Retrieve full details for a single product variation.

Args:

  • product_id (number, required): parent product ID

  • variation_id (number, required): variation ID

  • response_format ('markdown'|'json'): default 'markdown'

Returns: Full variation object including attributes, pricing, and stock.

Error Handling:

  • Returns "Error: Resource not found (404)" if either ID is wrong or the variation doesn't belong to that product.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe parent variable product's numeric ID
variation_idYesThe variation's numeric ID
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint: true, idempotentHint: true, destructiveHint: false, so the description's burden is low. It adds error handling details (specific HTTP 404 message) and return format info, which provide useful behavioral context without contradiction.

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 structured with an 'Args:' section, a 'Returns:' line, and an 'Error Handling:' section. It is fairly concise and front-loaded with the main purpose. Minor redundancy (e.g., listing parameters that are already in schema) but overall 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?

With no output schema, the description adequately explains return values ('Full variation object including attributes, pricing, and stock') and error behavior. It covers enough for a read-only tool, though the return format is not fully detailed.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description restates them but adds the 'parent product ID' and 'variation ID' labels, and specifies the default value for response_format. This adds marginal value beyond the schema.

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

Purpose5/5

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

The description clearly states 'Retrieve full details for a single product variation,' using a specific verb and resource. It distinguishes from sibling tools like 'woocommerce_list_product_variations' (list vs. single) and 'woocommerce_get_product' (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 Guidelines4/5

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

The description implies usage for retrieving a single variation by requiring both product_id and variation_id. It does not explicitly compare with alternatives or state when not to use, but the context from sibling tools makes the purpose clear.

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

woocommerce_get_report_totalsGet WooCommerce Report TotalsA
Read-onlyIdempotent

Get a breakdown of total counts by status for a resource (e.g. how many orders are in each status, or total product/customer/coupon/review counts).

Args:

  • resource: 'orders'|'products'|'customers'|'coupons'|'reviews'

  • response_format ('markdown'|'json'): default 'markdown'

Returns: list of {slug, name, total} entries, e.g. for orders: pending/processing/completed/etc counts.

Examples:

  • Use when: "how many orders are currently pending vs completed" -> resource="orders"

ParametersJSON Schema
NameRequiredDescriptionDefault
resourceYesWhich resource to get status/total breakdown for
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnly, openWorld, idempotent, and non-destructive behavior. The description adds context about the return structure (list of {slug, name, total}) and the effect of the response_format parameter. No contradictions.

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 concise, with clear separation of purpose, parameters, return structure, and example. It is front-loaded with the main action and resource types. No unnecessary 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 tool with 2 parameters, full schema coverage, and no output schema, the description provides sufficient context: it explains each parameter, the output format, and gives an example. It is complete for its complexity level.

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%. The description adds value by clarifying the default for response_format and providing an example that demonstrates the parameter usage and output structure. This goes beyond the schema alone.

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 clearly states the tool's purpose: getting a breakdown of total counts by status for a resource. It specifies the five valid resources (orders, products, customers, coupons, reviews) and gives an example. This distinguishes it from sibling reporting tools like woocommerce_get_sales_report.

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 provides an example of when to use the tool ('how many orders are currently pending vs completed') and explains the resource and response_format parameters. However, it does not explicitly state when not to use it or compare it to alternatives.

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

woocommerce_get_sales_reportGet WooCommerce Sales ReportA
Read-onlyIdempotent

Retrieve aggregate sales totals (revenue, orders, items, tax, shipping, discounts, refunds) for a period or custom date range.

Args:

  • period: 'week'|'month'|'last_month'|'year' (optional; omit if using date_min/date_max)

  • date_min / date_max (string, optional): YYYY-MM-DD custom range, overrides 'period'

  • response_format ('markdown'|'json'): default 'markdown'

Returns: Sales totals summary. If neither period nor date range is given, WooCommerce defaults to the current week.

Examples:

  • Use when: "what were our sales last month" -> period="last_month"

  • Use when: "sales between June 1 and June 30" -> date_min="2026-06-01", date_max="2026-06-30"

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoPredefined period: 'week', 'month', 'last_month', 'year'. Overridden by date_min/date_max if provided.
date_maxNoEnd date (YYYY-MM-DD), for a custom range
date_minNoStart date (YYYY-MM-DD), for a custom range
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds context about the default period (current week) but does not disclose other behavioral traits like rate limits or exact return structure. It does not contradict annotations.

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

Conciseness4/5

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

The description is well-structured with an args list and examples, front-loading the purpose. It is reasonably concise, though the first sentence could be streamlined. Every sentence adds 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?

Given no output schema, the description mentions 'Sales totals summary' but does not enumerate fields. However, for a simple reporting tool with good annotations and parameter documentation, this is adequate. The description covers when to use and parameter interplay.

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 meaning beyond the schema by explaining that date_min/date_max override period, specifying the default response_format, and providing usage examples. This justifies a score of 4.

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 clearly states it retrieves aggregate sales totals (revenue, orders, items, tax, shipping, discounts, refunds) for a period or custom date range. This distinguishes it from sibling tools like woocommerce_get_top_sellers_report and woocommerce_get_report_totals, which focus on different metrics.

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 provides explicit guidance on when to use period versus date_min/date_max, with examples. It explains the default behavior when no parameters are given. However, it does not explicitly mention when to use alternative tools, such as using woocommerce_get_top_sellers_report for top sellers, which would improve clarity.

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

woocommerce_get_top_sellers_reportGet WooCommerce Top Sellers ReportA
Read-onlyIdempotent

Retrieve the best-selling products (by quantity sold) for a period or custom date range.

Args:

  • period: 'week'|'month'|'last_month'|'year' (optional; omit if using date_min/date_max)

  • date_min / date_max (string, optional): YYYY-MM-DD custom range, overrides 'period'

  • response_format ('markdown'|'json'): default 'markdown'

Returns: list of products with product_id, title, and quantity sold, ordered by quantity descending. Defaults to the current week if no period/range given.

Examples:

  • Use when: "what were our best selling products this year" -> period="year"

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoPredefined period: 'week', 'month', 'last_month', 'year'. Overridden by date_min/date_max if provided.
date_maxNoEnd date (YYYY-MM-DD), for a custom range
date_minNoStart date (YYYY-MM-DD), for a custom range
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the return format (list of products with id, title, quantity), ordering (descending by quantity), and default behavior (current week). This provides useful context beyond the annotations, though annotations already cover safety and side effects.

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

Conciseness5/5

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

The description is structured with clear sections (Args, Returns, Examples) and uses concise language. Every sentence adds value without redundancy. It is front-loaded with the core purpose and provides details efficiently.

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

Completeness5/5

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

Given the tool's simplicity and the absence of an output schema, the description covers all necessary aspects: return structure (product_id, title, quantity), ordering, default behavior, and parameter relationships. It provides enough information for an AI agent to invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining the mutual exclusivity of 'period' and 'date_min/date_max' ('overrides period'), specifying defaults (current week when no period/range given), and providing example usage. This goes beyond the schema's simple 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?

The description clearly states the verb ('Retrieve') and resource ('best-selling products') and specifies the scope ('by quantity sold for a period or custom date range'). It distinguishes itself from sibling tools like woocommerce_list_products (which lists all products) and woocommerce_get_sales_report (which provides overall sales figures).

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 provides concrete examples for when to use the tool (e.g., 'What were our best selling products this year?') and explains parameter mutual exclusivity between 'period' and 'date_min/date_max'. It does not explicitly mention when not to use it or compare with alternatives like woocommerce_list_products, but the context is sufficient.

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

woocommerce_list_couponsList WooCommerce CouponsA
Read-onlyIdempotent

Search and list discount coupons defined in the store.

Args:

  • search (string, optional): match against coupon code

  • code (string, optional): exact code match

  • orderby / order: sorting (default date/desc)

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: paginated list of coupons with code, amount, discount type, usage count/limit, and expiry.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoFilter by exact coupon code
pageNoPage number to retrieve, 1-based (default: 1)
orderNoSort direction (default: desc)desc
searchNoSearch term to match against coupon code
orderbyNoSort field (default: date)date
per_pageNoNumber of results per page, 1-100 (default: 20)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

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 destructiveHint=false. The description adds behavioral context like default pagination (max 100 per page), optional filters, and return format details, but does not mention error handling 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.

Conciseness5/5

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

The description is concise with a clear 'Args:' section listing parameters and their defaults. Every sentence adds value; no redundant or wasted text.

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

Completeness4/5

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

The description covers search, pagination, sorting, and output formats. It explains return fields (code, amount, discount type, usage count/limit, expiry) without an output schema, which is adequate for a 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% with detailed descriptions. The description adds value by clarifying that 'search' matches against coupon code and 'code' is an exact match, and reiterates default values for sorting and pagination.

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 'Search and list discount coupons defined in the store' with a specific verb and resource, distinguishing it from sibling tools like woocommerce_get_coupon (single) and create/update/delete operations.

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

Usage Guidelines4/5

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

The description implies usage for listing/searching coupons with filters, pagination, and sorting, but does not explicitly provide when-not-to-use or compare with alternatives like woocommerce_get_coupon.

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

woocommerce_list_customersList WooCommerce CustomersA
Read-onlyIdempotent

Search and list registered customers (does not include guest checkout customers, who aren't stored as customer records).

Args:

  • search (string, optional): match against name/email/username

  • email (string, optional): exact match

  • role (string, optional): WordPress role filter

  • orderby / order: sorting (default name/asc)

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: paginated list of customers with id, email, name, order count, and total spent.

Examples:

  • Use when: "find the customer with email jane@example.com" -> email="jane@example.com"

  • Don't use when: looking up who placed a guest order (check the order's billing details instead)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve, 1-based (default: 1)
roleNoFilter by WordPress user role, e.g. 'customer', 'subscriber'
emailNoFilter by exact email address
orderNoSort direction (default: asc)asc
searchNoSearch term to match against name/email/username
orderbyNoSort field (default: name)name
per_pageNoNumber of results per page, 1-100 (default: 20)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive. Description adds important nuance that guest checkout customers are excluded, and details pagination/sorting defaults, enhancing understanding 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.

Conciseness5/5

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

Well-structured with Args, Returns, Examples sections. Every sentence adds value; no redundancy or fluff.

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?

Despite no output schema, description details return fields (id, email, name, order count, total spent) and covers all parameters with pagination limits, fully informing usage.

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%, but the description adds usage examples (e.g., email='jane@example.com') and organizes parameters with clear explanations, providing extra context.

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 clearly states 'Search and list registered customers' with a specific exclusion of guest checkout customers, distinguishing it from other tools like 'woocommerce_get_customer'.

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?

Provides explicit examples of when to use (e.g., find customer by email) and when not to use (guest order lookup with pointer to billing details), offering clear alternative guidance.

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

woocommerce_list_order_notesList WooCommerce Order NotesA
Read-onlyIdempotent

List the internal/customer notes attached to an order (e.g. fulfillment updates, payment gateway logs).

Args:

  • order_id (number, required)

  • type: 'any'|'customer'|'internal' (default: any)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: list of notes with id, author, date, content, and whether it's customer-visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by note type (default: any)any
order_idYesThe numeric WooCommerce order ID
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the behavior is transparent. The description adds that the tool returns a list of notes with specific fields, which is consistent.

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

Conciseness5/5

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

The description is concise, front-loaded with the purpose, and includes a clear Args list and return description. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the rich annotations and complete schema, the description fully covers the tool's behavior. It specifies the return fields despite the lack of an output schema, making it complete.

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% with descriptions for all three parameters. The description adds clarity by explaining the response_format options (markdown for human-readable, json for machine-readable) and the type parameter's default value, enhancing understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists notes attached to an order (internal/customer), with examples like fulfillment updates and payment logs. It is distinct from sibling tools like create_order_note or list_orders.

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 context on when to use (listing notes for an order) with examples, but does not explicitly state when not to use or contrast with alternatives like create_order_note.

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

woocommerce_list_order_refundsList WooCommerce Order RefundsA
Read-onlyIdempotent

List refunds issued against an order.

Args:

  • order_id (number, required)

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: list of refunds with id, amount, reason, and refunded line items.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve, 1-based (default: 1)
order_idYesThe numeric WooCommerce order ID
per_pageNoNumber of results per page, 1-100 (default: 20)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description confirms the read-only nature and adds return fields, but does not elaborate on other behavioral traits like rate limits or side effects beyond what 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.

Conciseness5/5

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

The description is concise, with a single sentence for purpose and a compact parameter listing. It is front-loaded and every sentence adds 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?

No output schema, but the description specifies returned fields (id, amount, reason, refunded line items), which is sufficient for a list tool. More detail on pagination behavior or error conditions would improve completeness.

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 baseline is 3. The description repeats parameter defaults and options, adding marginal value beyond the schema (e.g., grouping the parameters). It does not introduce new 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?

The description clearly states 'List refunds issued against an order.' The verb 'list' and resource 'refunds' with context 'issued against an order' is specific and distinguishes from sibling tools like create_order_refund or list_orders.

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 focuses on parameters but does not explicitly state when to use this tool compared to alternatives like get_order or create_order_refund. Usage context is implied but not detailed.

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

woocommerce_list_ordersList WooCommerce OrdersA
Read-onlyIdempotent

Search and list store orders, with filters for status, customer, date range, and product.

Args:

  • status: 'any'|'pending'|'processing'|'on-hold'|'completed'|'cancelled'|'refunded'|'failed'|'trash' (default: any)

  • customer (number, optional): customer ID

  • search (string, optional)

  • after / before (string, optional): ISO8601 dates bounding date_created

  • product (number, optional): only orders containing this product ID

  • orderby / order: sorting (default date/desc)

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: paginated list of orders with id, number, status, total, currency, customer, and line item count.

Examples:

  • Use when: "show me pending orders from this week" -> status="pending", after="2026-06-29T00:00:00"

  • Use when: "how many orders has customer 15 placed" -> customer=15

  • Don't use when: you need full line-item and address detail for one order (use woocommerce_get_order)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve, 1-based (default: 1)
afterNoISO8601 date - only orders created after this date
orderNoSort direction (default: desc)desc
beforeNoISO8601 date - only orders created before this date
searchNoSearch term (matches order number, billing details, etc.)
statusNoFilter by order status (default: any)any
orderbyNoSort field (default: date)date
productNoFilter to orders that contain this product ID
customerNoFilter to orders from a specific customer ID
per_pageNoNumber of results per page, 1-100 (default: 20)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond annotations: pagination details (default per_page=20, max 100), response format options, and what fields are returned. It does not contradict annotations.

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

Conciseness4/5

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

The description is well-structured with an introductory sentence, parameter list, return info, and examples. It is not excessively verbose, though it could be slightly tighter. Still, every sentence adds value and is front-loaded with the main purpose.

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 11 parameters, no required, and no output schema, the description covers all parameters, explains return fields (id, number, status, total, currency, customer, line item count), and notes pagination limits. This is sufficient for an agent to understand the tool's behavior and output.

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 extra value by listing all parameters with defaults, providing usage examples (e.g., status, after, customer), and clarifying the search parameter matches billing details. This goes beyond the 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?

The description clearly states the tool 'Search and list store orders' with specific filters. It distinguishes from the sibling tool 'woocommerce_get_order' by noting when not to use it for full detail, and from other list tools by focusing on orders.

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?

The description provides explicit use cases with examples ('show me pending orders from this week') and explicitly tells when not to use this tool ('Don't use when: you need full line-item and address detail for one order (use woocommerce_get_order)'). This gives clear guidance on when to use vs alternatives.

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

woocommerce_list_product_categoriesList Product CategorysA
Read-onlyIdempotent

List product categorys defined in the store.

Args:

  • search (string, optional): match against name

  • parent (number, optional): filter to children of a given category ID

  • orderby / order: sorting (default name/asc)

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: paginated list of categorys with id, name, slug, and product count.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve, 1-based (default: 1)
orderNoSort direction (default: asc)asc
parentNoFilter to children of this parent category ID
searchNoSearch term to match against Category name
orderbyNoField to sort by (default: name)name
per_pageNoNumber of results per page, 1-100 (default: 20)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint true, destructiveHint false, idempotentHint true. Description adds useful behavioral details: returns paginated list with specific fields (id, name, slug, product count), default pagination, and max per_page.

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

Conciseness5/5

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

The description is concise with a bullet-like structure that clearly presents parameters and return values. Every sentence contributes meaning without redundancy.

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

Completeness5/5

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

Given the simplicity of the tool and the presence of annotations, the description is complete. It explains all parameters, return format, and default values. No output schema exists but the return description is 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?

Schema coverage is 100%, so baseline is 3. Description adds value by explaining parameter purposes (search matches name, parent filters children, etc.) in a clear, organized list, going beyond the schema's 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?

The description clearly states it lists product categories, which is a specific verb+resource. It distinguishes from sibling tools that create, update, or delete categories.

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

Usage Guidelines3/5

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

No explicit when-to-use vs alternatives guidance. However, the purpose is self-evident, and there is no direct alternative like a 'get' for categories. The absence of usage context lowers the score.

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

woocommerce_list_productsList WooCommerce ProductsA
Read-onlyIdempotent

Search and list products in the WooCommerce store catalog.

Supports filtering by search term, SKU, status, type, category, tag, stock status, sale status, and price range. Does NOT return product variations for variable products - use woocommerce_list_product_variations for those.

Args:

  • search (string, optional): Match against name/SKU/description

  • sku (string, optional): Exact SKU match

  • status ('any'|'draft'|'pending'|'private'|'publish'): default 'any'

  • type ('simple'|'grouped'|'external'|'variable'): optional

  • category (string, optional): category ID(s), comma-separated

  • tag (string, optional): tag ID(s), comma-separated

  • stock_status ('instock'|'outofstock'|'onbackorder'): optional

  • featured (boolean, optional)

  • on_sale (boolean, optional)

  • min_price / max_price (string, optional): numeric string bounds

  • orderby / order: sorting controls

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: paginated list of products with id, name, sku, type, status, pricing, stock, and categories.

Examples:

  • Use when: "find all out of stock products" -> stock_status="outofstock"

  • Use when: "show products under $20 on sale" -> on_sale=true, max_price="20.00"

  • Don't use when: you need details of one known product ID (use woocommerce_get_product)

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNoFilter by an exact SKU
tagNoFilter by tag ID (comma-separated for multiple)
pageNoPage number to retrieve, 1-based (default: 1)
typeNoFilter by product type
orderNoSort direction (default: desc)desc
searchNoSearch term to match against product name/SKU/description
statusNoFilter by product status (default: any)any
on_saleNoFilter to only products currently on sale
orderbyNoField to sort results by (default: date)date
categoryNoFilter by category ID (comma-separated for multiple)
featuredNoFilter to only featured (true) or non-featured (false) products
per_pageNoNumber of results per page, 1-100 (default: 20)
max_priceNoMaximum price filter (numeric string, e.g. '99.99')
min_priceNoMinimum price filter (numeric string, e.g. '10.00')
stock_statusNoFilter by stock status
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A5/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds value by detailing output structure (paginated list with specific fields), response_format options, and limitations (no variations coverage). No contradictions with annotations.

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

Conciseness5/5

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

The description is well-organized into sections: overview, exclusion note, parameter list with inline explanations, return value summary, and usage examples. It is concise yet comprehensive, with no wasted sentences.

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

Completeness5/5

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

Given 16 parameters, 100% schema coverage, and no output schema, the description fully compensates by explaining return structure, providing examples, and referencing sibling tools. It is complete and actionable for an agent.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning by grouping parameters, providing explanation of how each is used in context (e.g., 'Match against name/SKU/description' for search), and including practical examples that clarify parameter combinations (e.g., on_sale and max_price).

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 clearly states the tool searches and lists products in the WooCommerce store catalog. It distinguishes itself by noting it does not return variations, directing users to woocommerce_list_product_variations for that purpose, and differentiates from woocommerce_get_product for single product retrieval.

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 usage guidance is provided, including when to use (e.g., 'find all out of stock products'), when not to use (e.g., needing details of a known product ID), and alternative tools to use instead (woocommerce_get_product, woocommerce_list_product_variations).

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

woocommerce_list_product_tagsList Product TagsA
Read-onlyIdempotent

List product tags defined in the store.

Args:

  • search (string, optional): match against name

  • orderby / order: sorting (default name/asc)

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: paginated list of tags with id, name, slug, and product count.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve, 1-based (default: 1)
orderNoSort direction (default: asc)asc
searchNoSearch term to match against Tag name
orderbyNoField to sort by (default: name)name
per_pageNoNumber of results per page, 1-100 (default: 20)
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate safe, read-only behavior. Description adds useful context: returns paginated list with id, name, slug, product count, and default response format. No contradictions.

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

Conciseness5/5

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

Extremely concise: one sentence for purpose, bullet points for parameters. No fluff. Information is well-structured and easy to scan.

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 list tool with no output schema, the description fully specifies the return value (paginated list with specific fields) and all parameters are documented. Complete for its purpose.

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 covers all parameters (100% coverage). Description adds meaning: 'match against name' for search, defaults for sorting and pagination, and response_format options.

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 clearly states the tool lists product tags, which is distinct from sibling tools like create/delete tags. Uses specific verb 'List' and resource 'product tags'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like woocommerce_list_product_categories or woocommerce_list_products. No mention of scenarios or prerequisites.

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

woocommerce_list_product_variationsList WooCommerce Product VariationsA
Read-onlyIdempotent

List all variations of a variable product (e.g. a T-shirt with Size/Color variations).

Args:

  • product_id (number, required): the parent variable product's ID

  • page / per_page: pagination (default page=1, per_page=20, max 100)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: paginated list of variations with id, sku, price, stock, and attribute options.

Error Handling:

  • Returns an empty list if the product exists but isn't of type 'variable' or has no variations.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve, 1-based (default: 1)
per_pageNoNumber of results per page, 1-100 (default: 20)
product_idYesThe parent variable product's numeric ID
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds valuable behavioral details: return format options, pagination limits (max 100), default values, and error handling behavior. No contradictions with annotations.

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

Conciseness5/5

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

The description is concise with clear sections (Args, Returns, Error Handling). It is front-loaded with the core purpose. No redundant or excessive text.

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

Completeness5/5

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

Given 4 parameters, no output schema, and rich annotations, the description covers purpose, parameters, return fields (id, sku, price, stock, attribute options), pagination, and error handling. It provides sufficient context for an agent to use the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds minimal extra nuance (e.g., max 100 for per_page, default page=1) but largely repeats schema info. It does not provide deeper semantics beyond what the schema already offers.

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 clearly states it lists all variations of a variable product, with a concrete example (T-shirt with Size/Color). It distinguishes itself from sibling tools like woocommerce_get_product_variation (single) and woocommerce_list_products (list products).

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 includes pagination defaults and error handling (returns empty list if product not variable), which provides context for when the tool works or returns nothing. However, it does not explicitly contrast with alternatives like get_product_variation for single variations.

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

woocommerce_update_couponUpdate WooCommerce CouponA
Idempotent

Update fields on an existing coupon. Only supplied fields are changed.

Args:

  • coupon_id (number, required)

  • Any subset of: code, discount_type, amount, description, date_expires, usage_limit, usage_limit_per_user, free_shipping, minimum_amount, maximum_amount

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The updated coupon object.

Examples:

  • Use when: "extend coupon 12's expiry to end of year" -> coupon_id=12, date_expires="2026-12-31"

Error Handling:

  • Returns "Error: Resource not found (404)" if coupon_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo
amountNo
coupon_idYesThe numeric WooCommerce coupon ID to update
descriptionNo
usage_limitNo
date_expiresNoYYYY-MM-DD
discount_typeNo
free_shippingNo
maximum_amountNo
minimum_amountNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown
usage_limit_per_userNo

TDQS

A3.6/5.0
Behavior4/5

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

Description discloses mutation ('Update'), partial update ('Only supplied fields are changed'), and error handling (404). Annotations already indicate idempotent and non-destructive. The description adds value by specifying behavior 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 description is moderately concise but includes a redundant Args list that largely duplicates the schema. Every sentence adds some value, but the structure could be tighter.

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

Completeness3/5

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

For a tool with 12 parameters and no output schema, the description covers mutation, partial updates, and error handling. However, it omits details about the return value structure and does not address edge cases like invalid field values.

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% (2 of 12 params have descriptions). The description lists parameter names but adds little semantic detail beyond the schema. The example connects coupon_id and date_expires, but overall does not compensate for low schema 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?

The description clearly states the action ('Update fields on an existing coupon') and specifies the resource ('coupon') and scope ('existing'). It distinguishes from sibling tools like create and delete by emphasizing update on an existing entity.

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 provides an example and error handling notes, giving some usage context. However, it lacks explicit guidance on when not to use this tool (e.g., when to use create_coupon instead) or mention of prerequisites.

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

woocommerce_update_customerUpdate WooCommerce CustomerA
Idempotent

Update fields on an existing customer. Only supplied fields are changed.

Args:

  • customer_id (number, required)

  • Any subset of: email, first_name, last_name, billing, shipping

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The updated customer object.

Error Handling:

  • Returns "Error: Resource not found (404)" if customer_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
billingNo
shippingNo
last_nameNo
first_nameNo
customer_idYesThe numeric WooCommerce customer ID to update
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4/5.0
Behavior4/5

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

The description adds context about partial updates and error handling (404 for missing customer), complementing annotations that indicate idempotency and non-destructiveness.

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

Conciseness5/5

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

The description is concise with four sentences covering purpose, args, returns, and error handling, front-loaded with the key 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?

The description adequately covers the main aspects for a simple CRUD update, but could improve by detailing nested parameters and validation 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?

Given low schema coverage (29%), the description lists the parameters and default response_format but lacks details on nested billing/shipping structures, providing partial compensation.

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 clearly states the tool updates an existing customer and that only supplied fields are changed, distinguishing it from create, delete, and get tools.

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 for partial updates but does not explicitly state when to use this tool over creating or deleting, or provide exclusions.

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

woocommerce_update_orderUpdate WooCommerce OrderA
Idempotent

Update an existing order's status, addresses, or notes. To change line items, use the WooCommerce admin UI or pass a full 'line_items' array via a direct API call - this tool intentionally keeps line-item edits out of scope to avoid accidental stock/total recalculation mistakes.

Args:

  • order_id (number, required)

  • status (string, optional): e.g. 'processing', 'completed', 'cancelled', 'refunded'

  • customer_note, billing, shipping, set_paid (optional)

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The updated order object.

Examples:

  • Use when: "mark order 100 as completed" -> order_id=100, status="completed"

Error Handling:

  • Returns "Error: Resource not found (404)" if order_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoNew order status
billingNo
order_idYesThe numeric WooCommerce order ID to update
set_paidNo
shippingNo
customer_noteNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate idempotent and non-destructive; description adds context about avoiding accidental stock/total recalculation by omitting line-item edits, and includes error handling example. No contradiction.

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?

Reasonably concise with clear sections (Args, Examples, Error Handling). First sentence is effective. Minor redundancy with schema listing.

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; return value is vaguely described as 'the updated order object'. Could elaborate on billing/shipping structure or status enum meanings, but error handling 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?

With low schema coverage (43%), the description lists key parameters but provides limited additional semantics beyond the schema. For example, billing/shipping are mentioned but not detailed.

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 clearly states the tool updates order status, addresses, or notes, and explicitly excludes line-item edits, distinguishing it from other order-related 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?

Provides when-to-use example ('mark order 100 as completed') and when-not-to-use guidance (line-item edits with alternative approach), though it doesn't explicitly contrast with all sibling tools.

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

woocommerce_update_productUpdate WooCommerce ProductA
Idempotent

Update fields on an existing product. Only the fields you provide are changed; all other fields are left untouched.

Args:

  • product_id (number, required)

  • Any subset of: name, status, description, short_description, sku, regular_price, sale_price, manage_stock, stock_quantity, stock_status, category_ids, tag_ids, weight

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The updated product object.

Examples:

  • Use when: "mark product 42 as out of stock" -> product_id=42, stock_status="outofstock"

  • Use when: "put product 42 on sale for $15" -> product_id=42, sale_price="15.00"

Error Handling:

  • Returns "Error: Resource not found (404)" if product_id doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNo
nameNo
statusNo
weightNo
tag_idsNoReplaces the product's tag assignments
product_idYesThe numeric WooCommerce product ID to update
sale_priceNo
descriptionNo
category_idsNoReplaces the product's category assignments
manage_stockNo
stock_statusNo
regular_priceNo
stock_quantityNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown
short_descriptionNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive. The description adds crucial context: partial update behavior, return format (markdown or json), and error handling (404 for missing product). This goes beyond annotations to inform the agent of expected outcomes.

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

Conciseness5/5

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

The description is well-organized with clear sections: purpose, args, returns, examples, error handling. Every sentence adds value, and there is no redundant information. It is concise and easy to parse.

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 tool's complexity (15 parameters, 1 required) and absence of output schema, the description covers key aspects: partial update, error handling, and return object. It could mention that tag_ids and category_ids replace existing assignments (though schema notes this), but overall it is sufficiently complete for an agent to use the tool effectively.

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 27%, so the description should compensate. It lists all parameters but provides no detailed semantics (e.g., valid values for status, how category_ids/tag_ids behave). The examples clarify a couple of parameters but leave most undocumented. Baseline is lower due to low coverage, and the description adds marginal value.

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

Purpose5/5

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

The description clearly states 'Update fields on an existing product', which distinguishes it from create, delete, and other product operations. It also specifies that only provided fields are changed, leaving others untouched.

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?

Examples illustrate common use cases like marking out of stock or setting sale price, clearly implying when to use this tool. However, it does not explicitly state when not to use it (e.g., for creating a product), though that is implied by the sibling tool names.

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

woocommerce_update_product_categoryUpdate Product CategoryA
Idempotent

Update fields on an existing product category.

Args:

  • id (number, required)

  • Any subset of: name, description, parent

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The updated category object.

Error Handling:

  • Returns "Error: Resource not found (404)" if the ID doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe category's numeric ID
nameNo
parentNo
descriptionNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate mutation and idempotency. Description adds that it returns the updated category object and lists error handling for 404, providing behavioral context 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.

Conciseness5/5

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

The description is brief and well-structured with sections for args, returns, and error handling, containing no superfluous information.

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

Completeness4/5

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

For a simple update tool with 5 parameters and no output schema, the description covers purpose, parameters, return, and error handling adequately. It could mention additional constraints but is generally complete.

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 schema coverage at 40%, the description lists all parameters (id required, name/description/parent optional, response_format with default), compensating for missing schema descriptions and clarifying usage.

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 explicitly states 'Update fields on an existing product category', using a specific verb and resource, and distinguishes it from sibling tools like create and delete.

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 is clear the tool is for updating an existing category, with implicit differentiation from create/delete siblings. Error handling guidance for non-existent IDs is provided, but no explicit when-to-use vs alternatives is stated.

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

woocommerce_update_product_tagUpdate Product TagA
Idempotent

Update fields on an existing product tag.

Args:

  • id (number, required)

  • Any subset of: name, description

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The updated tag object.

Error Handling:

  • Returns "Error: Resource not found (404)" if the ID doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe tag's numeric ID
nameNo
descriptionNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A4.7/5.0
Behavior5/5

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

The description adds behavioral details beyond annotations: it specifies error handling (404 for missing ID), response_format options, and return type. Annotations already indicate idempotent and non-destructive, which are consistent.

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

Conciseness5/5

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

The description is extremely concise: one sentence for purpose, a bullet list of args, and error handling. No wasted words, and essential information is front-loaded.

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

Completeness5/5

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

Given the tool's simplicity, the description covers the purpose, parameters, error handling, and return type. Annotations fill in idempotence and safety. No missing critical information for an update endpoint.

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 50% schema coverage, the description compensates by listing updateable fields (name, description) and clarifying id is required. It also explains response_format defaults. However, it doesn't add meaning for name or description beyond listing them.

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 clearly states 'Update fields on an existing product tag,' which is a specific verb and resource. It distinguishes itself from sibling tools like create, delete, or list product tags.

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 implies usage for updating existing tags via the word 'update,' but does not explicitly contrast with create or delete operations. The context is clear enough, but lacks explicit when-not-to-use guidance.

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

woocommerce_update_product_variationUpdate WooCommerce Product VariationA
Idempotent

Update fields on an existing product variation (pricing, stock, SKU). Only supplied fields are changed.

Args:

  • product_id, variation_id (number, required)

  • Any subset of: sku, regular_price, sale_price, manage_stock, stock_quantity, stock_status

  • response_format ('markdown'|'json'): default 'markdown'

Returns: The updated variation object.

Error Handling:

  • Returns "Error: Resource not found (404)" if the IDs don't match an existing variation.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNo
product_idYes
sale_priceNo
manage_stockNo
stock_statusNo
variation_idYes
regular_priceNo
stock_quantityNo
response_formatNoOutput format: 'markdown' for human-readable text or 'json' for machine-readable structured datamarkdown

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds error handling details (404 on not found), return value ('Returns: The updated variation object'), and confirms idempotency by stating only supplied fields change. This provides behavioral context beyond the annotations.

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

Conciseness4/5

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

The description is well-structured with an intro, Args list, Returns, and Error Handling sections. It is concise and front-loaded with the purpose. Minor improvement could be more bullet-point style for readability.

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 tool has 9 parameters, 2 required, no output schema, and annotations, the description covers the essential aspects: required IDs, updatable fields, output format, and error handling. It provides sufficient context for an agent to use the tool correctly.

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

Parameters3/5

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

Schema description coverage is only 11%, but the description lists the parameters (product_id, variation_id, sku, regular_price, sale_price, manage_stock, stock_quantity, stock_status, response_format) and groups them as 'pricing, stock, SKU.' It mentions response_format default and error handling. While not exhaustive, it adds meaning beyond the sparse 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?

The description clearly states the tool updates fields on an existing product variation, focusing on pricing, stock, and SKU. It uses the verb 'update' and specifies the resource, making it distinct from sibling tools like create, get, delete, and list variations.

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 for modifying existing variations through 'Update fields on an existing product variation' and 'Only supplied fields are changed.' However, it lacks explicit when-to-use or when-not-to-use guidance and does not mention alternatives among siblings.

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. Dates show when Glama detected each change.

  1. 40 tool updatesv1.0.0
    • First observedwoocommerce_create_coupon
    • First observedwoocommerce_create_customer
    • First observedwoocommerce_create_order
    • First observedwoocommerce_create_order_note
    • First observedwoocommerce_create_order_refund
    • First observedwoocommerce_create_product
    • First observedwoocommerce_create_product_category
    • First observedwoocommerce_create_product_tag
    • First observedwoocommerce_create_product_variation
    • First observedwoocommerce_delete_coupon
    • First observedwoocommerce_delete_customer
    • First observedwoocommerce_delete_order
    • First observedwoocommerce_delete_product
    • First observedwoocommerce_delete_product_category
    • First observedwoocommerce_delete_product_tag
    • First observedwoocommerce_delete_product_variation
    • First observedwoocommerce_get_coupon
    • First observedwoocommerce_get_customer
    • First observedwoocommerce_get_order
    • First observedwoocommerce_get_product
    • First observedwoocommerce_get_product_variation
    • First observedwoocommerce_get_report_totals
    • First observedwoocommerce_get_sales_report
    • First observedwoocommerce_get_top_sellers_report
    • First observedwoocommerce_list_coupons
    • First observedwoocommerce_list_customers
    • First observedwoocommerce_list_order_notes
    • First observedwoocommerce_list_order_refunds
    • First observedwoocommerce_list_orders
    • First observedwoocommerce_list_product_categories
    • First observedwoocommerce_list_product_tags
    • First observedwoocommerce_list_product_variations
    • First observedwoocommerce_list_products
    • First observedwoocommerce_update_coupon
    • First observedwoocommerce_update_customer
    • First observedwoocommerce_update_order
    • First observedwoocommerce_update_product
    • First observedwoocommerce_update_product_category
    • First observedwoocommerce_update_product_tag
    • First observedwoocommerce_update_product_variation

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct resource and action. Products, variations, categories, tags, orders, notes, refunds, customers, coupons, and reports are all clearly separated with no overlapping functionality.

Naming Consistency5/5

All tool names follow a consistent 'woocommerce_verb_noun' pattern (e.g., list_products, create_product, delete_coupon). The verb is always imperative and naming is uniform.

Tool Count4/5

40 tools is slightly high but justified by WooCommerce's broad domain covering products, orders, customers, coupons, and reports. The count is appropriate for the complexity, though could be trimmed slightly.

Completeness4/5

Full CRUD lifecycle for all major entities (products, variations, categories, tags, orders, customers, coupons) plus order notes, refunds, and basic reports. Missing reviews and advanced reports, but core workflows are well covered.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    WooCommerce MCP Server enables interaction with WooCommerce stores through the WordPress REST API. It provides comprehensive tools for managing all aspects of products, orders, customers, shipping, taxes, discounts, and store configuration using JSON-RPC 2.0 protocol.
    102
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server and Telegram bot that enables natural language management of WooCommerce stores, including products, orders, customers, and sales reports. It supports multiple LLM providers, voice commands via Whisper transcription, and deployment on Cloudflare Workers.
    17
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for managing WooCommerce stores through AI assistants like Claude. Provides 101 tools covering products, orders, customers, coupons, shipping, taxes, webhooks, settings, reports, and more.
    100
    139
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jacques-Murray/woocommerce-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server