Respira WooCommerce
What this skill covers
The Respira WooCommerce add-on (v2.1.0+) exposes 21 abilities through the WordPress Abilities API, plus a storefront layout surface for Elementor, Divi, Flatsome UX Builder, Bricks, and Gutenberg shop / product templates. The add-on is paid and license-gated; if the add-on isn't active, every Woo tool returns a clear respira_webmcp_woo_unavailable error and the user should be sent to respira.press/addons/woocommerce.
The 21 abilities namespace under respira-woocommerce/*:
- Products: get-products, get-product, create-product, update-product, duplicate-product.
- Categories: get-categories, get-category, create-category, update-category, delete-category.
- Tags: get-tags, get-tag, create-tag, update-tag, delete-tag.
- Orders: get-orders, get-order, update-order-status.
- Stock: get-stock-status, update-stock.
- Reporting: get-sales-report.
The storefront surface (under /respira/v1/woocommerce/storefront/) covers analyze-shop, analyze-product, update-card-layout, and add-low-stock-badge. These act on builder-managed product card templates rather than the WC core data.
Common Mistakes
| Mistake |
Correct approach |
Using respira_update_page on a WooCommerce product page |
Use the WooCommerce update-product ability for product data. Use respira_find_element plus respira_update_element for builder-managed visual content on the page. |
| Editing product price or stock directly in the page content |
These are post meta fields. Use the update-product or update-stock abilities. |
| Running get-products without pagination on a large catalog |
Always set per_page (max 100) and paginate. Large catalogs cause timeouts. |
| Applying a coupon via post meta |
Coupons should go through the canonical WooCommerce coupon mutation (or the WC admin). Direct meta edits bypass WC validation. |
| Editing a builder-managed shop archive template via update_page |
Use respira_get_builder_info to identify the template type first. The storefront tools cover product-card layout changes; visual edits go through respira_update_element. |
| Not checking whether WooCommerce is active before calling Woo tools |
Confirm with respira_get_site_context. Woo tools return a structured error if the plugin is inactive or the add-on isn't licensed. |
| Forgetting that update-order-status only changes status |
Updating the rest of the order (line items, totals, addresses) needs the WC admin or a dedicated tool. The ability is narrow on purpose. |
Inputs
- Product ID, SKU, or search term.
- Category or tag slug or ID.
- Order ID or order status filter (pending, processing, on-hold, completed, cancelled, refunded, failed).
- Coupon code or coupon ID.
- The fields to read or update.
Workflow
Product operations
respira_get_site_context. Confirm WooCommerce active + add-on licensed.
get-products. Find the product by name, SKU, or filter. Set per_page and paginate.
update-product. Apply changes (price, stock, status, title, description, images).
- For visual / builder content on the product page:
respira_get_builder_info plus respira_find_element plus respira_update_element.
Category and tag operations
get-categories or get-tags. Find the target by slug or name.
create-, update-, or delete-. Mutations gated by capability checks.
- Reorder or reparent through
update-category (parent + display order).
Order operations
get-orders with a status filter.
get-order for a specific record.
update-order-status for status transitions. Anything more invasive needs the WC admin.
Stock operations
get-stock-status for a snapshot.
update-stock for quantity or status mutations. The ability respects manage_stock per product.
Storefront layout
analyze-shop or analyze-product. Returns the active builder and the editable card / template paths.
update-card-layout to mutate the product card structure.
add-low-stock-badge to insert the conditional badge widget.
- Always snapshot the page first with
respira_create_page_duplicate.
Batch product updates
For updating multiple products (a price increase across a category):
get-products with the category filter. Collect target IDs.
respira_batch_update. Apply the same field change across all collected IDs in a single call.
Rules
- Always check WooCommerce is active and the add-on is licensed before calling Woo tools.
- Never use
respira_update_page on a product page to change price, stock, or product meta. Those are WC data fields.
- For product description: if the product page uses a builder, the visual description may live in the builder JSON. Use
respira_find_element to locate it. The WC description field is the fallback (non-builder) description.
respira_batch_update accepts a maximum of 100 items per call. Chunk larger operations.
- Never create or modify coupons without confirming the discount type with the user. A percent coupon applied as fixed_cart can cause significant revenue loss.
- Currency is per-site. Don't assume USD or EUR; read it from
respira_get_site_context.
Verification
After update-product:
- Call
get-product and confirm the changed fields match.
- For price changes, verify both
regular_price and sale_price are correct.
- For stock changes, verify
stock_quantity and stock_status.
After update-order-status:
- Call
get-order and confirm the status transition.
- Note that WC emails fire automatically on certain transitions; tell the user.
After a batch update:
- Sample 2-3 products from the batch and verify the changed field.
- Report the total number of products updated and any that returned errors.
Escalation
Stop and ask the user if:
- The product catalogue has more than 1,000 items and the request is "update all products". Confirm scope and batch strategy first.
- A coupon update would affect unlimited use or a site-wide discount. Confirm before applying.
- WooCommerce Subscriptions, Memberships, or Bookings are involved. These have their own data models. Check available tools before proceeding.
- The update would change a product's
status from publish to draft. Confirm the user intends to unpublish.
- An order has been paid and shipped, and the request would modify it. WC stores immutable history on paid orders; ask before mutating.
Example
Goal: update the regular price of "Merino Wool Tee" from €49 to €59.
1. respira_get_site_context → WooCommerce 8.7 active, Woo add-on licensed ✓
2. get-products → search "Merino Wool Tee" → ID 2847
3. update-product → ID 2847, regular_price: "59"
4. get-product → ID 2847 → regular_price: "59.00" ✓
1---2name: respira-woocommerce3description: Use for WooCommerce operations on a WordPress site. Listing, reading, creating, updating, and duplicating products. Managing categories and tags. Reading orders and updating order status. Stock management. Sales reports. Storefront layout edits. Builder-aware throughout. Requires the Respira WooCommerce add-on (paid).4---5
6# Respira WooCommerce
7
8## What this skill covers
9
10The Respira WooCommerce add-on (v2.1.0+) exposes 21 abilities through the WordPress Abilities API, plus a storefront layout surface for Elementor, Divi, Flatsome UX Builder, Bricks, and Gutenberg shop / product templates. The add-on is paid and license-gated; if the add-on isn't active, every Woo tool returns a clear `respira_webmcp_woo_unavailable` error and the user should be sent to `respira.press/addons/woocommerce`.
11
12The 21 abilities namespace under `respira-woocommerce/*`:
13
14- **Products**: get-products, get-product, create-product, update-product, duplicate-product.
15- **Categories**: get-categories, get-category, create-category, update-category, delete-category.
16- **Tags**: get-tags, get-tag, create-tag, update-tag, delete-tag.
17- **Orders**: get-orders, get-order, update-order-status.
18- **Stock**: get-stock-status, update-stock.
19- **Reporting**: get-sales-report.
20
21The storefront surface (under `/respira/v1/woocommerce/storefront/`) covers `analyze-shop`, `analyze-product`, `update-card-layout`, and `add-low-stock-badge`. These act on builder-managed product card templates rather than the WC core data.
22
23## Common Mistakes
24
25| Mistake | Correct approach |
26|---|---|
27| Using `respira_update_page` on a WooCommerce product page | Use the WooCommerce update-product ability for product data. Use `respira_find_element` plus `respira_update_element` for builder-managed visual content on the page. |
28| Editing product price or stock directly in the page content | These are post meta fields. Use the update-product or update-stock abilities. |
29| Running get-products without pagination on a large catalog | Always set `per_page` (max 100) and paginate. Large catalogs cause timeouts. |
30| Applying a coupon via post meta | Coupons should go through the canonical WooCommerce coupon mutation (or the WC admin). Direct meta edits bypass WC validation. |
31| Editing a builder-managed shop archive template via update_page | Use `respira_get_builder_info` to identify the template type first. The storefront tools cover product-card layout changes; visual edits go through `respira_update_element`. |
32| Not checking whether WooCommerce is active before calling Woo tools | Confirm with `respira_get_site_context`. Woo tools return a structured error if the plugin is inactive or the add-on isn't licensed. |
33| Forgetting that update-order-status only changes status | Updating the rest of the order (line items, totals, addresses) needs the WC admin or a dedicated tool. The ability is narrow on purpose. |
34
35## Inputs
36
37- Product ID, SKU, or search term.
38- Category or tag slug or ID.
39- Order ID or order status filter (pending, processing, on-hold, completed, cancelled, refunded, failed).
40- Coupon code or coupon ID.
41- The fields to read or update.
42
43## Workflow
44
45### Product operations
46
471. `respira_get_site_context`. Confirm WooCommerce active + add-on licensed.
482. `get-products`. Find the product by name, SKU, or filter. Set `per_page` and paginate.
493. `update-product`. Apply changes (price, stock, status, title, description, images).
504. For visual / builder content on the product page: `respira_get_builder_info` plus `respira_find_element` plus `respira_update_element`.
51
52### Category and tag operations
53
541. `get-categories` or `get-tags`. Find the target by slug or name.
552. `create-`, `update-`, or `delete-`. Mutations gated by capability checks.
563. Reorder or reparent through `update-category` (parent + display order).
57
58### Order operations
59
601. `get-orders` with a status filter.
612. `get-order` for a specific record.
623. `update-order-status` for status transitions. Anything more invasive needs the WC admin.
63
64### Stock operations
65
661. `get-stock-status` for a snapshot.
672. `update-stock` for quantity or status mutations. The ability respects `manage_stock` per product.
68
69### Storefront layout
70
711. `analyze-shop` or `analyze-product`. Returns the active builder and the editable card / template paths.
722. `update-card-layout` to mutate the product card structure.
733. `add-low-stock-badge` to insert the conditional badge widget.
744. Always snapshot the page first with `respira_create_page_duplicate`.
75
76### Batch product updates
77
78For updating multiple products (a price increase across a category):
79
801. `get-products` with the category filter. Collect target IDs.
812. `respira_batch_update`. Apply the same field change across all collected IDs in a single call.
82
83## Rules
84
85- Always check WooCommerce is active and the add-on is licensed before calling Woo tools.
86- Never use `respira_update_page` on a product page to change price, stock, or product meta. Those are WC data fields.
87- For product description: if the product page uses a builder, the visual description may live in the builder JSON. Use `respira_find_element` to locate it. The WC `description` field is the fallback (non-builder) description.
88- `respira_batch_update` accepts a maximum of 100 items per call. Chunk larger operations.
89- Never create or modify coupons without confirming the discount type with the user. A percent coupon applied as fixed_cart can cause significant revenue loss.
90- Currency is per-site. Don't assume USD or EUR; read it from `respira_get_site_context`.
91
92## Verification
93
94After `update-product`:
95
961. Call `get-product` and confirm the changed fields match.
972. For price changes, verify both `regular_price` and `sale_price` are correct.
983. For stock changes, verify `stock_quantity` and `stock_status`.
99
100After `update-order-status`:
101
1021. Call `get-order` and confirm the status transition.
1032. Note that WC emails fire automatically on certain transitions; tell the user.
104
105After a batch update:
106
1071. Sample 2-3 products from the batch and verify the changed field.
1082. Report the total number of products updated and any that returned errors.
109
110## Escalation
111
112Stop and ask the user if:
113
114- The product catalogue has more than 1,000 items and the request is "update all products". Confirm scope and batch strategy first.
115- A coupon update would affect unlimited use or a site-wide discount. Confirm before applying.
116- WooCommerce Subscriptions, Memberships, or Bookings are involved. These have their own data models. Check available tools before proceeding.
117- The update would change a product's `status` from `publish` to `draft`. Confirm the user intends to unpublish.
118- An order has been paid and shipped, and the request would modify it. WC stores immutable history on paid orders; ask before mutating.
119
120## Example
121
122Goal: update the regular price of "Merino Wool Tee" from €49 to €59.
123
124```
1251. respira_get_site_context → WooCommerce 8.7 active, Woo add-on licensed ✓
1262. get-products → search "Merino Wool Tee" → ID 2847
1273. update-product → ID 2847, regular_price: "59"
1284. get-product → ID 2847 → regular_price: "59.00" ✓
129```