@respira/wordpress-mcp-server 8.3.10 → 8.3.12

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/dist/server.js CHANGED
@@ -302,6 +302,32 @@ function hoistDroppedStylingWarnings(result) {
302
302
  * flipping the global current site (different intent from per-call override)
303
303
  * - redeem_token: pre-site setup; no site exists yet
304
304
  */
305
+ /**
306
+ * Pull the builder a tool actually acted through out of its response.
307
+ *
308
+ * Responses are not uniform about this. Element operations return
309
+ * `builder: { name, version }`, extract/inject return a bare `builder` string,
310
+ * and builder-info style responses use `active_builder` or `page_builder`.
311
+ * Accepting all three is cheaper than making every tool agree, and a null here
312
+ * is exactly as informative as the column was before: empty.
313
+ *
314
+ * The ingest endpoint lowercases and strips this to [a-z0-9_-], so no
315
+ * normalisation is needed on the way out.
316
+ */
317
+ function telemetryBuilderName(result) {
318
+ if (!result || typeof result !== 'object')
319
+ return null;
320
+ const candidates = [result.builder, result.active_builder, result.page_builder];
321
+ for (const candidate of candidates) {
322
+ if (typeof candidate === 'string' && candidate.trim()) {
323
+ return candidate.trim().slice(0, 40);
324
+ }
325
+ if (candidate && typeof candidate === 'object' && typeof candidate.name === 'string' && candidate.name.trim()) {
326
+ return candidate.name.trim().slice(0, 40);
327
+ }
328
+ }
329
+ return null;
330
+ }
305
331
  const SITE_AGNOSTIC_TOOLS = new Set([
306
332
  'wordpress_list_sites',
307
333
  'wordpress_get_active_site',
@@ -372,6 +398,76 @@ const TOOLS_WITH_PAGINATION_HINT = {
372
398
  wordpress_extract_builder_content: 'This tool has no pagination and always returns the whole page. Use wordpress_find_builder_targets instead, which takes query, limit and offset and reports total_matches / has_more / next_offset, or wordpress_find_element to jump straight to one element. wordpress_get_page_outline gives a row-level summary. If you genuinely need the entire structure in one call, raise the cap with RESPIRA_MAX_TOOL_RESULT_BYTES.',
373
399
  respira_list_plugins: 'No pagination arg today. The full plugin list is usually small; consider filing a feature request if your site hits the cap here.',
374
400
  };
401
+ /**
402
+ * The read/search tools where "nothing matched" is a complete answer.
403
+ *
404
+ * An explicit list, not a regex on the tool name. `find_builder_targets` and
405
+ * `find_element` both start with "find" and so does nothing else that writes,
406
+ * but a name-shaped rule would quietly start swallowing errors the first time
407
+ * someone adds `find_and_replace`. The cost of this list is remembering to add
408
+ * to it; the cost of the regex is a silent write failure, and this codebase has
409
+ * paid that one before.
410
+ *
411
+ * Names are matched after stripping the `respira_` / `wordpress_` prefix, since
412
+ * both surfaces exist and the telemetry shows both in use.
413
+ */
414
+ export const EMPTY_READ_TOOLS = new Set([
415
+ 'find_element',
416
+ 'find_builder_targets',
417
+ 'get_option',
418
+ 'get_media',
419
+ 'get_post_type',
420
+ 'get_custom_post',
421
+ 'get_term',
422
+ 'get_menu',
423
+ 'get_menu_item',
424
+ 'get_page_outline',
425
+ 'read_page',
426
+ 'read_page_v2',
427
+ 'read_post',
428
+ 'read_post_v2',
429
+ 'read_custom_post_v2',
430
+ 'read_theme_file',
431
+ 'extract_builder_content',
432
+ ]);
433
+ /**
434
+ * "Not found" codes that mean the search came back empty.
435
+ *
436
+ * respira_site_id_not_found is deliberately absent: that is the caller naming a
437
+ * site that does not exist, which is a caller mistake on any tool and must stay
438
+ * an error. It was 410 calls over 25 sites in the 30 days to 2026-08-24, and
439
+ * folding it in here would hide a misconfigured client behind a friendly
440
+ * "nothing matched".
441
+ */
442
+ export const EMPTY_READ_CODES = new Set([
443
+ 'respira_element_not_found',
444
+ 'respira_option_not_found',
445
+ 'respira_post_not_found',
446
+ 'respira_page_not_found',
447
+ 'respira_post_type_not_found',
448
+ 'respira_media_not_found',
449
+ 'respira_theme_file_not_found',
450
+ 'respira_module_not_found',
451
+ 'respira_acf_group_not_found',
452
+ 'respira_acf_post_not_found',
453
+ ]);
454
+ /** The WP_Error code, which wordpress-client promotes onto error.name. */
455
+ export function readErrorCode(error) {
456
+ const fromName = typeof error?.name === 'string' ? error.name : '';
457
+ const fromCode = typeof error?.code === 'string' ? error.code : '';
458
+ return fromCode || fromName || '';
459
+ }
460
+ /**
461
+ * True when this is a read/search tool reporting that nothing matched.
462
+ * Both halves must hold: the wrong tool with the right code, or the right tool
463
+ * with any other code, stays an error.
464
+ */
465
+ export function isEmptyReadResult(toolName, error) {
466
+ const bare = String(toolName || '').replace(/^(respira_|wordpress_)+/, '');
467
+ if (!EMPTY_READ_TOOLS.has(bare))
468
+ return false;
469
+ return EMPTY_READ_CODES.has(readErrorCode(error));
470
+ }
375
471
  export class RespiraWordPressServer {
376
472
  server;
377
473
  currentSite = null;
@@ -1789,6 +1885,53 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
1789
1885
  clearTimeout(timeoutHandle);
1790
1886
  }
1791
1887
  this.currentSite?.setCurrentToolName(null);
1888
+ // A search that matched nothing is an answer, not a failure.
1889
+ //
1890
+ // Telemetry, 30 days to 2026-08-24: respira_element_not_found is the
1891
+ // single largest caller_error code at 4,626 calls, and 4,278 of those
1892
+ // (92.5%) come from find_element itself. The same shape repeats on
1893
+ // get_option (632 calls / 173 sites), read_post, get_post_type,
1894
+ // read_page, get_media and read_theme_file. Across the read surface
1895
+ // that is 5,695 calls over 318 of 716 sites, reported to the agent as
1896
+ // errors when the honest answer is "nothing matched".
1897
+ //
1898
+ // It costs more than a wrong statistic. An agent that gets an error
1899
+ // back from find_element cannot tell "this page has no such element,
1900
+ // try another identifier" from "the tool or the site is broken". The
1901
+ // first should prompt a different query and the second should prompt a
1902
+ // stop, and today they are indistinguishable, so agents give up on
1903
+ // pages they could have edited.
1904
+ //
1905
+ // Deliberately narrow, because turning an error into a success is the
1906
+ // exact direction this codebase's worst bugs went:
1907
+ // - only read/search tools, never a write. On a write, "not found"
1908
+ // means the caller targeted something that does not exist and it
1909
+ // must stay an error.
1910
+ // - only *_not_found codes, and never respira_site_id_not_found: a
1911
+ // bad site id IS a caller mistake and stays loud.
1912
+ // - the payload says found: false and matches: [] in as many words.
1913
+ // It never fabricates a result, and isError stays false only
1914
+ // because the question was answered.
1915
+ if (isEmptyReadResult(name, error)) {
1916
+ return {
1917
+ content: [
1918
+ {
1919
+ type: 'text',
1920
+ text: JSON.stringify({
1921
+ found: false,
1922
+ matches: [],
1923
+ tool: name,
1924
+ reason: readErrorCode(error),
1925
+ message: 'Nothing matched. This is a complete answer, not a failure: the site responded and ' +
1926
+ 'contains no item matching what was asked for. Try a different identifier rather than ' +
1927
+ 'retrying the same one. For elements, identifier_type "content" searches visible text ' +
1928
+ 'and "path" names exactly one element; respira_get_page_outline lists what is actually ' +
1929
+ 'on the page.',
1930
+ }),
1931
+ },
1932
+ ],
1933
+ };
1934
+ }
1792
1935
  if (error instanceof ToolTimeoutError) {
1793
1936
  const activeSite = this.getActiveSiteSummary(args);
1794
1937
  return {
@@ -2010,7 +2153,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2010
2153
  },
2011
2154
  },
2012
2155
  },
2013
- readOnlyHint: true,
2156
+ annotations: {
2157
+ title: "Site Context",
2158
+ readOnlyHint: true,
2159
+ destructiveHint: false,
2160
+ idempotentHint: true,
2161
+ openWorldHint: false,
2162
+ },
2014
2163
  },
2015
2164
  {
2016
2165
  name: 'wordpress_list_sites',
@@ -2019,7 +2168,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2019
2168
  type: 'object',
2020
2169
  properties: {},
2021
2170
  },
2022
- readOnlyHint: true,
2171
+ annotations: {
2172
+ title: "List Sites",
2173
+ readOnlyHint: true,
2174
+ destructiveHint: false,
2175
+ idempotentHint: true,
2176
+ openWorldHint: false,
2177
+ },
2023
2178
  },
2024
2179
  {
2025
2180
  name: 'wordpress_get_divi_migration_readiness',
@@ -2033,7 +2188,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2033
2188
  type: 'object',
2034
2189
  properties: {},
2035
2190
  },
2036
- readOnlyHint: true,
2191
+ annotations: {
2192
+ title: "Divi Migration Readiness",
2193
+ readOnlyHint: true,
2194
+ destructiveHint: false,
2195
+ idempotentHint: true,
2196
+ openWorldHint: false,
2197
+ },
2037
2198
  },
2038
2199
  {
2039
2200
  name: 'wordpress_search_abilities',
@@ -2049,7 +2210,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2049
2210
  limit: { type: 'number', description: 'Maximum results, 1–100 (default 20).' },
2050
2211
  },
2051
2212
  },
2052
- readOnlyHint: true,
2213
+ annotations: {
2214
+ title: "Search Abilities",
2215
+ readOnlyHint: true,
2216
+ destructiveHint: false,
2217
+ idempotentHint: true,
2218
+ openWorldHint: false,
2219
+ },
2053
2220
  },
2054
2221
  {
2055
2222
  name: 'wordpress_abilities_gap_report',
@@ -2061,7 +2228,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2061
2228
  type: 'object',
2062
2229
  properties: {},
2063
2230
  },
2064
- readOnlyHint: true,
2231
+ annotations: {
2232
+ title: "Abilities Gap Report",
2233
+ readOnlyHint: true,
2234
+ destructiveHint: false,
2235
+ idempotentHint: true,
2236
+ openWorldHint: false,
2237
+ },
2065
2238
  },
2066
2239
  {
2067
2240
  name: 'wordpress_invoke_ability',
@@ -2084,6 +2257,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2084
2257
  },
2085
2258
  required: ['ability'],
2086
2259
  },
2260
+ annotations: {
2261
+ title: "Invoke Ability",
2262
+ readOnlyHint: false,
2263
+ destructiveHint: true,
2264
+ idempotentHint: false,
2265
+ openWorldHint: false,
2266
+ },
2087
2267
  },
2088
2268
  {
2089
2269
  name: 'wordpress_get_active_site',
@@ -2092,7 +2272,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2092
2272
  type: 'object',
2093
2273
  properties: {},
2094
2274
  },
2095
- readOnlyHint: true,
2275
+ annotations: {
2276
+ title: "Active Site",
2277
+ readOnlyHint: true,
2278
+ destructiveHint: false,
2279
+ idempotentHint: true,
2280
+ openWorldHint: false,
2281
+ },
2096
2282
  },
2097
2283
  {
2098
2284
  name: 'wordpress_get_theme_docs',
@@ -2101,7 +2287,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2101
2287
  type: 'object',
2102
2288
  properties: {},
2103
2289
  },
2104
- readOnlyHint: true,
2290
+ annotations: {
2291
+ title: "Theme Documentation",
2292
+ readOnlyHint: true,
2293
+ destructiveHint: false,
2294
+ idempotentHint: true,
2295
+ openWorldHint: false,
2296
+ },
2105
2297
  },
2106
2298
  {
2107
2299
  name: 'wordpress_get_builder_info',
@@ -2115,7 +2307,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2115
2307
  },
2116
2308
  },
2117
2309
  },
2118
- readOnlyHint: true,
2310
+ annotations: {
2311
+ title: "Builder Info",
2312
+ readOnlyHint: true,
2313
+ destructiveHint: false,
2314
+ idempotentHint: true,
2315
+ openWorldHint: false,
2316
+ },
2119
2317
  },
2120
2318
  {
2121
2319
  name: 'wordpress_list_pages',
@@ -2145,7 +2343,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2145
2343
  },
2146
2344
  },
2147
2345
  },
2148
- readOnlyHint: true,
2346
+ annotations: {
2347
+ title: "List Pages",
2348
+ readOnlyHint: true,
2349
+ destructiveHint: false,
2350
+ idempotentHint: true,
2351
+ openWorldHint: false,
2352
+ },
2149
2353
  },
2150
2354
  {
2151
2355
  name: 'wordpress_read_page',
@@ -2164,7 +2368,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2164
2368
  },
2165
2369
  required: ['id'],
2166
2370
  },
2167
- readOnlyHint: true,
2371
+ annotations: {
2372
+ title: "Read Page",
2373
+ readOnlyHint: true,
2374
+ destructiveHint: false,
2375
+ idempotentHint: true,
2376
+ openWorldHint: false,
2377
+ },
2168
2378
  },
2169
2379
  {
2170
2380
  name: 'wordpress_create_page_duplicate',
@@ -2183,6 +2393,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2183
2393
  },
2184
2394
  required: ['original_id'],
2185
2395
  },
2396
+ annotations: {
2397
+ title: "Duplicate Page",
2398
+ readOnlyHint: false,
2399
+ destructiveHint: false,
2400
+ idempotentHint: false,
2401
+ openWorldHint: false,
2402
+ },
2186
2403
  },
2187
2404
  {
2188
2405
  name: 'wordpress_update_page',
@@ -2242,7 +2459,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2242
2459
  },
2243
2460
  required: ['id'],
2244
2461
  },
2245
- idempotentHint: true,
2462
+ annotations: {
2463
+ title: "Update Page",
2464
+ readOnlyHint: false,
2465
+ destructiveHint: true,
2466
+ idempotentHint: true,
2467
+ openWorldHint: false,
2468
+ },
2246
2469
  },
2247
2470
  {
2248
2471
  name: 'wordpress_delete_page',
@@ -2269,7 +2492,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2269
2492
  },
2270
2493
  required: ['id'],
2271
2494
  },
2272
- destructiveHint: true,
2495
+ annotations: {
2496
+ title: "Delete Page",
2497
+ readOnlyHint: false,
2498
+ destructiveHint: true,
2499
+ idempotentHint: true,
2500
+ openWorldHint: false,
2501
+ },
2273
2502
  },
2274
2503
  {
2275
2504
  name: 'wordpress_list_posts',
@@ -2299,7 +2528,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2299
2528
  },
2300
2529
  },
2301
2530
  },
2302
- readOnlyHint: true,
2531
+ annotations: {
2532
+ title: "List Posts",
2533
+ readOnlyHint: true,
2534
+ destructiveHint: false,
2535
+ idempotentHint: true,
2536
+ openWorldHint: false,
2537
+ },
2303
2538
  },
2304
2539
  {
2305
2540
  name: 'wordpress_read_post',
@@ -2318,7 +2553,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2318
2553
  },
2319
2554
  required: ['id'],
2320
2555
  },
2321
- readOnlyHint: true,
2556
+ annotations: {
2557
+ title: "Read Post",
2558
+ readOnlyHint: true,
2559
+ destructiveHint: false,
2560
+ idempotentHint: true,
2561
+ openWorldHint: false,
2562
+ },
2322
2563
  },
2323
2564
  {
2324
2565
  name: 'wordpress_create_post_duplicate',
@@ -2337,6 +2578,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2337
2578
  },
2338
2579
  required: ['original_id'],
2339
2580
  },
2581
+ annotations: {
2582
+ title: "Duplicate Post",
2583
+ readOnlyHint: false,
2584
+ destructiveHint: false,
2585
+ idempotentHint: false,
2586
+ openWorldHint: false,
2587
+ },
2340
2588
  },
2341
2589
  {
2342
2590
  name: 'respira_duplicate_with_translations',
@@ -2364,6 +2612,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2364
2612
  },
2365
2613
  required: ['post_id'],
2366
2614
  },
2615
+ annotations: {
2616
+ title: "Duplicate With Translations",
2617
+ readOnlyHint: false,
2618
+ destructiveHint: false,
2619
+ idempotentHint: false,
2620
+ openWorldHint: false,
2621
+ },
2367
2622
  },
2368
2623
  {
2369
2624
  name: 'wordpress_get_translations',
@@ -2376,6 +2631,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2376
2631
  },
2377
2632
  required: ['id'],
2378
2633
  },
2634
+ annotations: {
2635
+ title: "Get Translations",
2636
+ readOnlyHint: true,
2637
+ destructiveHint: false,
2638
+ idempotentHint: true,
2639
+ openWorldHint: false,
2640
+ },
2379
2641
  },
2380
2642
  {
2381
2643
  name: 'wordpress_create_translation',
@@ -2390,6 +2652,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2390
2652
  },
2391
2653
  required: ['source_id', 'target_language'],
2392
2654
  },
2655
+ annotations: {
2656
+ title: "Create Translation",
2657
+ readOnlyHint: false,
2658
+ destructiveHint: false,
2659
+ idempotentHint: false,
2660
+ openWorldHint: false,
2661
+ },
2393
2662
  },
2394
2663
  {
2395
2664
  name: 'wordpress_update_translation',
@@ -2405,6 +2674,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2405
2674
  },
2406
2675
  required: ['source_id', 'target_language'],
2407
2676
  },
2677
+ annotations: {
2678
+ title: "Update Translation",
2679
+ readOnlyHint: false,
2680
+ destructiveHint: true,
2681
+ idempotentHint: true,
2682
+ openWorldHint: false,
2683
+ },
2408
2684
  },
2409
2685
  {
2410
2686
  name: 'wordpress_list_theme_builder_templates',
@@ -2413,6 +2689,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2413
2689
  type: 'object',
2414
2690
  properties: {},
2415
2691
  },
2692
+ annotations: {
2693
+ title: "List Theme Templates",
2694
+ readOnlyHint: true,
2695
+ destructiveHint: false,
2696
+ idempotentHint: true,
2697
+ openWorldHint: false,
2698
+ },
2416
2699
  },
2417
2700
  {
2418
2701
  name: 'wordpress_create_theme_builder_template',
@@ -2434,6 +2717,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2434
2717
  },
2435
2718
  required: ['kind', 'name'],
2436
2719
  },
2720
+ annotations: {
2721
+ title: "Create Theme Template",
2722
+ readOnlyHint: false,
2723
+ destructiveHint: false,
2724
+ idempotentHint: false,
2725
+ openWorldHint: false,
2726
+ },
2437
2727
  },
2438
2728
  {
2439
2729
  name: 'wordpress_update_theme_builder_template',
@@ -2450,6 +2740,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2450
2740
  },
2451
2741
  required: ['layout_id', 'structure'],
2452
2742
  },
2743
+ annotations: {
2744
+ title: "Update Theme Template",
2745
+ readOnlyHint: false,
2746
+ destructiveHint: true,
2747
+ idempotentHint: true,
2748
+ openWorldHint: false,
2749
+ },
2453
2750
  },
2454
2751
  {
2455
2752
  name: 'wordpress_build_mega_menu',
@@ -2489,6 +2786,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2489
2786
  },
2490
2787
  required: ['menu_name', 'top_label', 'columns'],
2491
2788
  },
2789
+ annotations: {
2790
+ title: "Build Mega Menu",
2791
+ readOnlyHint: false,
2792
+ destructiveHint: false,
2793
+ idempotentHint: false,
2794
+ openWorldHint: false,
2795
+ },
2492
2796
  },
2493
2797
  {
2494
2798
  name: 'wordpress_update_post',
@@ -2587,7 +2891,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2587
2891
  },
2588
2892
  required: ['id'],
2589
2893
  },
2590
- idempotentHint: true,
2894
+ annotations: {
2895
+ title: "Update Post",
2896
+ readOnlyHint: false,
2897
+ destructiveHint: true,
2898
+ idempotentHint: true,
2899
+ openWorldHint: false,
2900
+ },
2591
2901
  },
2592
2902
  {
2593
2903
  name: 'wordpress_delete_post',
@@ -2614,7 +2924,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2614
2924
  },
2615
2925
  required: ['id'],
2616
2926
  },
2617
- destructiveHint: true,
2927
+ annotations: {
2928
+ title: "Delete Post",
2929
+ readOnlyHint: false,
2930
+ destructiveHint: true,
2931
+ idempotentHint: true,
2932
+ openWorldHint: false,
2933
+ },
2618
2934
  },
2619
2935
  {
2620
2936
  name: 'wordpress_list_media',
@@ -2636,7 +2952,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2636
2952
  },
2637
2953
  },
2638
2954
  },
2639
- readOnlyHint: true,
2955
+ annotations: {
2956
+ title: "List Media",
2957
+ readOnlyHint: true,
2958
+ destructiveHint: false,
2959
+ idempotentHint: true,
2960
+ openWorldHint: false,
2961
+ },
2640
2962
  },
2641
2963
  {
2642
2964
  name: 'wordpress_upload_media',
@@ -2671,6 +2993,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2671
2993
  },
2672
2994
  required: ['file', 'filename'],
2673
2995
  },
2996
+ annotations: {
2997
+ title: "Upload Media",
2998
+ readOnlyHint: false,
2999
+ destructiveHint: false,
3000
+ idempotentHint: false,
3001
+ openWorldHint: false,
3002
+ },
2674
3003
  },
2675
3004
  {
2676
3005
  name: 'wordpress_extract_builder_content',
@@ -2689,7 +3018,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2689
3018
  },
2690
3019
  required: ['page_id'],
2691
3020
  },
2692
- readOnlyHint: true,
3021
+ annotations: {
3022
+ title: "Extract Builder Content",
3023
+ readOnlyHint: true,
3024
+ destructiveHint: false,
3025
+ idempotentHint: true,
3026
+ openWorldHint: false,
3027
+ },
2693
3028
  },
2694
3029
  {
2695
3030
  name: 'wordpress_find_builder_targets',
@@ -2720,7 +3055,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2720
3055
  },
2721
3056
  required: ['builder', 'page_id'],
2722
3057
  },
2723
- readOnlyHint: true,
3058
+ annotations: {
3059
+ title: "Find Builder Targets",
3060
+ readOnlyHint: true,
3061
+ destructiveHint: false,
3062
+ idempotentHint: true,
3063
+ openWorldHint: false,
3064
+ },
2724
3065
  },
2725
3066
  {
2726
3067
  name: 'wordpress_get_page_outline',
@@ -2739,7 +3080,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2739
3080
  },
2740
3081
  required: ['page_id'],
2741
3082
  },
2742
- readOnlyHint: true,
3083
+ annotations: {
3084
+ title: "Page Outline",
3085
+ readOnlyHint: true,
3086
+ destructiveHint: false,
3087
+ idempotentHint: true,
3088
+ openWorldHint: false,
3089
+ },
2743
3090
  },
2744
3091
  {
2745
3092
  name: 'wordpress_get_builder_inline_schemas',
@@ -2759,7 +3106,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2759
3106
  },
2760
3107
  required: [],
2761
3108
  },
2762
- readOnlyHint: true,
3109
+ annotations: {
3110
+ title: "Builder Inline Schemas",
3111
+ readOnlyHint: true,
3112
+ destructiveHint: false,
3113
+ idempotentHint: true,
3114
+ openWorldHint: false,
3115
+ },
2763
3116
  },
2764
3117
  {
2765
3118
  name: 'wordpress_inject_builder_content',
@@ -2801,7 +3154,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2801
3154
  },
2802
3155
  required: ['builder', 'page_id', 'content'],
2803
3156
  },
2804
- idempotentHint: true,
3157
+ annotations: {
3158
+ title: "Inject Builder Content",
3159
+ readOnlyHint: false,
3160
+ destructiveHint: true,
3161
+ idempotentHint: false,
3162
+ openWorldHint: false,
3163
+ },
2805
3164
  },
2806
3165
  {
2807
3166
  name: 'wordpress_make_responsive',
@@ -2820,6 +3179,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2820
3179
  },
2821
3180
  required: ['page_id'],
2822
3181
  },
3182
+ annotations: {
3183
+ title: "Make Page Responsive",
3184
+ readOnlyHint: false,
3185
+ destructiveHint: true,
3186
+ idempotentHint: true,
3187
+ openWorldHint: false,
3188
+ },
2823
3189
  },
2824
3190
  {
2825
3191
  name: 'wordpress_update_module',
@@ -2883,7 +3249,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2883
3249
  },
2884
3250
  required: ['builder', 'page_id', 'module_identifier', 'updates'],
2885
3251
  },
2886
- idempotentHint: true,
3252
+ annotations: {
3253
+ title: "Update Module",
3254
+ readOnlyHint: false,
3255
+ destructiveHint: false,
3256
+ idempotentHint: true,
3257
+ openWorldHint: false,
3258
+ },
2887
3259
  },
2888
3260
  {
2889
3261
  name: 'wordpress_list_snapshots',
@@ -2913,7 +3285,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2913
3285
  },
2914
3286
  },
2915
3287
  },
2916
- readOnlyHint: true,
3288
+ annotations: {
3289
+ title: "List Snapshots",
3290
+ readOnlyHint: true,
3291
+ destructiveHint: false,
3292
+ idempotentHint: true,
3293
+ openWorldHint: false,
3294
+ },
2917
3295
  },
2918
3296
  {
2919
3297
  name: 'wordpress_get_snapshot',
@@ -2934,7 +3312,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2934
3312
  },
2935
3313
  required: ['snapshot_uuid'],
2936
3314
  },
2937
- readOnlyHint: true,
3315
+ annotations: {
3316
+ title: "Get Snapshot",
3317
+ readOnlyHint: true,
3318
+ destructiveHint: false,
3319
+ idempotentHint: true,
3320
+ openWorldHint: false,
3321
+ },
2938
3322
  },
2939
3323
  {
2940
3324
  name: 'wordpress_diff_snapshots',
@@ -2953,7 +3337,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2953
3337
  },
2954
3338
  required: ['snapshot_uuid_a', 'snapshot_uuid_b'],
2955
3339
  },
2956
- readOnlyHint: true,
3340
+ annotations: {
3341
+ title: "Diff Snapshots",
3342
+ readOnlyHint: true,
3343
+ destructiveHint: false,
3344
+ idempotentHint: true,
3345
+ openWorldHint: false,
3346
+ },
2957
3347
  },
2958
3348
  {
2959
3349
  name: 'wordpress_restore_snapshot',
@@ -2968,7 +3358,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2968
3358
  },
2969
3359
  required: ['snapshot_uuid'],
2970
3360
  },
2971
- idempotentHint: true,
3361
+ annotations: {
3362
+ title: "Restore Snapshot",
3363
+ readOnlyHint: false,
3364
+ destructiveHint: true,
3365
+ idempotentHint: true,
3366
+ openWorldHint: false,
3367
+ },
2972
3368
  },
2973
3369
  {
2974
3370
  name: 'wordpress_restore_session',
@@ -2980,17 +3376,37 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
2980
3376
  },
2981
3377
  required: ['session_id'],
2982
3378
  },
2983
- idempotentHint: true,
3379
+ annotations: {
3380
+ title: "Restore Session",
3381
+ readOnlyHint: false,
3382
+ destructiveHint: true,
3383
+ idempotentHint: true,
3384
+ openWorldHint: false,
3385
+ },
2984
3386
  },
2985
3387
  {
2986
3388
  name: 'wordpress_begin_session',
2987
3389
  description: 'Begin an explicit snapshot session. Every change made after this (until wordpress_end_session) is grouped under one session_id, so the whole batch can be rolled back together with wordpress_restore_session. Returns the session_id. Without an explicit session, changes are auto-grouped by a time window.',
2988
3390
  inputSchema: { type: 'object', properties: {} },
3391
+ annotations: {
3392
+ title: "Begin Snapshot Session",
3393
+ readOnlyHint: false,
3394
+ destructiveHint: false,
3395
+ idempotentHint: false,
3396
+ openWorldHint: false,
3397
+ },
2989
3398
  },
2990
3399
  {
2991
3400
  name: 'wordpress_end_session',
2992
3401
  description: 'End the explicit snapshot session started by wordpress_begin_session. Later changes fall back to automatic time-window grouping.',
2993
3402
  inputSchema: { type: 'object', properties: {} },
3403
+ annotations: {
3404
+ title: "End Snapshot Session",
3405
+ readOnlyHint: false,
3406
+ destructiveHint: false,
3407
+ idempotentHint: true,
3408
+ openWorldHint: false,
3409
+ },
2994
3410
  },
2995
3411
  {
2996
3412
  name: 'wordpress_list_site_templates',
@@ -3006,7 +3422,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3006
3422
  per_page: { type: 'number' },
3007
3423
  },
3008
3424
  },
3009
- readOnlyHint: true,
3425
+ annotations: {
3426
+ title: "List Site Templates",
3427
+ readOnlyHint: true,
3428
+ destructiveHint: false,
3429
+ idempotentHint: true,
3430
+ openWorldHint: false,
3431
+ },
3010
3432
  },
3011
3433
  {
3012
3434
  name: 'wordpress_list_activity',
@@ -3024,7 +3446,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3024
3446
  per_page: { type: 'number' },
3025
3447
  },
3026
3448
  },
3027
- readOnlyHint: true,
3449
+ annotations: {
3450
+ title: "List Activity",
3451
+ readOnlyHint: true,
3452
+ destructiveHint: false,
3453
+ idempotentHint: true,
3454
+ openWorldHint: false,
3455
+ },
3028
3456
  },
3029
3457
  {
3030
3458
  name: 'wordpress_get_activity',
@@ -3034,7 +3462,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3034
3462
  properties: { id: { type: 'number' } },
3035
3463
  required: ['id'],
3036
3464
  },
3037
- readOnlyHint: true,
3465
+ annotations: {
3466
+ title: "Get Activity Record",
3467
+ readOnlyHint: true,
3468
+ destructiveHint: false,
3469
+ idempotentHint: true,
3470
+ openWorldHint: false,
3471
+ },
3038
3472
  },
3039
3473
  {
3040
3474
  name: 'wordpress_get_site_template',
@@ -3047,7 +3481,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3047
3481
  },
3048
3482
  required: ['id'],
3049
3483
  },
3050
- readOnlyHint: true,
3484
+ annotations: {
3485
+ title: "Get Site Template",
3486
+ readOnlyHint: true,
3487
+ destructiveHint: false,
3488
+ idempotentHint: true,
3489
+ openWorldHint: false,
3490
+ },
3051
3491
  },
3052
3492
  {
3053
3493
  name: 'wordpress_create_site_template',
@@ -3067,6 +3507,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3067
3507
  },
3068
3508
  required: ['slug'],
3069
3509
  },
3510
+ annotations: {
3511
+ title: "Create Site Template",
3512
+ readOnlyHint: false,
3513
+ destructiveHint: false,
3514
+ idempotentHint: false,
3515
+ openWorldHint: false,
3516
+ },
3070
3517
  },
3071
3518
  {
3072
3519
  name: 'wordpress_update_site_template',
@@ -3084,6 +3531,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3084
3531
  },
3085
3532
  required: ['id', 'expected_fingerprint', 'operations'],
3086
3533
  },
3534
+ annotations: {
3535
+ title: "Update Site Template",
3536
+ readOnlyHint: false,
3537
+ destructiveHint: true,
3538
+ idempotentHint: false,
3539
+ openWorldHint: false,
3540
+ },
3087
3541
  },
3088
3542
  {
3089
3543
  name: 'wordpress_reset_site_template',
@@ -3099,7 +3553,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3099
3553
  },
3100
3554
  required: ['id', 'expected_fingerprint'],
3101
3555
  },
3102
- destructiveHint: true,
3556
+ annotations: {
3557
+ title: "Reset Site Template",
3558
+ readOnlyHint: false,
3559
+ destructiveHint: true,
3560
+ idempotentHint: true,
3561
+ openWorldHint: false,
3562
+ },
3103
3563
  },
3104
3564
  {
3105
3565
  name: 'wordpress_list_site_patterns',
@@ -3114,7 +3574,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3114
3574
  per_page: { type: 'number' },
3115
3575
  },
3116
3576
  },
3117
- readOnlyHint: true,
3577
+ annotations: {
3578
+ title: "List Site Patterns",
3579
+ readOnlyHint: true,
3580
+ destructiveHint: false,
3581
+ idempotentHint: true,
3582
+ openWorldHint: false,
3583
+ },
3118
3584
  },
3119
3585
  {
3120
3586
  name: 'wordpress_get_site_pattern',
@@ -3124,7 +3590,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3124
3590
  properties: { id: { type: 'string', description: 'User pattern post ID, registered pattern name, or slug.' } },
3125
3591
  required: ['id'],
3126
3592
  },
3127
- readOnlyHint: true,
3593
+ annotations: {
3594
+ title: "Get Site Pattern",
3595
+ readOnlyHint: true,
3596
+ destructiveHint: false,
3597
+ idempotentHint: true,
3598
+ openWorldHint: false,
3599
+ },
3128
3600
  },
3129
3601
  {
3130
3602
  name: 'wordpress_create_site_pattern',
@@ -3147,6 +3619,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3147
3619
  },
3148
3620
  required: ['title'],
3149
3621
  },
3622
+ annotations: {
3623
+ title: "Create Site Pattern",
3624
+ readOnlyHint: false,
3625
+ destructiveHint: false,
3626
+ idempotentHint: false,
3627
+ openWorldHint: false,
3628
+ },
3150
3629
  },
3151
3630
  {
3152
3631
  name: 'wordpress_update_site_pattern',
@@ -3167,6 +3646,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3167
3646
  },
3168
3647
  required: ['id', 'expected_fingerprint', 'operations'],
3169
3648
  },
3649
+ annotations: {
3650
+ title: "Update Site Pattern",
3651
+ readOnlyHint: false,
3652
+ destructiveHint: true,
3653
+ idempotentHint: false,
3654
+ openWorldHint: false,
3655
+ },
3170
3656
  },
3171
3657
  {
3172
3658
  name: 'wordpress_delete_site_pattern',
@@ -3186,7 +3672,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3186
3672
  },
3187
3673
  required: ['id', 'expected_fingerprint'],
3188
3674
  },
3189
- destructiveHint: true,
3675
+ annotations: {
3676
+ title: "Delete Site Pattern",
3677
+ readOnlyHint: false,
3678
+ destructiveHint: true,
3679
+ idempotentHint: true,
3680
+ openWorldHint: false,
3681
+ },
3190
3682
  },
3191
3683
  {
3192
3684
  name: 'wordpress_list_site_navigations',
@@ -3199,7 +3691,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3199
3691
  per_page: { type: 'number' },
3200
3692
  },
3201
3693
  },
3202
- readOnlyHint: true,
3694
+ annotations: {
3695
+ title: "List Site Navigations",
3696
+ readOnlyHint: true,
3697
+ destructiveHint: false,
3698
+ idempotentHint: true,
3699
+ openWorldHint: false,
3700
+ },
3203
3701
  },
3204
3702
  {
3205
3703
  name: 'wordpress_get_site_navigation',
@@ -3209,7 +3707,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3209
3707
  properties: { id: { type: 'string', description: 'Navigation post ID or slug.' } },
3210
3708
  required: ['id'],
3211
3709
  },
3212
- readOnlyHint: true,
3710
+ annotations: {
3711
+ title: "Get Site Navigation",
3712
+ readOnlyHint: true,
3713
+ destructiveHint: false,
3714
+ idempotentHint: true,
3715
+ openWorldHint: false,
3716
+ },
3213
3717
  },
3214
3718
  {
3215
3719
  name: 'wordpress_create_site_navigation',
@@ -3231,6 +3735,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3231
3735
  },
3232
3736
  required: ['title'],
3233
3737
  },
3738
+ annotations: {
3739
+ title: "Create Site Navigation",
3740
+ readOnlyHint: false,
3741
+ destructiveHint: false,
3742
+ idempotentHint: false,
3743
+ openWorldHint: false,
3744
+ },
3234
3745
  },
3235
3746
  {
3236
3747
  name: 'wordpress_update_site_navigation',
@@ -3251,6 +3762,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3251
3762
  },
3252
3763
  required: ['id', 'expected_fingerprint', 'operations'],
3253
3764
  },
3765
+ annotations: {
3766
+ title: "Update Site Navigation",
3767
+ readOnlyHint: false,
3768
+ destructiveHint: true,
3769
+ idempotentHint: false,
3770
+ openWorldHint: false,
3771
+ },
3254
3772
  },
3255
3773
  {
3256
3774
  name: 'wordpress_delete_site_navigation',
@@ -3270,7 +3788,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3270
3788
  },
3271
3789
  required: ['id', 'expected_fingerprint'],
3272
3790
  },
3273
- destructiveHint: true,
3791
+ annotations: {
3792
+ title: "Delete Site Navigation",
3793
+ readOnlyHint: false,
3794
+ destructiveHint: true,
3795
+ idempotentHint: true,
3796
+ openWorldHint: false,
3797
+ },
3274
3798
  },
3275
3799
  {
3276
3800
  name: 'wordpress_list_design_tokens',
@@ -3280,7 +3804,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3280
3804
  properties: { type: { type: 'string', enum: ['color', 'typography', 'spacing', 'breakpoints'] } },
3281
3805
  required: ['type'],
3282
3806
  },
3283
- readOnlyHint: true,
3807
+ annotations: {
3808
+ title: "List Design Tokens",
3809
+ readOnlyHint: true,
3810
+ destructiveHint: false,
3811
+ idempotentHint: true,
3812
+ openWorldHint: false,
3813
+ },
3284
3814
  },
3285
3815
  {
3286
3816
  name: 'wordpress_create_design_token',
@@ -3307,6 +3837,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3307
3837
  },
3308
3838
  required: ['type', 'name', 'value'],
3309
3839
  },
3840
+ annotations: {
3841
+ title: "Create Design Token",
3842
+ readOnlyHint: false,
3843
+ destructiveHint: false,
3844
+ idempotentHint: false,
3845
+ openWorldHint: false,
3846
+ },
3310
3847
  },
3311
3848
  {
3312
3849
  name: 'wordpress_update_design_token',
@@ -3333,7 +3870,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3333
3870
  },
3334
3871
  required: ['type', 'id', 'expected_fingerprint'],
3335
3872
  },
3336
- idempotentHint: true,
3873
+ annotations: {
3874
+ title: "Update Design Token",
3875
+ readOnlyHint: false,
3876
+ destructiveHint: false,
3877
+ idempotentHint: true,
3878
+ openWorldHint: false,
3879
+ },
3337
3880
  },
3338
3881
  {
3339
3882
  name: 'wordpress_delete_design_token',
@@ -3350,7 +3893,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3350
3893
  },
3351
3894
  required: ['type', 'id', 'expected_fingerprint'],
3352
3895
  },
3353
- destructiveHint: true,
3896
+ annotations: {
3897
+ title: "Delete Design Token",
3898
+ readOnlyHint: false,
3899
+ destructiveHint: true,
3900
+ idempotentHint: true,
3901
+ openWorldHint: false,
3902
+ },
3354
3903
  },
3355
3904
  {
3356
3905
  name: 'wordpress_get_design_direction',
@@ -3361,7 +3910,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3361
3910
  id: { type: 'number', description: 'Optional direction id. Omit to read the ACTIVE direction.' },
3362
3911
  },
3363
3912
  },
3364
- readOnlyHint: true,
3913
+ annotations: {
3914
+ title: "Get Design Direction",
3915
+ readOnlyHint: true,
3916
+ destructiveHint: false,
3917
+ idempotentHint: true,
3918
+ openWorldHint: false,
3919
+ },
3365
3920
  },
3366
3921
  {
3367
3922
  name: 'wordpress_list_design_directions',
@@ -3370,7 +3925,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3370
3925
  type: 'object',
3371
3926
  properties: {},
3372
3927
  },
3373
- readOnlyHint: true,
3928
+ annotations: {
3929
+ title: "List Design Directions",
3930
+ readOnlyHint: true,
3931
+ destructiveHint: false,
3932
+ idempotentHint: true,
3933
+ openWorldHint: false,
3934
+ },
3374
3935
  },
3375
3936
  {
3376
3937
  name: 'wordpress_save_design_direction',
@@ -3386,6 +3947,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3386
3947
  },
3387
3948
  required: ['document'],
3388
3949
  },
3950
+ annotations: {
3951
+ title: "Save Design Direction",
3952
+ readOnlyHint: false,
3953
+ destructiveHint: true,
3954
+ idempotentHint: false,
3955
+ openWorldHint: false,
3956
+ },
3389
3957
  },
3390
3958
  {
3391
3959
  name: 'wordpress_activate_design_direction',
@@ -3403,7 +3971,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3403
3971
  },
3404
3972
  required: ['id'],
3405
3973
  },
3406
- idempotentHint: true,
3974
+ annotations: {
3975
+ title: "Activate Design Direction",
3976
+ readOnlyHint: false,
3977
+ destructiveHint: false,
3978
+ idempotentHint: true,
3979
+ openWorldHint: false,
3980
+ },
3407
3981
  },
3408
3982
  {
3409
3983
  name: 'wordpress_deactivate_design_direction',
@@ -3424,7 +3998,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3424
3998
  },
3425
3999
  required: [],
3426
4000
  },
3427
- idempotentHint: false,
4001
+ annotations: {
4002
+ title: "Deactivate Design Direction",
4003
+ readOnlyHint: false,
4004
+ destructiveHint: false,
4005
+ idempotentHint: true,
4006
+ openWorldHint: false,
4007
+ },
3428
4008
  },
3429
4009
  {
3430
4010
  name: 'wordpress_delete_design_direction',
@@ -3442,7 +4022,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3442
4022
  },
3443
4023
  required: ['id'],
3444
4024
  },
3445
- destructiveHint: true,
4025
+ annotations: {
4026
+ title: "Delete Design Direction",
4027
+ readOnlyHint: false,
4028
+ destructiveHint: true,
4029
+ idempotentHint: true,
4030
+ openWorldHint: false,
4031
+ },
3446
4032
  },
3447
4033
  {
3448
4034
  name: 'wordpress_import_design_tokens',
@@ -3466,6 +4052,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3466
4052
  },
3467
4053
  required: ['tokens'],
3468
4054
  },
4055
+ annotations: {
4056
+ title: "Import Design Tokens",
4057
+ readOnlyHint: false,
4058
+ destructiveHint: false,
4059
+ idempotentHint: false,
4060
+ openWorldHint: false,
4061
+ },
3469
4062
  },
3470
4063
  {
3471
4064
  name: 'wordpress_apply_design_direction',
@@ -3483,7 +4076,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3483
4076
  edit_target: { type: 'string', enum: ['approval', 'live'] },
3484
4077
  },
3485
4078
  },
3486
- idempotentHint: true,
4079
+ annotations: {
4080
+ title: "Apply Design Direction",
4081
+ readOnlyHint: false,
4082
+ destructiveHint: false,
4083
+ idempotentHint: true,
4084
+ openWorldHint: false,
4085
+ },
3487
4086
  },
3488
4087
  {
3489
4088
  name: 'wordpress_export_design_direction',
@@ -3494,7 +4093,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3494
4093
  id: { type: 'number', description: 'Optional direction id; omit for the active direction.' },
3495
4094
  },
3496
4095
  },
3497
- readOnlyHint: true,
4096
+ annotations: {
4097
+ title: "Export Design Direction",
4098
+ readOnlyHint: true,
4099
+ destructiveHint: false,
4100
+ idempotentHint: true,
4101
+ openWorldHint: false,
4102
+ },
3498
4103
  },
3499
4104
  {
3500
4105
  name: 'wordpress_check_design',
@@ -3529,8 +4134,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3529
4134
  },
3530
4135
  },
3531
4136
  },
3532
- readOnlyHint: true,
3533
- idempotentHint: true,
4137
+ annotations: {
4138
+ title: "Check Design",
4139
+ readOnlyHint: true,
4140
+ destructiveHint: false,
4141
+ idempotentHint: true,
4142
+ openWorldHint: true,
4143
+ },
3534
4144
  },
3535
4145
  {
3536
4146
  name: 'wordpress_mint_design_preview',
@@ -3544,7 +4154,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3544
4154
  },
3545
4155
  },
3546
4156
  },
3547
- readOnlyHint: true,
4157
+ annotations: {
4158
+ title: "Mint Design Preview",
4159
+ readOnlyHint: true,
4160
+ destructiveHint: false,
4161
+ idempotentHint: true,
4162
+ openWorldHint: false,
4163
+ },
3548
4164
  },
3549
4165
  {
3550
4166
  name: 'wordpress_get_design_apply_reports',
@@ -3558,8 +4174,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3558
4174
  },
3559
4175
  },
3560
4176
  },
3561
- readOnlyHint: true,
3562
- idempotentHint: true,
4177
+ annotations: {
4178
+ title: "Design Apply Reports",
4179
+ readOnlyHint: true,
4180
+ destructiveHint: false,
4181
+ idempotentHint: true,
4182
+ openWorldHint: false,
4183
+ },
3563
4184
  },
3564
4185
  {
3565
4186
  name: 'wordpress_apply_builder_patch',
@@ -3619,7 +4240,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3619
4240
  },
3620
4241
  required: ['builder', 'post_id', 'operations'],
3621
4242
  },
3622
- idempotentHint: true,
4243
+ annotations: {
4244
+ title: "Apply Builder Patch",
4245
+ readOnlyHint: false,
4246
+ destructiveHint: false,
4247
+ idempotentHint: true,
4248
+ openWorldHint: false,
4249
+ },
3623
4250
  },
3624
4251
  {
3625
4252
  name: 'wordpress_validate_security',
@@ -3634,6 +4261,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3634
4261
  },
3635
4262
  required: ['content'],
3636
4263
  },
4264
+ annotations: {
4265
+ title: "Validate Content Security",
4266
+ readOnlyHint: true,
4267
+ destructiveHint: false,
4268
+ idempotentHint: true,
4269
+ openWorldHint: false,
4270
+ },
3637
4271
  },
3638
4272
  {
3639
4273
  name: 'wordpress_read_theme_file',
@@ -3648,7 +4282,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3648
4282
  },
3649
4283
  required: ['relative_path'],
3650
4284
  },
3651
- readOnlyHint: true,
4285
+ annotations: {
4286
+ title: "Read Theme File",
4287
+ readOnlyHint: true,
4288
+ destructiveHint: false,
4289
+ idempotentHint: true,
4290
+ openWorldHint: false,
4291
+ },
3652
4292
  },
3653
4293
  {
3654
4294
  name: 'wordpress_write_theme_file',
@@ -3667,6 +4307,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3667
4307
  },
3668
4308
  required: ['relative_path', 'content'],
3669
4309
  },
4310
+ annotations: {
4311
+ title: "Write Theme File",
4312
+ readOnlyHint: false,
4313
+ destructiveHint: true,
4314
+ idempotentHint: true,
4315
+ openWorldHint: false,
4316
+ },
3670
4317
  },
3671
4318
  {
3672
4319
  name: 'wordpress_append_theme_file',
@@ -3685,6 +4332,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3685
4332
  },
3686
4333
  required: ['relative_path', 'content'],
3687
4334
  },
4335
+ annotations: {
4336
+ title: "Append Theme File",
4337
+ readOnlyHint: false,
4338
+ destructiveHint: false,
4339
+ idempotentHint: false,
4340
+ openWorldHint: false,
4341
+ },
3688
4342
  },
3689
4343
  {
3690
4344
  name: 'wordpress_switch_site',
@@ -3699,6 +4353,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3699
4353
  },
3700
4354
  required: ['site_id'],
3701
4355
  },
4356
+ annotations: {
4357
+ title: "Switch Site",
4358
+ readOnlyHint: false,
4359
+ destructiveHint: false,
4360
+ idempotentHint: true,
4361
+ openWorldHint: false,
4362
+ },
3702
4363
  },
3703
4364
  {
3704
4365
  name: 'wordpress_diagnose_connection',
@@ -3718,7 +4379,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3718
4379
  },
3719
4380
  },
3720
4381
  },
3721
- readOnlyHint: true,
4382
+ annotations: {
4383
+ title: "Diagnose Connection",
4384
+ readOnlyHint: true,
4385
+ destructiveHint: false,
4386
+ idempotentHint: true,
4387
+ openWorldHint: false,
4388
+ },
3722
4389
  },
3723
4390
  {
3724
4391
  // v6.17: docs search. Hits respira.press/docs-search which is a
@@ -3737,7 +4404,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3737
4404
  limit: { type: 'number', description: 'Max results to return. 1-10. Default 5.', minimum: 1, maximum: 10 },
3738
4405
  },
3739
4406
  },
3740
- readOnlyHint: true,
4407
+ annotations: {
4408
+ title: "Search Documentation",
4409
+ readOnlyHint: true,
4410
+ destructiveHint: false,
4411
+ idempotentHint: true,
4412
+ openWorldHint: true,
4413
+ },
3741
4414
  },
3742
4415
  {
3743
4416
  // v6.17: agent-side bug reporting. The AI client (Claude, Cursor,
@@ -3777,7 +4450,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3777
4450
  },
3778
4451
  },
3779
4452
  },
3780
- readOnlyHint: false,
4453
+ annotations: {
4454
+ title: "Report Issue",
4455
+ readOnlyHint: false,
4456
+ destructiveHint: false,
4457
+ idempotentHint: false,
4458
+ openWorldHint: true,
4459
+ },
3781
4460
  },
3782
4461
  {
3783
4462
  // Canonical name is wordpress_* so generateDualTools creates the
@@ -3799,6 +4478,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3799
4478
  },
3800
4479
  required: ['token'],
3801
4480
  },
4481
+ annotations: {
4482
+ title: "Redeem Install Token",
4483
+ readOnlyHint: false,
4484
+ destructiveHint: true,
4485
+ idempotentHint: true,
4486
+ openWorldHint: true,
4487
+ },
3802
4488
  },
3803
4489
  // Page Speed Analysis tools
3804
4490
  {
@@ -3814,7 +4500,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3814
4500
  },
3815
4501
  required: ['page_id'],
3816
4502
  },
3817
- readOnlyHint: true,
4503
+ annotations: {
4504
+ title: "Performance Analysis",
4505
+ readOnlyHint: true,
4506
+ destructiveHint: false,
4507
+ idempotentHint: true,
4508
+ openWorldHint: false,
4509
+ },
3818
4510
  },
3819
4511
  {
3820
4512
  name: 'wordpress_get_core_web_vitals',
@@ -3829,7 +4521,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3829
4521
  },
3830
4522
  required: ['page_id'],
3831
4523
  },
3832
- readOnlyHint: true,
4524
+ annotations: {
4525
+ title: "Core Web Vitals",
4526
+ readOnlyHint: true,
4527
+ destructiveHint: false,
4528
+ idempotentHint: true,
4529
+ openWorldHint: false,
4530
+ },
3833
4531
  },
3834
4532
  {
3835
4533
  // Phase E Tier 2 (v6.19.0): real PageSpeed Insights v5 audit. The
@@ -3852,7 +4550,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3852
4550
  { required: ['url'] },
3853
4551
  ],
3854
4552
  },
3855
- readOnlyHint: true,
4553
+ annotations: {
4554
+ title: "PageSpeed Audit",
4555
+ readOnlyHint: true,
4556
+ destructiveHint: false,
4557
+ idempotentHint: true,
4558
+ openWorldHint: true,
4559
+ },
3856
4560
  },
3857
4561
  {
3858
4562
  // Phase E Tier 2 (v6.19.0): standard-analyzer-envelope wrapper around
@@ -3875,7 +4579,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3875
4579
  { required: ['url'] },
3876
4580
  ],
3877
4581
  },
3878
- readOnlyHint: true,
4582
+ annotations: {
4583
+ title: "Analyze PageSpeed",
4584
+ readOnlyHint: true,
4585
+ destructiveHint: false,
4586
+ idempotentHint: true,
4587
+ openWorldHint: true,
4588
+ },
3879
4589
  },
3880
4590
  {
3881
4591
  name: 'wordpress_analyze_images',
@@ -3890,7 +4600,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3890
4600
  },
3891
4601
  required: ['page_id'],
3892
4602
  },
3893
- readOnlyHint: true,
4603
+ annotations: {
4604
+ title: "Analyze Images",
4605
+ readOnlyHint: true,
4606
+ destructiveHint: false,
4607
+ idempotentHint: true,
4608
+ openWorldHint: false,
4609
+ },
3894
4610
  },
3895
4611
  // SEO Analysis tools
3896
4612
  {
@@ -3906,7 +4622,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3906
4622
  },
3907
4623
  required: ['page_id'],
3908
4624
  },
3909
- readOnlyHint: true,
4625
+ annotations: {
4626
+ title: "Analyze SEO",
4627
+ readOnlyHint: true,
4628
+ destructiveHint: false,
4629
+ idempotentHint: true,
4630
+ openWorldHint: false,
4631
+ },
3910
4632
  },
3911
4633
  {
3912
4634
  name: 'wordpress_check_seo_issues',
@@ -3921,7 +4643,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3921
4643
  },
3922
4644
  required: ['page_id'],
3923
4645
  },
3924
- readOnlyHint: true,
4646
+ annotations: {
4647
+ title: "Check SEO Issues",
4648
+ readOnlyHint: true,
4649
+ destructiveHint: false,
4650
+ idempotentHint: true,
4651
+ openWorldHint: false,
4652
+ },
3925
4653
  },
3926
4654
  {
3927
4655
  name: 'wordpress_analyze_readability',
@@ -3936,7 +4664,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3936
4664
  },
3937
4665
  required: ['page_id'],
3938
4666
  },
3939
- readOnlyHint: true,
4667
+ annotations: {
4668
+ title: "Analyze Readability",
4669
+ readOnlyHint: true,
4670
+ destructiveHint: false,
4671
+ idempotentHint: true,
4672
+ openWorldHint: false,
4673
+ },
3940
4674
  },
3941
4675
  {
3942
4676
  name: 'wordpress_analyze_rankmath',
@@ -3951,7 +4685,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3951
4685
  },
3952
4686
  required: ['post_id'],
3953
4687
  },
3954
- readOnlyHint: true,
4688
+ annotations: {
4689
+ title: "Analyze Rank Math",
4690
+ readOnlyHint: true,
4691
+ destructiveHint: false,
4692
+ idempotentHint: true,
4693
+ openWorldHint: false,
4694
+ },
3955
4695
  },
3956
4696
  // AEO (AI Engine Optimization) tools
3957
4697
  {
@@ -3967,7 +4707,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3967
4707
  },
3968
4708
  required: ['page_id'],
3969
4709
  },
3970
- readOnlyHint: true,
4710
+ annotations: {
4711
+ title: "Analyze AEO",
4712
+ readOnlyHint: true,
4713
+ destructiveHint: false,
4714
+ idempotentHint: true,
4715
+ openWorldHint: false,
4716
+ },
3971
4717
  },
3972
4718
  {
3973
4719
  name: 'wordpress_check_structured_data',
@@ -3982,7 +4728,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
3982
4728
  },
3983
4729
  required: ['page_id'],
3984
4730
  },
3985
- readOnlyHint: true,
4731
+ annotations: {
4732
+ title: "Check Structured Data",
4733
+ readOnlyHint: true,
4734
+ destructiveHint: false,
4735
+ idempotentHint: true,
4736
+ openWorldHint: false,
4737
+ },
3986
4738
  },
3987
4739
  // Safety & Security center
3988
4740
  {
@@ -4003,7 +4755,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4003
4755
  },
4004
4756
  },
4005
4757
  },
4006
- readOnlyHint: true,
4758
+ annotations: {
4759
+ title: "Security Audit",
4760
+ readOnlyHint: true,
4761
+ destructiveHint: false,
4762
+ idempotentHint: true,
4763
+ openWorldHint: true,
4764
+ },
4007
4765
  },
4008
4766
  {
4009
4767
  name: 'wordpress_update_core_security',
@@ -4030,7 +4788,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4030
4788
  },
4031
4789
  required: ['advisory_id', 'target_version', 'backup_confirmed'],
4032
4790
  },
4033
- idempotentHint: true,
4791
+ annotations: {
4792
+ title: "Update Core Security",
4793
+ readOnlyHint: false,
4794
+ destructiveHint: true,
4795
+ idempotentHint: true,
4796
+ openWorldHint: true,
4797
+ },
4034
4798
  },
4035
4799
  // Accessibility tools
4036
4800
  {
@@ -4044,7 +4808,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4044
4808
  summary_only: { type: 'boolean', description: 'When true (default), strips violations[].nodes and prompts[] from each entry. The full payload remains available via respira_get_accessibility_scan.' },
4045
4809
  },
4046
4810
  },
4047
- readOnlyHint: true,
4811
+ annotations: {
4812
+ title: "List Accessibility Scans",
4813
+ readOnlyHint: true,
4814
+ destructiveHint: false,
4815
+ idempotentHint: true,
4816
+ openWorldHint: false,
4817
+ },
4048
4818
  },
4049
4819
  {
4050
4820
  name: 'wordpress_get_accessibility_scan',
@@ -4057,7 +4827,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4057
4827
  },
4058
4828
  required: ['scan_id'],
4059
4829
  },
4060
- readOnlyHint: true,
4830
+ annotations: {
4831
+ title: "Get Accessibility Scan",
4832
+ readOnlyHint: true,
4833
+ destructiveHint: false,
4834
+ idempotentHint: true,
4835
+ openWorldHint: false,
4836
+ },
4061
4837
  },
4062
4838
  {
4063
4839
  name: 'wordpress_scan_page_accessibility',
@@ -4071,6 +4847,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4071
4847
  },
4072
4848
  required: ['page_id'],
4073
4849
  },
4850
+ annotations: {
4851
+ title: "Run Accessibility Scan",
4852
+ readOnlyHint: true,
4853
+ destructiveHint: false,
4854
+ idempotentHint: true,
4855
+ openWorldHint: false,
4856
+ },
4074
4857
  },
4075
4858
  {
4076
4859
  name: 'wordpress_apply_accessibility_fixes',
@@ -4087,6 +4870,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4087
4870
  },
4088
4871
  required: ['scan_id'],
4089
4872
  },
4873
+ annotations: {
4874
+ title: "Apply Accessibility Fixes",
4875
+ readOnlyHint: false,
4876
+ destructiveHint: true,
4877
+ idempotentHint: true,
4878
+ openWorldHint: false,
4879
+ },
4090
4880
  },
4091
4881
  // Plugin Management tools (EXPERIMENTAL)
4092
4882
  {
@@ -4096,7 +4886,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4096
4886
  type: 'object',
4097
4887
  properties: {},
4098
4888
  },
4099
- readOnlyHint: true,
4889
+ annotations: {
4890
+ title: "List Plugins",
4891
+ readOnlyHint: true,
4892
+ destructiveHint: false,
4893
+ idempotentHint: true,
4894
+ openWorldHint: false,
4895
+ },
4100
4896
  },
4101
4897
  {
4102
4898
  name: 'wordpress_install_plugin',
@@ -4120,6 +4916,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4120
4916
  },
4121
4917
  required: ['slug_or_url'],
4122
4918
  },
4919
+ annotations: {
4920
+ title: "Install Plugin",
4921
+ readOnlyHint: false,
4922
+ destructiveHint: false,
4923
+ idempotentHint: true,
4924
+ openWorldHint: true,
4925
+ },
4123
4926
  },
4124
4927
  {
4125
4928
  name: 'wordpress_activate_plugin',
@@ -4142,6 +4945,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4142
4945
  },
4143
4946
  required: ['slug'],
4144
4947
  },
4948
+ annotations: {
4949
+ title: "Activate Plugin",
4950
+ readOnlyHint: false,
4951
+ destructiveHint: false,
4952
+ idempotentHint: true,
4953
+ openWorldHint: false,
4954
+ },
4145
4955
  },
4146
4956
  {
4147
4957
  name: 'wordpress_deactivate_plugin',
@@ -4160,6 +4970,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4160
4970
  },
4161
4971
  required: ['slug'],
4162
4972
  },
4973
+ annotations: {
4974
+ title: "Deactivate Plugin",
4975
+ readOnlyHint: false,
4976
+ destructiveHint: false,
4977
+ idempotentHint: true,
4978
+ openWorldHint: false,
4979
+ },
4163
4980
  },
4164
4981
  {
4165
4982
  name: 'wordpress_update_plugin',
@@ -4178,7 +4995,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4178
4995
  },
4179
4996
  required: ['slug'],
4180
4997
  },
4181
- idempotentHint: true,
4998
+ annotations: {
4999
+ title: "Update Plugin",
5000
+ readOnlyHint: false,
5001
+ destructiveHint: true,
5002
+ idempotentHint: true,
5003
+ openWorldHint: true,
5004
+ },
4182
5005
  },
4183
5006
  {
4184
5007
  name: 'wordpress_delete_plugin',
@@ -4197,7 +5020,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4197
5020
  },
4198
5021
  required: ['slug'],
4199
5022
  },
4200
- destructiveHint: true,
5023
+ annotations: {
5024
+ title: "Delete Plugin",
5025
+ readOnlyHint: false,
5026
+ destructiveHint: true,
5027
+ idempotentHint: true,
5028
+ openWorldHint: false,
5029
+ },
4201
5030
  },
4202
5031
  // Users Management
4203
5032
  {
@@ -4220,7 +5049,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4220
5049
  },
4221
5050
  },
4222
5051
  },
4223
- readOnlyHint: true,
5052
+ annotations: {
5053
+ title: "List Users",
5054
+ readOnlyHint: true,
5055
+ destructiveHint: false,
5056
+ idempotentHint: true,
5057
+ openWorldHint: false,
5058
+ },
4224
5059
  },
4225
5060
  {
4226
5061
  name: 'wordpress_get_user',
@@ -4235,7 +5070,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4235
5070
  },
4236
5071
  required: ['id'],
4237
5072
  },
4238
- readOnlyHint: true,
5073
+ annotations: {
5074
+ title: "Get User",
5075
+ readOnlyHint: true,
5076
+ destructiveHint: false,
5077
+ idempotentHint: true,
5078
+ openWorldHint: false,
5079
+ },
4239
5080
  },
4240
5081
  {
4241
5082
  name: 'wordpress_create_user',
@@ -4266,6 +5107,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4266
5107
  },
4267
5108
  required: ['username', 'email', 'password'],
4268
5109
  },
5110
+ annotations: {
5111
+ title: "Create User",
5112
+ readOnlyHint: false,
5113
+ destructiveHint: false,
5114
+ idempotentHint: false,
5115
+ openWorldHint: false,
5116
+ },
4269
5117
  },
4270
5118
  {
4271
5119
  name: 'wordpress_update_user',
@@ -4300,7 +5148,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4300
5148
  },
4301
5149
  required: ['id'],
4302
5150
  },
4303
- idempotentHint: true,
5151
+ annotations: {
5152
+ title: "Update User",
5153
+ readOnlyHint: false,
5154
+ destructiveHint: true,
5155
+ idempotentHint: true,
5156
+ openWorldHint: false,
5157
+ },
4304
5158
  },
4305
5159
  {
4306
5160
  name: 'wordpress_delete_user',
@@ -4323,7 +5177,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4323
5177
  },
4324
5178
  required: ['id'],
4325
5179
  },
4326
- destructiveHint: true,
5180
+ annotations: {
5181
+ title: "Delete User",
5182
+ readOnlyHint: false,
5183
+ destructiveHint: true,
5184
+ idempotentHint: true,
5185
+ openWorldHint: false,
5186
+ },
4327
5187
  },
4328
5188
  // Comments
4329
5189
  {
@@ -4350,7 +5210,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4350
5210
  },
4351
5211
  },
4352
5212
  },
4353
- readOnlyHint: true,
5213
+ annotations: {
5214
+ title: "List Comments",
5215
+ readOnlyHint: true,
5216
+ destructiveHint: false,
5217
+ idempotentHint: true,
5218
+ openWorldHint: false,
5219
+ },
4354
5220
  },
4355
5221
  {
4356
5222
  name: 'wordpress_get_comment',
@@ -4365,7 +5231,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4365
5231
  },
4366
5232
  required: ['id'],
4367
5233
  },
4368
- readOnlyHint: true,
5234
+ annotations: {
5235
+ title: "Get Comment",
5236
+ readOnlyHint: true,
5237
+ destructiveHint: false,
5238
+ idempotentHint: true,
5239
+ openWorldHint: false,
5240
+ },
4369
5241
  },
4370
5242
  {
4371
5243
  name: 'wordpress_create_comment',
@@ -4400,6 +5272,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4400
5272
  },
4401
5273
  required: ['post_id', 'author', 'author_email', 'content'],
4402
5274
  },
5275
+ annotations: {
5276
+ title: "Create Comment",
5277
+ readOnlyHint: false,
5278
+ destructiveHint: false,
5279
+ idempotentHint: false,
5280
+ openWorldHint: false,
5281
+ },
4403
5282
  },
4404
5283
  {
4405
5284
  name: 'wordpress_update_comment',
@@ -4422,7 +5301,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4422
5301
  },
4423
5302
  required: ['id'],
4424
5303
  },
4425
- idempotentHint: true,
5304
+ annotations: {
5305
+ title: "Update Comment",
5306
+ readOnlyHint: false,
5307
+ destructiveHint: false,
5308
+ idempotentHint: true,
5309
+ openWorldHint: false,
5310
+ },
4426
5311
  },
4427
5312
  {
4428
5313
  name: 'wordpress_delete_comment',
@@ -4441,7 +5326,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4441
5326
  },
4442
5327
  required: ['id'],
4443
5328
  },
4444
- destructiveHint: true,
5329
+ annotations: {
5330
+ title: "Delete Comment",
5331
+ readOnlyHint: false,
5332
+ destructiveHint: true,
5333
+ idempotentHint: true,
5334
+ openWorldHint: false,
5335
+ },
4445
5336
  },
4446
5337
  // Taxonomies
4447
5338
  {
@@ -4451,7 +5342,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4451
5342
  type: 'object',
4452
5343
  properties: {},
4453
5344
  },
4454
- readOnlyHint: true,
5345
+ annotations: {
5346
+ title: "List Taxonomies",
5347
+ readOnlyHint: true,
5348
+ destructiveHint: false,
5349
+ idempotentHint: true,
5350
+ openWorldHint: false,
5351
+ },
4455
5352
  },
4456
5353
  {
4457
5354
  name: 'wordpress_get_taxonomy',
@@ -4466,7 +5363,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4466
5363
  },
4467
5364
  required: ['taxonomy'],
4468
5365
  },
4469
- readOnlyHint: true,
5366
+ annotations: {
5367
+ title: "Get Taxonomy",
5368
+ readOnlyHint: true,
5369
+ destructiveHint: false,
5370
+ idempotentHint: true,
5371
+ openWorldHint: false,
5372
+ },
4470
5373
  },
4471
5374
  {
4472
5375
  name: 'wordpress_list_terms',
@@ -4493,7 +5396,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4493
5396
  },
4494
5397
  required: ['taxonomy'],
4495
5398
  },
4496
- readOnlyHint: true,
5399
+ annotations: {
5400
+ title: "List Terms",
5401
+ readOnlyHint: true,
5402
+ destructiveHint: false,
5403
+ idempotentHint: true,
5404
+ openWorldHint: false,
5405
+ },
4497
5406
  },
4498
5407
  {
4499
5408
  name: 'wordpress_get_term',
@@ -4512,7 +5421,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4512
5421
  },
4513
5422
  required: ['taxonomy', 'id'],
4514
5423
  },
4515
- readOnlyHint: true,
5424
+ annotations: {
5425
+ title: "Get Term",
5426
+ readOnlyHint: true,
5427
+ destructiveHint: false,
5428
+ idempotentHint: true,
5429
+ openWorldHint: false,
5430
+ },
4516
5431
  },
4517
5432
  {
4518
5433
  name: 'wordpress_create_term',
@@ -4543,6 +5458,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4543
5458
  },
4544
5459
  required: ['taxonomy', 'name'],
4545
5460
  },
5461
+ annotations: {
5462
+ title: "Create Term",
5463
+ readOnlyHint: false,
5464
+ destructiveHint: false,
5465
+ idempotentHint: false,
5466
+ openWorldHint: false,
5467
+ },
4546
5468
  },
4547
5469
  {
4548
5470
  name: 'wordpress_update_term',
@@ -4577,7 +5499,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4577
5499
  },
4578
5500
  required: ['taxonomy', 'id'],
4579
5501
  },
4580
- idempotentHint: true,
5502
+ annotations: {
5503
+ title: "Update Term",
5504
+ readOnlyHint: false,
5505
+ destructiveHint: false,
5506
+ idempotentHint: true,
5507
+ openWorldHint: false,
5508
+ },
4581
5509
  },
4582
5510
  {
4583
5511
  name: 'wordpress_delete_term',
@@ -4600,7 +5528,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4600
5528
  },
4601
5529
  required: ['taxonomy', 'id'],
4602
5530
  },
4603
- destructiveHint: true,
5531
+ annotations: {
5532
+ title: "Delete Term",
5533
+ readOnlyHint: false,
5534
+ destructiveHint: true,
5535
+ idempotentHint: true,
5536
+ openWorldHint: false,
5537
+ },
4604
5538
  },
4605
5539
  // Custom Post Types
4606
5540
  {
@@ -4610,7 +5544,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4610
5544
  type: 'object',
4611
5545
  properties: {},
4612
5546
  },
4613
- readOnlyHint: true,
5547
+ annotations: {
5548
+ title: "List Post Types",
5549
+ readOnlyHint: true,
5550
+ destructiveHint: false,
5551
+ idempotentHint: true,
5552
+ openWorldHint: false,
5553
+ },
4614
5554
  },
4615
5555
  {
4616
5556
  name: 'wordpress_get_post_type',
@@ -4625,7 +5565,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4625
5565
  },
4626
5566
  required: ['type'],
4627
5567
  },
4628
- readOnlyHint: true,
5568
+ annotations: {
5569
+ title: "Get Post Type",
5570
+ readOnlyHint: true,
5571
+ destructiveHint: false,
5572
+ idempotentHint: true,
5573
+ openWorldHint: false,
5574
+ },
4629
5575
  },
4630
5576
  // Custom Structures (v7.1) — agent-creatable CPTs, taxonomies, ACF field groups.
4631
5577
  // Stored in wp_options on the WP side, registered against core via register_post_type
@@ -4652,6 +5598,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4652
5598
  },
4653
5599
  required: ['slug', 'label'],
4654
5600
  },
5601
+ annotations: {
5602
+ title: "Create Post Type",
5603
+ readOnlyHint: false,
5604
+ destructiveHint: false,
5605
+ idempotentHint: false,
5606
+ openWorldHint: false,
5607
+ },
4655
5608
  },
4656
5609
  {
4657
5610
  name: 'wordpress_update_post_type',
@@ -4672,6 +5625,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4672
5625
  },
4673
5626
  required: ['slug'],
4674
5627
  },
5628
+ annotations: {
5629
+ title: "Update Post Type",
5630
+ readOnlyHint: false,
5631
+ destructiveHint: false,
5632
+ idempotentHint: true,
5633
+ openWorldHint: false,
5634
+ },
4675
5635
  },
4676
5636
  {
4677
5637
  name: 'wordpress_delete_post_type',
@@ -4683,13 +5643,25 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4683
5643
  },
4684
5644
  required: ['slug'],
4685
5645
  },
4686
- destructiveHint: true,
5646
+ annotations: {
5647
+ title: "Delete Post Type",
5648
+ readOnlyHint: false,
5649
+ destructiveHint: true,
5650
+ idempotentHint: true,
5651
+ openWorldHint: false,
5652
+ },
4687
5653
  },
4688
5654
  {
4689
5655
  name: 'wordpress_list_custom_post_types',
4690
5656
  description: "List every Custom Post Type Respira created via wordpress_create_post_type. Different from wordpress_list_post_types — that one enumerates EVERY registered post type (core, theme, third-party, Respira-created). This one shows only Respira-owned ones, with their full definition + creation timestamp.",
4691
5657
  inputSchema: { type: 'object', properties: {} },
4692
- readOnlyHint: true,
5658
+ annotations: {
5659
+ title: "List Custom Post Types",
5660
+ readOnlyHint: true,
5661
+ destructiveHint: false,
5662
+ idempotentHint: true,
5663
+ openWorldHint: false,
5664
+ },
4693
5665
  },
4694
5666
  {
4695
5667
  name: 'wordpress_create_taxonomy',
@@ -4708,6 +5680,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4708
5680
  },
4709
5681
  required: ['slug', 'label'],
4710
5682
  },
5683
+ annotations: {
5684
+ title: "Create Taxonomy",
5685
+ readOnlyHint: false,
5686
+ destructiveHint: false,
5687
+ idempotentHint: false,
5688
+ openWorldHint: false,
5689
+ },
4711
5690
  },
4712
5691
  {
4713
5692
  name: 'wordpress_update_taxonomy',
@@ -4726,6 +5705,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4726
5705
  },
4727
5706
  required: ['slug'],
4728
5707
  },
5708
+ annotations: {
5709
+ title: "Update Taxonomy",
5710
+ readOnlyHint: false,
5711
+ destructiveHint: false,
5712
+ idempotentHint: true,
5713
+ openWorldHint: false,
5714
+ },
4729
5715
  },
4730
5716
  {
4731
5717
  name: 'wordpress_delete_taxonomy',
@@ -4737,13 +5723,25 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4737
5723
  },
4738
5724
  required: ['slug'],
4739
5725
  },
4740
- destructiveHint: true,
5726
+ annotations: {
5727
+ title: "Delete Taxonomy",
5728
+ readOnlyHint: false,
5729
+ destructiveHint: true,
5730
+ idempotentHint: true,
5731
+ openWorldHint: false,
5732
+ },
4741
5733
  },
4742
5734
  {
4743
5735
  name: 'wordpress_list_custom_taxonomies',
4744
5736
  description: 'List every taxonomy Respira created. Different from wordpress_list_taxonomies — that one enumerates every registered taxonomy site-wide.',
4745
5737
  inputSchema: { type: 'object', properties: {} },
4746
- readOnlyHint: true,
5738
+ annotations: {
5739
+ title: "List Custom Taxonomies",
5740
+ readOnlyHint: true,
5741
+ destructiveHint: false,
5742
+ idempotentHint: true,
5743
+ openWorldHint: false,
5744
+ },
4747
5745
  },
4748
5746
  {
4749
5747
  name: 'wordpress_create_acf_field_group',
@@ -4758,6 +5756,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4758
5756
  },
4759
5757
  required: ['title'],
4760
5758
  },
5759
+ annotations: {
5760
+ title: "Create ACF Field Group",
5761
+ readOnlyHint: false,
5762
+ destructiveHint: false,
5763
+ idempotentHint: false,
5764
+ openWorldHint: false,
5765
+ },
4761
5766
  },
4762
5767
  {
4763
5768
  name: 'wordpress_update_acf_field_group',
@@ -4772,6 +5777,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4772
5777
  },
4773
5778
  required: ['key'],
4774
5779
  },
5780
+ annotations: {
5781
+ title: "Update ACF Field Group",
5782
+ readOnlyHint: false,
5783
+ destructiveHint: true,
5784
+ idempotentHint: true,
5785
+ openWorldHint: false,
5786
+ },
4775
5787
  },
4776
5788
  {
4777
5789
  name: 'wordpress_delete_acf_field_group',
@@ -4783,13 +5795,25 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4783
5795
  },
4784
5796
  required: ['key'],
4785
5797
  },
4786
- destructiveHint: true,
5798
+ annotations: {
5799
+ title: "Delete ACF Field Group",
5800
+ readOnlyHint: false,
5801
+ destructiveHint: true,
5802
+ idempotentHint: true,
5803
+ openWorldHint: false,
5804
+ },
4787
5805
  },
4788
5806
  {
4789
5807
  name: 'wordpress_list_acf_field_groups',
4790
5808
  description: 'List every ACF field group Respira created. Requires ACF active. Refuses with respira_acf_not_active otherwise.',
4791
5809
  inputSchema: { type: 'object', properties: {} },
4792
- readOnlyHint: true,
5810
+ annotations: {
5811
+ title: "List ACF Field Groups",
5812
+ readOnlyHint: true,
5813
+ destructiveHint: false,
5814
+ idempotentHint: true,
5815
+ openWorldHint: false,
5816
+ },
4793
5817
  },
4794
5818
  // Playbooks (v7.1) — JSON workflow compositions that register themselves as Abilities.
4795
5819
  // Once created, a playbook becomes callable via respira_invoke_ability under the
@@ -4823,12 +5847,25 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4823
5847
  },
4824
5848
  required: ['id', 'label', 'input_schema', 'steps'],
4825
5849
  },
5850
+ annotations: {
5851
+ title: "Create Playbook",
5852
+ readOnlyHint: false,
5853
+ destructiveHint: false,
5854
+ idempotentHint: false,
5855
+ openWorldHint: false,
5856
+ },
4826
5857
  },
4827
5858
  {
4828
5859
  name: 'wordpress_list_playbooks',
4829
5860
  description: 'List every Playbook stored on this site, with id / ability_id / label / description / step count / invocation_count / last_invoked_at. Useful for "what playbooks are available" discovery before authoring a new one.',
4830
5861
  inputSchema: { type: 'object', properties: {} },
4831
- readOnlyHint: true,
5862
+ annotations: {
5863
+ title: "List Playbooks",
5864
+ readOnlyHint: true,
5865
+ destructiveHint: false,
5866
+ idempotentHint: true,
5867
+ openWorldHint: false,
5868
+ },
4832
5869
  },
4833
5870
  {
4834
5871
  name: 'wordpress_get_playbook',
@@ -4840,7 +5877,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4840
5877
  },
4841
5878
  required: ['id'],
4842
5879
  },
4843
- readOnlyHint: true,
5880
+ annotations: {
5881
+ title: "Get Playbook",
5882
+ readOnlyHint: true,
5883
+ destructiveHint: false,
5884
+ idempotentHint: true,
5885
+ openWorldHint: false,
5886
+ },
4844
5887
  },
4845
5888
  {
4846
5889
  name: 'wordpress_update_playbook',
@@ -4857,6 +5900,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4857
5900
  },
4858
5901
  required: ['id'],
4859
5902
  },
5903
+ annotations: {
5904
+ title: "Update Playbook",
5905
+ readOnlyHint: false,
5906
+ destructiveHint: true,
5907
+ idempotentHint: true,
5908
+ openWorldHint: false,
5909
+ },
4860
5910
  },
4861
5911
  {
4862
5912
  name: 'wordpress_delete_playbook',
@@ -4868,7 +5918,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4868
5918
  },
4869
5919
  required: ['id'],
4870
5920
  },
4871
- destructiveHint: true,
5921
+ annotations: {
5922
+ title: "Delete Playbook",
5923
+ readOnlyHint: false,
5924
+ destructiveHint: true,
5925
+ idempotentHint: true,
5926
+ openWorldHint: false,
5927
+ },
4872
5928
  },
4873
5929
  // Site Memory (v8.3, Resonance) — persistent per-site memory that lives IN the
4874
5930
  // WordPress site, so it travels across clients (Claude, ChatGPT, Cursor) and
@@ -4891,6 +5947,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4891
5947
  },
4892
5948
  required: ['key', 'content'],
4893
5949
  },
5950
+ annotations: {
5951
+ title: "Save Site Memory",
5952
+ readOnlyHint: false,
5953
+ destructiveHint: false,
5954
+ idempotentHint: true,
5955
+ openWorldHint: false,
5956
+ },
4894
5957
  },
4895
5958
  {
4896
5959
  name: 'wordpress_forget',
@@ -4902,12 +5965,25 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4902
5965
  },
4903
5966
  required: ['key'],
4904
5967
  },
5968
+ annotations: {
5969
+ title: "Forget Site Memory",
5970
+ readOnlyHint: false,
5971
+ destructiveHint: true,
5972
+ idempotentHint: true,
5973
+ openWorldHint: false,
5974
+ },
4905
5975
  },
4906
5976
  {
4907
5977
  name: 'wordpress_list_memory',
4908
5978
  description: 'List everything stored in this site\'s persistent Site Memory: facts, preferences, lessons, and enforced rules, with source and last-updated metadata. The same content arrives automatically in get_site_context; use this when you need keys for updating or forgetting entries.',
4909
5979
  inputSchema: { type: 'object', properties: {} },
4910
- readOnlyHint: true,
5980
+ annotations: {
5981
+ title: "List Site Memory",
5982
+ readOnlyHint: true,
5983
+ destructiveHint: false,
5984
+ idempotentHint: true,
5985
+ openWorldHint: false,
5986
+ },
4911
5987
  },
4912
5988
  {
4913
5989
  name: 'wordpress_list_custom_posts',
@@ -4942,7 +6018,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4942
6018
  },
4943
6019
  required: ['type'],
4944
6020
  },
4945
- readOnlyHint: true,
6021
+ annotations: {
6022
+ title: "List Custom Posts",
6023
+ readOnlyHint: true,
6024
+ destructiveHint: false,
6025
+ idempotentHint: true,
6026
+ openWorldHint: false,
6027
+ },
4946
6028
  },
4947
6029
  {
4948
6030
  name: 'wordpress_get_custom_post',
@@ -4965,7 +6047,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
4965
6047
  },
4966
6048
  required: ['type', 'id'],
4967
6049
  },
4968
- readOnlyHint: true,
6050
+ annotations: {
6051
+ title: "Custom Post",
6052
+ readOnlyHint: true,
6053
+ destructiveHint: false,
6054
+ idempotentHint: true,
6055
+ openWorldHint: false,
6056
+ },
4969
6057
  },
4970
6058
  {
4971
6059
  name: 'wordpress_create_custom_post',
@@ -5051,6 +6139,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5051
6139
  },
5052
6140
  required: ['type', 'title'],
5053
6141
  },
6142
+ annotations: {
6143
+ title: "Create Custom Post",
6144
+ readOnlyHint: false,
6145
+ destructiveHint: false,
6146
+ idempotentHint: false,
6147
+ openWorldHint: false,
6148
+ },
5054
6149
  },
5055
6150
  {
5056
6151
  name: 'wordpress_update_custom_post',
@@ -5149,7 +6244,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5149
6244
  },
5150
6245
  required: ['type', 'id'],
5151
6246
  },
5152
- idempotentHint: true,
6247
+ annotations: {
6248
+ title: "Update Custom Post",
6249
+ readOnlyHint: false,
6250
+ destructiveHint: true,
6251
+ idempotentHint: true,
6252
+ openWorldHint: false,
6253
+ },
5153
6254
  },
5154
6255
  {
5155
6256
  name: 'wordpress_delete_custom_post',
@@ -5180,7 +6281,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5180
6281
  },
5181
6282
  required: ['type', 'id'],
5182
6283
  },
5183
- destructiveHint: true,
6284
+ annotations: {
6285
+ title: "Delete Custom Post",
6286
+ readOnlyHint: false,
6287
+ destructiveHint: true,
6288
+ idempotentHint: true,
6289
+ openWorldHint: false,
6290
+ },
5184
6291
  },
5185
6292
  // Options
5186
6293
  {
@@ -5195,7 +6302,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5195
6302
  },
5196
6303
  },
5197
6304
  },
5198
- readOnlyHint: true,
6305
+ annotations: {
6306
+ title: "List Options",
6307
+ readOnlyHint: true,
6308
+ destructiveHint: false,
6309
+ idempotentHint: true,
6310
+ openWorldHint: false,
6311
+ },
5199
6312
  },
5200
6313
  {
5201
6314
  name: 'wordpress_get_option',
@@ -5210,7 +6323,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5210
6323
  },
5211
6324
  required: ['option'],
5212
6325
  },
5213
- readOnlyHint: true,
6326
+ annotations: {
6327
+ title: "Get Option",
6328
+ readOnlyHint: true,
6329
+ destructiveHint: false,
6330
+ idempotentHint: true,
6331
+ openWorldHint: false,
6332
+ },
5214
6333
  },
5215
6334
  {
5216
6335
  name: 'wordpress_update_option',
@@ -5228,7 +6347,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5228
6347
  },
5229
6348
  required: ['option', 'value'],
5230
6349
  },
5231
- idempotentHint: true,
6350
+ annotations: {
6351
+ title: "Update Option",
6352
+ readOnlyHint: false,
6353
+ destructiveHint: true,
6354
+ idempotentHint: true,
6355
+ openWorldHint: false,
6356
+ },
5232
6357
  },
5233
6358
  {
5234
6359
  name: 'wordpress_delete_option',
@@ -5247,7 +6372,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5247
6372
  },
5248
6373
  required: ['option'],
5249
6374
  },
5250
- destructiveHint: true,
6375
+ annotations: {
6376
+ title: "Delete Option",
6377
+ readOnlyHint: false,
6378
+ destructiveHint: true,
6379
+ idempotentHint: true,
6380
+ openWorldHint: false,
6381
+ },
5251
6382
  },
5252
6383
  {
5253
6384
  name: 'wordpress_purge_cache',
@@ -5267,7 +6398,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5267
6398
  },
5268
6399
  required: [],
5269
6400
  },
5270
- idempotentHint: true,
6401
+ annotations: {
6402
+ title: "Purge Cache",
6403
+ readOnlyHint: false,
6404
+ destructiveHint: false,
6405
+ idempotentHint: true,
6406
+ openWorldHint: true,
6407
+ },
5271
6408
  },
5272
6409
  // Media enhancements
5273
6410
  {
@@ -5283,7 +6420,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5283
6420
  },
5284
6421
  required: ['id'],
5285
6422
  },
5286
- readOnlyHint: true,
6423
+ annotations: {
6424
+ title: "Get Media",
6425
+ readOnlyHint: true,
6426
+ destructiveHint: false,
6427
+ idempotentHint: true,
6428
+ openWorldHint: false,
6429
+ },
5287
6430
  },
5288
6431
  {
5289
6432
  name: 'wordpress_update_media',
@@ -5310,7 +6453,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5310
6453
  },
5311
6454
  required: ['id'],
5312
6455
  },
5313
- idempotentHint: true,
6456
+ annotations: {
6457
+ title: "Update Media",
6458
+ readOnlyHint: false,
6459
+ destructiveHint: false,
6460
+ idempotentHint: true,
6461
+ openWorldHint: false,
6462
+ },
5314
6463
  },
5315
6464
  {
5316
6465
  name: 'wordpress_update_media_batch',
@@ -5335,6 +6484,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5335
6484
  },
5336
6485
  required: ['items'],
5337
6486
  },
6487
+ annotations: {
6488
+ title: "Batch Update Media",
6489
+ readOnlyHint: false,
6490
+ destructiveHint: true,
6491
+ idempotentHint: true,
6492
+ openWorldHint: false,
6493
+ },
5338
6494
  },
5339
6495
  {
5340
6496
  name: 'wordpress_delete_media',
@@ -5357,7 +6513,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5357
6513
  },
5358
6514
  required: ['id'],
5359
6515
  },
5360
- destructiveHint: true,
6516
+ annotations: {
6517
+ title: "Delete Media",
6518
+ readOnlyHint: false,
6519
+ destructiveHint: true,
6520
+ idempotentHint: true,
6521
+ openWorldHint: false,
6522
+ },
5361
6523
  },
5362
6524
  // Menu Management
5363
6525
  {
@@ -5367,7 +6529,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5367
6529
  type: 'object',
5368
6530
  properties: {},
5369
6531
  },
5370
- readOnlyHint: true,
6532
+ annotations: {
6533
+ title: "List Menus",
6534
+ readOnlyHint: true,
6535
+ destructiveHint: false,
6536
+ idempotentHint: true,
6537
+ openWorldHint: false,
6538
+ },
5371
6539
  },
5372
6540
  {
5373
6541
  name: 'wordpress_get_menu',
@@ -5382,7 +6550,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5382
6550
  },
5383
6551
  required: ['id'],
5384
6552
  },
5385
- readOnlyHint: true,
6553
+ annotations: {
6554
+ title: "Get Menu",
6555
+ readOnlyHint: true,
6556
+ destructiveHint: false,
6557
+ idempotentHint: true,
6558
+ openWorldHint: false,
6559
+ },
5386
6560
  },
5387
6561
  {
5388
6562
  name: 'wordpress_create_menu',
@@ -5401,6 +6575,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5401
6575
  },
5402
6576
  required: ['name'],
5403
6577
  },
6578
+ annotations: {
6579
+ title: "Create Menu",
6580
+ readOnlyHint: false,
6581
+ destructiveHint: false,
6582
+ idempotentHint: false,
6583
+ openWorldHint: false,
6584
+ },
5404
6585
  },
5405
6586
  {
5406
6587
  name: 'wordpress_update_menu',
@@ -5423,7 +6604,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5423
6604
  },
5424
6605
  required: ['id'],
5425
6606
  },
5426
- idempotentHint: true,
6607
+ annotations: {
6608
+ title: "Update Menu",
6609
+ readOnlyHint: false,
6610
+ destructiveHint: false,
6611
+ idempotentHint: true,
6612
+ openWorldHint: false,
6613
+ },
5427
6614
  },
5428
6615
  {
5429
6616
  name: 'wordpress_delete_menu',
@@ -5442,7 +6629,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5442
6629
  },
5443
6630
  required: ['id'],
5444
6631
  },
5445
- destructiveHint: true,
6632
+ annotations: {
6633
+ title: "Delete Menu",
6634
+ readOnlyHint: false,
6635
+ destructiveHint: true,
6636
+ idempotentHint: true,
6637
+ openWorldHint: false,
6638
+ },
5446
6639
  },
5447
6640
  // Menu Locations
5448
6641
  {
@@ -5452,7 +6645,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5452
6645
  type: 'object',
5453
6646
  properties: {},
5454
6647
  },
5455
- readOnlyHint: true,
6648
+ annotations: {
6649
+ title: "List Menu Locations",
6650
+ readOnlyHint: true,
6651
+ destructiveHint: false,
6652
+ idempotentHint: true,
6653
+ openWorldHint: false,
6654
+ },
5456
6655
  },
5457
6656
  {
5458
6657
  name: 'wordpress_assign_menu_location',
@@ -5471,7 +6670,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5471
6670
  },
5472
6671
  required: ['location', 'menu_id'],
5473
6672
  },
5474
- idempotentHint: true,
6673
+ annotations: {
6674
+ title: "Assign Menu Location",
6675
+ readOnlyHint: false,
6676
+ destructiveHint: false,
6677
+ idempotentHint: true,
6678
+ openWorldHint: false,
6679
+ },
5475
6680
  },
5476
6681
  // Menu Items
5477
6682
  {
@@ -5487,7 +6692,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5487
6692
  },
5488
6693
  required: ['menu_id'],
5489
6694
  },
5490
- readOnlyHint: true,
6695
+ annotations: {
6696
+ title: "List Menu Items",
6697
+ readOnlyHint: true,
6698
+ destructiveHint: false,
6699
+ idempotentHint: true,
6700
+ openWorldHint: false,
6701
+ },
5491
6702
  },
5492
6703
  {
5493
6704
  name: 'wordpress_create_menu_item',
@@ -5542,6 +6753,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5542
6753
  },
5543
6754
  required: ['menu_id', 'title'],
5544
6755
  },
6756
+ annotations: {
6757
+ title: "Create Menu Item",
6758
+ readOnlyHint: false,
6759
+ destructiveHint: false,
6760
+ idempotentHint: false,
6761
+ openWorldHint: false,
6762
+ },
5545
6763
  },
5546
6764
  {
5547
6765
  name: 'wordpress_get_menu_item',
@@ -5556,7 +6774,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5556
6774
  },
5557
6775
  required: ['item_id'],
5558
6776
  },
5559
- readOnlyHint: true,
6777
+ annotations: {
6778
+ title: "Get Menu Item",
6779
+ readOnlyHint: true,
6780
+ destructiveHint: false,
6781
+ idempotentHint: true,
6782
+ openWorldHint: false,
6783
+ },
5560
6784
  },
5561
6785
  {
5562
6786
  name: 'wordpress_update_menu_item',
@@ -5603,7 +6827,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5603
6827
  },
5604
6828
  required: ['item_id'],
5605
6829
  },
5606
- idempotentHint: true,
6830
+ annotations: {
6831
+ title: "Update Menu Item",
6832
+ readOnlyHint: false,
6833
+ destructiveHint: false,
6834
+ idempotentHint: true,
6835
+ openWorldHint: false,
6836
+ },
5607
6837
  },
5608
6838
  {
5609
6839
  name: 'wordpress_delete_menu_item',
@@ -5618,7 +6848,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5618
6848
  },
5619
6849
  required: ['item_id'],
5620
6850
  },
5621
- destructiveHint: true,
6851
+ annotations: {
6852
+ title: "Delete Menu Item",
6853
+ readOnlyHint: false,
6854
+ destructiveHint: true,
6855
+ idempotentHint: true,
6856
+ openWorldHint: false,
6857
+ },
5622
6858
  },
5623
6859
  ];
5624
6860
  // --- v5.2.0 Elemental: new tools ---
@@ -5791,7 +7027,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5791
7027
  page: { type: 'number', description: 'Page number' },
5792
7028
  },
5793
7029
  },
5794
- readOnlyHint: true,
7030
+ annotations: {
7031
+ title: "List Products",
7032
+ readOnlyHint: true,
7033
+ destructiveHint: false,
7034
+ idempotentHint: true,
7035
+ openWorldHint: false,
7036
+ },
5795
7037
  },
5796
7038
  {
5797
7039
  name: 'woocommerce_get_product',
@@ -5803,7 +7045,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5803
7045
  },
5804
7046
  required: ['id'],
5805
7047
  },
5806
- readOnlyHint: true,
7048
+ annotations: {
7049
+ title: "Get Product",
7050
+ readOnlyHint: true,
7051
+ destructiveHint: false,
7052
+ idempotentHint: true,
7053
+ openWorldHint: false,
7054
+ },
5807
7055
  },
5808
7056
  {
5809
7057
  name: 'woocommerce_create_product',
@@ -5828,6 +7076,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5828
7076
  },
5829
7077
  required: ['name'],
5830
7078
  },
7079
+ annotations: {
7080
+ title: "Create Product",
7081
+ readOnlyHint: false,
7082
+ destructiveHint: false,
7083
+ idempotentHint: false,
7084
+ openWorldHint: false,
7085
+ },
5831
7086
  },
5832
7087
  {
5833
7088
  name: 'woocommerce_update_product',
@@ -5873,7 +7128,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5873
7128
  },
5874
7129
  required: ['id'],
5875
7130
  },
5876
- idempotentHint: true,
7131
+ annotations: {
7132
+ title: "Update Product",
7133
+ readOnlyHint: false,
7134
+ destructiveHint: false,
7135
+ idempotentHint: true,
7136
+ openWorldHint: false,
7137
+ },
5877
7138
  },
5878
7139
  {
5879
7140
  name: 'woocommerce_duplicate_product',
@@ -5885,6 +7146,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5885
7146
  },
5886
7147
  required: ['id'],
5887
7148
  },
7149
+ annotations: {
7150
+ title: "Duplicate Product",
7151
+ readOnlyHint: false,
7152
+ destructiveHint: false,
7153
+ idempotentHint: false,
7154
+ openWorldHint: false,
7155
+ },
5888
7156
  },
5889
7157
  {
5890
7158
  name: 'woocommerce_list_categories',
@@ -5899,7 +7167,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5899
7167
  page: { type: 'number', description: 'Page number' },
5900
7168
  },
5901
7169
  },
5902
- readOnlyHint: true,
7170
+ annotations: {
7171
+ title: "List Categories",
7172
+ readOnlyHint: true,
7173
+ destructiveHint: false,
7174
+ idempotentHint: true,
7175
+ openWorldHint: false,
7176
+ },
5903
7177
  },
5904
7178
  {
5905
7179
  name: 'woocommerce_get_category',
@@ -5911,7 +7185,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5911
7185
  },
5912
7186
  required: ['id'],
5913
7187
  },
5914
- readOnlyHint: true,
7188
+ annotations: {
7189
+ title: "Get Category",
7190
+ readOnlyHint: true,
7191
+ destructiveHint: false,
7192
+ idempotentHint: true,
7193
+ openWorldHint: false,
7194
+ },
5915
7195
  },
5916
7196
  {
5917
7197
  name: 'woocommerce_create_category',
@@ -5926,6 +7206,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5926
7206
  },
5927
7207
  required: ['name'],
5928
7208
  },
7209
+ annotations: {
7210
+ title: "Create Category",
7211
+ readOnlyHint: false,
7212
+ destructiveHint: false,
7213
+ idempotentHint: false,
7214
+ openWorldHint: false,
7215
+ },
5929
7216
  },
5930
7217
  {
5931
7218
  name: 'woocommerce_update_category',
@@ -5941,7 +7228,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5941
7228
  },
5942
7229
  required: ['id'],
5943
7230
  },
5944
- idempotentHint: true,
7231
+ annotations: {
7232
+ title: "Update Category",
7233
+ readOnlyHint: false,
7234
+ destructiveHint: false,
7235
+ idempotentHint: true,
7236
+ openWorldHint: false,
7237
+ },
5945
7238
  },
5946
7239
  {
5947
7240
  name: 'woocommerce_delete_category',
@@ -5953,7 +7246,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5953
7246
  },
5954
7247
  required: ['id'],
5955
7248
  },
5956
- destructiveHint: true,
7249
+ annotations: {
7250
+ title: "Delete Category",
7251
+ readOnlyHint: false,
7252
+ destructiveHint: true,
7253
+ idempotentHint: true,
7254
+ openWorldHint: false,
7255
+ },
5957
7256
  },
5958
7257
  {
5959
7258
  name: 'woocommerce_list_tags',
@@ -5967,7 +7266,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5967
7266
  page: { type: 'number', description: 'Page number' },
5968
7267
  },
5969
7268
  },
5970
- readOnlyHint: true,
7269
+ annotations: {
7270
+ title: "List Tags",
7271
+ readOnlyHint: true,
7272
+ destructiveHint: false,
7273
+ idempotentHint: true,
7274
+ openWorldHint: false,
7275
+ },
5971
7276
  },
5972
7277
  {
5973
7278
  name: 'woocommerce_get_tag',
@@ -5979,7 +7284,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5979
7284
  },
5980
7285
  required: ['id'],
5981
7286
  },
5982
- readOnlyHint: true,
7287
+ annotations: {
7288
+ title: "Get Tag",
7289
+ readOnlyHint: true,
7290
+ destructiveHint: false,
7291
+ idempotentHint: true,
7292
+ openWorldHint: false,
7293
+ },
5983
7294
  },
5984
7295
  {
5985
7296
  name: 'woocommerce_create_tag',
@@ -5993,6 +7304,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
5993
7304
  },
5994
7305
  required: ['name'],
5995
7306
  },
7307
+ annotations: {
7308
+ title: "Create Tag",
7309
+ readOnlyHint: false,
7310
+ destructiveHint: false,
7311
+ idempotentHint: false,
7312
+ openWorldHint: false,
7313
+ },
5996
7314
  },
5997
7315
  {
5998
7316
  name: 'woocommerce_update_tag',
@@ -6007,7 +7325,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6007
7325
  },
6008
7326
  required: ['id'],
6009
7327
  },
6010
- idempotentHint: true,
7328
+ annotations: {
7329
+ title: "Update Tag",
7330
+ readOnlyHint: false,
7331
+ destructiveHint: false,
7332
+ idempotentHint: true,
7333
+ openWorldHint: false,
7334
+ },
6011
7335
  },
6012
7336
  {
6013
7337
  name: 'woocommerce_delete_tag',
@@ -6019,7 +7343,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6019
7343
  },
6020
7344
  required: ['id'],
6021
7345
  },
6022
- destructiveHint: true,
7346
+ annotations: {
7347
+ title: "Delete Tag",
7348
+ readOnlyHint: false,
7349
+ destructiveHint: true,
7350
+ idempotentHint: true,
7351
+ openWorldHint: false,
7352
+ },
6023
7353
  },
6024
7354
  {
6025
7355
  name: 'woocommerce_list_orders',
@@ -6032,7 +7362,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6032
7362
  page: { type: 'number', description: 'Page number' },
6033
7363
  },
6034
7364
  },
6035
- readOnlyHint: true,
7365
+ annotations: {
7366
+ title: "List Orders",
7367
+ readOnlyHint: true,
7368
+ destructiveHint: false,
7369
+ idempotentHint: true,
7370
+ openWorldHint: false,
7371
+ },
6036
7372
  },
6037
7373
  {
6038
7374
  name: 'woocommerce_get_order',
@@ -6044,7 +7380,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6044
7380
  },
6045
7381
  required: ['id'],
6046
7382
  },
6047
- readOnlyHint: true,
7383
+ annotations: {
7384
+ title: "Get Order",
7385
+ readOnlyHint: true,
7386
+ destructiveHint: false,
7387
+ idempotentHint: true,
7388
+ openWorldHint: false,
7389
+ },
6048
7390
  },
6049
7391
  {
6050
7392
  name: 'woocommerce_update_order_status',
@@ -6057,7 +7399,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6057
7399
  },
6058
7400
  required: ['id', 'status'],
6059
7401
  },
6060
- idempotentHint: true,
7402
+ annotations: {
7403
+ title: "Update Order Status",
7404
+ readOnlyHint: false,
7405
+ destructiveHint: true,
7406
+ idempotentHint: true,
7407
+ openWorldHint: false,
7408
+ },
6061
7409
  },
6062
7410
  {
6063
7411
  name: 'woocommerce_get_stock_status',
@@ -6066,7 +7414,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6066
7414
  type: 'object',
6067
7415
  properties: {},
6068
7416
  },
6069
- readOnlyHint: true,
7417
+ annotations: {
7418
+ title: "Stock Status",
7419
+ readOnlyHint: true,
7420
+ destructiveHint: false,
7421
+ idempotentHint: true,
7422
+ openWorldHint: false,
7423
+ },
6070
7424
  },
6071
7425
  {
6072
7426
  name: 'woocommerce_update_stock',
@@ -6080,7 +7434,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6080
7434
  },
6081
7435
  required: ['id'],
6082
7436
  },
6083
- idempotentHint: true,
7437
+ annotations: {
7438
+ title: "Update Stock",
7439
+ readOnlyHint: false,
7440
+ destructiveHint: false,
7441
+ idempotentHint: true,
7442
+ openWorldHint: false,
7443
+ },
6084
7444
  },
6085
7445
  {
6086
7446
  name: 'woocommerce_sales_report',
@@ -6093,7 +7453,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6093
7453
  date_max: { type: 'string', description: 'End date for custom period' },
6094
7454
  },
6095
7455
  },
6096
- readOnlyHint: true,
7456
+ annotations: {
7457
+ title: "Sales Report",
7458
+ readOnlyHint: true,
7459
+ destructiveHint: false,
7460
+ idempotentHint: true,
7461
+ openWorldHint: false,
7462
+ },
6097
7463
  },
6098
7464
  {
6099
7465
  name: 'woocommerce_revenue_summary',
@@ -6107,7 +7473,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6107
7473
  max_orders: { type: 'number', description: 'Bounded coverage cap, 1-10000. Defaults to 2000.' },
6108
7474
  },
6109
7475
  },
6110
- readOnlyHint: true,
7476
+ annotations: {
7477
+ title: "Revenue Summary",
7478
+ readOnlyHint: true,
7479
+ destructiveHint: false,
7480
+ idempotentHint: true,
7481
+ openWorldHint: false,
7482
+ },
6111
7483
  },
6112
7484
  {
6113
7485
  name: 'woocommerce_sales_timeseries',
@@ -6122,7 +7494,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6122
7494
  max_orders: { type: 'number' },
6123
7495
  },
6124
7496
  },
6125
- readOnlyHint: true,
7497
+ annotations: {
7498
+ title: "Sales Timeseries",
7499
+ readOnlyHint: true,
7500
+ destructiveHint: false,
7501
+ idempotentHint: true,
7502
+ openWorldHint: false,
7503
+ },
6126
7504
  },
6127
7505
  {
6128
7506
  name: 'woocommerce_top_products',
@@ -6137,7 +7515,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6137
7515
  limit: { type: 'number' },
6138
7516
  },
6139
7517
  },
6140
- readOnlyHint: true,
7518
+ annotations: {
7519
+ title: "Top Products",
7520
+ readOnlyHint: true,
7521
+ destructiveHint: false,
7522
+ idempotentHint: true,
7523
+ openWorldHint: false,
7524
+ },
6141
7525
  },
6142
7526
  {
6143
7527
  name: 'woocommerce_orders_summary',
@@ -6151,7 +7535,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6151
7535
  max_orders: { type: 'number' },
6152
7536
  },
6153
7537
  },
6154
- readOnlyHint: true,
7538
+ annotations: {
7539
+ title: "Orders Summary",
7540
+ readOnlyHint: true,
7541
+ destructiveHint: false,
7542
+ idempotentHint: true,
7543
+ openWorldHint: false,
7544
+ },
6155
7545
  },
6156
7546
  {
6157
7547
  name: 'woocommerce_customers_summary',
@@ -6165,25 +7555,49 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6165
7555
  max_orders: { type: 'number' },
6166
7556
  },
6167
7557
  },
6168
- readOnlyHint: true,
7558
+ annotations: {
7559
+ title: "Customers Summary",
7560
+ readOnlyHint: true,
7561
+ destructiveHint: false,
7562
+ idempotentHint: true,
7563
+ openWorldHint: false,
7564
+ },
6169
7565
  },
6170
7566
  {
6171
7567
  name: 'woocommerce_get_store_configuration',
6172
7568
  description: 'Read sanitized WooCommerce currency, timezone, tax, units, checkout, page, and HPOS configuration. Credentials and secrets are never returned.',
6173
7569
  inputSchema: { type: 'object', properties: {} },
6174
- readOnlyHint: true,
7570
+ annotations: {
7571
+ title: "Store Configuration",
7572
+ readOnlyHint: true,
7573
+ destructiveHint: false,
7574
+ idempotentHint: true,
7575
+ openWorldHint: false,
7576
+ },
6175
7577
  },
6176
7578
  {
6177
7579
  name: 'woocommerce_list_payment_gateways',
6178
7580
  description: 'List payment gateway IDs, public titles, enabled state, and supported features without settings, credentials, or tokens.',
6179
7581
  inputSchema: { type: 'object', properties: {} },
6180
- readOnlyHint: true,
7582
+ annotations: {
7583
+ title: "List Payment Gateways",
7584
+ readOnlyHint: true,
7585
+ destructiveHint: false,
7586
+ idempotentHint: true,
7587
+ openWorldHint: false,
7588
+ },
6181
7589
  },
6182
7590
  {
6183
7591
  name: 'woocommerce_list_shipping_zones',
6184
7592
  description: 'List WooCommerce shipping zones, locations, and public method state.',
6185
7593
  inputSchema: { type: 'object', properties: {} },
6186
- readOnlyHint: true,
7594
+ annotations: {
7595
+ title: "List Shipping Zones",
7596
+ readOnlyHint: true,
7597
+ destructiveHint: false,
7598
+ idempotentHint: true,
7599
+ openWorldHint: false,
7600
+ },
6187
7601
  },
6188
7602
  {
6189
7603
  name: 'woocommerce_list_tax_rates',
@@ -6192,7 +7606,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6192
7606
  type: 'object',
6193
7607
  properties: { tax_class: { type: 'string', description: 'Empty for standard rates.' } },
6194
7608
  },
6195
- readOnlyHint: true,
7609
+ annotations: {
7610
+ title: "List Tax Rates",
7611
+ readOnlyHint: true,
7612
+ destructiveHint: false,
7613
+ idempotentHint: true,
7614
+ openWorldHint: false,
7615
+ },
6196
7616
  },
6197
7617
  {
6198
7618
  name: 'woocommerce_list_webhooks',
@@ -6201,7 +7621,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6201
7621
  type: 'object',
6202
7622
  properties: { page: { type: 'number' }, per_page: { type: 'number' } },
6203
7623
  },
6204
- readOnlyHint: true,
7624
+ annotations: {
7625
+ title: "List Webhooks",
7626
+ readOnlyHint: true,
7627
+ destructiveHint: false,
7628
+ idempotentHint: true,
7629
+ openWorldHint: false,
7630
+ },
6205
7631
  },
6206
7632
  {
6207
7633
  name: 'woocommerce_get_webhook',
@@ -6211,7 +7637,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6211
7637
  properties: { id: { type: 'number' } },
6212
7638
  required: ['id'],
6213
7639
  },
6214
- readOnlyHint: true,
7640
+ annotations: {
7641
+ title: "Get Webhook",
7642
+ readOnlyHint: true,
7643
+ destructiveHint: false,
7644
+ idempotentHint: true,
7645
+ openWorldHint: false,
7646
+ },
6215
7647
  },
6216
7648
  {
6217
7649
  name: 'woocommerce_create_webhook',
@@ -6227,6 +7659,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6227
7659
  },
6228
7660
  required: ['topic', 'delivery_url'],
6229
7661
  },
7662
+ annotations: {
7663
+ title: "Create Webhook",
7664
+ readOnlyHint: false,
7665
+ destructiveHint: false,
7666
+ idempotentHint: false,
7667
+ openWorldHint: true,
7668
+ },
6230
7669
  },
6231
7670
  {
6232
7671
  name: 'woocommerce_update_webhook',
@@ -6244,7 +7683,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6244
7683
  },
6245
7684
  required: ['id'],
6246
7685
  },
6247
- idempotentHint: true,
7686
+ annotations: {
7687
+ title: "Update Webhook",
7688
+ readOnlyHint: false,
7689
+ destructiveHint: true,
7690
+ idempotentHint: true,
7691
+ openWorldHint: true,
7692
+ },
6248
7693
  },
6249
7694
  {
6250
7695
  name: 'woocommerce_delete_webhook',
@@ -6254,7 +7699,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6254
7699
  properties: { id: { type: 'number' }, approval_token: { type: 'string' } },
6255
7700
  required: ['id'],
6256
7701
  },
6257
- destructiveHint: true,
7702
+ annotations: {
7703
+ title: "Delete Webhook",
7704
+ readOnlyHint: false,
7705
+ destructiveHint: true,
7706
+ idempotentHint: true,
7707
+ openWorldHint: false,
7708
+ },
6258
7709
  },
6259
7710
  {
6260
7711
  name: 'woocommerce_test_webhook',
@@ -6264,6 +7715,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6264
7715
  properties: { id: { type: 'number' }, approval_token: { type: 'string' } },
6265
7716
  required: ['id'],
6266
7717
  },
7718
+ annotations: {
7719
+ title: "Test Webhook",
7720
+ readOnlyHint: false,
7721
+ destructiveHint: false,
7722
+ idempotentHint: false,
7723
+ openWorldHint: true,
7724
+ },
6267
7725
  },
6268
7726
  // --- Brands (addon v3.0) ---
6269
7727
  {
@@ -6278,7 +7736,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6278
7736
  hide_empty: { type: 'boolean', description: 'Only brands with products' },
6279
7737
  },
6280
7738
  },
6281
- readOnlyHint: true,
7739
+ annotations: {
7740
+ title: "List Brands",
7741
+ readOnlyHint: true,
7742
+ destructiveHint: false,
7743
+ idempotentHint: true,
7744
+ openWorldHint: false,
7745
+ },
6282
7746
  },
6283
7747
  {
6284
7748
  name: 'woocommerce_get_brand',
@@ -6290,7 +7754,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6290
7754
  },
6291
7755
  required: ['id'],
6292
7756
  },
6293
- readOnlyHint: true,
7757
+ annotations: {
7758
+ title: "Get Brand",
7759
+ readOnlyHint: true,
7760
+ destructiveHint: false,
7761
+ idempotentHint: true,
7762
+ openWorldHint: false,
7763
+ },
6294
7764
  },
6295
7765
  {
6296
7766
  name: 'woocommerce_create_brand',
@@ -6304,6 +7774,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6304
7774
  },
6305
7775
  required: ['name'],
6306
7776
  },
7777
+ annotations: {
7778
+ title: "Create Brand",
7779
+ readOnlyHint: false,
7780
+ destructiveHint: false,
7781
+ idempotentHint: false,
7782
+ openWorldHint: false,
7783
+ },
6307
7784
  },
6308
7785
  {
6309
7786
  name: 'woocommerce_update_brand',
@@ -6318,7 +7795,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6318
7795
  },
6319
7796
  required: ['id'],
6320
7797
  },
6321
- idempotentHint: true,
7798
+ annotations: {
7799
+ title: "Update Brand",
7800
+ readOnlyHint: false,
7801
+ destructiveHint: false,
7802
+ idempotentHint: true,
7803
+ openWorldHint: false,
7804
+ },
6322
7805
  },
6323
7806
  {
6324
7807
  name: 'woocommerce_delete_brand',
@@ -6330,7 +7813,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6330
7813
  },
6331
7814
  required: ['id'],
6332
7815
  },
6333
- destructiveHint: true,
7816
+ annotations: {
7817
+ title: "Delete Brand",
7818
+ readOnlyHint: false,
7819
+ destructiveHint: true,
7820
+ idempotentHint: true,
7821
+ openWorldHint: false,
7822
+ },
6334
7823
  },
6335
7824
  // --- Catalog operations (addon v3.0 exposes existing REST tools) ---
6336
7825
  {
@@ -6353,7 +7842,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6353
7842
  page: { type: 'number' },
6354
7843
  },
6355
7844
  },
6356
- readOnlyHint: true,
7845
+ annotations: {
7846
+ title: "Advanced Product List",
7847
+ readOnlyHint: true,
7848
+ destructiveHint: false,
7849
+ idempotentHint: true,
7850
+ openWorldHint: false,
7851
+ },
6357
7852
  },
6358
7853
  {
6359
7854
  name: 'woocommerce_find_product',
@@ -6366,7 +7861,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6366
7861
  },
6367
7862
  required: ['query'],
6368
7863
  },
6369
- readOnlyHint: true,
7864
+ annotations: {
7865
+ title: "Find Product",
7866
+ readOnlyHint: true,
7867
+ destructiveHint: false,
7868
+ idempotentHint: true,
7869
+ openWorldHint: false,
7870
+ },
6370
7871
  },
6371
7872
  {
6372
7873
  name: 'woocommerce_catalog_health',
@@ -6375,7 +7876,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6375
7876
  type: 'object',
6376
7877
  properties: {},
6377
7878
  },
6378
- readOnlyHint: true,
7879
+ annotations: {
7880
+ title: "Catalog Health",
7881
+ readOnlyHint: true,
7882
+ destructiveHint: false,
7883
+ idempotentHint: true,
7884
+ openWorldHint: false,
7885
+ },
6379
7886
  },
6380
7887
  {
6381
7888
  name: 'woocommerce_bulk_update_products',
@@ -6392,6 +7899,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6392
7899
  },
6393
7900
  required: ['updates'],
6394
7901
  },
7902
+ annotations: {
7903
+ title: "Bulk Update Products",
7904
+ readOnlyHint: false,
7905
+ destructiveHint: true,
7906
+ idempotentHint: true,
7907
+ openWorldHint: false,
7908
+ },
6395
7909
  },
6396
7910
  // --- Pricing (addon v3.0 exposes existing REST tools) ---
6397
7911
  {
@@ -6409,6 +7923,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6409
7923
  },
6410
7924
  required: ['change_value'],
6411
7925
  },
7926
+ annotations: {
7927
+ title: "Bulk Update Prices",
7928
+ readOnlyHint: false,
7929
+ destructiveHint: true,
7930
+ idempotentHint: false,
7931
+ openWorldHint: false,
7932
+ },
6412
7933
  },
6413
7934
  {
6414
7935
  name: 'woocommerce_schedule_sale',
@@ -6424,6 +7945,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6424
7945
  },
6425
7946
  required: ['product_ids'],
6426
7947
  },
7948
+ annotations: {
7949
+ title: "Schedule Sale",
7950
+ readOnlyHint: false,
7951
+ destructiveHint: true,
7952
+ idempotentHint: true,
7953
+ openWorldHint: false,
7954
+ },
6427
7955
  },
6428
7956
  {
6429
7957
  name: 'woocommerce_revert_pricing',
@@ -6436,7 +7964,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6436
7964
  },
6437
7965
  required: ['product_id', 'snapshot_id'],
6438
7966
  },
6439
- idempotentHint: true,
7967
+ annotations: {
7968
+ title: "Revert Pricing",
7969
+ readOnlyHint: false,
7970
+ destructiveHint: true,
7971
+ idempotentHint: true,
7972
+ openWorldHint: false,
7973
+ },
6440
7974
  },
6441
7975
  // --- Inventory (addon v3.0 exposes existing REST tools) ---
6442
7976
  {
@@ -6454,6 +7988,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6454
7988
  },
6455
7989
  required: ['updates'],
6456
7990
  },
7991
+ annotations: {
7992
+ title: "Bulk Update Stock",
7993
+ readOnlyHint: false,
7994
+ destructiveHint: true,
7995
+ idempotentHint: false,
7996
+ openWorldHint: false,
7997
+ },
6457
7998
  },
6458
7999
  {
6459
8000
  name: 'woocommerce_find_low_stock',
@@ -6464,7 +8005,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6464
8005
  threshold: { type: 'number' },
6465
8006
  },
6466
8007
  },
6467
- readOnlyHint: true,
8008
+ annotations: {
8009
+ title: "Find Low Stock",
8010
+ readOnlyHint: true,
8011
+ destructiveHint: false,
8012
+ idempotentHint: true,
8013
+ openWorldHint: false,
8014
+ },
6468
8015
  },
6469
8016
  // --- Storefront intelligence (addon v3.0 exposes existing REST tools) ---
6470
8017
  {
@@ -6476,7 +8023,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6476
8023
  page_id: { type: 'number', description: 'Defaults to the WooCommerce shop page' },
6477
8024
  },
6478
8025
  },
6479
- readOnlyHint: true,
8026
+ annotations: {
8027
+ title: "Analyze Shop Page",
8028
+ readOnlyHint: true,
8029
+ destructiveHint: false,
8030
+ idempotentHint: true,
8031
+ openWorldHint: false,
8032
+ },
6480
8033
  },
6481
8034
  {
6482
8035
  name: 'woocommerce_analyze_product_page',
@@ -6488,7 +8041,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6488
8041
  },
6489
8042
  required: ['product_id'],
6490
8043
  },
6491
- readOnlyHint: true,
8044
+ annotations: {
8045
+ title: "Analyze Product Page",
8046
+ readOnlyHint: true,
8047
+ destructiveHint: false,
8048
+ idempotentHint: true,
8049
+ openWorldHint: false,
8050
+ },
6492
8051
  },
6493
8052
  {
6494
8053
  name: 'woocommerce_update_product_card_layout',
@@ -6511,6 +8070,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6511
8070
  },
6512
8071
  required: ['changes'],
6513
8072
  },
8073
+ annotations: {
8074
+ title: "Update Product Card Layout",
8075
+ readOnlyHint: false,
8076
+ destructiveHint: true,
8077
+ idempotentHint: true,
8078
+ openWorldHint: false,
8079
+ },
6514
8080
  },
6515
8081
  {
6516
8082
  name: 'woocommerce_add_low_stock_badge',
@@ -6534,6 +8100,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6534
8100
  },
6535
8101
  },
6536
8102
  },
8103
+ annotations: {
8104
+ title: "Add Low Stock Badge",
8105
+ readOnlyHint: false,
8106
+ destructiveHint: false,
8107
+ idempotentHint: false,
8108
+ openWorldHint: false,
8109
+ },
6537
8110
  },
6538
8111
  {
6539
8112
  name: 'woocommerce_add_sale_badge',
@@ -6554,6 +8127,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6554
8127
  },
6555
8128
  },
6556
8129
  },
8130
+ annotations: {
8131
+ title: "Add Sale Badge",
8132
+ readOnlyHint: false,
8133
+ destructiveHint: false,
8134
+ idempotentHint: false,
8135
+ openWorldHint: false,
8136
+ },
6557
8137
  },
6558
8138
  {
6559
8139
  name: 'woocommerce_analyze_storefront_card',
@@ -6562,7 +8142,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6562
8142
  type: 'object',
6563
8143
  properties: {},
6564
8144
  },
6565
- readOnlyHint: true,
8145
+ annotations: {
8146
+ title: "Analyze Storefront Card",
8147
+ readOnlyHint: true,
8148
+ destructiveHint: false,
8149
+ idempotentHint: true,
8150
+ openWorldHint: false,
8151
+ },
6566
8152
  },
6567
8153
  {
6568
8154
  name: 'woocommerce_update_storefront_card_field',
@@ -6585,6 +8171,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6585
8171
  },
6586
8172
  required: ['field', 'attributes'],
6587
8173
  },
8174
+ annotations: {
8175
+ title: "Update Storefront Card Field",
8176
+ readOnlyHint: false,
8177
+ destructiveHint: false,
8178
+ idempotentHint: true,
8179
+ openWorldHint: false,
8180
+ },
6588
8181
  },
6589
8182
  {
6590
8183
  name: 'woocommerce_update_checkout_layout',
@@ -6598,6 +8191,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6598
8191
  },
6599
8192
  required: ['changes'],
6600
8193
  },
8194
+ annotations: {
8195
+ title: "Update Checkout Layout",
8196
+ readOnlyHint: false,
8197
+ destructiveHint: true,
8198
+ idempotentHint: true,
8199
+ openWorldHint: false,
8200
+ },
6601
8201
  },
6602
8202
  // --- Variations and attributes (addon v3.0) ---
6603
8203
  {
@@ -6616,7 +8216,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6616
8216
  },
6617
8217
  required: ['id', 'attributes'],
6618
8218
  },
6619
- idempotentHint: true,
8219
+ annotations: {
8220
+ title: "Set Product Attributes",
8221
+ readOnlyHint: false,
8222
+ destructiveHint: true,
8223
+ idempotentHint: true,
8224
+ openWorldHint: false,
8225
+ },
6620
8226
  },
6621
8227
  {
6622
8228
  name: 'woocommerce_generate_variations',
@@ -6631,6 +8237,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6631
8237
  },
6632
8238
  required: ['id'],
6633
8239
  },
8240
+ annotations: {
8241
+ title: "Generate Variations",
8242
+ readOnlyHint: false,
8243
+ destructiveHint: false,
8244
+ idempotentHint: true,
8245
+ openWorldHint: false,
8246
+ },
6634
8247
  },
6635
8248
  {
6636
8249
  name: 'woocommerce_create_variation',
@@ -6650,6 +8263,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6650
8263
  },
6651
8264
  required: ['id', 'attributes'],
6652
8265
  },
8266
+ annotations: {
8267
+ title: "Create Variation",
8268
+ readOnlyHint: false,
8269
+ destructiveHint: false,
8270
+ idempotentHint: false,
8271
+ openWorldHint: false,
8272
+ },
6653
8273
  },
6654
8274
  {
6655
8275
  name: 'woocommerce_create_global_attribute',
@@ -6668,6 +8288,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6668
8288
  },
6669
8289
  required: ['name'],
6670
8290
  },
8291
+ annotations: {
8292
+ title: "Create Global Attribute",
8293
+ readOnlyHint: false,
8294
+ destructiveHint: false,
8295
+ idempotentHint: false,
8296
+ openWorldHint: false,
8297
+ },
6671
8298
  },
6672
8299
  {
6673
8300
  name: 'woocommerce_set_variation_gallery',
@@ -6680,7 +8307,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6680
8307
  },
6681
8308
  required: ['id', 'image_ids'],
6682
8309
  },
6683
- idempotentHint: true,
8310
+ annotations: {
8311
+ title: "Set Variation Gallery",
8312
+ readOnlyHint: false,
8313
+ destructiveHint: true,
8314
+ idempotentHint: true,
8315
+ openWorldHint: false,
8316
+ },
6684
8317
  },
6685
8318
  // --- Coupons and customers (addon v3.0) ---
6686
8319
  {
@@ -6694,7 +8327,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6694
8327
  page: { type: 'number' },
6695
8328
  },
6696
8329
  },
6697
- readOnlyHint: true,
8330
+ annotations: {
8331
+ title: "List Coupons",
8332
+ readOnlyHint: true,
8333
+ destructiveHint: false,
8334
+ idempotentHint: true,
8335
+ openWorldHint: false,
8336
+ },
6698
8337
  },
6699
8338
  {
6700
8339
  name: 'woocommerce_create_coupon',
@@ -6720,6 +8359,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6720
8359
  },
6721
8360
  required: ['code'],
6722
8361
  },
8362
+ annotations: {
8363
+ title: "Create Coupon",
8364
+ readOnlyHint: false,
8365
+ destructiveHint: false,
8366
+ idempotentHint: false,
8367
+ openWorldHint: false,
8368
+ },
6723
8369
  },
6724
8370
  {
6725
8371
  name: 'woocommerce_update_coupon',
@@ -6737,7 +8383,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6737
8383
  },
6738
8384
  required: ['id'],
6739
8385
  },
6740
- idempotentHint: true,
8386
+ annotations: {
8387
+ title: "Update Coupon",
8388
+ readOnlyHint: false,
8389
+ destructiveHint: true,
8390
+ idempotentHint: true,
8391
+ openWorldHint: false,
8392
+ },
6741
8393
  },
6742
8394
  {
6743
8395
  name: 'woocommerce_create_customer',
@@ -6754,6 +8406,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6754
8406
  },
6755
8407
  required: ['email'],
6756
8408
  },
8409
+ annotations: {
8410
+ title: "Create Customer",
8411
+ readOnlyHint: false,
8412
+ destructiveHint: false,
8413
+ idempotentHint: false,
8414
+ openWorldHint: false,
8415
+ },
6757
8416
  },
6758
8417
  {
6759
8418
  name: 'woocommerce_update_customer',
@@ -6770,7 +8429,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6770
8429
  },
6771
8430
  required: ['id'],
6772
8431
  },
6773
- idempotentHint: true,
8432
+ annotations: {
8433
+ title: "Update Customer",
8434
+ readOnlyHint: false,
8435
+ destructiveHint: true,
8436
+ idempotentHint: true,
8437
+ openWorldHint: false,
8438
+ },
6774
8439
  },
6775
8440
  // --- Order notes and refunds (addon v3.0) ---
6776
8441
  {
@@ -6785,6 +8450,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6785
8450
  },
6786
8451
  required: ['id', 'note'],
6787
8452
  },
8453
+ annotations: {
8454
+ title: "Add Order Note",
8455
+ readOnlyHint: false,
8456
+ destructiveHint: false,
8457
+ idempotentHint: false,
8458
+ openWorldHint: false,
8459
+ },
6788
8460
  },
6789
8461
  {
6790
8462
  name: 'woocommerce_get_order_refunds',
@@ -6796,7 +8468,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6796
8468
  },
6797
8469
  required: ['id'],
6798
8470
  },
6799
- readOnlyHint: true,
8471
+ annotations: {
8472
+ title: "List Order Refunds",
8473
+ readOnlyHint: true,
8474
+ destructiveHint: false,
8475
+ idempotentHint: true,
8476
+ openWorldHint: false,
8477
+ },
6800
8478
  },
6801
8479
  {
6802
8480
  name: 'woocommerce_create_order_refund',
@@ -6814,7 +8492,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6814
8492
  },
6815
8493
  required: ['id'],
6816
8494
  },
6817
- destructiveHint: true,
8495
+ annotations: {
8496
+ title: "Create Order Refund",
8497
+ readOnlyHint: false,
8498
+ destructiveHint: true,
8499
+ idempotentHint: false,
8500
+ openWorldHint: true,
8501
+ },
6818
8502
  },
6819
8503
  // --- Subscriptions / Bookings / Memberships (addon v3.1, extensions) ---
6820
8504
  {
@@ -6830,7 +8514,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6830
8514
  page: { type: 'number' },
6831
8515
  },
6832
8516
  },
6833
- readOnlyHint: true,
8517
+ annotations: {
8518
+ title: "List Subscriptions",
8519
+ readOnlyHint: true,
8520
+ destructiveHint: false,
8521
+ idempotentHint: true,
8522
+ openWorldHint: false,
8523
+ },
6834
8524
  },
6835
8525
  {
6836
8526
  name: 'woocommerce_get_subscription',
@@ -6842,7 +8532,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6842
8532
  },
6843
8533
  required: ['id'],
6844
8534
  },
6845
- readOnlyHint: true,
8535
+ annotations: {
8536
+ title: "Get Subscription",
8537
+ readOnlyHint: true,
8538
+ destructiveHint: false,
8539
+ idempotentHint: true,
8540
+ openWorldHint: false,
8541
+ },
6846
8542
  },
6847
8543
  {
6848
8544
  name: 'woocommerce_update_subscription_status',
@@ -6857,7 +8553,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6857
8553
  },
6858
8554
  required: ['id', 'status'],
6859
8555
  },
6860
- destructiveHint: true,
8556
+ annotations: {
8557
+ title: "Update Subscription Status",
8558
+ readOnlyHint: false,
8559
+ destructiveHint: true,
8560
+ idempotentHint: true,
8561
+ openWorldHint: false,
8562
+ },
6861
8563
  },
6862
8564
  {
6863
8565
  name: 'woocommerce_update_subscription_dates',
@@ -6873,7 +8575,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6873
8575
  },
6874
8576
  required: ['id'],
6875
8577
  },
6876
- destructiveHint: true,
8578
+ annotations: {
8579
+ title: "Update Subscription Dates",
8580
+ readOnlyHint: false,
8581
+ destructiveHint: true,
8582
+ idempotentHint: true,
8583
+ openWorldHint: false,
8584
+ },
6877
8585
  },
6878
8586
  {
6879
8587
  name: 'woocommerce_add_subscription_note',
@@ -6887,6 +8595,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6887
8595
  },
6888
8596
  required: ['id', 'note'],
6889
8597
  },
8598
+ annotations: {
8599
+ title: "Add Subscription Note",
8600
+ readOnlyHint: false,
8601
+ destructiveHint: false,
8602
+ idempotentHint: false,
8603
+ openWorldHint: false,
8604
+ },
6890
8605
  },
6891
8606
  {
6892
8607
  name: 'woocommerce_list_bookings',
@@ -6900,7 +8615,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6900
8615
  page: { type: 'number' },
6901
8616
  },
6902
8617
  },
6903
- readOnlyHint: true,
8618
+ annotations: {
8619
+ title: "List Bookings",
8620
+ readOnlyHint: true,
8621
+ destructiveHint: false,
8622
+ idempotentHint: true,
8623
+ openWorldHint: false,
8624
+ },
6904
8625
  },
6905
8626
  {
6906
8627
  name: 'woocommerce_get_booking',
@@ -6912,7 +8633,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6912
8633
  },
6913
8634
  required: ['id'],
6914
8635
  },
6915
- readOnlyHint: true,
8636
+ annotations: {
8637
+ title: "Get Booking",
8638
+ readOnlyHint: true,
8639
+ destructiveHint: false,
8640
+ idempotentHint: true,
8641
+ openWorldHint: false,
8642
+ },
6916
8643
  },
6917
8644
  {
6918
8645
  name: 'woocommerce_update_booking_status',
@@ -6926,7 +8653,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6926
8653
  },
6927
8654
  required: ['id', 'status'],
6928
8655
  },
6929
- destructiveHint: true,
8656
+ annotations: {
8657
+ title: "Update Booking Status",
8658
+ readOnlyHint: false,
8659
+ destructiveHint: true,
8660
+ idempotentHint: true,
8661
+ openWorldHint: false,
8662
+ },
6930
8663
  },
6931
8664
  {
6932
8665
  name: 'woocommerce_reschedule_booking',
@@ -6942,7 +8675,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6942
8675
  },
6943
8676
  required: ['id', 'start', 'end'],
6944
8677
  },
6945
- destructiveHint: true,
8678
+ annotations: {
8679
+ title: "Reschedule Booking",
8680
+ readOnlyHint: false,
8681
+ destructiveHint: true,
8682
+ idempotentHint: true,
8683
+ openWorldHint: false,
8684
+ },
6946
8685
  },
6947
8686
  {
6948
8687
  name: 'woocommerce_list_membership_plans',
@@ -6951,7 +8690,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6951
8690
  type: 'object',
6952
8691
  properties: {},
6953
8692
  },
6954
- readOnlyHint: true,
8693
+ annotations: {
8694
+ title: "List Membership Plans",
8695
+ readOnlyHint: true,
8696
+ destructiveHint: false,
8697
+ idempotentHint: true,
8698
+ openWorldHint: false,
8699
+ },
6955
8700
  },
6956
8701
  {
6957
8702
  name: 'woocommerce_list_memberships',
@@ -6966,7 +8711,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6966
8711
  page: { type: 'number' },
6967
8712
  },
6968
8713
  },
6969
- readOnlyHint: true,
8714
+ annotations: {
8715
+ title: "List Memberships",
8716
+ readOnlyHint: true,
8717
+ destructiveHint: false,
8718
+ idempotentHint: true,
8719
+ openWorldHint: false,
8720
+ },
6970
8721
  },
6971
8722
  {
6972
8723
  name: 'woocommerce_get_membership',
@@ -6978,7 +8729,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6978
8729
  },
6979
8730
  required: ['id'],
6980
8731
  },
6981
- readOnlyHint: true,
8732
+ annotations: {
8733
+ title: "Get Membership",
8734
+ readOnlyHint: true,
8735
+ destructiveHint: false,
8736
+ idempotentHint: true,
8737
+ openWorldHint: false,
8738
+ },
6982
8739
  },
6983
8740
  {
6984
8741
  name: 'woocommerce_update_membership_status',
@@ -6993,7 +8750,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
6993
8750
  },
6994
8751
  required: ['id', 'membership_action'],
6995
8752
  },
6996
- destructiveHint: true,
8753
+ annotations: {
8754
+ title: "Update Membership Status",
8755
+ readOnlyHint: false,
8756
+ destructiveHint: true,
8757
+ idempotentHint: true,
8758
+ openWorldHint: false,
8759
+ },
6997
8760
  },
6998
8761
  {
6999
8762
  name: 'woocommerce_set_membership_end_date',
@@ -7007,7 +8770,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7007
8770
  },
7008
8771
  required: ['id', 'end_date'],
7009
8772
  },
7010
- destructiveHint: true,
8773
+ annotations: {
8774
+ title: "Set Membership End Date",
8775
+ readOnlyHint: false,
8776
+ destructiveHint: true,
8777
+ idempotentHint: true,
8778
+ openWorldHint: false,
8779
+ },
7011
8780
  },
7012
8781
  // --- Assisted checkout (addon v3.1) ---
7013
8782
  {
@@ -7027,6 +8796,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7027
8796
  },
7028
8797
  required: ['items'],
7029
8798
  },
8799
+ annotations: {
8800
+ title: "Create Cart Link",
8801
+ readOnlyHint: false,
8802
+ destructiveHint: false,
8803
+ idempotentHint: false,
8804
+ openWorldHint: false,
8805
+ },
7030
8806
  },
7031
8807
  {
7032
8808
  name: 'woocommerce_agent_orders_report',
@@ -7037,14 +8813,26 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7037
8813
  days: { type: 'number', description: 'Period in days (default 30, max 365)' },
7038
8814
  },
7039
8815
  },
7040
- readOnlyHint: true,
8816
+ annotations: {
8817
+ title: "Agent Orders Report",
8818
+ readOnlyHint: true,
8819
+ destructiveHint: false,
8820
+ idempotentHint: true,
8821
+ openWorldHint: false,
8822
+ },
7041
8823
  },
7042
8824
  // --- Product configurator, STAGGS (addon v3.2) ---
7043
8825
  {
7044
8826
  name: 'woocommerce_configurator_status',
7045
8827
  description: 'Which product configurator is active (STAGGS) plus how many products and attribute groups use it. Start here before any configurator work.',
7046
8828
  inputSchema: { type: 'object', properties: {} },
7047
- readOnlyHint: true,
8829
+ annotations: {
8830
+ title: "Configurator Status",
8831
+ readOnlyHint: true,
8832
+ destructiveHint: false,
8833
+ idempotentHint: true,
8834
+ openWorldHint: false,
8835
+ },
7048
8836
  },
7049
8837
  {
7050
8838
  name: 'woocommerce_get_product_configurator',
@@ -7054,7 +8842,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7054
8842
  properties: { id: { type: 'number', description: 'Product ID' } },
7055
8843
  required: ['id'],
7056
8844
  },
7057
- readOnlyHint: true,
8845
+ annotations: {
8846
+ title: "Get Product Configurator",
8847
+ readOnlyHint: true,
8848
+ destructiveHint: false,
8849
+ idempotentHint: true,
8850
+ openWorldHint: false,
8851
+ },
7058
8852
  },
7059
8853
  {
7060
8854
  name: 'woocommerce_set_product_configurator',
@@ -7068,12 +8862,25 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7068
8862
  },
7069
8863
  required: ['id', 'enabled'],
7070
8864
  },
8865
+ annotations: {
8866
+ title: "Set Product Configurator",
8867
+ readOnlyHint: false,
8868
+ destructiveHint: false,
8869
+ idempotentHint: true,
8870
+ openWorldHint: false,
8871
+ },
7071
8872
  },
7072
8873
  {
7073
8874
  name: 'woocommerce_list_configurator_attributes',
7074
8875
  description: 'List STAGGS attribute groups (the reusable option sets a configurator is built from): id, title, type.',
7075
8876
  inputSchema: { type: 'object', properties: {} },
7076
- readOnlyHint: true,
8877
+ annotations: {
8878
+ title: "List Configurator Attributes",
8879
+ readOnlyHint: true,
8880
+ destructiveHint: false,
8881
+ idempotentHint: true,
8882
+ openWorldHint: false,
8883
+ },
7077
8884
  },
7078
8885
  {
7079
8886
  name: 'woocommerce_get_configurator_attribute_items',
@@ -7083,7 +8890,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7083
8890
  properties: { id: { type: 'number', description: 'STAGGS attribute (sgg_attribute) post ID' } },
7084
8891
  required: ['id'],
7085
8892
  },
7086
- readOnlyHint: true,
8893
+ annotations: {
8894
+ title: "Configurator Attribute Items",
8895
+ readOnlyHint: true,
8896
+ destructiveHint: false,
8897
+ idempotentHint: true,
8898
+ openWorldHint: false,
8899
+ },
7087
8900
  },
7088
8901
  {
7089
8902
  name: 'woocommerce_set_configurator_attribute_items',
@@ -7097,6 +8910,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7097
8910
  },
7098
8911
  required: ['id', 'items'],
7099
8912
  },
8913
+ annotations: {
8914
+ title: "Set Configurator Attribute Items",
8915
+ readOnlyHint: false,
8916
+ destructiveHint: true,
8917
+ idempotentHint: true,
8918
+ openWorldHint: false,
8919
+ },
7100
8920
  },
7101
8921
  {
7102
8922
  name: 'woocommerce_get_plugin_state',
@@ -7110,7 +8930,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7110
8930
  },
7111
8931
  required: ['plugin'],
7112
8932
  },
7113
- readOnlyHint: true,
8933
+ annotations: {
8934
+ title: "Get Plugin State",
8935
+ readOnlyHint: true,
8936
+ destructiveHint: false,
8937
+ idempotentHint: true,
8938
+ openWorldHint: false,
8939
+ },
7114
8940
  },
7115
8941
  {
7116
8942
  name: 'woocommerce_set_plugin_state',
@@ -7126,6 +8952,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7126
8952
  },
7127
8953
  required: ['plugin'],
7128
8954
  },
8955
+ annotations: {
8956
+ title: "Set Plugin State",
8957
+ readOnlyHint: false,
8958
+ destructiveHint: false,
8959
+ idempotentHint: true,
8960
+ openWorldHint: false,
8961
+ },
7129
8962
  },
7130
8963
  // --- Readiness autofix (addon v3.1) ---
7131
8964
  {
@@ -7138,7 +8971,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7138
8971
  target_score: { type: 'number', description: 'Skip products at or above this score (default 90)' },
7139
8972
  },
7140
8973
  },
7141
- readOnlyHint: true,
8974
+ annotations: {
8975
+ title: "Readiness Fix List",
8976
+ readOnlyHint: true,
8977
+ destructiveHint: false,
8978
+ idempotentHint: true,
8979
+ openWorldHint: false,
8980
+ },
7142
8981
  },
7143
8982
  {
7144
8983
  name: 'woocommerce_set_image_alt',
@@ -7152,7 +8991,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7152
8991
  },
7153
8992
  required: ['id', 'alt'],
7154
8993
  },
7155
- idempotentHint: true,
8994
+ annotations: {
8995
+ title: "Set Image Alt Text",
8996
+ readOnlyHint: false,
8997
+ destructiveHint: false,
8998
+ idempotentHint: true,
8999
+ openWorldHint: false,
9000
+ },
7156
9001
  },
7157
9002
  // --- Product feeds + llms.txt (addon v3.1) ---
7158
9003
  {
@@ -7174,7 +9019,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7174
9019
  rotate_token: { type: 'boolean', description: 'Rotate the secret feed URLs' },
7175
9020
  },
7176
9021
  },
7177
- idempotentHint: true,
9022
+ annotations: {
9023
+ title: "Configure Product Feed",
9024
+ readOnlyHint: false,
9025
+ destructiveHint: false,
9026
+ idempotentHint: false,
9027
+ openWorldHint: false,
9028
+ },
7178
9029
  },
7179
9030
  {
7180
9031
  name: 'woocommerce_generate_feed',
@@ -7185,6 +9036,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7185
9036
  format: { type: 'string', description: 'Optional: enable and build one specific format' },
7186
9037
  },
7187
9038
  },
9039
+ annotations: {
9040
+ title: "Generate Product Feed",
9041
+ readOnlyHint: false,
9042
+ destructiveHint: false,
9043
+ idempotentHint: true,
9044
+ openWorldHint: false,
9045
+ },
7188
9046
  },
7189
9047
  {
7190
9048
  name: 'woocommerce_get_feed_status',
@@ -7193,7 +9051,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7193
9051
  type: 'object',
7194
9052
  properties: {},
7195
9053
  },
7196
- readOnlyHint: true,
9054
+ annotations: {
9055
+ title: "Feed Status",
9056
+ readOnlyHint: true,
9057
+ destructiveHint: false,
9058
+ idempotentHint: true,
9059
+ openWorldHint: false,
9060
+ },
7197
9061
  },
7198
9062
  {
7199
9063
  name: 'woocommerce_repair_feed_scheduler',
@@ -7204,7 +9068,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7204
9068
  dry_run: { type: 'boolean', description: 'Inspect whether a stale lock would be repaired without changing scheduler state.' },
7205
9069
  },
7206
9070
  },
7207
- idempotentHint: true,
9071
+ annotations: {
9072
+ title: "Repair Feed Scheduler",
9073
+ readOnlyHint: false,
9074
+ destructiveHint: false,
9075
+ idempotentHint: true,
9076
+ openWorldHint: false,
9077
+ },
7208
9078
  },
7209
9079
  {
7210
9080
  name: 'woocommerce_validate_feed',
@@ -7216,7 +9086,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7216
9086
  limit: { type: 'number', description: 'Parent products to sample (default 100, max 200)' },
7217
9087
  },
7218
9088
  },
7219
- readOnlyHint: true,
9089
+ annotations: {
9090
+ title: "Validate Feed",
9091
+ readOnlyHint: true,
9092
+ destructiveHint: false,
9093
+ idempotentHint: true,
9094
+ openWorldHint: false,
9095
+ },
7220
9096
  },
7221
9097
  {
7222
9098
  name: 'woocommerce_set_feed_category_mapping',
@@ -7227,7 +9103,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7227
9103
  mappings: { type: 'object', description: '{"<term_id>": "<google category id or full path>"}; empty string removes a mapping' },
7228
9104
  },
7229
9105
  },
7230
- idempotentHint: true,
9106
+ annotations: {
9107
+ title: "Set Feed Category Mapping",
9108
+ readOnlyHint: false,
9109
+ destructiveHint: false,
9110
+ idempotentHint: true,
9111
+ openWorldHint: false,
9112
+ },
7231
9113
  },
7232
9114
  // --- AI readiness (addon v3.0) ---
7233
9115
  {
@@ -7240,7 +9122,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7240
9122
  },
7241
9123
  required: ['id'],
7242
9124
  },
7243
- readOnlyHint: true,
9125
+ annotations: {
9126
+ title: "Product AI Readiness",
9127
+ readOnlyHint: true,
9128
+ destructiveHint: false,
9129
+ idempotentHint: true,
9130
+ openWorldHint: false,
9131
+ },
7244
9132
  },
7245
9133
  {
7246
9134
  name: 'woocommerce_catalog_ai_readiness',
@@ -7251,7 +9139,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7251
9139
  limit: { type: 'number', description: 'Products to scan (default 200, max 500)' },
7252
9140
  },
7253
9141
  },
7254
- readOnlyHint: true,
9142
+ annotations: {
9143
+ title: "Catalog AI Readiness",
9144
+ readOnlyHint: true,
9145
+ destructiveHint: false,
9146
+ idempotentHint: true,
9147
+ openWorldHint: false,
9148
+ },
7255
9149
  },
7256
9150
  ];
7257
9151
  }
@@ -7412,6 +9306,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
7412
9306
  stageTimings: result?.write_diag?.stage_timings || result?.stage_timings || null,
7413
9307
  pluginVersion,
7414
9308
  mcpVersion: MCP_SERVER_VERSION,
9309
+ // usage-emitter has accepted and sanitised a `builder` field since it
9310
+ // was written, and mcp_tool_events.builder was NULL for every one of
9311
+ // 236,803 events over 30 days, because no call site ever passed it.
9312
+ // Per-builder quality was therefore invisible in the event stream for
9313
+ // exactly the builders that carry the most traffic. The plugin already
9314
+ // returns the builder it acted through; this forwards it.
9315
+ builder: telemetryBuilderName(result),
7415
9316
  // The plugin compares a storage signature before and after a write and
7416
9317
  // says so on the response when nothing moved. It reports that as a
7417
9318
  // warning on a SUCCESSFUL call, because the call was well formed, so
@@ -8507,6 +10408,22 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8507
10408
  // unambiguous.
8508
10409
  r.agent_must_escalate = true;
8509
10410
  }
10411
+ // The plugin used to fail this write outright whenever it could not
10412
+ // read the changed value back off the public page, including when the
10413
+ // page simply did not answer in time. That was 8.9% of live Elementor
10414
+ // element updates, every one of them a write that had already
10415
+ // persisted, and the agent's response to a failure is to retry. The
10416
+ // write now succeeds and says what could not be confirmed, but this
10417
+ // tool has an 81% in-session retry rate precisely because agents do not
10418
+ // read nested fields, so the caveat has to be in the message or it may
10419
+ // as well not exist. Softer than the no-op headline on purpose: nothing
10420
+ // is wrong, the write landed, only the confirmation is missing.
10421
+ else if (r && typeof r === 'object' &&
10422
+ Array.isArray(r.warnings) && r.warnings.includes('elementor_frontend_unverifiable')) {
10423
+ const hint = r.frontend_verification_hint || 'The write persisted but Respira could not read the public page to confirm it is visible. Do not retry the same mutation.';
10424
+ const original = typeof r.message === 'string' ? r.message : '';
10425
+ r.message = `Note — write saved, publication unconfirmed. ${hint}\n\nOriginal message: ${original}`.trim();
10426
+ }
8510
10427
  return r;
8511
10428
  }
8512
10429
  case 'wordpress_move_element': {
@@ -8683,7 +10600,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8683
10600
  },
8684
10601
  required: ['post_id', 'identifier_type', 'identifier_value'],
8685
10602
  },
8686
- readOnlyHint: true,
10603
+ annotations: {
10604
+ title: "Find Element",
10605
+ readOnlyHint: true,
10606
+ destructiveHint: false,
10607
+ idempotentHint: true,
10608
+ openWorldHint: false,
10609
+ },
8687
10610
  },
8688
10611
  {
8689
10612
  name: 'wordpress_update_element',
@@ -8735,6 +10658,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8735
10658
  },
8736
10659
  required: ['post_id', 'identifier_type', 'identifier_value', 'updates'],
8737
10660
  },
10661
+ annotations: {
10662
+ title: "Update Element",
10663
+ readOnlyHint: false,
10664
+ destructiveHint: false,
10665
+ idempotentHint: true,
10666
+ openWorldHint: false,
10667
+ },
8738
10668
  },
8739
10669
  {
8740
10670
  name: 'wordpress_move_element',
@@ -8777,6 +10707,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8777
10707
  },
8778
10708
  required: ['post_id', 'identifier_type', 'identifier_value', 'target_container_path', 'position'],
8779
10709
  },
10710
+ annotations: {
10711
+ title: "Move Element",
10712
+ readOnlyHint: false,
10713
+ destructiveHint: false,
10714
+ idempotentHint: true,
10715
+ openWorldHint: false,
10716
+ },
8780
10717
  },
8781
10718
  {
8782
10719
  name: 'wordpress_duplicate_element',
@@ -8815,6 +10752,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8815
10752
  },
8816
10753
  required: ['post_id'],
8817
10754
  },
10755
+ annotations: {
10756
+ title: "Duplicate Element",
10757
+ readOnlyHint: false,
10758
+ destructiveHint: false,
10759
+ idempotentHint: false,
10760
+ openWorldHint: false,
10761
+ },
8818
10762
  },
8819
10763
  {
8820
10764
  name: 'wordpress_remove_element',
@@ -8858,7 +10802,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8858
10802
  },
8859
10803
  required: ['post_id', 'identifier_type', 'identifier_value'],
8860
10804
  },
8861
- destructiveHint: true,
10805
+ annotations: {
10806
+ title: "Remove Element",
10807
+ readOnlyHint: false,
10808
+ destructiveHint: true,
10809
+ idempotentHint: true,
10810
+ openWorldHint: false,
10811
+ },
8862
10812
  },
8863
10813
  {
8864
10814
  name: 'wordpress_batch_update',
@@ -8901,6 +10851,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8901
10851
  },
8902
10852
  required: ['post_id', 'operations'],
8903
10853
  },
10854
+ annotations: {
10855
+ title: "Batch Update",
10856
+ readOnlyHint: false,
10857
+ destructiveHint: true,
10858
+ idempotentHint: false,
10859
+ openWorldHint: false,
10860
+ },
8904
10861
  },
8905
10862
  {
8906
10863
  name: 'wordpress_reorder_elements',
@@ -8935,6 +10892,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8935
10892
  },
8936
10893
  required: ['post_id', 'container_path', 'new_order'],
8937
10894
  },
10895
+ annotations: {
10896
+ title: "Reorder Elements",
10897
+ readOnlyHint: false,
10898
+ destructiveHint: false,
10899
+ idempotentHint: true,
10900
+ openWorldHint: false,
10901
+ },
8938
10902
  },
8939
10903
  // --- Composite Tools ---
8940
10904
  {
@@ -8965,6 +10929,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8965
10929
  },
8966
10930
  required: ['title', 'structure'],
8967
10931
  },
10932
+ annotations: {
10933
+ title: "Build Page",
10934
+ readOnlyHint: false,
10935
+ destructiveHint: false,
10936
+ idempotentHint: false,
10937
+ openWorldHint: false,
10938
+ },
8968
10939
  },
8969
10940
  {
8970
10941
  name: 'wordpress_convert_html_to_builder',
@@ -8984,6 +10955,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
8984
10955
  },
8985
10956
  required: ['html'],
8986
10957
  },
10958
+ annotations: {
10959
+ title: "Convert HTML To Builder",
10960
+ readOnlyHint: false,
10961
+ destructiveHint: false,
10962
+ idempotentHint: false,
10963
+ openWorldHint: false,
10964
+ },
8987
10965
  },
8988
10966
  {
8989
10967
  name: 'wordpress_bulk_pages_operation',
@@ -9011,6 +10989,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
9011
10989
  },
9012
10990
  required: ['page_ids', 'operation'],
9013
10991
  },
10992
+ annotations: {
10993
+ title: "Bulk Pages Operation",
10994
+ readOnlyHint: false,
10995
+ destructiveHint: true,
10996
+ idempotentHint: true,
10997
+ openWorldHint: false,
10998
+ },
9014
10999
  },
9015
11000
  // --- Stock Images ---
9016
11001
  {
@@ -9030,7 +11015,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
9030
11015
  },
9031
11016
  required: ['query'],
9032
11017
  },
9033
- readOnlyHint: true,
11018
+ annotations: {
11019
+ title: "Search Stock Images",
11020
+ readOnlyHint: true,
11021
+ destructiveHint: false,
11022
+ idempotentHint: true,
11023
+ openWorldHint: true,
11024
+ },
9034
11025
  },
9035
11026
  {
9036
11027
  name: 'wordpress_sideload_image',
@@ -9045,6 +11036,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
9045
11036
  },
9046
11037
  required: ['url'],
9047
11038
  },
11039
+ annotations: {
11040
+ title: "Sideload Image",
11041
+ readOnlyHint: false,
11042
+ destructiveHint: false,
11043
+ idempotentHint: false,
11044
+ openWorldHint: true,
11045
+ },
9048
11046
  },
9049
11047
  // --- Server Compatibility ---
9050
11048
  {
@@ -9054,7 +11052,13 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
9054
11052
  type: 'object',
9055
11053
  properties: {},
9056
11054
  },
9057
- readOnlyHint: true,
11055
+ annotations: {
11056
+ title: "Server Compatibility",
11057
+ readOnlyHint: true,
11058
+ destructiveHint: false,
11059
+ idempotentHint: true,
11060
+ openWorldHint: false,
11061
+ },
9058
11062
  },
9059
11063
  // --- Bricks Deep Tools (20 tools) ---
9060
11064
  ...getBricksTools(),
@@ -9392,6 +11396,21 @@ Allowlist: css, scss, less, json. PHP / JS theme writes are intentionally out of
9392
11396
  },
9393
11397
  required: ['post_id', ...s.required],
9394
11398
  },
11399
+ /* Every shortcut in this list adds one widget to an existing page, so the
11400
+ * whole family shares one annotation shape: it writes, it cannot clobber
11401
+ * what is already there, and calling it twice adds two widgets. The
11402
+ * annotations have to be minted here rather than in the tools array,
11403
+ * because these 27 tools only exist as the output of this map. */
11404
+ annotations: {
11405
+ title: s.name
11406
+ .split('_')
11407
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
11408
+ .join(' '),
11409
+ readOnlyHint: false,
11410
+ destructiveHint: false,
11411
+ idempotentHint: false,
11412
+ openWorldHint: false,
11413
+ },
9395
11414
  }));
9396
11415
  }
9397
11416
  async run() {