@respira/wordpress-mcp-server 8.3.20 → 8.3.21

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 CHANGED
@@ -5,6 +5,26 @@ 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.21] - 2026-09-11
9
+
10
+ A share link that lives as long as you need.
11
+
12
+ ### Added
13
+
14
+ - **`wordpress_create_share_link`.** Mints a share-grade preview link for any page, post,
15
+ draft or Respira duplicate, valid 1 to 90 days (14 by default), with no write. Until now
16
+ a long-lived link only came with a staged change, so for an existing draft the one link an
17
+ agent could mint was the dashboard's 15-minute design preview, and that is what got quoted
18
+ to people. Needs plugin 8.8.33 or later on the site.
19
+ - **`ttl_days` on `wordpress_mint_design_preview`.** The same token, minted for days instead
20
+ of minutes when a person will open it.
21
+
22
+ ### Changed
23
+
24
+ - Both tool descriptions now say what the link is for: put it in the reply with its expiry
25
+ and suggest sending it to the client or whoever signs off. The site's own MCP instructions
26
+ say the same on every staged write.
27
+
8
28
  ## [8.3.20] - 2026-09-09
9
29
 
10
30
  ### Fixed
package/README.md CHANGED
@@ -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 (12 tools)
401
+ ### Design Direction (13 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
 
@@ -418,7 +418,8 @@ The design check closes the loop: `wordpress_check_design` runs deterministic sl
418
418
  | `wordpress_apply_design_direction` | Push the direction's tokens into the resolved builder's native store through approval; snapshot first, per-builder report persisted |
419
419
  | `wordpress_export_design_direction` | Export strict DTCG 2025.10 with roles + per-builder apply reports in `$extensions["press.respira"]` |
420
420
  | `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 |
421
- | `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_mint_design_preview` | Mint a signed preview URL (plugin 8.6.22+) that renders the real page, drafts and duplicates included, frameable by the respira.press dashboard only; 15 minutes, or `ttl_days` (1 to 90) for a link a person will open; stores nothing |
422
+ | `wordpress_create_share_link` | Create a share link (plugin 8.8.33+) for any page, draft or duplicate: opens with no WordPress login for `ttl_days` (1 to 90, default 14), no write; send it to the client or whoever signs off |
422
423
  | `wordpress_get_design_apply_reports` | Read the stored per-builder apply reports for a direction: what apply actually wrote, straight from the site |
423
424
 
424
425
  ### Bricks Deep Intelligence (20 tools)
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: **193 core tools**, **105 WooCommerce tools**, **298 total**.
5
+ Generated catalog: **194 core tools**, **105 WooCommerce tools**, **299 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
 
@@ -44,6 +44,7 @@ The runtime applies site context and per-site governance, so an individual conne
44
44
  - `wordpress_create_playbook` — write; hosted/stdio
45
45
  - `wordpress_create_post_duplicate` — write; native + hosted
46
46
  - `wordpress_create_post_type` — write; native + hosted
47
+ - `wordpress_create_share_link` — write; native + hosted
47
48
  - `wordpress_create_site_navigation` — write; native + hosted
48
49
  - `wordpress_create_site_pattern` — write; native + hosted
49
50
  - `wordpress_create_site_template` — write; native + hosted
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -4333,7 +4333,7 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4333
4333
  },
4334
4334
  {
4335
4335
  name: 'wordpress_mint_design_preview',
4336
- 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.',
4336
+ description: 'Mint a 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. Without ttl_days the url lives 15 minutes and 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. For a link a person will open, pass ttl_days (1 to 90) or use wordpress_create_share_link. 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.',
4337
4337
  inputSchema: {
4338
4338
  type: 'object',
4339
4339
  properties: {
@@ -4341,6 +4341,10 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4341
4341
  type: 'number',
4342
4342
  description: 'Optional post/page id; omit for the front page. Drafts and Respira duplicates are allowed.',
4343
4343
  },
4344
+ ttl_days: {
4345
+ type: 'number',
4346
+ description: 'Optional lifetime in days, 1 to 90. Set it when a person will open the link; leave it out for the dashboard frame.',
4347
+ },
4344
4348
  },
4345
4349
  },
4346
4350
  annotations: {
@@ -4351,6 +4355,25 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4351
4355
  openWorldHint: false,
4352
4356
  },
4353
4357
  },
4358
+ {
4359
+ name: 'wordpress_create_share_link',
4360
+ description: 'Create a share link for a page, post, draft or Respira duplicate (plugin 8.8.33+): a signed URL that opens the page as it is now, with no WordPress login, on any device, for ttl_days (1 to 90, default 14). Nothing is written, and the link can be minted at any time for any existing post. Offer this whenever work has landed on a duplicate or draft and someone other than the person you are talking to has to see it: a client, a colleague, whoever signs off. Put the link and its expiry in your answer and suggest sending it to them; the response message already says this in words. Response: { url, expires_at, post_id, post_title, post_status, message }.',
4361
+ inputSchema: {
4362
+ type: 'object',
4363
+ properties: {
4364
+ post_id: { type: 'number', description: 'The page, post, draft or duplicate id the link should open.' },
4365
+ ttl_days: { type: 'number', description: 'How many days the link stays valid, 1 to 90. Default 14.' },
4366
+ },
4367
+ required: ['post_id'],
4368
+ },
4369
+ annotations: {
4370
+ title: "Create Share Link",
4371
+ readOnlyHint: true,
4372
+ destructiveHint: false,
4373
+ idempotentHint: true,
4374
+ openWorldHint: false,
4375
+ },
4376
+ },
4354
4377
  {
4355
4378
  name: 'wordpress_get_design_apply_reports',
4356
4379
  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.',
@@ -10317,6 +10340,8 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
10317
10340
  return await client.callRestV2('POST', '/design-direction/check', args);
10318
10341
  case 'wordpress_mint_design_preview':
10319
10342
  return await client.callRestV2('POST', '/design-direction/preview-token', args);
10343
+ case 'wordpress_create_share_link':
10344
+ return await client.callRestV2('POST', '/preview/share-link', args);
10320
10345
  case 'wordpress_get_design_apply_reports':
10321
10346
  return await client.callRestV2('GET', '/design-direction/apply-reports', args.direction_id !== undefined ? { direction_id: args.direction_id } : undefined);
10322
10347
  case 'wordpress_apply_builder_patch':