@respira/wordpress-mcp-server 8.3.24 → 8.3.26

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/README.md +114 -20
  3. package/TOOL_CATALOG.md +445 -307
  4. package/dist/__tests__/087103bc-the-host-answers-well-known-first.test.d.ts +2 -0
  5. package/dist/__tests__/087103bc-the-host-answers-well-known-first.test.d.ts.map +1 -0
  6. package/dist/__tests__/087103bc-the-host-answers-well-known-first.test.js +73 -0
  7. package/dist/__tests__/087103bc-the-host-answers-well-known-first.test.js.map +1 -0
  8. package/dist/__tests__/0e6bd33c-redeem-preserves-per-site-settings.test.js +3 -2
  9. package/dist/__tests__/0e6bd33c-redeem-preserves-per-site-settings.test.js.map +1 -1
  10. package/dist/__tests__/685d8023-a-403-from-the-web-server-shows-its-evidence.test.d.ts +2 -0
  11. package/dist/__tests__/685d8023-a-403-from-the-web-server-shows-its-evidence.test.d.ts.map +1 -0
  12. package/dist/__tests__/685d8023-a-403-from-the-web-server-shows-its-evidence.test.js +106 -0
  13. package/dist/__tests__/685d8023-a-403-from-the-web-server-shows-its-evidence.test.js.map +1 -0
  14. package/dist/__tests__/81c478df-create-page-duplicate-id-aliases.test.d.ts +11 -0
  15. package/dist/__tests__/81c478df-create-page-duplicate-id-aliases.test.d.ts.map +1 -0
  16. package/dist/__tests__/81c478df-create-page-duplicate-id-aliases.test.js +80 -0
  17. package/dist/__tests__/81c478df-create-page-duplicate-id-aliases.test.js.map +1 -0
  18. package/dist/__tests__/81c478df-rest-no-route-blames-the-plugin.test.d.ts +16 -0
  19. package/dist/__tests__/81c478df-rest-no-route-blames-the-plugin.test.d.ts.map +1 -0
  20. package/dist/__tests__/81c478df-rest-no-route-blames-the-plugin.test.js +105 -0
  21. package/dist/__tests__/81c478df-rest-no-route-blames-the-plugin.test.js.map +1 -0
  22. package/dist/__tests__/dfc0e156-plugin-file-with-a-slash.test.d.ts +2 -0
  23. package/dist/__tests__/dfc0e156-plugin-file-with-a-slash.test.d.ts.map +1 -0
  24. package/dist/__tests__/dfc0e156-plugin-file-with-a-slash.test.js +69 -0
  25. package/dist/__tests__/dfc0e156-plugin-file-with-a-slash.test.js.map +1 -0
  26. package/dist/__tests__/fb4ec63e-update-advice-matches-the-install.test.d.ts +15 -0
  27. package/dist/__tests__/fb4ec63e-update-advice-matches-the-install.test.d.ts.map +1 -0
  28. package/dist/__tests__/fb4ec63e-update-advice-matches-the-install.test.js +61 -0
  29. package/dist/__tests__/fb4ec63e-update-advice-matches-the-install.test.js.map +1 -0
  30. package/dist/__tests__/plugin-slug-path-encoding.test.d.ts +2 -0
  31. package/dist/__tests__/plugin-slug-path-encoding.test.d.ts.map +1 -0
  32. package/dist/__tests__/plugin-slug-path-encoding.test.js +41 -0
  33. package/dist/__tests__/plugin-slug-path-encoding.test.js.map +1 -0
  34. package/dist/__tests__/release-9-surface.test.d.ts +2 -0
  35. package/dist/__tests__/release-9-surface.test.d.ts.map +1 -0
  36. package/dist/__tests__/release-9-surface.test.js +197 -0
  37. package/dist/__tests__/release-9-surface.test.js.map +1 -0
  38. package/dist/config.d.ts +31 -0
  39. package/dist/config.d.ts.map +1 -1
  40. package/dist/config.js +57 -0
  41. package/dist/config.js.map +1 -1
  42. package/dist/install-skills.d.ts +4 -5
  43. package/dist/install-skills.d.ts.map +1 -1
  44. package/dist/install-skills.js +4 -5
  45. package/dist/install-skills.js.map +1 -1
  46. package/dist/server.d.ts.map +1 -1
  47. package/dist/server.js +328 -89
  48. package/dist/server.js.map +1 -1
  49. package/dist/skill-prompts.d.ts +43 -0
  50. package/dist/skill-prompts.d.ts.map +1 -0
  51. package/dist/skill-prompts.js +135 -0
  52. package/dist/skill-prompts.js.map +1 -0
  53. package/dist/wordpress-client.d.ts +132 -11
  54. package/dist/wordpress-client.d.ts.map +1 -1
  55. package/dist/wordpress-client.js +380 -39
  56. package/dist/wordpress-client.js.map +1 -1
  57. package/package.json +2 -2
  58. package/skills/activity-report-composer/SKILL.md +17 -5
  59. package/skills/activity-report-composer/metadata.json +2 -2
  60. package/skills/art-direction/SKILL.md +9 -3
  61. package/skills/art-direction/metadata.json +7 -3
  62. package/skills/brand-voice-synthesizer/SKILL.md +36 -16
  63. package/skills/brand-voice-synthesizer/metadata.json +8 -4
  64. package/skills/build-oxygen6-page/SKILL.md +17 -2
  65. package/skills/conversion-audit/SKILL.md +12 -0
  66. package/skills/custom-post-type-architect/SKILL.md +12 -0
  67. package/skills/figma-to-bricks/SKILL.md +4 -2
  68. package/skills/figma-to-divi/SKILL.md +4 -2
  69. package/skills/figma-to-elementor/SKILL.md +8 -1
  70. package/skills/figma-to-gutenberg/SKILL.md +4 -2
  71. package/skills/html-to-breakdance/SKILL.md +7 -3
  72. package/skills/html-to-breakdance/metadata.json +7 -3
  73. package/skills/html-to-bricks/SKILL.md +7 -3
  74. package/skills/html-to-bricks/metadata.json +7 -3
  75. package/skills/internal-link-builder/SKILL.md +12 -0
  76. package/skills/migrate-beaver-builder-to-bricks/SKILL.md +19 -3
  77. package/skills/migrate-beaver-builder-to-gutenberg/SKILL.md +19 -3
  78. package/skills/migrate-brizy-to-gutenberg/SKILL.md +19 -3
  79. package/skills/migrate-divi-to-breakdance/SKILL.md +19 -3
  80. package/skills/migrate-divi-to-bricks/SKILL.md +19 -3
  81. package/skills/migrate-divi-to-gutenberg/SKILL.md +19 -3
  82. package/skills/migrate-elementor-to-breakdance/SKILL.md +20 -4
  83. package/skills/migrate-elementor-to-bricks/SKILL.md +20 -4
  84. package/skills/migrate-elementor-to-gutenberg/SKILL.md +20 -4
  85. package/skills/migrate-elementor-to-oxygen/SKILL.md +20 -4
  86. package/skills/migrate-oxygen-to-breakdance/SKILL.md +19 -3
  87. package/skills/migrate-oxygen-to-bricks/SKILL.md +19 -3
  88. package/skills/migrate-thrive-architect-to-gutenberg/SKILL.md +19 -3
  89. package/skills/migrate-visual-composer-to-gutenberg/SKILL.md +19 -3
  90. package/skills/migrate-wpbakery-to-bricks/SKILL.md +19 -3
  91. package/skills/migrate-wpbakery-to-gutenberg/SKILL.md +19 -3
  92. package/skills/mobile-experience-report/SKILL.md +12 -0
  93. package/skills/murmur-review-loop/SKILL.md +142 -0
  94. package/skills/page-template-library/SKILL.md +12 -0
  95. package/skills/respira-builder-edits/SKILL.md +1 -0
  96. package/skills/respira-setup-assistant/SKILL.md +12 -0
  97. package/skills/respira-site-audit/SKILL.md +18 -6
  98. package/skills/respira-woocommerce/SKILL.md +1 -0
  99. package/skills/seo-aeo-amplifier/SKILL.md +14 -2
  100. package/skills/seo-aeo-amplifier/metadata.json +2 -2
  101. package/skills/stale-content-detector/SKILL.md +12 -0
  102. package/skills/technical-debt-audit/SKILL.md +14 -2
  103. package/skills/woo-marketing-campaigns/SKILL.md +12 -9
  104. package/skills/woo-pricing-promotions/SKILL.md +9 -9
  105. package/skills/woocommerce-health-check/SKILL.md +22 -8
  106. package/skills/wordpress-ai-image-optimizer/SKILL.md +14 -2
  107. package/skills/wordpress-ai-image-optimizer/metadata.json +2 -2
  108. package/skills/wordpress-security-review/SKILL.md +154 -0
  109. package/skills/wordpress-site-dna/README.md +1 -1
  110. package/skills/wordpress-site-dna/SKILL.md +52 -19
  111. package/tool-capabilities.json +3171 -370
package/CHANGELOG.md CHANGED
@@ -5,6 +5,73 @@ 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.26] - 2026-09-17
9
+
10
+ ### Added
11
+
12
+ - **diagnose_connection says when the host answers /.well-known/ itself.** Some hosts serve
13
+ everything under `/.well-known/` before WordPress runs, so the OAuth discovery document
14
+ ChatGPT looks for comes back as the host's own 404 while the plugin is fine. The diagnostic
15
+ fetches both that address and the plugin's own route, compares them, and when the host is
16
+ answering first it says so with both status codes, the title of the page that came back, and
17
+ the one line to ask the host for.
18
+
19
+ ### Fixed
20
+
21
+ - **Duplicating a post takes the id names agents already use.** `create_post_duplicate` read
22
+ only `original_id`, so a call with `post_id` or `page_id` sent WordPress the literal word
23
+ "undefined" in the path and came back a 404. It now accepts all three and refuses a missing
24
+ id before anything leaves your machine, the same way the page tool already did in 8.3.25.
25
+ - **A missing route stops blaming your plugin version.** When a Respira route 404s on a site
26
+ whose namespace is live, the message said the installed plugin is older than the tool and
27
+ sent you to wp-admin. On a site running 8.9.1 with no update offered anywhere that advice
28
+ was wrong three times across two sessions, while the real cause, an unusable id in the
29
+ request path, was already printed in the same sentence. The message now names that segment
30
+ when it is there, and says the plugin is behind only when the plugin's own declared MCP
31
+ ceiling is below this build.
32
+ - **Update advice matches the install that is answering.** On a Claude Desktop `.mcpb` bundle
33
+ every response printed `npm i -g @respira/wordpress-mcp-server@latest`. Running it installs
34
+ a second copy Claude Desktop never loads: the version does not change, and nothing says so.
35
+ A bundle install is told to update the extension in Claude Desktop, an npx run to restart
36
+ and clear its cache, a project install to update that project, a source checkout to rebuild,
37
+ and only a genuine global install gets the global npm command.
38
+ - **A 403 from a web server now carries its evidence.** The answer used to be a ranked list of
39
+ likely causes, which read as a diagnosis and sent at least one person through Cloudflare
40
+ rules that were not the cause. It now reports the verb and address, how many bytes the body
41
+ carried, the headers that name the layer, and that the response has none of the plugin's own
42
+ headers, which proves WordPress never ran and nothing was written. Uploads already leave as
43
+ multipart form-data, so when the block is by size the message says to quote that size to the
44
+ host along with the exact request.
45
+ - **One element can be read on a page too big to extract.** `find_element` now declares the
46
+ `include` parameter its own answer tells you to pass, so `include: "content"` returns the
47
+ element body the builder stored instead of a one-line preview. A truncated answer also says
48
+ how many bytes were cut and which parts are missing.
49
+ - **A plugin whose file contains a slash can be deactivated.** WordPress names a plugin by its
50
+ file, `WP PROTECTION/SECURITY.php`, and a slash cannot travel inside one URL path segment.
51
+ The folder now goes in the path and the exact file in the body, so activate, deactivate,
52
+ update and delete reach the plugin the site actually lists. The body field needs plugin
53
+ 9.0.2; on older plugins the folder alone still resolves.
54
+
55
+ ### Documentation
56
+
57
+ - **The block libraries are documented as what they are.** Spectra, Kadence Blocks,
58
+ GenerateBlocks and GreenShift each have their own adapter, detection, block namespace and
59
+ module list, and read and write through the Gutenberg block path. Their schemas come from
60
+ the live block registry on your site rather than a Respira-authored pack, which is why
61
+ `intelligence_package` reads `gutenberg` for all four.
62
+
63
+ ## [8.3.25] - 2026-09-14
64
+
65
+ ### Fixed
66
+
67
+ - **Duplicate Page understands the page ID names agents already use.** A call with
68
+ `page_id` or `post_id` built a request for an `undefined` page and failed. The tool now
69
+ accepts `original_id`, `page_id`, or `post_id`, and refuses a missing ID before it sends
70
+ anything to WordPress. No plugin update is required for this fix.
71
+ - **Plugin folder names with spaces stay one URL segment.** Activate, deactivate, update and
72
+ delete now encode the exact folder name before sending it to WordPress. This needs plugin
73
+ 9.0.0 or later for the matching route support.
74
+
8
75
  ## [8.3.24] - 2026-09-12
9
76
 
10
77
  Murmur: seven tools for the review links your clients talk back through.
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>228 MCP tools, 333 with the WooCommerce add-on. 17 page builders and the native Site Editor. MCP 2026-07-28 with legacy-client support.</strong><br>
10
+ <strong>230 MCP tools, 335 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-333-10b981?style=flat-square" alt="333 Tools with WooCommerce">
17
+ <img src="https://img.shields.io/badge/tools-335-10b981?style=flat-square" alt="335 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 333 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:
250
+ Some MCP clients (Antigravity, etc.) have a hard limit on active tools (often 100). Respira can expose up to 335 tools when the WooCommerce add-on is active, and up to 413 on a Bricks site that also runs ACF. 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
  {
@@ -363,7 +363,7 @@ respira_add_image({ post_id: 42, image_url: "https://..." })
363
363
  | **Divi 4** | Full Intelligence | Tree utility | Yes | Static schemas |
364
364
  | **Flatsome** | Full Intelligence | Tree utility | Yes | Yes — 55-element intelligence |
365
365
  | **Beaver Builder** | Full Support | Tree utility | Yes | Static schemas |
366
- | **Bricks** | Full Intelligence | Native API | Yes | Yes 20 dedicated tools, ACSS integration |
366
+ | **Bricks** | Full Intelligence | Native API | Yes | Yes: 25 dedicated tools, ACSS integration |
367
367
  | **Gutenberg** | Full Support | Tree utility | Yes | Block registry |
368
368
  | **Oxygen** | Smart Defaults | Tree utility | Yes | Static schemas |
369
369
  | **WPBakery** | Smart Defaults | Tree utility | Yes | Static schemas |
@@ -377,10 +377,42 @@ respira_add_image({ post_id: 42, image_url: "https://..." })
377
377
  | **Thrive Architect** | Basic | Tree utility | Best-effort | — |
378
378
  | **Visual Composer** | Basic | Tree utility | Best-effort | — |
379
379
 
380
+ ### The Gutenberg-native block libraries
381
+
382
+ Spectra, Kadence Blocks, GenerateBlocks and GreenShift store ordinary WordPress
383
+ blocks in `post_content`. Each has its own adapter in the plugin, with its own
384
+ detection, its own block namespace (`kadence/*`, `uagb/*`, `generateblocks/*`,
385
+ `greenshift-blocks/*`) and its own module list, and reads and writes go through
386
+ the Gutenberg parse and serialize path. Element operations, `build_page` and
387
+ snapshots all work on them.
388
+
389
+ What they do not have is a Respira-authored schema pack of their own, and they
390
+ do not need one: the Gutenberg intelligence package reads the live
391
+ `WP_Block_Type_Registry` on your site, so it already enumerates their blocks
392
+ and attributes, including any block the library added after this build shipped.
393
+ `respira_get_builder_info` reports this in `intelligence_package`, which reads
394
+ `gutenberg` for all four. `intelligence_available: false` for one of them means
395
+ the site is running a plugin older than 8.2.1.
396
+
380
397
  ---
381
398
 
382
399
  ## All Tools
383
400
 
401
+ ### Tools on one site
402
+
403
+ The server lists only what the connected site can use. Builder tools appear on the builder they serve, ACF tools where ACF is active, and WooCommerce tools where the add-on runs. Measured over stdio against stub sites:
404
+
405
+ | Site | Tools listed |
406
+ |---|---|
407
+ | Core site (Gutenberg, no WooCommerce or ACF) | 230 |
408
+ | Core site with ACF | 284 |
409
+ | WooCommerce add-on | 334 |
410
+ | WooCommerce and ACF on Elementor | 395 |
411
+ | WooCommerce and ACF on Bricks | 413, the most one site can see |
412
+ | Site context unreadable (everything is shown) | 262 |
413
+
414
+ A client with a tool cap can narrow this with `enabledTools` (see Quick Start).
415
+
384
416
  ### Native Site Editor structures (10 tools) — Shipped in v8.0
385
417
 
386
418
  These are Respira-native WordPress operations, not a copied generic tool catalog. User-owned structures use the same approval, revision, snapshot, no-op detection, read-back, and render-verification contract as template editing. Theme and plugin patterns are inspectable but remain owned by their source.
@@ -429,7 +461,9 @@ The design check closes the loop: `wordpress_check_design` runs deterministic sl
429
461
  | `wordpress_resolve_review_comment` | Mark a note resolved with what changed and the snapshot id |
430
462
  | `wordpress_get_design_apply_reports` | Read the stored per-builder apply reports for a direction: what apply actually wrote, straight from the site |
431
463
 
432
- ### Bricks Deep Intelligence (20 tools)
464
+ ### Bricks Deep Intelligence (25 tools)
465
+ Listed when Bricks is the active builder.
466
+
433
467
  | Tool | Description |
434
468
  |---|---|
435
469
  | `respira_list_bricks_global_classes` | List all global CSS classes with settings |
@@ -445,13 +479,49 @@ The design check closes the loop: `wordpress_check_design` runs deterministic sl
445
479
  | `respira_list_bricks_components` | List all Bricks templates/components |
446
480
  | `respira_get_bricks_component` | Get a component with full element structure |
447
481
  | `respira_apply_bricks_component` | Insert a component into a page with ID remapping |
448
- | `respira_search_bricks_elements` | **NEW** Search across all pages by element type, class, or setting |
449
- | `respira_bricks_health_check` | **NEW** Diagnostic: orphaned elements, duplicate IDs, broken refs |
450
- | `respira_bricks_detect_acss` | **NEW** Detect Automatic.css installation and design tokens |
451
- | `respira_bricks_import_acss` | **NEW** Import ACSS utility classes into Bricks global registry |
452
- | `respira_bricks_query_loops` | **NEW** Find all query loop elements, filter by post type |
453
- | `respira_bricks_style_profile` | **NEW** Analyze page design patterns (colors, spacing, typography) |
454
- | `respira_bricks_design_system` | **NEW** Single-call export of complete Bricks design system |
482
+ | `respira_search_bricks_elements` | Search across all pages by element type, class, or setting |
483
+ | `respira_bricks_health_check` | Diagnostic: orphaned elements, duplicate IDs, broken refs |
484
+ | `respira_bricks_detect_acss` | Detect Automatic.css installation and design tokens |
485
+ | `respira_bricks_import_acss` | Import ACSS utility classes into Bricks global registry |
486
+ | `respira_bricks_query_loops` | Find all query loop elements, filter by post type |
487
+ | `respira_bricks_style_profile` | Analyze page design patterns (colors, spacing, typography) |
488
+ | `respira_bricks_design_system` | Single-call export of complete Bricks design system |
489
+ | `respira_bricks_import_design_tokens` | Import a design-token file into the Bricks color palette and global CSS variables |
490
+ | `respira_bricks_list_section_presets` | List the curated section presets: hero, features, CTA, testimonials, pricing, stats, FAQ |
491
+ | `respira_bricks_insert_section_preset` | Insert a curated section preset into a page as a new section |
492
+ | `respira_bricks_scaffold_bem` | Scaffold a BEM block as Bricks global classes |
493
+ | `respira_bricks_lint_bem` | Audit the global-class registry against the BEM convention |
494
+
495
+ ### ACF (54 tools)
496
+ Listed when Advanced Custom Fields is active on the site. Repeaters, flexible content, galleries and options pages need ACF Pro; on a site without Pro those tools answer `PRO_FEATURE_REQUIRED`.
497
+
498
+ | Tool | Description |
499
+ |---|---|
500
+ | `respira_acf_get_field` / `respira_acf_get_fields` / `respira_acf_update_field` / `respira_acf_update_fields` / `respira_acf_delete_field` | Read, write and remove field values on a post; `update_fields` writes several in one snapshot |
501
+ | `respira_acf_bulk_get_fields` / `respira_acf_bulk_update_fields` / `respira_acf_compare_fields` / `respira_acf_clone_fields` | The same fields across many posts: read them, update up to 500 posts, diff two posts, copy values between posts |
502
+ | `respira_acf_list_field_groups` / `respira_acf_get_field_group` / `respira_acf_create_field_group` / `respira_acf_update_field_group` / `respira_acf_delete_field_group` | Field group CRUD with location rules |
503
+ | `respira_acf_export_field_group` / `respira_acf_import_field_group` / `respira_acf_clone_field_group` | Move a field group as JSON, or duplicate it under a new name |
504
+ | `respira_acf_get_field_object` / `respira_acf_search_fields` / `respira_acf_validate_field` | Inspect a field definition, search every definition, validate a value without writing |
505
+ | `respira_acf_get_repeater` / `respira_acf_get_repeater_row` / `respira_acf_add_repeater_row` / `respira_acf_update_repeater_row` / `respira_acf_delete_repeater_row` / `respira_acf_reorder_repeater` / `respira_acf_count_repeater_rows` | Repeater rows by zero-based index (ACF Pro) |
506
+ | `respira_acf_get_flexible_content` / `respira_acf_get_flexible_layout` / `respira_acf_add_flexible_layout` / `respira_acf_update_flexible_layout` / `respira_acf_delete_flexible_layout` / `respira_acf_reorder_flexible_layouts` | Flexible content layouts (ACF Pro) |
507
+ | `respira_acf_get_gallery` / `respira_acf_update_gallery` / `respira_acf_add_to_gallery` / `respira_acf_remove_from_gallery` / `respira_acf_reorder_gallery` | Gallery fields (ACF Pro) |
508
+ | `respira_acf_list_options_pages` / `respira_acf_create_options_page` / `respira_acf_get_option` / `respira_acf_get_options` / `respira_acf_update_option` / `respira_acf_update_options` / `respira_acf_delete_option` / `respira_acf_export_options` | Options pages and their values (ACF Pro) |
509
+ | `respira_acf_get_relationship` / `respira_acf_update_relationship` / `respira_acf_get_reverse_relationships` / `respira_acf_get_post_object` | Relationship and post object fields, including every post that points at a given post |
510
+ | `respira_acf_get_user_field` / `respira_acf_update_user_field` / `respira_acf_get_term_field` / `respira_acf_update_term_field` | Fields on user profiles and taxonomy terms |
511
+
512
+ ### Elementor (8 tools)
513
+ Seven are listed when Elementor is the active builder; `respira_add_stock_image` is listed on every builder.
514
+
515
+ | Tool | Description |
516
+ |---|---|
517
+ | `respira_list_elementor_widgets` | Every registered widget with name, title, icon, categories and keywords |
518
+ | `respira_get_elementor_widget_schema` | The full JSON Schema for one widget type: every control, with types, defaults and allowed values |
519
+ | `respira_elementor_design_system` | Export global colors and typography, system and custom |
520
+ | `respira_update_elementor_global_colors` | Add or update global colors in the active kit |
521
+ | `respira_update_elementor_global_typography` | Add or update global typography styles in the active kit |
522
+ | `respira_elementor_add_custom_js` | Add a script to a page as an HTML widget inside a container |
523
+ | `respira_add_stock_image` | Find a stock image, sideload it and place it as an image widget, in one call |
524
+ | `respira_validate_elementor_json` | Check Elementor JSON for rendering fidelity before writing it |
455
525
 
456
526
  ### Element Operations (7 tools)
457
527
  | Tool | Description |
@@ -512,12 +582,12 @@ Add any widget to a page in one call:
512
582
  | `respira_diff_snapshots` | Compare two snapshots |
513
583
  | `respira_restore_snapshot` | Restore a previous version |
514
584
 
515
- ### Analysis (13 tools)
585
+ ### Analysis, security and reports (16 tools)
516
586
  | Tool | Description |
517
587
  |---|---|
518
588
  | `respira_analyze_seo` | Full SEO audit with actionable recommendations |
519
589
  | `respira_analyze_performance` | Page speed and optimization |
520
- | `respira_get_core_web_vitals` | LCP, FID, CLS scores |
590
+ | `respira_get_core_web_vitals` | LCP, CLS and INP measured by PageSpeed Insights: real-user field data when Google has it, plus lab metrics |
521
591
  | `respira_analyze_aeo` | AI search engine optimization |
522
592
  | `respira_analyze_readability` | Flesch score, sentence analysis |
523
593
  | `respira_analyze_images` | Image optimization audit |
@@ -528,6 +598,9 @@ Add any widget to a page in one call:
528
598
  | `respira_list_accessibility_scans` | Previous scan history |
529
599
  | `respira_get_accessibility_scan` | Detailed scan results + violations |
530
600
  | `respira_apply_accessibility_fixes` | Auto-fix a11y violations |
601
+ | `respira_run_security_audit` | Versions, core checksums, administrators, plugins, themes, indicators and coverage, plus `known_vulnerabilities` on a licensed site. Reads only; the optional `probe_uploads_execution` writes and deletes one inert file |
602
+ | `respira_update_core_security` | Apply the WordPress core security release WordPress.org offers on the current branch, after backup confirmation and approval |
603
+ | `respira_generate_activity_report` | The client report for a period, from the site's activity log: what changed, examples, time saved. Reads only; administrator key |
531
604
 
532
605
  ### Menus (12 tools)
533
606
  | Tool | Description |
@@ -556,12 +629,14 @@ Add any widget to a page in one call:
556
629
  | `respira_list_terms` / `respira_get_term` / `respira_create_term` / `respira_update_term` / `respira_delete_term` | Term CRUD |
557
630
  | `respira_list_post_types` / `respira_get_post_type` | Post type info |
558
631
 
559
- ### Site & Plugins (15 tools)
632
+ ### Site & Plugins (17 tools)
560
633
  | Tool | Description |
561
634
  |---|---|
562
635
  | `respira_get_site_context` | WordPress version, theme, plugins, URL |
563
636
  | `respira_get_theme_docs` | Theme documentation and structure |
564
637
  | `respira_list_plugins` / `respira_install_plugin` / `respira_activate_plugin` / `respira_deactivate_plugin` / `respira_update_plugin` / `respira_delete_plugin` | Plugin management |
638
+ | `respira_update_theme` | Update a theme to the latest version offered to the site, approval-gated, with a health check of the site afterwards |
639
+ | `respira_revoke_application_password` | Revoke one application password by user id and uuid from the security audit, approval-gated |
565
640
  | `respira_list_options` / `respira_get_option` / `respira_update_option` / `respira_delete_option` | WordPress options |
566
641
  | `respira_purge_cache` | Purge page and object caches and report which caching layers were touched. Pass `post_id` for one page, omit it for the whole site. Every Respira write already purges what it changed; this is the manual lever for changes Respira did not make |
567
642
  | `respira_validate_security` | Security audit |
@@ -574,7 +649,18 @@ Add any widget to a page in one call:
574
649
  | `respira_switch_site` | Switch active site |
575
650
  | `respira_get_active_site` | Get current site info |
576
651
 
577
- ### WooCommerce Add-on (105 tools)
652
+ ### Native connector only (8 tools)
653
+ The plugin's own MCP endpoint (the Claude.ai and ChatGPT connectors, or any client pointed at the site's MCP URL) names tools in the `respira_wordpress_*` form. These eight exist only there; the npm server does not list them.
654
+
655
+ | Tool | Description |
656
+ |---|---|
657
+ | `respira_wordpress_read_debug_log` | Tail the site's debug log to diagnose PHP fatals, warnings and notices without SSH. Reads only; needs `edit_themes` and `WP_DEBUG_LOG` |
658
+ | `respira_wordpress_detect_page_builder` | Which page builder a specific page uses |
659
+ | `respira_wordpress_approve_duplicate` / `respira_wordpress_reject_duplicate` | Apply a reviewed duplicate live, or delete it. Administrators only |
660
+ | `respira_wordpress_detach_duplicate` | Keep a tracked duplicate as its own page, without deleting it or touching the original |
661
+ | `respira_wordpress_read_page_v2` / `respira_wordpress_read_post_v2` / `respira_wordpress_read_custom_post_v2` | Reads that return heavy fields only when asked for |
662
+
663
+ ### WooCommerce Add-on (104 tools)
578
664
  Available when the [WooCommerce add-on](https://respira.press/addons/woocommerce) is installed. Included free with Studio and Founder plans.
579
665
 
580
666
  | Category | Tools |
@@ -589,7 +675,7 @@ Available when the [WooCommerce add-on](https://respira.press/addons/woocommerce
589
675
  | **Inventory control** | `get_stock_status`, `update_stock` |
590
676
  | **Product categories** | `list_categories`, `get_category`, `create_category`, `update_category`, `delete_category` |
591
677
  | **Product tags** | `list_tags`, `get_tag`, `create_tag`, `update_tag`, `delete_tag` |
592
- | **Analytics** | `sales_report` (deprecated alias), `revenue_summary`, `sales_timeseries`, `top_products`, `orders_summary`, `customers_summary` |
678
+ | **Analytics** | `revenue_summary`, `sales_timeseries`, `top_products`, `orders_summary`, `customers_summary` |
593
679
  | **Store configuration** | `get_store_configuration`, `list_payment_gateways`, `list_shipping_zones`, `list_tax_rates` |
594
680
  | **Webhooks** | `list_webhooks`, `get_webhook`, `create_webhook`, `update_webhook`, `delete_webhook`, `test_webhook` |
595
681
 
@@ -610,6 +696,14 @@ Admins can enable/disable individual tools from the WordPress dashboard. Governa
610
696
 
611
697
  ---
612
698
 
699
+ ## Skills as prompts
700
+
701
+ The server offers every bundled Respira skill as an MCP prompt, named by its slug, for example `respira-site-audit` or `activity-report-composer`. Clients that show prompts as slash commands list them with no install step. Picking one sends the skill's instructions as the first message, with an optional `request` argument for the page, site or client it is for. Listing them needs no site connection.
702
+
703
+ `npx @respira/wordpress-mcp-server install-skills` still copies the same skills into `~/.claude/skills` for Claude Code.
704
+
705
+ ---
706
+
613
707
  ## Multi-Site Support
614
708
 
615
709
  Manage multiple WordPress sites from one config:
@@ -630,7 +724,7 @@ For agencies managing many sites, use the hosted setup at [respira.press/dashboa
630
724
 
631
725
  ## Tool Naming: `respira_*`
632
726
 
633
- All tools use `respira_*` names (e.g. `respira_update_page`, `respira_find_element`). The legacy `wordpress_*` aliases are deprecated and will be removed in a future release. Update any prompts or workflows that still reference `wordpress_*` tools.
727
+ All tools use `respira_*` names (e.g. `respira_update_page`, `respira_find_element`). Each one also answers to its legacy `wordpress_*` name: clients see `respira_generate_activity_report`, and a saved call to `wordpress_generate_activity_report` still reaches it. The legacy aliases are deprecated and will be removed in a future release. Update any prompts or workflows that still reference `wordpress_*` tools.
634
728
 
635
729
  ---
636
730
 
@@ -828,7 +922,7 @@ npm cache clean --force
828
922
 
829
923
  API key validation happens server-side in the WordPress plugin. The MCP server passes credentials but does not store or validate them.
830
924
 
831
- `wordpress_run_security_audit` performs bounded read-only evidence collection for reviewed advisories. `wordpress_update_core_security` installs only an exact, catalog-approved security patch after backup confirmation and explicit two-step approval, and returns post-update verification evidence.
925
+ `wordpress_run_security_audit` collects bounded security evidence and only reads, `deep_scan` included. The one exception is opt-in: `probe_uploads_execution` writes one inert PHP file into uploads, requests it to learn whether PHP runs there, and deletes it. On a licensed site the result includes `known_vulnerabilities`, with status `ok` or `unavailable`, and an unavailable match never reads as clean. `wordpress_update_core_security` installs only the security release WordPress.org offers on the site's current branch, after backup confirmation and explicit two-step approval, and returns post-update verification evidence.
832
926
 
833
927
  Report vulnerabilities to security@respira.press.
834
928
 
@@ -864,6 +958,6 @@ MIT © [Respira](https://respira.press)
864
958
  ---
865
959
 
866
960
  <p align="center">
867
- <strong>228 core tools, 333 with WooCommerce. 17 builders. The AI infrastructure layer for WordPress.</strong><br>
961
+ <strong>230 core tools, 335 with WooCommerce. 17 builders. The AI infrastructure layer for WordPress.</strong><br>
868
962
  <a href="https://respira.press">respira.press</a>
869
963
  </p>