@respira/wordpress-mcp-server 8.3.1 → 8.3.2
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 +6 -0
- package/README.md +7 -5
- package/TOOL_CATALOG.md +3 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +33 -0
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
- package/tool-capabilities.json +28 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,12 @@ All notable changes to Respira WordPress MCP Server will be documented in this f
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [8.3.2] - 2026-08-13
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Two Art Direction companions.** `wordpress_mint_design_preview` returns a short lived signed link that lets the respira.press dashboard frame the real rendered page, drafts included, without changing caching, passwords or visibility for anyone else (Respira for WordPress 8.6.22+). `wordpress_get_design_apply_reports` reads the per-builder receipts a token apply leaves behind, so an agent can answer "what exactly was written where" without guessing. Tool counts move to 212 core, 317 with the WooCommerce add-on, and the listing guard verified every surface against the new figures before this release.
|
|
13
|
+
|
|
8
14
|
## [8.3.1] - 2026-08-13
|
|
9
15
|
|
|
10
16
|
### Added
|
package/README.md
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
<h1 align="center">Respira WordPress MCP Server</h1>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<strong>
|
|
10
|
+
<strong>212 MCP tools, 317 with the WooCommerce add-on. 17 page builders and the native Site Editor. MCP 2026-07-28 with legacy-client support.</strong><br>
|
|
11
11
|
Element-level editing, full page creation, HTML-to-builder conversion with rendering fidelity validation, per-site tool governance, storefront design intelligence, stock images, bulk operations — all through one MCP server.
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
15
|
<a href="https://www.npmjs.com/package/@respira/wordpress-mcp-server"><img src="https://img.shields.io/npm/v/@respira/wordpress-mcp-server.svg?style=flat-square&color=10b981" alt="npm version"></a>
|
|
16
16
|
<a href="https://www.npmjs.com/package/@respira/wordpress-mcp-server"><img src="https://img.shields.io/npm/dm/@respira/wordpress-mcp-server.svg?style=flat-square" alt="npm downloads"></a>
|
|
17
|
-
<img src="https://img.shields.io/badge/tools-
|
|
17
|
+
<img src="https://img.shields.io/badge/tools-317-10b981?style=flat-square" alt="317 Tools with WooCommerce">
|
|
18
18
|
<img src="https://img.shields.io/badge/builders-17-10b981?style=flat-square" alt="17 Page Builders">
|
|
19
19
|
<img src="https://img.shields.io/badge/TypeScript-100%25-blue?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript">
|
|
20
20
|
</p>
|
|
@@ -247,7 +247,7 @@ Or run the interactive setup wizard: `npx @respira/wordpress-mcp-server --setup`
|
|
|
247
247
|
|
|
248
248
|
### Tool Limit? Use `enabledTools`
|
|
249
249
|
|
|
250
|
-
Some MCP clients (Antigravity, etc.) have a hard limit on active tools (often 100). Respira can expose up to
|
|
250
|
+
Some MCP clients (Antigravity, etc.) have a hard limit on active tools (often 100). Respira can expose up to 317 tools when the WooCommerce add-on is active. To stay under the limit, add `enabledTools` to your config — only those tools will appear in the listing:
|
|
251
251
|
|
|
252
252
|
```json
|
|
253
253
|
{
|
|
@@ -398,7 +398,7 @@ These are Respira-native WordPress operations, not a copied generic tool catalog
|
|
|
398
398
|
| `wordpress_update_site_navigation` | Target one link/submenu while preserving unknown extension blocks |
|
|
399
399
|
| `wordpress_delete_site_navigation` | Delete through approval; referenced navigation is refused by default |
|
|
400
400
|
|
|
401
|
-
### Design Direction (
|
|
401
|
+
### Design Direction (11 tools)
|
|
402
402
|
|
|
403
403
|
One saved design direction per site — identity, DTCG-subset tokens, dials, guidance, waivers — that agents read before building anything. Readiness is computed on every response: `ready` needs the bg + ink + accent color roles plus a heading/body font pair, and activation refuses a direction that is not ready. The direction document is site data, not instructions.
|
|
404
404
|
|
|
@@ -417,6 +417,8 @@ The design check closes the loop: `wordpress_check_design` runs deterministic sl
|
|
|
417
417
|
| `wordpress_apply_design_direction` | Push the direction's tokens into the resolved builder's native store through approval; snapshot first, per-builder report persisted |
|
|
418
418
|
| `wordpress_export_design_direction` | Export strict DTCG 2025.10 with roles + per-builder apply reports in `$extensions["press.respira"]` |
|
|
419
419
|
| `wordpress_check_design` | Design check: deterministic slop-and-drift rules, plus `rendered: true` (plugin 8.6.20+) for contrast, structure and painted colors on the real page, screenshots attached |
|
|
420
|
+
| `wordpress_mint_design_preview` | Mint a 15-minute signed preview URL (plugin 8.6.22+) that renders the real page, drafts and duplicates included, frameable by the respira.press dashboard only; stores nothing |
|
|
421
|
+
| `wordpress_get_design_apply_reports` | Read the stored per-builder apply reports for a direction: what apply actually wrote, straight from the site |
|
|
420
422
|
|
|
421
423
|
### Bricks Deep Intelligence (20 tools)
|
|
422
424
|
| Tool | Description |
|
|
@@ -852,6 +854,6 @@ MIT © [Respira](https://respira.press)
|
|
|
852
854
|
---
|
|
853
855
|
|
|
854
856
|
<p align="center">
|
|
855
|
-
<strong>
|
|
857
|
+
<strong>212 core tools, 317 with WooCommerce. 17 builders. The AI infrastructure layer for WordPress.</strong><br>
|
|
856
858
|
<a href="https://respira.press">respira.press</a>
|
|
857
859
|
</p>
|
package/TOOL_CATALOG.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- Generated by scripts/check-tool-registry-parity.mjs. Do not edit by hand. -->
|
|
4
4
|
|
|
5
|
-
Generated catalog: **
|
|
5
|
+
Generated catalog: **185 core tools**, **105 WooCommerce tools**, **290 total**.
|
|
6
6
|
|
|
7
7
|
The runtime applies site context and per-site governance, so an individual connection may expose a smaller relevant subset.
|
|
8
8
|
|
|
@@ -88,6 +88,7 @@ The runtime applies site context and per-site governance, so an individual conne
|
|
|
88
88
|
- `wordpress_get_comment` — read; native + hosted
|
|
89
89
|
- `wordpress_get_core_web_vitals` — read; native + hosted
|
|
90
90
|
- `wordpress_get_custom_post` — read; native + hosted
|
|
91
|
+
- `wordpress_get_design_apply_reports` — read; native + hosted
|
|
91
92
|
- `wordpress_get_design_direction` — read; native + hosted
|
|
92
93
|
- `wordpress_get_divi_migration_readiness` — read; hosted/stdio
|
|
93
94
|
- `wordpress_get_media` — read; native + hosted
|
|
@@ -142,6 +143,7 @@ The runtime applies site context and per-site governance, so an individual conne
|
|
|
142
143
|
- `wordpress_list_theme_builder_templates` — read; native + hosted
|
|
143
144
|
- `wordpress_list_users` — read; native + hosted
|
|
144
145
|
- `wordpress_make_responsive` — read; hosted/stdio
|
|
146
|
+
- `wordpress_mint_design_preview` — read; native + hosted
|
|
145
147
|
- `wordpress_move_element` — write; native + hosted
|
|
146
148
|
- `wordpress_read_page` — read; native + hosted
|
|
147
149
|
- `wordpress_read_post` — read; native + hosted
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAsHzE;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAoBhF;AAiID,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,8EAA8E;IAC9E,OAAO,CAAC,YAAY,CAA4B;IAChD,8EAA8E;IAC9E,OAAO,CAAC,mBAAmB,CAAS;IACpC,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAK;IAC9B,iFAAiF;IACjF,OAAO,CAAC,mBAAmB,CAAgC;IAE3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IAEhE;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;gBA4Bb,WAAW,EAAE,mBAAmB,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE;IA6VvE,OAAO,CAAC,cAAc;IAItB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa;IAiCrB,gEAAgE;IAChE,OAAO,CAAC,aAAa;IAUrB;;;;;;OAMG;YACW,UAAU;IA2CxB;;;;;;;;;;;;;;OAcG;YACW,WAAW;IAiJzB;;;;;;;;;OASG;YACW,kBAAkB;IA4OhC;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAgE7B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;YACW,qBAAqB;YAiBrB,kBAAkB;IA6FhC,yFAAyF;IACzF,OAAO,CAAC,gBAAgB;IASxB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,6BAA6B;IA0BrC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yBAAyB;IA+BjC,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,aAAa;YAmQP,kBAAkB;YA6BlB,yBAAyB;IASvC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YAyBd,QAAQ;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAsHzE;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,CAoBhF;AAiID,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,8EAA8E;IAC9E,OAAO,CAAC,YAAY,CAA4B;IAChD,8EAA8E;IAC9E,OAAO,CAAC,mBAAmB,CAAS;IACpC,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAK;IAC9B,iFAAiF;IACjF,OAAO,CAAC,mBAAmB,CAAgC;IAE3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IAEhE;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;gBA4Bb,WAAW,EAAE,mBAAmB,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE;IA6VvE,OAAO,CAAC,cAAc;IAItB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa;IAiCrB,gEAAgE;IAChE,OAAO,CAAC,aAAa;IAUrB;;;;;;OAMG;YACW,UAAU;IA2CxB;;;;;;;;;;;;;;OAcG;YACW,WAAW;IAiJzB;;;;;;;;;OASG;YACW,kBAAkB;IA4OhC;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAgE7B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;YACW,qBAAqB;YAiBrB,kBAAkB;IA6FhC,yFAAyF;IACzF,OAAO,CAAC,gBAAgB;IASxB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,6BAA6B;IA0BrC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yBAAyB;IA+BjC,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,aAAa;YAmQP,kBAAkB;YA6BlB,yBAAyB;IASvC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YAyBd,QAAQ;IAwjHtB;;;;;;OAMG;IACH;;;;;;;;;;;;;oDAagD;IAChD,OAAO,CAAC,mBAAmB,CAAoD;IAC/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IAC1D;;mDAE+C;IAC/C,OAAO,CAAC,0BAA0B,CAAoC;IAEtE;;;;;;;;OAQG;YACW,0BAA0B;YAyC1B,oBAAoB;YA6CpB,2BAA2B;IAQzC;;;;OAIG;YACW,cAAc;IAQ5B,OAAO,CAAC,mBAAmB;IAw9C3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAe3C;IAEF;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;YAmCpB,cAAc;IA4G5B,oEAAoE;IACpE,OAAO,CAAC,iBAAiB;IAoBzB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,eAAe;YAuCT,gBAAgB;IAy6C9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0ZzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6UxB,GAAG;CA+CV"}
|
package/dist/server.js
CHANGED
|
@@ -3311,6 +3311,35 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
|
|
|
3311
3311
|
readOnlyHint: true,
|
|
3312
3312
|
idempotentHint: true,
|
|
3313
3313
|
},
|
|
3314
|
+
{
|
|
3315
|
+
name: 'wordpress_mint_design_preview',
|
|
3316
|
+
description: 'Mint a short-lived signed preview URL for one post or the front page (omit post_id). Draft and Respira-duplicate ids are allowed — that is the point: the respira.press dashboard iframes the REAL rendered page and refreshes it after every write, and this token is what makes that possible. For 15 minutes the returned url renders with frame headers lifted for the respira.press dashboard origins ONLY, caching bypassed, and (for an unpublished post) the page visible the way WP preview shows it to an editor — only that one id, never anything else. Password-protected posts still ask for their password. Mints a capability but stores nothing on the site: no option, no meta, no DB row. Response: { url, expires_at }; 404 when the post id is unknown.',
|
|
3317
|
+
inputSchema: {
|
|
3318
|
+
type: 'object',
|
|
3319
|
+
properties: {
|
|
3320
|
+
post_id: {
|
|
3321
|
+
type: 'number',
|
|
3322
|
+
description: 'Optional post/page id; omit for the front page. Drafts and Respira duplicates are allowed.',
|
|
3323
|
+
},
|
|
3324
|
+
},
|
|
3325
|
+
},
|
|
3326
|
+
readOnlyHint: true,
|
|
3327
|
+
},
|
|
3328
|
+
{
|
|
3329
|
+
name: 'wordpress_get_design_apply_reports',
|
|
3330
|
+
description: 'Read the per-builder apply reports stored on a design direction ({direction_id}, or the ACTIVE direction when omitted): exactly what wordpress_apply_design_direction wrote per builder — tokens_mapped, mapped slugs/css vars, skipped_existing, skipped_unclassifiable, store, snapshot_id, applied_at. Served straight from the stored reports with no recomputation; reports is an empty array when the direction has never been applied. 404 when direction_id names a direction that does not exist, or when nothing is active and direction_id is omitted.',
|
|
3331
|
+
inputSchema: {
|
|
3332
|
+
type: 'object',
|
|
3333
|
+
properties: {
|
|
3334
|
+
direction_id: {
|
|
3335
|
+
type: 'number',
|
|
3336
|
+
description: 'Optional direction id; omit for the active direction.',
|
|
3337
|
+
},
|
|
3338
|
+
},
|
|
3339
|
+
},
|
|
3340
|
+
readOnlyHint: true,
|
|
3341
|
+
idempotentHint: true,
|
|
3342
|
+
},
|
|
3314
3343
|
{
|
|
3315
3344
|
name: 'wordpress_apply_builder_patch',
|
|
3316
3345
|
description: 'Apply a list of targeted builder patch operations. Each operation is { identifier: { id|admin_label|path|type [+match_content] }, updates: { content?, attributes?, ...flat_settings? } }. The identifier block follows the same shape as wordpress_find_element\'s identifier; the updates block follows the same shape as wordpress_update_module\'s updates. Returns 400 respira_patch_invalid_operation when an entry is missing either field. This is NOT a JSON-Patch document — do not pass { op, path, value } shapes (those will be rejected). Example: { operations: [{ identifier: { admin_label: "Hero" }, updates: { admin_label: "Hero Content" } }] }.',
|
|
@@ -7894,6 +7923,10 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
|
|
|
7894
7923
|
return await client.callRestV2('GET', '/design-direction/export', args.id !== undefined ? { id: args.id } : undefined);
|
|
7895
7924
|
case 'wordpress_check_design':
|
|
7896
7925
|
return await client.callRestV2('POST', '/design-direction/check', args);
|
|
7926
|
+
case 'wordpress_mint_design_preview':
|
|
7927
|
+
return await client.callRestV2('POST', '/design-direction/preview-token', args);
|
|
7928
|
+
case 'wordpress_get_design_apply_reports':
|
|
7929
|
+
return await client.callRestV2('GET', '/design-direction/apply-reports', args.direction_id !== undefined ? { direction_id: args.direction_id } : undefined);
|
|
7897
7930
|
case 'wordpress_apply_builder_patch':
|
|
7898
7931
|
return await client.applyBuilderPatch(args.builder, args.post_id, args.operations, args.include, args.edit_target);
|
|
7899
7932
|
case 'woocommerce_list_products':
|