Foundation

WooCommerce's Official MCP Abilities: What's Already There

⏱ 14 min

Before you write a single custom ability, you need an accurate map of what WooCommerce already ships, because it’s more than most tutorials assume. WooCommerce added a first-party MCP endpoint in version 10.3, and then, in version 10.9, replaced the improvised parts of that with a proper set of Abilities-API-based domain abilities. Both are real, both are live in current WooCommerce releases, and both are explicitly labeled developer preview. This lesson is a survey of exactly what’s there, so the rest of this course can build on it instead of duplicating it.

What you'll learn in this lesson
The two-stage rollout
WooCommerce 10.3's MCP endpoint versus 10.9's canonical Abilities API abilities, and how they relate now.
All seven canonical abilities
products-query, product-create, product-update, product-delete, orders-query, order-update-status, order-add-note.
What "developer preview" actually implies
Why you should treat schemas and behavior as subject to change, not as a stable contract yet.
How to check what's live on a given install
A quick command to confirm which abilities are actually registered on a real site.
Prerequisites

WooCommerce 10.9+ for the canonical abilities covered in Step 2 (released June 23, 2026). If you’re on an older install between 10.3 and 10.8, you’ll have the original MCP endpoint from Step 1 but not the newer abilities, an upgrade is worth doing before the rest of this course. You’ll also want Course 1’s Abilities API and MCP Adapter lessons fresh in mind.

Step 1: Where this started, the WooCommerce 10.3 MCP endpoint

In October 2025, WooCommerce announced its first MCP implementation, built on top of the WordPress Abilities API and the MCP Adapter, the same foundational pieces from Course 1. It shipped a dedicated endpoint:

https://yourstore.com/wp-json/woocommerce/mcp

Authenticated with standard WooCommerce REST API keys, but passed through a custom header rather than the usual REST auth flow:

X-MCP-API-Key: ck_your_consumer_key:cs_your_consumer_secret

That initial release covered product management (search, add, update) and order management (create, manage) as REST-derived operations exposed through MCP. WooCommerce was explicit that this was a first step: “the first version of the WooCommerce MCP,” paired with the existing REST and Store APIs, not a replacement for them.

This endpoint still exists, but check current docs

WooCommerce’s own developer documentation now describes this original endpoint as the compatibility layer for the deprecated WooCommerce MCP endpoint, it still works, but the REST-derived abilities it exposes aren’t the preferred path anymore. That’s Step 2.

Step 2: The real shift, WooCommerce 10.9’s canonical abilities

WooCommerce 10.9 (released June 23, 2026) introduced seven purpose-built, Abilities-API-based domain abilities, described as backed directly by WooCommerce’s own product and order APIs rather than derived from generic REST endpoints. These are the ones worth building on:

WooCommerce 10.9 canonical domain abilities
Ability nameWhat it does
woocommerce/products-querySearches and filters products, readonly and idempotent.
woocommerce/product-createCreates a new product across supported types: physical, virtual, digital, affiliate, grouped.
woocommerce/product-updateModifies an existing product’s fields.
woocommerce/product-deleteRemoves a product, soft-deletes to trash by default, permanent only with force: true.
woocommerce/orders-queryFilters orders by status, customer ID, billing email, parent order, date range, and more, readonly and idempotent.
woocommerce/order-update-statusChanges an order’s status, with an optional note attached.
woocommerce/order-add-noteAdds a note to an order without changing its status.

A few details worth internalizing now, because they shape decisions later in this course. woocommerce/orders-query omits line items by default (you request them explicitly with include_line_items: true), which matters when you build the sales-reporting assistant in Lesson 6, don’t assume the raw output includes everything. And woocommerce/product-delete defaulting to a soft trash rather than permanent deletion is a sane default worth keeping in mind if you ever build a custom ability that wraps it.

Step 3: What “developer preview” actually means here

WooCommerce’s own documentation is direct about this: “the MCP implementation in WooCommerce is currently in developer preview. Implementation details, APIs, and integration patterns may change in future releases as the feature matures.” The 10.9 announcement echoes this for the abilities themselves, calling this an “initial set” with “gaps to close” in future iterations.

Practically, that means:

Pin and test against a specific WooCommerce version
Don't assume an ability's input or output schema is frozen between minor releases.
Don't build public-facing features on top of a single official ability alone
Wrap it in your own custom ability where reasonable, so a WooCommerce-side schema change has one place to fix, not every call site.
Watch developer.woocommerce.com, not just the changelog
Developer-preview features sometimes change behavior without a headline "breaking change" entry.

Step 4: Checking what’s actually live on an install

Since the abilities are only present from 10.9 onward, and only if WooCommerce itself has registered them, confirm what’s actually there before building against it:

wp-env run cli wp eval '
foreach ( array( "products-query", "product-create", "product-update", "product-delete", "orders-query", "order-update-status", "order-add-note" ) as $slug ) {
	$name = "woocommerce/" . $slug;
	echo $name . ": " . ( wp_has_ability( $name ) ? "registered" : "missing" ) . "\n";
}
'
wp-env run cli wp plugin get woocommerce --field=version

If any come back “missing,” check the WooCommerce version first, this is the single most common cause.

Test it: inspect one ability’s real schema

Pull the actual, current schema for one ability rather than trusting a blog post’s summary of it, schemas are exactly the kind of detail developer-preview status warns you might change:

wp-env run cli wp eval '
$ability = wp_get_ability( "woocommerce/orders-query" );
echo wp_json_encode( $ability->get_input_schema(), JSON_PRETTY_PRINT );
'
Assuming the old MCP endpoint and the new abilities are interchangeable

The 10.3 endpoint’s REST-derived operations and the 10.9 canonical abilities aren’t the same code path, and their exact field names don’t always match one-to-one. If you built anything against the original endpoint, re-verify field names against the Step 4 output rather than assuming the newer abilities behave identically.

Recap

WooCommerce shipped a real MCP endpoint in 10.3, then, in 10.9, replaced its improvised parts with seven canonical, Abilities-API-based domain abilities for products and orders, all still marked developer preview. The rest of this course builds custom abilities that complement this set: variant-level inventory control, generated content, fraud-risk flags, sales narration, recommendations, and customer-scoped order lookups, none of which duplicate what WooCommerce already provides directly.

Resources & further reading

Building a Custom WooCommerce Inventory Ability →