@respira/wordpress-mcp-server 7.2.1 → 7.2.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/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>180+ MCP tools. 16 page builders. Context-aware tool filtering. The AI infrastructure layer for WordPress.</strong><br>
10
+ <strong>200+ MCP tools (275+ with add-ons). 16 page builders. Context-aware tool filtering. The AI infrastructure layer for WordPress.</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-172+-10b981?style=flat-square" alt="172+ Tools">
17
+ <img src="https://img.shields.io/badge/tools-200+-10b981?style=flat-square" alt="200+ Tools">
18
18
  <img src="https://img.shields.io/badge/builders-16-10b981?style=flat-square" alt="16 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>
@@ -40,12 +40,12 @@ Respira includes a WordPress plugin that gives AI **native access** to 16 page b
40
40
  The biggest release since launch.
41
41
 
42
42
  - **Four new page builders.** Spectra, Kadence Blocks, and GenerateBlocks join with full read + write; SeedProd ships read + audit. Supported builders go from 12 to 16.
43
- - **Make any builder responsive in one call** across Bricks, Elementor, Divi 4, Beaver Builder, and WPBakery.
43
+ - **Make a page responsive in one call** on Bricks, Elementor, Divi 4, Beaver Builder, and WPBakery.
44
44
  - **Playbooks.** Teach an agent a multi-step workflow once and rerun it as a single callable WordPress Ability. Five tools (create / list / get / update / delete), with static cycle detection and a runtime depth cap.
45
45
  - **Agent-creatable Custom Post Types, taxonomies, and ACF field groups** (twelve tools), stored in options and registered on `init`. No PHP files, server-side slug allowlist, conservative deletes that report orphans.
46
46
  - **Native in-WP MCP endpoint.** Point a client straight at `your-site/?respira=mcp` (Streamable HTTP, JSON-RPC) with an API key, no npx process required. One-click connect-by-link mints and installs the key for you.
47
47
  - **System certificate-store trust.** The connector trusts the OS certificate store at startup (verification stays on) with a bundled Mozilla CA fallback, so valid public certs stop being rejected on Claude Desktop's bundled Node.
48
- - **Bricks design-token import + section presets**, the **Elementor 4 atomic write path**, and **`respira_generate_activity_report`** for client-ready reports.
48
+ - **Bricks design-token import + section presets**, the **Elementor 4 atomic write path** (partial: 20 atomic element types with `$$type` envelopes, per-breakpoint + per-state styling, and a clear 422 on unsupported types instead of a silent drop), and **`respira_generate_activity_report`** for client-ready reports.
49
49
 
50
50
  ### New in v6.17.0: an MCP that knows how to behave
51
51
 
@@ -71,20 +71,20 @@ Every successful tool response includes `structuredContent`, the raw JSON object
71
71
 
72
72
  The MCP server automatically filters the tool list based on your site's detected builder and active plugins. A Divi site without WooCommerce sees ~130 tools instead of ~170. Less noise, faster AI responses, lower token usage. Fail-open: if detection fails, the full list is returned.
73
73
 
74
- | Capability | Respira | Other MCP Servers |
74
+ | Capability | Respira | Typical WordPress MCP servers |
75
75
  |---|---|---|
76
- | Page builder support | **16 builders** (incl. Spectra, Kadence, GenerateBlocks) | None |
76
+ | Page builder support | **16 builders** (incl. Spectra, Kadence, GenerateBlocks) | None, or a single builder |
77
77
  | Element-level find/update/move/remove | **Yes** | No |
78
78
  | Build full pages from structure | **Yes** | No |
79
79
  | Convert HTML to native builder | **Yes** | No |
80
- | Stock image search + sideload | **Yes** | No |
80
+ | Stock image search + sideload | **Yes** | Rare |
81
81
  | Bulk operations (100 pages/call) | **Yes** | No |
82
82
  | 27 widget shortcuts (add_heading, etc.) | **Yes** | No |
83
- | Duplicate-before-edit safety | **Yes** | No |
84
- | Snapshot rollback | **Yes** | No |
85
- | SEO / Core Web Vitals / AEO analysis | **Yes** | No |
86
- | WooCommerce (products, orders, inventory) | **Yes** (add-on) | No |
87
- | Tool governance (per-tool enable/disable) | **Yes** | No |
83
+ | Duplicate-before-edit safety | **Yes** | Rare |
84
+ | Snapshot rollback | **Yes**, builder-aware | Rare, post content only |
85
+ | SEO / Core Web Vitals / AEO analysis | **Yes** | Rare |
86
+ | WooCommerce (products, orders, inventory) | **Yes** (add-on) | Rare |
87
+ | Tool governance (per-tool enable/disable) | **Yes** | Rare |
88
88
 
89
89
  ---
90
90
 
@@ -450,7 +450,7 @@ Add any widget to a page in one call:
450
450
  | `respira_switch_site` | Switch active site |
451
451
  | `respira_get_active_site` | Get current site info |
452
452
 
453
- ### WooCommerce Add-on (36 tools)
453
+ ### WooCommerce Add-on (21 tools)
454
454
  Available when the [WooCommerce add-on](https://respira.press/addons/woocommerce) is installed. Included free with Studio and Founder plans.
455
455
 
456
456
  | Category | Tools |
@@ -475,7 +475,7 @@ Every mutation creates a snapshot. Roll back anytime.
475
475
  1. **Snapshot captured** before every edit
476
476
  2. **Duplicate-before-edit** — original stays untouched
477
477
  3. **Approval workflow** — review changes in WordPress admin
478
- 4. **Rollback** — restore any snapshot with `respira_restore_snapshot`
478
+ 4. **Rollback** — restore snapshots (90-day retention, pinnable) with `respira_restore_snapshot`
479
479
 
480
480
  ### Tool Governance
481
481
 
@@ -735,6 +735,6 @@ MIT © [Respira](https://respira.press)
735
735
  ---
736
736
 
737
737
  <p align="center">
738
- <strong>172 tools. 12 builders. The AI infrastructure layer for WordPress.</strong><br>
738
+ <strong>200+ tools. 16 builders. The AI infrastructure layer for WordPress.</strong><br>
739
739
  <a href="https://respira.press">respira.press</a>
740
740
  </p>
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAkQzE,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;IAEpC,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;IAqUvE,OAAO,CAAC,cAAc;IAItB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa;IA4BrB,gEAAgE;IAChE,OAAO,CAAC,aAAa;IAUrB;;;;;;OAMG;YACW,UAAU;IA2CxB;;;;;;;;;;;;;;OAcG;YACW,WAAW;IAiJzB;;;;;;;;;OASG;YACW,kBAAkB;IA0GhC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,6BAA6B;IA0BrC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yBAAyB;IA+BjC,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,aAAa;YAuPP,kBAAkB;YA6BlB,yBAAyB;IASvC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YAyBd,QAAQ;IAmvFtB;;;;;;OAMG;IACH,yEAAyE;IACzE,OAAO,CAAC,mBAAmB,CAAoD;IAC/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;YAEpC,oBAAoB;YAqDpB,2BAA2B;IAazC;;;;OAIG;YACW,cAAc;IAY5B,OAAO,CAAC,mBAAmB;IAwT3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAe3C;IAEF;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;YAmCpB,cAAc;IAqG5B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,eAAe;YAuCT,gBAAgB;IAy2B9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoUzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6UxB,GAAG;CAyCV"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAkQzE,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;IAEpC,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;IAqUvE,OAAO,CAAC,cAAc;IAItB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa;IA4BrB,gEAAgE;IAChE,OAAO,CAAC,aAAa;IAUrB;;;;;;OAMG;YACW,UAAU;IA2CxB;;;;;;;;;;;;;;OAcG;YACW,WAAW;IAiJzB;;;;;;;;;OASG;YACW,kBAAkB;IAiHhC;;;;;;;;;;;;;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;IA+vFtB;;;;;;OAMG;IACH,yEAAyE;IACzE,OAAO,CAAC,mBAAmB,CAAoD;IAC/E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;YAEpC,oBAAoB;YAqDpB,2BAA2B;IAazC;;;;OAIG;YACW,cAAc;IAY5B,OAAO,CAAC,mBAAmB;IAwT3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAe3C;IAEF;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;YAmCpB,cAAc;IAqG5B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,eAAe;YAuCT,gBAAgB;IAy2B9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwUzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6UxB,GAAG;CAyCV"}
package/dist/server.js CHANGED
@@ -1018,12 +1018,18 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
1018
1018
  name: s.name || s.id || 'site',
1019
1019
  url: s.url,
1020
1020
  }));
1021
+ const hasConfigB64 = Boolean(process.env.RESPIRA_CONFIG_B64);
1022
+ const baseMessage = `Connected ${sites.length} site${sites.length === 1 ? '' : 's'} via the Respira Cowork token. The config was written to ~/.respira/config.json. Restart this Cowork chat (or open a new one) so the MCP server picks up the new sites.`;
1023
+ const message = hasConfigB64
1024
+ ? `${baseMessage} IMPORTANT: your MCP server is currently configured via the RESPIRA_CONFIG_B64 environment variable, which takes precedence over the file on disk. To activate the new site, update RESPIRA_CONFIG_B64 in your agent's MCP server config with the base64-encoded contents of the new ~/.respira/config.json file, then restart the agent.`
1025
+ : baseMessage;
1021
1026
  return {
1022
1027
  success: true,
1023
1028
  sites_count: sites.length,
1024
1029
  sites,
1025
1030
  config_path: configPath,
1026
- message: `Connected ${sites.length} site${sites.length === 1 ? '' : 's'} via the Respira Cowork token. The config was written to ~/.respira/config.json. Restart this Cowork chat (or open a new one) so the MCP server picks up the new sites.`,
1031
+ config_b64_active: hasConfigB64,
1032
+ message,
1027
1033
  };
1028
1034
  }
1029
1035
  /**
@@ -1136,7 +1142,16 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
1136
1142
  // respira_* alias to wordpress_* before dispatch.
1137
1143
  const canonical = this.normalizeToolName(name).canonical;
1138
1144
  if (canonical === 'wordpress_redeem_token') {
1139
- return this.withSiteContext(await this.redeemInstallToken(String(args?.token || '')), args);
1145
+ // redeemInstallToken returns a plain object. Wrap it in the standard
1146
+ // MCP content envelope — the early-exit path bypasses the normal
1147
+ // handleToolCall wrapper, so non-Claude clients (Antigravity, etc.)
1148
+ // would receive a bare object instead of {content:[{type:"text",...}]}
1149
+ // and render it as an empty response.
1150
+ const redeemResult = this.withSiteContext(await this.redeemInstallToken(String(args?.token || '')), args);
1151
+ return {
1152
+ content: [{ type: 'text', text: JSON.stringify(redeemResult) }],
1153
+ structuredContent: redeemResult,
1154
+ };
1140
1155
  }
1141
1156
  if (!this.currentSite) {
1142
1157
  throw new Error('No WordPress site configured');
@@ -1620,6 +1635,10 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
1620
1635
  type: 'object',
1621
1636
  description: 'Post meta data',
1622
1637
  },
1638
+ post_parent: {
1639
+ type: 'number',
1640
+ description: 'Parent page ID. Pass 0 to detach from any parent (make a root page). Accepts parent, parent_id, or post_parent.',
1641
+ },
1623
1642
  edit_target: {
1624
1643
  type: 'string',
1625
1644
  description: 'Choose ask, live, or duplicate when the target is an original page.',
@@ -3614,6 +3633,10 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3614
3633
  type: 'boolean',
3615
3634
  description: 'When true, auto-create taxonomy terms that do not exist by name. Default false (strict: unknown slug returns 400 and the post is rolled back).',
3616
3635
  },
3636
+ post_parent: {
3637
+ type: 'number',
3638
+ description: 'Parent post ID. Pass 0 for no parent. Useful when creating sub-pages or nested custom post types.',
3639
+ },
3617
3640
  meta: {
3618
3641
  type: 'object',
3619
3642
  description: 'Post meta data (map of meta key to value).',
@@ -3695,6 +3718,10 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3695
3718
  type: 'boolean',
3696
3719
  description: 'When true, append to existing taxonomy terms instead of replacing. Default false (replace).',
3697
3720
  },
3721
+ post_parent: {
3722
+ type: 'number',
3723
+ description: 'Parent post ID. Pass 0 to detach. Accepts parent, parent_id, or post_parent.',
3724
+ },
3698
3725
  meta: {
3699
3726
  type: 'object',
3700
3727
  description: 'Post meta data (e.g., { "_et_pb_custom_css": "/* CSS */" })',
@@ -5673,6 +5700,10 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5673
5700
  type: 'string',
5674
5701
  description: 'Target builder (auto-detected if omitted)',
5675
5702
  },
5703
+ post_parent: {
5704
+ type: 'number',
5705
+ description: 'Parent page ID. Pass 0 for no parent (root page). The created page will appear nested under the given parent in Page Attributes.',
5706
+ },
5676
5707
  },
5677
5708
  required: ['title', 'structure'],
5678
5709
  },