@respira/wordpress-mcp-server 8.3.19 → 8.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/TOOL_CATALOG.md +36 -36
- package/dist/__tests__/0e6bd33c-redeem-preserves-per-site-settings.test.d.ts +2 -0
- package/dist/__tests__/0e6bd33c-redeem-preserves-per-site-settings.test.d.ts.map +1 -0
- package/dist/__tests__/0e6bd33c-redeem-preserves-per-site-settings.test.js +91 -0
- package/dist/__tests__/0e6bd33c-redeem-preserves-per-site-settings.test.js.map +1 -0
- package/dist/__tests__/139f7353-put-fallback-dedicated-methods.test.d.ts +30 -0
- package/dist/__tests__/139f7353-put-fallback-dedicated-methods.test.d.ts.map +1 -0
- package/dist/__tests__/139f7353-put-fallback-dedicated-methods.test.js +162 -0
- package/dist/__tests__/139f7353-put-fallback-dedicated-methods.test.js.map +1 -0
- package/dist/__tests__/44fcf6b5-basic-auth-is-not-a-blocked-verb.test.d.ts +2 -0
- package/dist/__tests__/44fcf6b5-basic-auth-is-not-a-blocked-verb.test.d.ts.map +1 -0
- package/dist/__tests__/44fcf6b5-basic-auth-is-not-a-blocked-verb.test.js +207 -0
- package/dist/__tests__/44fcf6b5-basic-auth-is-not-a-blocked-verb.test.js.map +1 -0
- package/dist/__tests__/e105ed25-report-issue-builder-context.test.d.ts +2 -0
- package/dist/__tests__/e105ed25-report-issue-builder-context.test.d.ts.map +1 -0
- package/dist/__tests__/e105ed25-report-issue-builder-context.test.js +115 -0
- package/dist/__tests__/e105ed25-report-issue-builder-context.test.js.map +1 -0
- package/dist/__tests__/respira-outage-blamed-on-the-site.test.d.ts +2 -0
- package/dist/__tests__/respira-outage-blamed-on-the-site.test.d.ts.map +1 -0
- package/dist/__tests__/respira-outage-blamed-on-the-site.test.js +83 -0
- package/dist/__tests__/respira-outage-blamed-on-the-site.test.js.map +1 -0
- package/dist/__tests__/v2-negotiation-ttl-retry.test.d.ts +2 -0
- package/dist/__tests__/v2-negotiation-ttl-retry.test.d.ts.map +1 -0
- package/dist/__tests__/v2-negotiation-ttl-retry.test.js +108 -0
- package/dist/__tests__/v2-negotiation-ttl-retry.test.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +59 -4
- package/dist/config.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +25 -3
- package/dist/server.js.map +1 -1
- package/dist/wordpress-client.d.ts +77 -1
- package/dist/wordpress-client.d.ts.map +1 -1
- package/dist/wordpress-client.js +385 -74
- package/dist/wordpress-client.js.map +1 -1
- package/package.json +2 -2
- package/skills/woo-marketing-campaigns/SKILL.md +128 -0
- package/skills/woo-pricing-promotions/SKILL.md +119 -0
- package/tool-capabilities.json +92 -344
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@respira/wordpress-mcp-server",
|
|
3
|
-
"version": "8.3.
|
|
3
|
+
"version": "8.3.20",
|
|
4
4
|
"mcpName": "io.github.webmyc/respira-wordpress",
|
|
5
5
|
"description": "WordPress MCP server + companion plugin giving AI native access to page builder content, not just the REST API. 220 tools, 325 with WooCommerce, 17 page builders and the Site Editor. Element-level edits, full page creation, HTML to builder conversion, snapshots and rollback on every write. MCP 2026-07-28 with legacy-client support. New in 8.3: Design Direction, one design system per site, applied to native builder stores, checked against the rendered page, with a live preview link for the Art Direction dashboard.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"type": "module",
|
|
27
27
|
"scripts": {
|
|
28
28
|
"build": "npm run bundle-skills && tsc",
|
|
29
|
-
"bundle-skills": "node -
|
|
29
|
+
"bundle-skills": "node scripts/bundle-skills.mjs",
|
|
30
30
|
"watch": "tsc --watch",
|
|
31
31
|
"start": "node dist/index.js",
|
|
32
32
|
"setup": "node dist/setup.js --setup",
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: woo-marketing-campaigns
|
|
3
|
+
description: "Use when the user says 'plan a campaign', 'promote this product', 'write the copy for our sale', 'what should we push this month', or 'draft the launch for this collection'. Reads what the store actually sells, drafts the campaign around it, and stages every page and product change for approval."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: "Respira for WordPress"
|
|
7
|
+
author_url: https://respira.press
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
mcp-server: respira-wordpress
|
|
10
|
+
category: commerce
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Woo Marketing Campaigns
|
|
14
|
+
|
|
15
|
+
Plans and drafts a campaign for a WooCommerce store from what the store actually sells, rather than from what a model imagines a store like this sells.
|
|
16
|
+
|
|
17
|
+
## What this skill does
|
|
18
|
+
|
|
19
|
+
Most campaign copy for a store is written without looking at the store. It names products that were discontinued, promises stock that is not there, and picks a hero product that has sold four units all year. The fix is not better prose, it is reading the shop first.
|
|
20
|
+
|
|
21
|
+
So this reads sales, stock and catalogue quality before it writes a word, then drafts the campaign against real products at real prices with real availability, and stages every change rather than publishing it.
|
|
22
|
+
|
|
23
|
+
**Handles:**
|
|
24
|
+
- Choosing what to promote from sales data and stock, not from guesswork
|
|
25
|
+
- Campaign plan: the offer, the products, the dates, the pages that need to exist
|
|
26
|
+
- Landing page and category copy, written to a duplicate for approval
|
|
27
|
+
- Product descriptions and short descriptions for the promoted set
|
|
28
|
+
- The coupon or sale the campaign depends on, through Woo Pricing and Promotions
|
|
29
|
+
- A post-campaign read of what actually sold
|
|
30
|
+
|
|
31
|
+
## What this skill does NOT do
|
|
32
|
+
|
|
33
|
+
- **Send anything.** No email, no ads, no social posts. It drafts; a person sends.
|
|
34
|
+
- **Publish.** Copy lands on duplicates. Approval is a human step, always.
|
|
35
|
+
- **Invent stock or dates.** If a product has four units left, the campaign says so or picks something else.
|
|
36
|
+
- **Set the discount.** That is a margin decision, and it belongs to the owner. See Woo Pricing and Promotions.
|
|
37
|
+
- **Claim anything the store cannot support.** No "best", no "award-winning", no delivery promise the shipping settings do not back.
|
|
38
|
+
|
|
39
|
+
## Requirements
|
|
40
|
+
|
|
41
|
+
- WooCommerce with the Respira WooCommerce add-on, licensed
|
|
42
|
+
- Enough order history for `get-sales-report` to say something useful. On a store with almost no orders, say that plainly and plan from stock and margin instead of pretending the data speaks.
|
|
43
|
+
|
|
44
|
+
## Trigger Phrase
|
|
45
|
+
|
|
46
|
+
- "plan a campaign"
|
|
47
|
+
|
|
48
|
+
## Alternative Triggers
|
|
49
|
+
|
|
50
|
+
- "promote this product"
|
|
51
|
+
- "write the copy for our sale"
|
|
52
|
+
- "what should we push this month"
|
|
53
|
+
- "draft the launch for this collection"
|
|
54
|
+
|
|
55
|
+
## Execution Workflow
|
|
56
|
+
|
|
57
|
+
### Phase 1: Read the shop
|
|
58
|
+
|
|
59
|
+
1. `get-sales-report` over the last 30 and 90 days. What sells, what is seasonal, what has stalled.
|
|
60
|
+
2. `list-products-advanced` for stock and price on the candidates. A hero product that goes out of stock on day two is a campaign that ends on day two.
|
|
61
|
+
3. `find-low-stock` to rule those out early.
|
|
62
|
+
4. `analyze-catalog-quality` on the shortlist. A product with no image and a twelve-word description will not convert however good the campaign is, and fixing that comes first.
|
|
63
|
+
|
|
64
|
+
### Phase 2: Propose, do not assume
|
|
65
|
+
|
|
66
|
+
Come back with a plan and the reasoning, in the user's terms:
|
|
67
|
+
|
|
68
|
+
> Three candidates. The waxed jacket is your best seller in this window last year and has 40 in stock. The wool scarf has better margin but 6 left, so it works as an add-on rather than the hero. The boots sell well and have no photography, which is the thing to fix before promoting them.
|
|
69
|
+
>
|
|
70
|
+
> Suggested: jacket as hero, scarf as the add-on, boots held back until they have images.
|
|
71
|
+
|
|
72
|
+
Get agreement on the products and the offer before writing any copy.
|
|
73
|
+
|
|
74
|
+
### Phase 3: Fix what would waste the traffic
|
|
75
|
+
|
|
76
|
+
If the promoted products have catalogue gaps, fix those first with Woo Catalog Perfection. Driving traffic to a product with no image is spending attention on a page that cannot convert.
|
|
77
|
+
|
|
78
|
+
### Phase 4: Draft
|
|
79
|
+
|
|
80
|
+
- Landing or category copy through `respira_create_page_duplicate` and the builder tools, never onto the live page
|
|
81
|
+
- `update-product` for descriptions on the promoted set, staged
|
|
82
|
+
- The offer itself through Woo Pricing and Promotions, previewed with `dry_run` first
|
|
83
|
+
|
|
84
|
+
Every claim traces to something read in Phase 1. Prices come from the product, availability comes from stock, delivery claims come from the shipping settings or are not made.
|
|
85
|
+
|
|
86
|
+
### Phase 5: Hand over
|
|
87
|
+
|
|
88
|
+
List the drafts, their preview links, and what remains a human decision: approving the pages, sending whatever is being sent, and the date the offer ends.
|
|
89
|
+
|
|
90
|
+
### Phase 6: Afterwards
|
|
91
|
+
|
|
92
|
+
When the campaign has run, `get-sales-report` for the window and compare against the plan. Say what worked and what did not, including when the answer is that the campaign made no measurable difference.
|
|
93
|
+
|
|
94
|
+
## Safety Model
|
|
95
|
+
|
|
96
|
+
- Reads before writes, always
|
|
97
|
+
- Copy to duplicates; the live page is not touched
|
|
98
|
+
- Nothing is published or sent by this skill
|
|
99
|
+
- Price changes go through the previewed, snapshotted, guardrailed path
|
|
100
|
+
- Claims are traceable to store data, or they are not made
|
|
101
|
+
|
|
102
|
+
## Honest Disclaimer
|
|
103
|
+
|
|
104
|
+
This skill drafts a campaign from a store's own data.
|
|
105
|
+
|
|
106
|
+
It cannot: know your customers, your brand voice beyond what it can read, your margins, or your competition. It cannot send email or buy ads. It cannot tell you whether a campaign is a good idea.
|
|
107
|
+
|
|
108
|
+
It can: pick candidates from real sales and stock rather than plausibility, stop you promoting something that is nearly out of stock or has no photograph, draft copy that matches what you actually sell, and stage all of it for you to approve.
|
|
109
|
+
|
|
110
|
+
## Tooling
|
|
111
|
+
|
|
112
|
+
`respira_woo_get-sales-report`, `respira_woo_agent-orders-report`, `respira_woo_list-products-advanced`, `respira_woo_find-low-stock`, `respira_woo_analyze-catalog-quality`, `respira_woo_update-product`, `respira_woo_create-coupon`, `respira_woo_schedule-sale`, `respira_create_page_duplicate`, `respira_update_element`, `respira_get_snapshot`
|
|
113
|
+
|
|
114
|
+
## Telemetry
|
|
115
|
+
|
|
116
|
+
After run completion, fire-and-forget to `POST https://www.respira.press/api/skills/track-usage` with `skill_slug = woo-marketing-campaigns`, site and version context, duration, products promoted, drafts created. Never block the user on telemetry.
|
|
117
|
+
|
|
118
|
+
## Related Skills
|
|
119
|
+
|
|
120
|
+
- Woo Pricing and Promotions (the offer the campaign runs on)
|
|
121
|
+
- Woo Catalog Perfection (fix the products before promoting them)
|
|
122
|
+
- Brand Voice Synthesizer (write in the store's own voice)
|
|
123
|
+
- SEO & AEO Amplifier (make the campaign page findable)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
Built by Respira Team
|
|
128
|
+
https://respira.press/skills/woo-marketing-campaigns
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: woo-pricing-promotions
|
|
3
|
+
description: "Use when the user says 'run a sale', 'discount this category', 'set up a coupon', 'reprice these products', 'end the sale', or asks what a discount would cost them. Plans the price change, shows it as a preview before anything moves, writes it with a snapshot, and can put it back."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: "Respira for WordPress"
|
|
7
|
+
author_url: https://respira.press
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
mcp-server: respira-wordpress
|
|
10
|
+
category: commerce
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Woo Pricing and Promotions
|
|
14
|
+
|
|
15
|
+
Runs a sale, a repricing, or a coupon on a live WooCommerce store, and treats the money as money. Every change is previewed before it happens, snapshotted when it does, and reversible afterwards.
|
|
16
|
+
|
|
17
|
+
## What this skill does
|
|
18
|
+
|
|
19
|
+
Pricing is the one place on a store where a plausible-looking mistake costs real money before anyone notices. A misplaced decimal is not a broken layout somebody reports; it is orders at the wrong price, and by the time it surfaces the orders exist. So the order of operations here is deliberate: understand the current prices, state the change in money rather than percentages, show it, then write it.
|
|
20
|
+
|
|
21
|
+
**Handles:**
|
|
22
|
+
- Category-wide or list-based repricing, by percentage, by fixed amount, or to a set value
|
|
23
|
+
- Scheduled sales with start and end dates, so the sale ends without anyone remembering to end it
|
|
24
|
+
- Coupons: fixed, percentage, free shipping, with usage limits and product or category restrictions
|
|
25
|
+
- Sale badges on the storefront
|
|
26
|
+
- Putting a price change back from the snapshot it wrote
|
|
27
|
+
|
|
28
|
+
## What this skill does NOT do
|
|
29
|
+
|
|
30
|
+
- **Decide the discount.** Depth is a margin decision. This skill will tell you what a discount costs against recent sales volume; it will not pick one.
|
|
31
|
+
- **Beat the guardrails.** A move over 50%, a discount deeper than 70%, or a price under 0.50 comes back blocked. That is the add-on refusing, and it is refusing on purpose. Say so plainly and ask, rather than resending with the override.
|
|
32
|
+
- **Touch tax, currency, or payment configuration.**
|
|
33
|
+
- **Reprice a variable product's parent and hope.** Variations carry their own prices; name them.
|
|
34
|
+
|
|
35
|
+
## Requirements
|
|
36
|
+
|
|
37
|
+
- WooCommerce with the Respira WooCommerce add-on, licensed
|
|
38
|
+
- The store's own reporting for volume, which `get-sales-report` reads
|
|
39
|
+
|
|
40
|
+
## Trigger Phrase
|
|
41
|
+
|
|
42
|
+
- "run a sale"
|
|
43
|
+
|
|
44
|
+
## Alternative Triggers
|
|
45
|
+
|
|
46
|
+
- "discount this category"
|
|
47
|
+
- "set up a coupon"
|
|
48
|
+
- "reprice these products"
|
|
49
|
+
- "end the sale"
|
|
50
|
+
- "what would 20% off cost me"
|
|
51
|
+
|
|
52
|
+
## Execution Workflow
|
|
53
|
+
|
|
54
|
+
### Phase 1: See the current state
|
|
55
|
+
|
|
56
|
+
Never reprice from memory of what a product costs.
|
|
57
|
+
|
|
58
|
+
1. `respira_woo_list-products-advanced` for the target set, or `get-product` for a named one. This also matters mechanically: reads are what the add-on records as provenance, and a write to something never read is annotated as unverified.
|
|
59
|
+
2. `get-sales-report` over a comparable recent window, so the discount has a volume to be measured against.
|
|
60
|
+
3. Note anything already on sale. Stacking a new sale on an existing one is the most common way a discount ends up twice as deep as intended.
|
|
61
|
+
|
|
62
|
+
### Phase 2: State it in money
|
|
63
|
+
|
|
64
|
+
Convert the ask into per-product numbers, and say them:
|
|
65
|
+
|
|
66
|
+
> 14 products in Outdoor. Regular prices 24.00 to 189.00. A 20% sale takes the range to 19.20 to 151.20. Against the last 30 days that is about 340 in discount at the same volume. Two of these are already on sale at 15%, so they would go to 32% off unless excluded.
|
|
67
|
+
|
|
68
|
+
Ask before writing. A percentage sounds smaller than the money it is.
|
|
69
|
+
|
|
70
|
+
### Phase 3: Preview
|
|
71
|
+
|
|
72
|
+
Run the write with `dry_run: true` first, every time. The response lists each product with its old and new prices and names anything the guardrails would block. Show that list. A preview is cheap and a repricing is not.
|
|
73
|
+
|
|
74
|
+
### Phase 4: Write
|
|
75
|
+
|
|
76
|
+
- `bulk-update-prices` for a repricing, or `schedule-sale` when it should end by itself
|
|
77
|
+
- `create-coupon` for a code, with `usage_limit` set unless the user says otherwise, because an uncapped code is a liability
|
|
78
|
+
- `add-sale-badge` if the storefront should show it
|
|
79
|
+
|
|
80
|
+
Snapshots are captured automatically. Report the snapshot ids.
|
|
81
|
+
|
|
82
|
+
### Phase 5: Confirm and hand back the undo
|
|
83
|
+
|
|
84
|
+
State what changed, in money, and how to reverse it: `revert-pricing` with the product and snapshot id. If the sale was scheduled, say the date it ends without anyone acting.
|
|
85
|
+
|
|
86
|
+
## Safety Model
|
|
87
|
+
|
|
88
|
+
- Preview before every write, no exceptions
|
|
89
|
+
- Snapshot before each price change, with a named path back
|
|
90
|
+
- Guardrails refuse outsized moves; treat a block as a question for the user, never as an obstacle to route around
|
|
91
|
+
- Coupons default to a usage limit
|
|
92
|
+
- Nothing here touches an existing order's price
|
|
93
|
+
|
|
94
|
+
## Honest Disclaimer
|
|
95
|
+
|
|
96
|
+
This skill changes live prices on a real store.
|
|
97
|
+
|
|
98
|
+
It cannot: judge whether a discount is good for the business, model demand, know your margins, or see a competitor's pricing. It will not decide depth for you.
|
|
99
|
+
|
|
100
|
+
It can: show what a change costs before it happens, apply it consistently across a set, schedule an end, and put it back.
|
|
101
|
+
|
|
102
|
+
## Tooling
|
|
103
|
+
|
|
104
|
+
`respira_woo_list-products-advanced`, `respira_woo_get-product`, `respira_woo_get-sales-report`, `respira_woo_bulk-update-prices`, `respira_woo_schedule-sale`, `respira_woo_revert-pricing`, `respira_woo_create-coupon`, `respira_woo_update-coupon`, `respira_woo_list-coupons`, `respira_woo_add-sale-badge`
|
|
105
|
+
|
|
106
|
+
## Telemetry
|
|
107
|
+
|
|
108
|
+
After run completion, fire-and-forget to `POST https://www.respira.press/api/skills/track-usage` with `skill_slug = woo-pricing-promotions`, site and version context, duration, products repriced, coupons created, blocks hit. Never block the user on telemetry.
|
|
109
|
+
|
|
110
|
+
## Related Skills
|
|
111
|
+
|
|
112
|
+
- Woo Catalog Perfection (fix the catalog the sale runs on)
|
|
113
|
+
- Woo Marketing Campaigns (tell people the sale exists)
|
|
114
|
+
- WooCommerce Health Check (state of the store before a promotion)
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
Built by Respira Team
|
|
119
|
+
https://respira.press/skills/woo-pricing-promotions
|