Browse documentation +
Getting startedInstallationConnect a clientSafety profilesWordPress ChatPro licensingAntigravity CLIAntigravity IDETroubleshootingOAuth 2.1 setupApplication PasswordsPage builder workflowsLedger and rollbackApprovals and memoryAbility reference
Pro module55 abilities

WooCommerce

These abilities register when WooCommerce is detected on the site and a Pro licence is active. If either is missing the module stays absent rather than failing at call time.

At a glance

WooCommerce registers 55 abilities: 24 that only read, 21 that write, and 10 marked destructive. That split is the practical answer to how much of this module can run unattended. Reads cost nothing and are safe to repeat, so discovery is the part to be generous with; the writes are where review belongs, and the destructive calls stop for an explicit confirmation every single time regardless of which profile is active.

What this module is for

Use WooCommerce-aware abilities for products, variations, attributes, categories, tags, store settings, and supported operational commerce workflows.

Before you rely on it: Store writes can affect money, inventory, fulfillment, and customers; use least privilege, explicit confirmation, and provider-side verification.

Typical workflows

  • Build a variable product from attributes and terms
  • Audit catalog structure before a bulk merchandising change
  • Separate read-only order analysis from approved operational actions

The WooCommerce integration page covers the same module from the workflow side, with the capability map and the questions worth asking before a first write.

Availability on your site

The WooCommerce module needs three things at once: WPPilot Free as the MCP foundation, an active Pro licence, and the companion plugin detected on the site. Miss any one and the module does not register, which is deliberate: an ability that appears in the tool list but fails at call time is worse than an ability that was never offered. What the connected agent can actually call is then narrowed twice more: by the safety profile active on the site, and by the WordPress capabilities of the user behind the credential. A read that succeeds for an administrator can be absent entirely for an editor.

Every write these abilities perform is recorded in the change ledger, and destructive calls can be routed through the approval queue so a person signs off before anything is applied. A successful tool result means the operation returned, not that the front end, the cache, and every dependent template are correct: that still needs a look.

Reads

Available in every safety profile, including Read Only. Inspection costs nothing and is not rate limited.

AbilityWhat it does
wppilot/woocommerce-check-setupCheck WooCommerce SetupReports the WooCommerce environment: whether WC is active, version, whether it meets the minimum (9.0), whether HPOS (High-Performance Order Storage) is the canonical order storage, whether the Block Checkout page is in use, store currency, default country, total published products (products_count counts published products only; to enumerate ALL products including drafts and pending, use list-products with no status filter), and known WC extensions detected on the site (subscriptions, bookings, brands, memberships, product-add-ons, advanced-shipping, stripe-gateway, woopayments, paypal-payments). Run this before any other WC ability to confirm the runtime is ready.
wppilot/woocommerce-get-couponGet CouponGet one WooCommerce coupon by ID or code.
wppilot/woocommerce-get-customerGet CustomerGet one WooCommerce customer account and aggregate order statistics.
wppilot/woocommerce-get-orderGet OrderGet one order including addresses, items, totals, notes, and refunds.
wppilot/woocommerce-get-productGet ProductReturns the full WC product object for one product, identified by id or slug (one is required). Includes augmented sections: images (with id, src, alt, position), categories ({id,slug,name}), tags ({id,slug,name}), attributes (id, name, slug, options[]), variations (id list, full variation objects via get-product-variation), meta_data (caller-visible meta only; underscore-prefixed system keys are filtered out), price_html (rendered HTML price string). Date fields normalized to ISO 8601 strings.
wppilot/woocommerce-get-product-variationGet Product VariationReturns the full variation object for a single product variation, identified by id. Includes: id, parent_id, name (auto-derived from parent; use attributes_summary e.g. "M / Red" to identify the specific variation), sku, status, attributes (structured + summary), regular_price, sale_price, price, manage_stock, stock_quantity, stock_status, weight, dimensions, image_id, image_src, description, description_truncated, virtual, downloadable, shipping_class, is_default, date_modified. description_truncated is true when the stored description exceeded 64 KB and was truncated in this response. Price fields reflect WooCommerce's filter chain (same value the storefront sees). Plugins that filter price at runtime will affect this output. Possible errors: wc_invalid_input, wc_not_found (variation does not exist).
wppilot/woocommerce-get-store-settingsGet WooCommerce Store SettingsReturns the store-level settings that affect product display and pricing: currency, currency symbol and position, thousand and decimal separators, number of decimals, weight and dimension units, default country, and the store base address. Pulled from a mix of WC helpers and direct option reads (woocommerce_* options).
wppilot/woocommerce-list-couponsList CouponsList bounded WooCommerce coupons.
wppilot/woocommerce-list-customersList CustomersList bounded WooCommerce customer accounts without password or token data.
wppilot/woocommerce-list-ordersList OrdersList bounded WooCommerce orders with pagination and status filtering.
wppilot/woocommerce-list-payment-gatewaysList Payment GatewaysList gateway status and declared capabilities without returning secrets.
wppilot/woocommerce-list-product-attribute-termsList Product Attribute TermsReturns the terms (options) registered under a global product attribute.
wppilot/woocommerce-list-product-attributesList Product AttributesReturns all global product attributes (the ones defined under Products → Attributes in the admin). Each item carries the attribute id, name, taxonomy slug (with pa_ prefix as stored), display type, sort order, and the available terms with id/slug/name. Per-product attributes that are NOT registered as global attributes are not enumerated here; they appear inside get-product instead.
wppilot/woocommerce-list-product-shipping-classesList Product Shipping ClassesReturns all WooCommerce shipping classes (taxonomy: product_shipping_class).
wppilot/woocommerce-list-product-statusesList Product StatusesReturns the post statuses applicable to WC products: publish, draft, pending, private, trash. Use the slugs when filtering list-products by status or when picking a status in create/edit-product in later sprints.
wppilot/woocommerce-list-product-tagsList Product TagsReturns WooCommerce product tags as a flat list; tags have no parent hierarchy (unlike categories).
wppilot/woocommerce-list-product-typesList Product TypesReturns the WC product types available on the site. Six core types are always present (simple, variable, grouped, external, plus the virtual / downloadable flags). Custom types registered by third-party plugins are not enumerated in this release.
wppilot/woocommerce-list-product-variationsList Product VariationsReturns a paginated compact list of variations for a variable product. Required: parent_id. Each row: id, parent_id, sku, attributes_summary (e.g. "M / Red"), regular_price, sale_price, stock_status, stock_quantity, is_default. Optional fields: ["full"] to include all variation fields per row. Pagination: limit (default 50, max 200), offset. Ordering: orderby (id|menu_order|date), order (asc|desc). The default compact shape is ~200 bytes per variation. Passing fields: ["full"] returns ~800 bytes per variation. Plan limit accordingly when expanding. Possible errors: wc_invalid_input, wc_not_found (parent does not exist), wc_not_variable_parent (parent is not a variable product, including WooCommerce Subscriptions variable-subscription). On multilingual sites (WPML, Polylang), translated copies of a variation may appear as separate rows.
wppilot/woocommerce-list-productsList ProductsReturns a paginated list of WC products with a 15-field compact shape: id, name, slug, sku, status, type, stock_status, stock_quantity, manage_stock, price, regular_price, sale_price, featured, permalink, date_modified. Use fields to opt into extra sections per row: categories, tags, images, attributes, dimensions, meta_data, variations (id list), brands (only when WooCommerce Brands is active). Filters: search (title+sku), status, type, category (slug|id), tag (slug|id), featured, on_sale (true=only on-sale; false=exclude on-sale), stock_status, sku (exact), include[], exclude[], modified_after, modified_before. Paging: limit (default 20, max 200; clamped silently), offset. Ordering: orderby (date/title/sku/price/menu_order/popularity/rating), order (asc/desc).
wppilot/woocommerce-list-refundsList RefundsList refunds recorded against one order.
wppilot/woocommerce-list-reviewsList Product ReviewsList bounded product reviews by approval state or product.
wppilot/woocommerce-list-shipping-zonesList Shipping ZonesList WooCommerce shipping zones and configured methods.
wppilot/woocommerce-list-tax-ratesList Tax RatesList a bounded set of WooCommerce tax rates without exposing credentials.
wppilot/woocommerce-sales-summarySales SummaryAggregate bounded order counts and stored order totals for a date range.

Writes

Gated by the active profile and your WordPress capabilities. Rate limited to 120 per minute per credential.

AbilityWhat it does
wppilot/woocommerce-See the plugin source for this ability's contract.
wppilot/woocommerce-add-order-noteAdd Order NoteAdd a private or customer-visible note to an order.
wppilot/woocommerce-create-couponCreate CouponCreate a validated WooCommerce coupon.
wppilot/woocommerce-create-productCreate ProductCreates a new WooCommerce product. Supported types: simple and variable. Grouped and external types arrive in a future release. Returns the full product object on success. WP-native field aliases are accepted: post_title = name, post_name = slug, post_status = status, post_content = description, post_excerpt = short_description. Required: name (or post_title). For type=variable: at least one attribute must have variation: true; stock fields (manage_stock, stock_quantity, stock_status) are rejected (stock lives on variations). SKU must be unique across the catalog; duplicate returns wc_sku_exists (HTTP 409). Image fields (featured_image_id, gallery_image_ids) accept media-library attachment ids only. status must be one of publish, draft, pending, private. Prices must be non-negative numeric strings. When manage_stock: true on a simple product, stock_quantity is required. WordPress strips single backslash characters from description on save; use double backslashes if you need a literal backslash. Note: if a third-party plugin hooks save_post_product and throws after the product is inserted, the ability returns an error but the product may remain in the database. Brands are read-only; the input schema rejects a brands field. Possible errors: wc_invalid_input, wc_sku_exists, wc_not_found (for missing category/tag/brand slug), wc_attachment_not_found, wc_post_type_mismatch, wc_internal_error.
wppilot/woocommerce-create-product-attributeCreate Product AttributeCreates a new global WooCommerce product attribute (e.g. Size, Color).
wppilot/woocommerce-create-product-attribute-termCreate Product Attribute TermCreates a new term (option) inside a global product attribute.
wppilot/woocommerce-create-product-categoryCreate Product CategoryCreates a new WooCommerce product category (taxonomy: product_cat). Returns the full category object on success.
wppilot/woocommerce-create-product-shipping-classCreate Product Shipping ClassCreates a new WooCommerce shipping class (taxonomy: product_shipping_class).
wppilot/woocommerce-create-product-tagCreate Product TagCreates a new WooCommerce product tag (taxonomy: product_tag). Returns the full tag object on success.
wppilot/woocommerce-create-product-variationCreate Product VariationCreates a new variation for a variable product. Required: parent_id, attributes (must be non-empty). The attributes list must map every variation-enabled attribute on the parent to an option. Each entry: {"taxonomy_slug": "pa_size", "option": "M"} for global attributes, or {"name": "Material", "option": "Cotton"} for custom attributes. Exactly one of taxonomy_slug or name per entry. The option must be in the parent's attribute options list. Variation name is auto-derived (cannot be set via name). Pass is_default: true to mark this variation as the storefront default. SKU must be unique if provided. Note: if you set regular_price below an existing sale_price, WooCommerce automatically clears sale_price. To set both, supply them together. WP-native alias: post_excerpt = description. WordPress strips single backslash characters from description on save; use double backslashes if you need a literal backslash. Returns the full variation object on success. Possible errors: wc_invalid_input, wc_not_found (parent does not exist), wc_not_variable_parent (also returned for WooCommerce Subscriptions variable-subscription), wc_attribute_not_variable, wc_option_not_on_parent, wc_sku_exists, wc_attachment_not_found, wc_internal_error.
wppilot/woocommerce-edit-productEdit ProductPartially updates (PATCH semantics) a WooCommerce product. Only fields present in the input are changed; absent fields stay as-is. Requires id OR slug to identify the product. WP-native field aliases are accepted: post_title = name, post_name = slug, post_status = status, post_content = description, post_excerpt = short_description. Changing product type is not supported; create a new product with the desired type instead. SKU must remain unique; collisions return wc_sku_exists (HTTP 409). status must be one of publish, draft, pending, private. Prices must be non-negative numeric strings; pass null to clear sale_price. Pass featured_image_id: 0 to clear the featured image. Trashed attachments are rejected. Trashed products cannot be restored via edit-product (the wc_not_found guard rejects trashed posts). To re-publish a trashed product, force-delete it first and re-create, or use the WP admin "Restore" link. Untrash via ability arrives in a future sprint. WordPress strips single backslash characters from description on save; use double backslashes if you need a literal backslash. Brand assignment is read-only via this ability; agents can read but not write the brands field. Direct WP admin or wp_set_object_terms can assign brands. Passing categories: [] removes all explicit category assignments; WooCommerce then moves the product into the Uncategorized default category, so agents cannot intentionally leave a product with zero categories. Possible errors: wc_invalid_input, wc_not_found, wc_sku_exists, wc_attachment_not_found, wc_post_type_mismatch, wc_internal_error.
wppilot/woocommerce-edit-product-attributeEdit Product AttributePartially updates an existing global product attribute (PATCH semantics). Required: id.
wppilot/woocommerce-edit-product-attribute-termEdit Product Attribute TermPartially updates an existing attribute term (option) inside a global product attribute (PATCH semantics).
wppilot/woocommerce-edit-product-categoryEdit Product CategoryPartially updates (PATCH semantics) a WooCommerce product category. Only fields present in the input are changed. Requires id.
wppilot/woocommerce-edit-product-shipping-classEdit Product Shipping ClassPartially updates an existing shipping class (PATCH semantics). Required: id. Optional: name, slug, description.
wppilot/woocommerce-edit-product-tagEdit Product TagPartially updates (PATCH semantics) a WooCommerce product tag. Only fields present in the input are changed. Requires id.
wppilot/woocommerce-edit-product-variationEdit Product VariationPartially updates (PATCH semantics) a product variation. Only fields present in the input are changed; absent fields stay as-is. Required: id. Variation name is auto-derived and cannot be set (name is rejected). When the attributes field is present, it fully replaces the variation's attribute combination. List every attribute the variation should carry, not just the ones being changed. Price fields must be non-negative numeric strings; pass null to clear regular_price or sale_price. Note: if you lower regular_price below the current sale_price, WooCommerce automatically clears sale_price. To change both, set them together. Pass image_id: 0 to clear the variation image. SKU must be unique if provided. is_default: true marks this variation as the storefront default (replaces any prior default). is_default: false clears the default if this variation is currently default. When you set manage_stock: false, WooCommerce clears stock_quantity. To re-enable stock management, re-supply stock_quantity. WP-native alias: post_excerpt = description. WordPress strips single backslash characters from description on save; use double backslashes if you need a literal backslash. Returns the full variation object after the update. Concurrent edits on the same variation follow last-write-wins; MySQL row locking guarantees no corruption. Possible errors: wc_invalid_input, wc_not_found (variation does not exist), wc_attribute_not_variable, wc_option_not_on_parent, wc_sku_exists, wc_attachment_not_found, wc_internal_error.
wppilot/woocommerce-list-product-categoriesList Product CategoriesReturns the WooCommerce product categories. Tree-shaped: each item carries parent_id (term id) and parent_slug so callers can build the hierarchy. Includes empty categories by default. Use hide_empty: true to exclude categories that have zero published products. The search filter does substring match on the name field. Default limit is 50; pass limit to fetch more. Pass include_thumbnail: true to fetch the featured image id and URL per category; omitted by default to reduce payload. The parent and parent_id filter inputs are interchangeable; provide one or the other, not both.
wppilot/woocommerce-moderate-reviewModerate Product ReviewChange a product review moderation status.
wppilot/woocommerce-update-couponUpdate CouponUpdate supported fields on a WooCommerce coupon.
wppilot/woocommerce-update-order-statusUpdate Order StatusUpdate an order status with an optional private order note.

Destructive

Marked destructive in the source, so each call needs an explicit confirmation flag, every time.

AbilityWhat it does
wppilot/woocommerce-create-refundCreate RefundCreate a confirmed WooCommerce refund; gateway refunding is opt-in.
wppilot/woocommerce-delete-couponDelete CouponPermanently delete a WooCommerce coupon.
wppilot/woocommerce-delete-productDelete ProductDeletes a WooCommerce product. Requires id OR slug. Default behaviour is soft delete (product moves to trash; status returns trash in the response). Pass force: true for permanent deletion (returns deleted_id instead of the product object). Soft-deleting an already-trashed product is an idempotent no-op. Force-deleting an already-trashed product permanently removes it. For variable products, force: true also permanently deletes all child variations before removing the parent. On a variable product with many variations, soft-delete may take several seconds while WooCommerce recomputes aggregate fields on the parent. Force-delete uses suspended cache invalidation to stay fast. Possible errors: wc_invalid_input, wc_not_found, wc_post_type_mismatch, wc_internal_error.
wppilot/woocommerce-delete-product-attributeDelete Product AttributeDeletes a global product attribute definition. Required: id. Optional: force (bool, default false).
wppilot/woocommerce-delete-product-attribute-termDelete Product Attribute TermDeletes a single term (option) from a global product attribute. Required: id (term id). Optional: force (bool, default false).
wppilot/woocommerce-delete-product-categoryDelete Product CategoryDeletes a WooCommerce product category. Requires id.
wppilot/woocommerce-delete-product-shipping-classDelete Product Shipping ClassDeletes a WooCommerce shipping class. Required: id. Optional: force (bool, default false).
wppilot/woocommerce-delete-product-tagDelete Product TagDeletes a WooCommerce product tag. Requires id.
wppilot/woocommerce-delete-product-variationDelete Product VariationDeletes a single product variation. Requires id. Default behaviour is soft delete (variation moves to trash; status returns trash in the response). Pass force: true for permanent deletion (returns deleted_id). Soft-deleting an already-trashed variation is an idempotent no-op. If this variation was the storefront default, the default is cleared on the parent before deletion. The parent product is not affected. If the parent product is currently in trash, this ability still deletes the variation. To restore the parent and its variations later, untrash the parent before deleting individual variations. Possible errors: wc_invalid_input, wc_not_found (variation does not exist), wc_internal_error.
wppilot/woocommerce-delete-reviewDelete Product ReviewDelete a product review, using trash by default.