@wootsup/yt-builder-mcp 1.4.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/auth.d.ts +11 -0
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +11 -0
  4. package/dist/auth.js.map +1 -1
  5. package/dist/cli/doctor-command.d.ts.map +1 -1
  6. package/dist/cli/doctor-command.js +96 -8
  7. package/dist/cli/doctor-command.js.map +1 -1
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +13 -1
  11. package/dist/client.js.map +1 -1
  12. package/dist/clients/claude-code.d.ts.map +1 -1
  13. package/dist/clients/claude-code.js +5 -2
  14. package/dist/clients/claude-code.js.map +1 -1
  15. package/dist/clients/claude-desktop.d.ts.map +1 -1
  16. package/dist/clients/claude-desktop.js +5 -2
  17. package/dist/clients/claude-desktop.js.map +1 -1
  18. package/dist/clients/cline.d.ts.map +1 -1
  19. package/dist/clients/cline.js +5 -2
  20. package/dist/clients/cline.js.map +1 -1
  21. package/dist/clients/codex-cli.d.ts.map +1 -1
  22. package/dist/clients/codex-cli.js +127 -2
  23. package/dist/clients/codex-cli.js.map +1 -1
  24. package/dist/clients/continue.d.ts.map +1 -1
  25. package/dist/clients/continue.js +11 -2
  26. package/dist/clients/continue.js.map +1 -1
  27. package/dist/clients/cursor.d.ts.map +1 -1
  28. package/dist/clients/cursor.js +5 -2
  29. package/dist/clients/cursor.js.map +1 -1
  30. package/dist/clients/gemini-cli.d.ts.map +1 -1
  31. package/dist/clients/gemini-cli.js +5 -2
  32. package/dist/clients/gemini-cli.js.map +1 -1
  33. package/dist/clients/index.d.ts +49 -0
  34. package/dist/clients/index.d.ts.map +1 -1
  35. package/dist/clients/index.js +79 -0
  36. package/dist/clients/index.js.map +1 -1
  37. package/dist/clients/roo-code.d.ts.map +1 -1
  38. package/dist/clients/roo-code.js +5 -2
  39. package/dist/clients/roo-code.js.map +1 -1
  40. package/dist/clients/zed.d.ts.map +1 -1
  41. package/dist/clients/zed.js +22 -2
  42. package/dist/clients/zed.js.map +1 -1
  43. package/dist/diagnostics/doctor.d.ts +60 -2
  44. package/dist/diagnostics/doctor.d.ts.map +1 -1
  45. package/dist/diagnostics/doctor.js +185 -8
  46. package/dist/diagnostics/doctor.js.map +1 -1
  47. package/dist/diagnostics/startup-self-probe.d.ts +39 -0
  48. package/dist/diagnostics/startup-self-probe.d.ts.map +1 -0
  49. package/dist/diagnostics/startup-self-probe.js +87 -0
  50. package/dist/diagnostics/startup-self-probe.js.map +1 -0
  51. package/dist/gateway/essentials.d.ts +15 -6
  52. package/dist/gateway/essentials.d.ts.map +1 -1
  53. package/dist/gateway/essentials.js +51 -5
  54. package/dist/gateway/essentials.js.map +1 -1
  55. package/dist/index.d.ts +15 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +37 -2
  58. package/dist/index.js.map +1 -1
  59. package/dist/net/proxy-dispatcher.d.ts +7 -0
  60. package/dist/net/proxy-dispatcher.d.ts.map +1 -1
  61. package/dist/net/proxy-dispatcher.js +7 -2
  62. package/dist/net/proxy-dispatcher.js.map +1 -1
  63. package/dist/net/site-basic-auth.d.ts +65 -0
  64. package/dist/net/site-basic-auth.d.ts.map +1 -0
  65. package/dist/net/site-basic-auth.js +118 -0
  66. package/dist/net/site-basic-auth.js.map +1 -0
  67. package/dist/proxy/bridge.d.ts +18 -1
  68. package/dist/proxy/bridge.d.ts.map +1 -1
  69. package/dist/proxy/bridge.js +23 -3
  70. package/dist/proxy/bridge.js.map +1 -1
  71. package/dist/setup-wizard-types.d.ts +9 -0
  72. package/dist/setup-wizard-types.d.ts.map +1 -1
  73. package/dist/setup-wizard.d.ts.map +1 -1
  74. package/dist/setup-wizard.js +37 -0
  75. package/dist/setup-wizard.js.map +1 -1
  76. package/dist/sites/client-pool.d.ts +35 -1
  77. package/dist/sites/client-pool.d.ts.map +1 -1
  78. package/dist/sites/client-pool.js +45 -1
  79. package/dist/sites/client-pool.js.map +1 -1
  80. package/dist/tools/elements/builders.d.ts.map +1 -1
  81. package/dist/tools/elements/builders.js +65 -8
  82. package/dist/tools/elements/builders.js.map +1 -1
  83. package/dist/tools/elements/handlers.d.ts +45 -0
  84. package/dist/tools/elements/handlers.d.ts.map +1 -1
  85. package/dist/tools/elements/handlers.js +178 -2
  86. package/dist/tools/elements/handlers.js.map +1 -1
  87. package/dist/tools/format/elements-format.d.ts.map +1 -1
  88. package/dist/tools/format/elements-format.js +8 -0
  89. package/dist/tools/format/elements-format.js.map +1 -1
  90. package/dist/tools/format/health-format.d.ts +2 -0
  91. package/dist/tools/format/health-format.d.ts.map +1 -1
  92. package/dist/tools/format/health-format.js +11 -0
  93. package/dist/tools/format/health-format.js.map +1 -1
  94. package/dist/tools/format/pages-format.d.ts +42 -0
  95. package/dist/tools/format/pages-format.d.ts.map +1 -1
  96. package/dist/tools/format/pages-format.js +43 -0
  97. package/dist/tools/format/pages-format.js.map +1 -1
  98. package/dist/tools/format/source-schema-format.d.ts +64 -0
  99. package/dist/tools/format/source-schema-format.d.ts.map +1 -0
  100. package/dist/tools/format/source-schema-format.js +161 -0
  101. package/dist/tools/format/source-schema-format.js.map +1 -0
  102. package/dist/tools/health.d.ts.map +1 -1
  103. package/dist/tools/health.js +31 -0
  104. package/dist/tools/health.js.map +1 -1
  105. package/dist/tools/multi-items/builders.js +2 -2
  106. package/dist/tools/multi-items/builders.js.map +1 -1
  107. package/dist/tools/multi-items/clean-implode-handler.d.ts +2 -1
  108. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -1
  109. package/dist/tools/multi-items/clean-implode-handler.js +9 -1
  110. package/dist/tools/multi-items/clean-implode-handler.js.map +1 -1
  111. package/dist/tools/multi-items/inspect-handler.d.ts +8 -0
  112. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
  113. package/dist/tools/multi-items/inspect-handler.js +48 -2
  114. package/dist/tools/multi-items/inspect-handler.js.map +1 -1
  115. package/dist/tools/pages/builders.d.ts.map +1 -1
  116. package/dist/tools/pages/builders.js +126 -28
  117. package/dist/tools/pages/builders.js.map +1 -1
  118. package/dist/tools/pages/handlers-read.d.ts +21 -2
  119. package/dist/tools/pages/handlers-read.d.ts.map +1 -1
  120. package/dist/tools/pages/handlers-read.js +183 -11
  121. package/dist/tools/pages/handlers-read.js.map +1 -1
  122. package/dist/tools/pages/handlers-write.d.ts +42 -1
  123. package/dist/tools/pages/handlers-write.d.ts.map +1 -1
  124. package/dist/tools/pages/handlers-write.js +114 -5
  125. package/dist/tools/pages/handlers-write.js.map +1 -1
  126. package/dist/tools/pages/schemas.d.ts +26 -0
  127. package/dist/tools/pages/schemas.d.ts.map +1 -1
  128. package/dist/tools/pages/schemas.js +38 -0
  129. package/dist/tools/pages/schemas.js.map +1 -1
  130. package/dist/tools/pool-resolve-helper.d.ts +11 -26
  131. package/dist/tools/pool-resolve-helper.d.ts.map +1 -1
  132. package/dist/tools/pool-resolve-helper.js +50 -0
  133. package/dist/tools/pool-resolve-helper.js.map +1 -1
  134. package/dist/tools/sources/builders.d.ts.map +1 -1
  135. package/dist/tools/sources/builders.js +258 -4
  136. package/dist/tools/sources/builders.js.map +1 -1
  137. package/dist/tools/sources/handlers-bind.d.ts +107 -0
  138. package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
  139. package/dist/tools/sources/handlers-bind.js +197 -2
  140. package/dist/tools/sources/handlers-bind.js.map +1 -1
  141. package/dist/tools/sources/handlers.d.ts +54 -0
  142. package/dist/tools/sources/handlers.d.ts.map +1 -1
  143. package/dist/tools/sources/handlers.js +82 -0
  144. package/dist/tools/sources/handlers.js.map +1 -1
  145. package/dist/tools/sparse-fields.d.ts +37 -1
  146. package/dist/tools/sparse-fields.d.ts.map +1 -1
  147. package/dist/tools/sparse-fields.js +35 -5
  148. package/dist/tools/sparse-fields.js.map +1 -1
  149. package/dist/tools/tool-builder/results.d.ts.map +1 -1
  150. package/dist/tools/tool-builder/results.js +39 -0
  151. package/dist/tools/tool-builder/results.js.map +1 -1
  152. package/manifest.json +1 -1
  153. package/package.json +1 -1
  154. package/skills/yt-builder-mcp/SKILL.md +237 -39
@@ -1 +1 @@
1
- {"version":3,"file":"sparse-fields.js","sourceRoot":"","sources":["../../src/tools/sparse-fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sparse-fields.js","sourceRoot":"","sources":["../../src/tools/sparse-fields.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../src/tools/tool-builder/results.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU1D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gCAAgC,QAAW,CAAC;AA2BzD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,CAM5F;AAaD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CAChB,GAAG,UAAU,CAYb;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,UAAU,CAab;AAuBD;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAC7C,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,YAAY,GACnB,CAAC,CA6FH;AAED,wBAAgB,gBAAgB,CAC5B,aAAa,EAAE;IACX,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3C,UAAU,CAgBZ"}
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../src/tools/tool-builder/results.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU1D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gCAAgC,QAAW,CAAC;AA2BzD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,CAM5F;AAyDD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CAChB,GAAG,UAAU,CAmBb;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,UAAU,CAab;AAuBD;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAC7C,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,YAAY,GACnB,CAAC,CA6FH;AAED,wBAAgB,gBAAgB,CAC5B,aAAa,EAAE;IACX,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,EACD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3C,UAAU,CAgBZ"}
@@ -92,6 +92,38 @@ function describeError(e) {
92
92
  return { message: e.message };
93
93
  return { message: stringify(e) };
94
94
  }
95
+ /**
96
+ * G7 — pull the whitelisted nearest-path self-correction keys out of a thrown
97
+ * value's `RestError.body`, if present. GENERIC: the moment any plugin version
98
+ * emits the envelope on a 404, the Node HTTP path forwards it — mirroring the
99
+ * already-self-correcting in-process path. Only `RestError` carries a parsed
100
+ * upstream body; every other thrown value yields an empty envelope. The four
101
+ * keys are individually type-guarded (a `null` `nearest_path` is preserved as a
102
+ * legitimate "no candidate" signal); unknown keys never leak through.
103
+ */
104
+ function nearestPathFromError(e) {
105
+ if (!(e instanceof RestError))
106
+ return {};
107
+ const body = e.body;
108
+ if (body === null || typeof body !== 'object' || Array.isArray(body))
109
+ return {};
110
+ const b = body;
111
+ const out = {};
112
+ if (typeof b.given === 'string')
113
+ out.given = b.given;
114
+ if (typeof b.nearest_path === 'string' || b.nearest_path === null) {
115
+ out.nearest_path = b.nearest_path;
116
+ }
117
+ if (typeof b.nearest_path_label === 'string')
118
+ out.nearest_path_label = b.nearest_path_label;
119
+ if (Array.isArray(b.available_paths) && b.available_paths.every((p) => typeof p === 'string')) {
120
+ out.available_paths = b.available_paths;
121
+ }
122
+ // N4: the canonical id-form a bare-numeric not-found should re-address with.
123
+ if (typeof b.expected_id_form === 'string')
124
+ out.expected_id_form = b.expected_id_form;
125
+ return out;
126
+ }
95
127
  /**
96
128
  * Render a structured error result with `context` (echoed input) and a
97
129
  * recovery `hint`. Wave G.6.3 defense-in-depth: message is
@@ -100,12 +132,19 @@ function describeError(e) {
100
132
  */
101
133
  export function errorResult(opts) {
102
134
  const { message, status, code } = describeError(opts.error);
135
+ // G7 (self-correcting errors): forward the shared nearest-path envelope when
136
+ // the upstream 404 body carried it, so the agent retries IN-LOOP — the SAME
137
+ // contract the in-process MCP surfaces emit. Spread LAST so it rides
138
+ // alongside (never clobbers) error/status/code/context/hint; absent on every
139
+ // non-enriched failure (empty envelope → no extra keys).
140
+ const nearest = nearestPathFromError(opts.error);
103
141
  return jsonResult({
104
142
  error: sanitizeForLogs(message),
105
143
  ...(status !== undefined ? { status } : {}),
106
144
  ...(code !== undefined ? { code } : {}),
107
145
  context: sanitizeSecrets(opts.context),
108
146
  hint: opts.hint,
147
+ ...nearest,
109
148
  }, { isError: true });
110
149
  }
111
150
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"results.js","sourceRoot":"","sources":["../../../src/tools/tool-builder/results.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../../src/tools/tool-builder/results.ts"],"names":[],"mappings":"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"}
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "dxt_version": "0.1",
3
3
  "name": "@wootsup/yt-builder-mcp",
4
4
  "display_name": "YT Builder MCP for YOOtheme Pro (unofficial)",
5
- "version": "1.4.1",
5
+ "version": "1.6.0",
6
6
  "description": "Drive your YOOtheme Pro Page Builder programmatically from Claude, Cursor, Codex, Gemini and 5 other MCP-capable AI assistants — read layouts, edit settings, add elements, bind dynamic sources. Works on WordPress and Joomla 5/6. Built for YOOtheme Pro 4.0+. Independent third-party project, not affiliated with YOOtheme GmbH.",
7
7
  "long_description": "YT Builder MCP gives AI assistants a typed, scoped, and idempotent surface for your YOOtheme Pro Page Builder, on either WordPress or Joomla 5/6. Tools cover page discovery, layout inspection, element CRUD, source binding, and diagnostics. Bearer auth, optimistic locking via ETag, scope hierarchy (read < write < admin), and structured-error responses keep the agent safe and the workflow correct on first try. Independent third-party project — YOOtheme® is a registered trademark of YOOtheme GmbH (yootheme.com); YT Builder MCP is built by WootsUp (getimo productions) and is not affiliated with, endorsed by, or sponsored by YOOtheme.",
8
8
  "icon": "icon.png",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wootsup/yt-builder-mcp",
3
- "version": "1.4.1",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "description": "YT Builder MCP — drive your page builder from Claude, Cursor, Codex, Gemini and 5 other MCP-capable AI assistants. Built for YOOtheme Pro 4.0+. Independent third-party project, not affiliated with YOOtheme GmbH.",
6
6
  "license": "MIT",
@@ -12,14 +12,14 @@ description: Drive the YOOtheme Pro Page Builder on WordPress or Joomla 5/6. Dis
12
12
  > WordPress and Joomla 5/6.
13
13
 
14
14
  This skill helps AI assistants drive the YOOtheme Pro Page Builder through the
15
- `@wootsup/yt-builder-mcp` server. The server catalogues 33 typed, scoped,
16
- idempotent tools (35 callable end-to-end with the two gateways). 30 of them
15
+ `@wootsup/yt-builder-mcp` server. The server catalogues 39 typed, scoped,
16
+ idempotent tools (41 callable end-to-end with the two gateways). 36 of them
17
17
  advertised as first-class entries in `tools/list`
18
- (26 essential L1 forwards + 2 direct L3 entries + 2 gateways), and 5 advanced
18
+ (32 essential L1 forwards + 2 direct L3 entries + 2 gateways), and 5 advanced
19
19
  tools reachable through the gateways. The write-capable
20
20
  `yootheme_builder_advanced` gateway routes all 5; the read-only
21
21
  `yootheme_builder_advanced_read` gateway routes only the read-only subset
22
- (page_get_schema, element_get_binding, inspect_sublayout) and is itself
22
+ (page_get_schema, inspect_sublayout, layout_query) and is itself
23
23
  read-only-annotated, so MCP hosts can auto-allow pure inspection without a
24
24
  per-call write-approval prompt. This 3-lane split keeps `tools/list` well below
25
25
  the ~40-tool Cursor cap while every catalogued tool stays fully reachable.
@@ -53,7 +53,7 @@ Some clients (notably Claude Desktop with the `.dxt` bundle) expose **two**
53
53
  entries when the user types "YT Builder MCP" into the picker:
54
54
 
55
55
  - **`YT Builder MCP for YOOtheme Pro (unofficial)`**: the MCP **server**.
56
- Provides the 28 first-class tools (24 essential, 2 direct, 2 gateways).
56
+ Provides the 36 first-class tools (32 essential, 2 direct, 2 gateways).
57
57
  The `yootheme_builder_advanced` gateway routes all 5 advanced tools; the
58
58
  read-only `yootheme_builder_advanced_read` gateway routes the read-only
59
59
  subset without a write-approval prompt.
@@ -81,33 +81,79 @@ The server exposes:
81
81
  - **2 direct top-level tools**, always callable, always in `tools/list`:
82
82
  `yootheme_builder_health` and `yootheme_builder_diagnose`. These are
83
83
  the "the gateway itself might be broken" escape hatch.
84
- - **26 essential forwarded tools**: common reads + the most-used writes
84
+ - **32 essential forwarded tools**: common reads + the most-used writes
85
85
  (pages_list, pages_resolve, pages_create, pages_delete, page_dynamize, scaffold_section,
86
86
  get_etag, element_list / add / update_settings / get / move / clone / delete,
87
- page_get_layout, sources_list, element_types_list, element_type_get_schema,
87
+ page_get_layout, sources_list, source_get_schema, element_types_list, element_type_get_schema,
88
88
  template_summary, inspect_multi_items_binding, sites_list, sites_test,
89
- use_site, and the bind→save→publish chain element_bind_source /
90
- page_save / page_publish). Always advertised in `tools/list` so AI
91
- clients see them first-class. `scaffold_section` creates a valid
89
+ use_site, the bind→verify→save→publish chain element_bind_source /
90
+ element_get_binding / page_save / page_publish, and the archive-rebind /
91
+ refactor surface render_preview / element_set_source / rename_source /
92
+ template_set_type). Always advertised in
93
+ `tools/list` so AI clients see them first-class. `element_get_binding`
94
+ (B4) is L1 so the verify half of a bind is a direct call, not a
95
+ gateway hop. `source_get_schema` (U4-L1) is L1 so the archive/category
96
+ binding entry-point — introspect a source's query methods + relations +
97
+ the current-term archive-context convention before binding — is a direct
98
+ call too. `render_preview`, `element_set_source`, `rename_source` and
99
+ `template_set_type` (Glöckle HANDOFF-4/5) are L1 so the core write/refactor +
100
+ render-verify tools an agent reaches for after a taxonomy/CPT rename — set a
101
+ precomposed source at a pointer, render-verify the saved page is not silently
102
+ blank, rename a source/field template-wide, re-type an orphaned archive/single
103
+ template — are direct calls, not undiscoverable gateway hops. `scaffold_section`
104
+ creates a valid
92
105
  section → row → column hull in one call — the easiest correct way to
93
106
  start a layout block (content placed anywhere else is rejected by the
94
107
  structural-hierarchy guard).
95
108
  - **5 advanced captured tools**: everything else (page_get_schema,
96
- element_get_binding, element_unbind_source, clean_implode_directives,
97
- and `inspect_sublayout`). Reachable through one gateway tool:
109
+ element_unbind_source, clean_implode_directives,
110
+ `inspect_sublayout`, and `layout_query`).
111
+ Reachable through one gateway tool:
98
112
  `yootheme_builder_advanced({ tool: "<name>", arguments: { ... } })`. For
99
113
  example, to inspect a panel/grid_item `< SUBLAYOUT`:
100
114
  `yootheme_builder_advanced({ tool: "yootheme_builder_inspect_sublayout", arguments: { template_id, element_path } })`.
115
+ And to find elements by a structured filter (G5 — no expression language,
116
+ AND-combined `type`/`name_matches`/`has_binding`/`max_depth`/`under_section`):
117
+ `yootheme_builder_advanced({ tool: "yootheme_builder_layout_query", arguments: { template_id, type: "headline", has_binding: false, under_section: "Hero" } })`
118
+ (it's read-only, so the read gateway `yootheme_builder_advanced_read({ tool: "yootheme_builder_layout_query", … })` works too).
119
+
120
+ The core write/refactor + render-verify tools the Glöckle HANDOFF-4/5 ask for
121
+ are now **L1 — call them directly by name**, not through a gateway:
122
+ - To render-check a saved page over the authenticated channel (F5+N5 — does
123
+ it render, with how many items, or is it silently blank? where an external
124
+ cURL 401s behind staging Basic-Auth), call the now-L1
125
+ `yootheme_builder_render_preview({ template_id })` directly.
126
+ - To surgically SET a precomposed `source` + the native item-level
127
+ `source_extended.props` carrier on one element at a pointer, ETag-locked,
128
+ leaving the rest of the layout byte-unchanged (F2 — the one-call source edit
129
+ bind_source can't do because it cannot write `source_extended`), call the
130
+ now-L1
131
+ `yootheme_builder_element_set_source({ template_id, element_path, source: { query: { name: "categoryFaqs.taxonomyCategoryFaq", field: { name: "faq" } } }, source_extended: { props: { title: { query: { name: "#node" }, name: "title" } } }, etag })` directly.
132
+ - To template-wide RENAME a source/type/field name across EVERY binding in
133
+ one ETag-locked write — after a taxonomy/CPT rename (faq→help) breaks every
134
+ bound layout, preserving each binding's arguments + props + field_mappings
135
+ (N1 — instead of a whole-layout page_save), call the now-L1
136
+ `yootheme_builder_rename_source({ template_id, from: "categoryFaqs", to: "categoryHelps", source_map: { taxonomyCategoryFaq: "taxonomyCategoryHelp", faq: "help" }, field_map: { faq_title: "help_title" }, etag })` directly.
137
+ - To reassign which archive/single a THEME template applies to — set its
138
+ `type` condition (the value pages_list shows) in one ETag-locked write, the
139
+ step a taxonomy rename leaves orphaned (N3 — re-type
140
+ `taxonomy-category_faq` → `taxonomy-category_help`), call the now-L1
141
+ `yootheme_builder_template_set_type({ template_id, type: "taxonomy-category_help", etag })` directly.
142
+
143
+ To introspect a source's query methods + relations + the current-term
144
+ archive-context convention (U4-L1 — turns a ~25-call YOOtheme code-dive into
145
+ one call before binding on an archive/category template), call the now-L1
146
+ `yootheme_builder_source_get_schema({ name: "categoryFaqs" })` directly.
101
147
  - **2 gateway tools**: `yootheme_builder_advanced` (write-capable; can route
102
148
  into delete/unbind, so hosts gate it) and `yootheme_builder_advanced_read`
103
149
  (read-only; routes ONLY the read-only advanced subset — page_get_schema,
104
- element_get_binding, inspect_sublayout — and is read-only-annotated so hosts
105
- auto-allow it). Prefer the read gateway for pure inspection:
150
+ inspect_sublayout, layout_query — and is read-only-annotated
151
+ so hosts auto-allow it). Prefer the read gateway for pure inspection:
106
152
  `yootheme_builder_advanced_read({ tool: "yootheme_builder_page_get_schema", arguments: { template_id } })`.
107
153
 
108
- `tools/list` therefore advertises 30 names (26 + 2 + 2). That's 26 L1
109
- essentials + 2 L3 direct + 2 gateways. The total callable surface is 35
110
- (30 advertised + 5 advanced reachable through the gateways). If the AI
154
+ `tools/list` therefore advertises 36 names (32 + 2 + 2). That's 32 L1
155
+ essentials + 2 L3 direct + 2 gateways. The total callable surface is 41
156
+ (36 advertised + 5 advanced reachable through the gateways). If the AI
111
157
  client reports "tool not found", you are almost certainly calling an
112
158
  advanced tool by its raw name. Wrap it in
113
159
  `yootheme_builder_advanced({ tool, arguments })` (or the read gateway for
@@ -421,10 +467,10 @@ renders dynamic items.
421
467
  4. `yootheme_builder_sources_list()`: enumerate available Sources.
422
468
  Each returns `{ name, label, origin, kind }`. Pick the one the
423
469
  user asked for.
424
- 5. `yootheme_builder_advanced({ tool: "yootheme_builder_element_get_binding", arguments: { template_id, element_path } })`
470
+ 5. `yootheme_builder_element_get_binding({ template_id, element_path })`
425
471
  check whether the Grid is already bound (idempotency: skip step
426
472
  7 if `source_name` already matches the user's intent).
427
- `element_get_binding` is an advanced (L2) tool. Call via the gateway.
473
+ `element_get_binding` is a first-class L1 tool (B4) call it directly.
428
474
  6. `yootheme_builder_get_etag()`: fetch the optimistic-lock etag for
429
475
  the upcoming mutation.
430
476
  7. `yootheme_builder_element_bind_source({ template_id, element_path, source_name: "<name>", etag: "<etag>" })`
@@ -458,10 +504,10 @@ renders dynamic items.
458
504
  - **Forgetting `etag`.** Every write requires the optimistic-lock
459
505
  etag. On `412 Precondition Failed` re-fetch via
460
506
  `yootheme_builder_get_etag` and retry.
461
- - **Mis-routing bind vs the read helpers.** `element_bind_source` is
462
- now a first-class L1 tool call it directly by name. The binding
463
- *read* helpers `element_get_binding` and `element_unbind_source` stay
464
- L2 advanced; reach those through
507
+ - **Mis-routing bind vs the read helpers.** `element_bind_source` AND
508
+ its verify sibling `element_get_binding` (B4) are both first-class L1
509
+ tools call them directly by name. Only `element_unbind_source` stays
510
+ L2 advanced; reach it through
465
511
  `yootheme_builder_advanced({ tool, arguments })`.
466
512
 
467
513
  **Worked example (tool-call snippet):**
@@ -477,10 +523,9 @@ yootheme_builder_element_bind_source({
477
523
  // source_id: "wordpress:wp_posts" // pass ONLY when name collides
478
524
  })
479
525
  // Response: { path: "/0/children/2/children/0", etag: "def456", has_binding: true }
480
- // Verify (via gateway):
481
- yootheme_builder_advanced({
482
- tool: "yootheme_builder_element_get_binding",
483
- arguments: { template_id: "home", element_path: "/0/children/2/children/0" }
526
+ // Verify (direct L1 call):
527
+ yootheme_builder_element_get_binding({
528
+ template_id: "home", element_path: "/0/children/2/children/0"
484
529
  })
485
530
  // → { source_name: "wp_posts", source_config: { ... }, ... }
486
531
  ```
@@ -489,12 +534,12 @@ yootheme_builder_advanced({
489
534
  search filter). The bind call still succeeds; the front-end Grid just
490
535
  shows the YOOtheme "no items" placeholder. Don't treat empty render
491
536
  as a binding failure. Verify by re-reading
492
- `yootheme_builder_element_get_binding` through the gateway.
537
+ `yootheme_builder_element_get_binding` directly.
493
538
 
494
539
  **Success criterion:** After publish, the Grid on the front-end shows
495
540
  items from the Source (verify by item count and at least one
496
541
  field-value spot-check). `yootheme_builder_element_get_binding`
497
- (via gateway) returns the new `source_name`.
542
+ returns the new `source_name`.
498
543
 
499
544
  ### Multi-Items renderer truth table (read before binding rich cards)
500
545
 
@@ -632,7 +677,7 @@ yootheme_builder_element_update_settings({
632
677
  is preserved (same `source_name`). If the user wants a "data-free"
633
678
  copy, follow up with
634
679
  `yootheme_builder_advanced({ tool: "yootheme_builder_element_unbind_source", arguments: { ... } })`
635
- on the new path. Verify with the gateway `element_get_binding` call.
680
+ on the new path. Verify with a direct `element_get_binding` call.
636
681
 
637
682
  **Success criterion:** After publish,
638
683
  `yootheme_builder_advanced({ tool: "yootheme_builder_page_get_schema", arguments: { template_id } })`
@@ -853,6 +898,16 @@ and the props payload you passed.
853
898
  - **Unbind a source**: call through the gateway:
854
899
  `yootheme_builder_advanced({ tool: "yootheme_builder_element_unbind_source", arguments: { template_id, element_path, etag, confirm: true } })`.
855
900
  Same elicitation flow as delete.
901
+ - **Orient in a large template before editing** (cheapest first read):
902
+ `yootheme_builder_page_get_layout({ template_id, mode: "outline" })`
903
+ returns a token-efficient INDENTED text tree — one line per node,
904
+ `label ▸ type (bound: …) [sN]`. Each line carries a short handle
905
+ `[sN]` AND the node's real JSON-Pointer `path`. **The handle is
906
+ PER-READ (state-scoped): it is stable only at the etag you just read.
907
+ After ANY mutation (clone/move/delete/bind), re-read `mode:"outline"`
908
+ to get fresh handles.** Use the `path` (not the handle) as the write
909
+ address for `element_*` tools — the handle is only a readable alias.
910
+ For binding-focused work prefer `mode:"bindings_only"` instead.
856
911
  - **Flat schema inspection** (e.g. enumerate every element path +
857
912
  type without fetching the whole nested tree): call through the
858
913
  gateway: `yootheme_builder_advanced({ tool: "yootheme_builder_page_get_schema", arguments: { template_id } })`.
@@ -880,24 +935,162 @@ theme settings, menu management, media library), tell them clearly:
880
935
  <X> you'll need the relevant CMS REST API or direct wp-admin /
881
936
  Joomla administrator access." Don't fabricate tool calls.
882
937
 
938
+ ## JSON-Pointer path grammar (how to address an element)
939
+
940
+ Every element is addressed by a JSON-Pointer `path` (RFC-6901-style).
941
+ The read tools hand you the path; the write tools consume it. Learn the
942
+ grammar once and you never guess an address again.
943
+
944
+ **The shape.** A path is `/children/N` steps, optionally rooted at the
945
+ template:
946
+
947
+ - **Relative (rel_path):** `/children/0/children/2/children/1` — the
948
+ path FROM the layout root. Each `/children/N` descends one level into
949
+ the Nth child (0-based).
950
+ - **Fully-qualified:** `/templates/<template_id>/layout/children/0/...`
951
+ — the same address with the template prefix. `element_list` /
952
+ `page_get_schema` return the fully-qualified form in `path` and the
953
+ relative form in `rel_path`.
954
+
955
+ **You may pass EITHER form back** as `element_path` / `parent_path` —
956
+ the server lifts a bare `/children/...` to the fully-qualified pointer
957
+ for the current template (the `normalizeElementPath` rule). A leading
958
+ slash is optional on the relative form (`children/0` works too).
959
+
960
+ **The two special roots:**
961
+
962
+ - `""` (empty string) = the template ROOT. Use it as `parent_path: ""`
963
+ in `element_add` to append a top-level section.
964
+ - `"/"` is NOT the root in the element grammar — it normalizes to the
965
+ layout node itself, which is not an addressable element. Use `""` for
966
+ "the top".
967
+
968
+ **Reading the index.** In `/children/0/children/2/children/1`: child 0
969
+ of the layout, then child 2 of THAT, then child 1 of THAT. Indices are
970
+ positional and shift when siblings are added/removed — re-read after a
971
+ structural mutation before reusing a path (see the ETag handshake
972
+ below).
973
+
974
+ **Don't hand-build deep paths.** Enumerate with
975
+ `yootheme_builder_element_list` (flat `{path, rel_path, element_type}`
976
+ rows) or orient with `yootheme_builder_page_get_layout({ template_id,
977
+ mode: "outline" })` (indented `label ▸ type [sN]` tree, each line
978
+ carrying the real `path`). Copy the `path` from a row — never count
979
+ `/children/` segments by eye on a big template.
980
+
981
+ ## ETag handshake and self-correcting errors
982
+
983
+ **The optimistic-lock handshake (read → write → re-read):**
984
+
985
+ 1. `yootheme_builder_get_etag()` returns the current top-level ETag.
986
+ 2. Pass it as `etag` on the FIRST write. The write succeeds and returns
987
+ a FRESH etag (etags rotate on every mutation) plus, since v1.4,
988
+ `new_etag` (the same fresh value, explicit) and `changed_paths`
989
+ (the JSON-Pointer(s) the write touched).
990
+ 3. **Feed `new_etag` (or the response `etag`) into the NEXT write.** Do
991
+ NOT reuse the etag from the original `get_etag` — a stale etag is
992
+ rejected with `412 Precondition Failed` carrying `expected_etag`.
993
+ 4. A write that REQUIRES `If-Match` but receives none is rejected `428`
994
+ carrying `current_etag` — read it and retry.
995
+
996
+ So a write never leaves you guessing: on a lock error the response hands
997
+ you the etag to use next. On success, `changed_paths` tells you exactly
998
+ which addresses moved, so you can re-target without re-reading the whole
999
+ tree.
1000
+
1001
+ **Self-correcting path errors.** When a path-addressed read cannot find
1002
+ the element at the path you sent, the `element_not_found` error does NOT
1003
+ just say "not found" — it carries:
1004
+
1005
+ - `given` — the exact pointer you sent, echoed back so you see what was rejected.
1006
+ - `nearest_path` — the closest VALID element pointer (path-aware
1007
+ distance, so an off-by-one index like `/children/9` suggests the real
1008
+ sibling `/children/0`). This is the write address; retry with it.
1009
+ - `nearest_path_label` — a HUMAN breadcrumb of that path
1010
+ (`Hero ▸ row ▸ column ▸ headline`), so you (and the user) can see WHAT
1011
+ the suggestion points at without decoding the pointer.
1012
+ - `available_paths` — a small bounded list of the nearest valid pointers
1013
+ (not a full dump), to pick from when `nearest_path` is not the one.
1014
+
1015
+ Use the suggestion to fix your NEXT call in-loop — you almost never need
1016
+ to re-read the entire layout after a wrong-path error.
1017
+
1018
+ > Scope (since v1.4.1): the self-correcting enrichment covers **every**
1019
+ > path-addressed read — `yootheme_builder_element_get`,
1020
+ > `yootheme_builder_inspect_sublayout`,
1021
+ > `yootheme_builder_inspect_multi_items_binding` and
1022
+ > `yootheme_builder_element_get_binding` — on both the embedded (in-process)
1023
+ > surfaces and, when the plugin emits it, the Node HTTP-transport 404. All four
1024
+ > reuse the ONE shared `nearestElementPath` + `PathHumanizer` core, so the
1025
+ > `{given, nearest_path, nearest_path_label, available_paths}` envelope is
1026
+ > byte-identical across WordPress and Joomla.
1027
+
1028
+ ## Dynamize an existing section (designed layout → live data, one call)
1029
+
1030
+ **Goal:** Take a section you (or the customer) already designed by hand
1031
+ and make it data-driven — repeating over a source's items — WITHOUT
1032
+ rebuilding it node by node.
1033
+
1034
+ Use `yootheme_builder_page_dynamize`. It copies the referenced layout
1035
+ byte-identically and swaps ONLY what you map, so the design (spacing,
1036
+ styles, the `#parent` bindings) survives untouched.
1037
+
1038
+ **Canonical tool-call sequence (snake_case):**
1039
+
1040
+ 1. `yootheme_builder_get_etag()`: current lock.
1041
+ 2. `yootheme_builder_template_summary({ template_id })` (or
1042
+ `yootheme_builder_page_get_layout({ template_id, mode: "outline" })`):
1043
+ find the REFERENCE you will dynamize — a `section_name` (a named
1044
+ section from the summary) or an `element_path`.
1045
+ 3. `yootheme_builder_sources_list()`: get the `list_source_name` to bind
1046
+ (the published source that yields the items).
1047
+ 4. `yootheme_builder_page_dynamize({ template_id, section_name: "<name>", list_source_name: "<source>", leaf_map: { "<original-leaf-field>": "<flat-flow-field>" }, etag })`.
1048
+
1049
+ **How the mapping works:**
1050
+
1051
+ - `leaf_map` keys are the ORIGINAL leaf field-names in the designed
1052
+ section; values are the flat flow field they should now read. The
1053
+ `#parent` binding and any tuned props are kept.
1054
+ - A section with SEVERAL source blocks dynamizes in ONE call via
1055
+ `source_map` — an array of `{ match, source_name, leaf_map }`, one
1056
+ entry per block.
1057
+ - For sub-query panels, key a `leaf_map` entry by
1058
+ `"<subquery>.<leaf>"`.
1059
+ - `page_dynamize` requires `page.title`. It returns the page plus a
1060
+ `summary`, and (since v1.4) `changed_paths` + `new_etag` like every
1061
+ other write.
1062
+
1063
+ **Common pitfalls:**
1064
+
1065
+ - **Binding Multi-Items on the container.** Bind the source + Multi-Items
1066
+ on the `*_item` CHILD, never on the grid/list container — see the
1067
+ Multi-Items renderer truth table above. `page_dynamize` follows that
1068
+ rule for you when you hand it the right reference.
1069
+ - **Hand-editing the JSON instead.** Don't reconstruct the section with
1070
+ `element_add` calls to "make it dynamic" — that loses the design.
1071
+ `page_dynamize` is the supported one-call path.
1072
+ - **Reusing a stale etag.** Feed `new_etag` from the response into your
1073
+ next write.
1074
+
883
1075
  ## Appendix: Tool Catalog (auto-generated)
884
1076
 
885
1077
  <!-- TOOL-CATALOG:BEGIN -->
886
1078
 
887
- **33 catalogued tools** plus the `yootheme_builder_advanced` (write) + `yootheme_builder_advanced_read` (read-only) gateways = **35 reachable via `tools/list`** (26 L1 + 2 L3 + 2 gateways = 30 advertised; the gateways route to 5 additional advanced tools, bringing the total to 35 callable). Generated by `scripts/extract-tools.mjs` from the compiled `buildAllTools()` registry. Do not hand-edit this section; re-run `npm run build && node scripts/extract-tools.mjs` after changing tool definitions.
1079
+ **39 catalogued tools** plus the `yootheme_builder_advanced` (write) + `yootheme_builder_advanced_read` (read-only) gateways = **41 reachable via `tools/list`** (32 L1 + 2 L3 + 2 gateways = 36 advertised; the gateways route to 5 additional advanced tools, bringing the total to 41 callable). Generated by `scripts/extract-tools.mjs` from the compiled `buildAllTools()` registry. Do not hand-edit this section; re-run `npm run build && node scripts/extract-tools.mjs` after changing tool definitions.
888
1080
 
889
1081
  | Tool | Kind | Input keys | Description |
890
1082
  | --- | --- | --- | --- |
891
1083
  | `yootheme_builder_clean_implode_directives` | destructive | `confirm`, `element_path`, `etag`, `site_id`, `template_id` | Strips `props.source.props.*.implode` directives from an element binding. Returns audit log + new ETag. Idempotent at the server (cleaned_count: 0 when nothing to remove) but classed as destructive because the affected binding cannot be restored without re-mapping. Always ask the user to confirm first, then call again with `confirm: true`. Requires ETag. Operates on the default site unless site_id is provided. |
892
1084
  | `yootheme_builder_diagnose` | read+idempotent | `site_id` | Full diagnostic: /health + authenticated /etag probe. Returns site_url, home_url, plugin reachability, Bearer validity in one call. First call when you need to know where the site lives. For per-template URLs see pages_list. Operates on the default site unless site_id is provided. |
893
1085
  | `yootheme_builder_element_add` | mutating | `children`, `element_type`, `etag`, `index`, `parent_path`, `position`, `props`, `site_id`, `template_id`, `type_name` | Add a new element to a template. Provide `parent_path` (or "" for root), `element_type` (e.g. "headline", "text", "grid"), and optional `props` / `children`. Appends by default; pass `index` (0 = first) to insert before siblings. Returns the new element's JSON-Pointer path. Requires ETag. Operates on the default site unless site_id is provided. |
894
- | `yootheme_builder_element_bind_source` | idempotent | `bindingLevel`, `element_path`, `etag`, `field_mappings`, `site_id`, `source_id`, `source_name`, `template_id` | Binds a Builder source to an element (canonical shape: `source` top-level). Pass `field_mappings` in the SAME call; bindingLevel "item" binds a container's first *_item child. Leaf under an iterating *_item → CONSOLIDATE onto item slots (409 slot_collision if taken/not a slot); leaf under a #parent fragment → INHERIT (`__node_item__`); standalone renders empty. List on a grid_item with children → iterator_is_leaf_renderer. Map: bind `map_item`, map `location` to a "lat,lng" field or no markers. Requires ETag. Call directly. Operates on the default site unless site_id is provided. |
1086
+ | `yootheme_builder_element_bind_source` | idempotent | `arguments`, `bindingLevel`, `directives`, `element_path`, `etag`, `field`, `field_mappings`, `query_arguments`, `relation`, `site_id`, `source_id`, `source_name`, `template_id` | Binds a Builder source to an element (canonical shape: `source` top-level). Pass `field_mappings` in the SAME call; bindingLevel "item" binds a container's first *_item child. Leaf under an iterating *_item → CONSOLIDATE onto item slots (409 slot_collision if taken/not a slot); leaf under a #parent fragment → INHERIT (`__node_item__`); standalone renders empty. List on a grid_item with children → iterator_is_leaf_renderer. Map: bind `map_item`, map `location` to a "lat,lng" field or no markers. Requires ETag. Call directly. Operates on the default site unless site_id is provided. |
895
1087
  | `yootheme_builder_element_clone` | mutating | `element_path`, `etag`, `site_id`, `template_id` | Clone an element as a sibling (same parent, immediately after the source). Returns the new element's path. Requires ETag. Operates on the default site unless site_id is provided. |
896
1088
  | `yootheme_builder_element_delete` | destructive | `confirm`, `element_path`, `etag`, `site_id`, `template_id` | PERMANENTLY delete an element + children. Cannot be undone. Pass `confirm: true` (boolean) AND a fresh ETag. If `preview:true` returns despite confirm, check `details.received_confirm` — strings/numbers accepted, but boolean is canonical. Operates on the default site unless site_id is provided. |
897
1089
  | `yootheme_builder_element_get` | read+idempotent | `element_path`, `site_id`, `template_id` | Get the full element object at a specific JSON-Pointer path, including props and children. Use yootheme_builder_element_list to discover paths. Operates on the default site unless site_id is provided. |
898
1090
  | `yootheme_builder_element_get_binding` | read+idempotent | `element_path`, `site_id`, `template_id` | Read the source binding attached to an element — the bound source name, the field-mappings (which source field feeds which element prop) and the query arguments/directives. Returns the empty object if the element is not bound. Operates on the default site unless site_id is provided. |
899
- | `yootheme_builder_element_list` | read+idempotent | `cursor`, `depth`, `fields`, `limit`, `root_path`, `site_id`, `template_id` | List elements in a template as a flat array with JSON-Pointer paths + types. Scope with `root_path`/`depth` for a subtree, paginate with `limit`/`cursor` for large templates. `fields[]` narrows each row. Operates on the default site unless site_id is provided. |
1091
+ | `yootheme_builder_element_list` | read+idempotent | `cursor`, `depth`, `fields`, `limit`, `max_chars`, `root_path`, `site_id`, `template_id` | List elements in a template as a flat array with JSON-Pointer paths + types. Scope with `root_path`/`depth` for a subtree, paginate with `limit`/`cursor` for large templates. `fields[]` narrows each row; `max_chars` bounds the text output. Operates on the default site unless site_id is provided. |
900
1092
  | `yootheme_builder_element_move` | idempotent | `element_path`, `etag`, `site_id`, `template_id`, `to_index`, `to_parent_path` | Move an element to a new parent + index in the tree. Useful for reordering or reparenting (e.g. moving a card from one grid column to another). Requires ETag. Operates on the default site unless site_id is provided. |
1093
+ | `yootheme_builder_element_set_source` | idempotent | `element_path`, `etag`, `site_id`, `source`, `source_extended`, `template_id` | Surgically SET a precomposed `source` (+ optional `source_extended.props`) on ONE element at a pointer, ETag-locked, leaving every OTHER node unchanged (no 14 KB page_save). Use this — not element_bind_source — when you have the exact source shape OR need `source_extended.props`, the native Multi-Items item-mapping carrier bind_source cannot write. E.g. an FAQ accordion scoped to the term: source.query.name="categoryFaqs.taxonomyCategoryFaq", field={name:"faq"}, source_extended.props maps title/content to #node. ETag req. Operates on the default site unless site_id is provided. |
901
1094
  | `yootheme_builder_element_type_get_schema` | read+idempotent | `element_type`, `site_id`, `type_name` | **Call before every `element_add` / `_update_settings`** — unknown prop keys are silently dropped server-side, so guessing fails quietly. Returns `{name,type,label?}` field descriptors. Use `element_type`; `type_name` is DEPRECATED. Operates on the default site unless site_id is provided. |
902
1095
  | `yootheme_builder_element_types_list` | read+idempotent | `fields`, `site_id` | List element types registered on this site (built-ins + YOOessentials/uEssentials extras). Names feed `element_type` of element_add. Pass `fields[]` to narrow each row. Keywords: "slider"/"carousel" → `slideshow`/`panel-slider`/`overlay-slider`. Prop keys differ per element (grid_item `title` vs headline `content`) — use element_type_get_schema before element_add/bind. Operates on the default site unless site_id is provided. |
903
1096
  | `yootheme_builder_element_unbind_source` | destructive | `confirm`, `element_path`, `etag`, `site_id`, `template_id` | Remove the source binding from an element. Clears `props.source`. Destructive in the sense that it may break dynamic-content rendering — always ask the user to confirm. Requires ETag. Operates on the default site unless site_id is provided. |
@@ -906,19 +1099,24 @@ Joomla administrator access." Don't fabricate tool calls.
906
1099
  | `yootheme_builder_health` | read+idempotent | `site_id` | Check plugin installed/reachable. Returns plugin version, YT Pro version, REST endpoints. Authenticated payload adds site_url + home_url for deep-linking. See yootheme_builder_diagnose for Bearer-validity + connectivity summary. Operates on the default site unless site_id is provided. |
907
1100
  | `yootheme_builder_inspect_multi_items_binding` | read+idempotent | `element_path`, `site_id`, `template_id` | Reports Multi-Items binding state: container/item pair (grid↔grid_item, slideshow↔slideshow_item, map↔map_item, …), current binding level (none\|container\|item), and a recommended_fix when the binding sits on the container instead of the child. For map/map_item, a bound item without a `location` ("lat,lng") field is flagged as a blocking map_location_warning (renders 0 markers). A List on a grid_item with nested children → blocking iterator_is_leaf_renderer (children never render). Operates on the default site unless site_id is provided. |
908
1101
  | `yootheme_builder_inspect_sublayout` | read+idempotent | `element_path`, `site_id`, `template_id` | Inspects a panel/grid_item `< SUBLAYOUT`: lists the `fragment` subtree bindable leaves (with JSON-Pointer paths to bind on — NOT the container) and the render-time inner grid. Flags `ungated_grid_prop` (blocking): grid props set but the gate (title_align=left / image_align=left\|right) unsatisfied → silent no-op. For container↔item binding see inspect_multi_items_binding. Operates on the default site unless site_id is provided. |
1102
+ | `yootheme_builder_layout_query` | read+idempotent | `cursor`, `fields`, `has_binding`, `limit`, `max_chars`, `max_depth`, `name_matches`, `site_id`, `template_id`, `type`, `under_section` | Find elements in a template by a structured filter — no syntax, no expression language. AND-combine any of: `type` (one type or a list), `name_matches` (case-insensitive substring of the element name), `has_binding` (bound vs unbound), `max_depth` (cap descent — 0 = top-level), `under_section` (only nodes inside a named section). Returns matching rows {path, element_type, label, has_binding}; paginate with `limit`/`cursor`, narrow rows with `fields[]`, bound text with `max_chars`. Operates on the default site unless site_id is provided. |
909
1103
  | `yootheme_builder_page_dynamize` | mutating | `conditions`, `element_path`, `etag`, `leaf_map`, `list_source_name`, `page`, `remove_leaves`, `section_name`, `site_id`, `source_map`, `template_id` | One-call way to dynamize a designed section: copies the layout byte-identically and swaps only what you map. Use INSTEAD of hand-editing JSON. Give a REFERENCE (section_name from template_summary, or element_path) + list_source_name + a leaf_map (original leaf field-name → flat flow field; #parent + tuned props kept). A section with several source blocks (Played/Next/Later) dynamizes in ONE call via source_map ({match, source_name, leaf_map?}[]). Sub-query panels: key by "<subquery>.<leaf>". Returns page + `summary`. Requires page.title. Operates on the default site unless site_id is provided. |
910
- | `yootheme_builder_page_get_layout` | read+idempotent | `fields`, `flat`, `force`, `mode`, `post_id`, `site_id`, `template_id`, `url` | Get the layout tree for one template — address it by `template_id` (from pages_list), `post_id` (numeric post/article id), or `url` (public page URL, resolved in one call). For dynamize/bind work prefer `mode:"bindings_only"` — the binding skeleton only (no style props). Default `mode:"full"` returns nested `{layout, etag}`. `flat:true` gives a depth-first `{elements:[...], etag}` array (with `fields[]`). A repeated unchanged read auto-skips `[unchanged]`; `force:true` re-fetches. |
911
- | `yootheme_builder_page_get_schema` | read+idempotent | `post_id`, `site_id`, `template_id`, `url` | Get the flat schema for a template — nodes with their JSON-Pointer paths and element types. Lighter than page_get_layout, enough to locate elements before editing. Address it by `template_id` (from pages_list), `post_id` (numeric post/article id), or `url` (public page URL, resolved in one call). Default site unless site_id is provided. |
1104
+ | `yootheme_builder_page_get_layout` | read+idempotent | `cursor`, `fields`, `flat`, `force`, `max_chars`, `mode`, `post_id`, `site_id`, `template_id`, `url` | Get the layout tree for one template — address it by `template_id` (from pages_list), `post_id` (numeric post/article id), or `url`. For dynamize/bind prefer `mode:"bindings_only"` (binding skeleton, no style props). Default `mode:"full"` returns nested `{layout, etag}`; `flat:true` gives a depth-first `{elements:[...]}` array (with `fields[]`). A repeated unchanged read auto-skips (`force:true` re-fetches). `max_chars` bounds the text; a clipped read returns `next_cursor` (pass back as `cursor`) to page the rest. Operates on the default site unless site_id is provided. |
1105
+ | `yootheme_builder_page_get_schema` | read+idempotent | `fields`, `max_chars`, `post_id`, `site_id`, `template_id`, `url` | Get the flat schema for a template — nodes with their JSON-Pointer paths and element types. Lighter than page_get_layout, enough to locate elements before editing. Address by `template_id` (pages_list), `post_id`, or `url`. `fields[]` slims each node; `max_chars` bounds output. Operates on the default site unless site_id is provided. |
912
1106
  | `yootheme_builder_page_publish` | idempotent | `etag`, `site_id`, `template_id` | Publish a template — persist state, flush YT + WP caches, snapshot the published-state ETag. ETag optional — when provided, 412 on conflict; when omitted, last-write-wins. Recommended for collaborative edits. Operates on the default site unless site_id is provided. |
913
- | `yootheme_builder_page_save` | idempotent | `etag`, `layout`, `site_id`, `template_id` | Re-run save-transforms + flush caches. Optionally pass a whole `layout` to REPLACE the template tree ATOMICALLY (F85)ideal for wholesale dynamization (read layout swap query remap fields → write back). A supplied layout is validated + ETag-locked; on rejection nothing is persisted. Omit `layout` to just re-run transforms (no-op if byte-identical) for incremental edits use element_add/update/bind/delete first. New pages: pages_create. Publish: page_publish. ETag optional (412 on conflict; else last-write-wins). Operates on the default site unless site_id is provided. |
1107
+ | `yootheme_builder_page_save` | idempotent | `dry_run`, `etag`, `layout`, `site_id`, `template_id` | Re-run save-transforms + flush caches. Optionally REPLACE the template tree by passing the INNER {type:"layout",children:[...]} tree as `layout`NOT the full template node page_get_layout returns (rejected 422, would blank the page). Validated + ETag-locked; on reject nothing persists. An unrenderable layout is refused PRE-WRITE (422). `dry_run:true` preflights; the success response carries `previous_layout` for 1-call rollback. Omit `layout` to re-run transforms only. ETag optional (412 on conflict; else last-write-wins). Operates on the default site unless site_id is provided. |
914
1108
  | `yootheme_builder_pages_create` | idempotent | `dry_run`, `layout`, `menu_item`, `published`, `site_id`, `slug`, `status`, `title` | Create a page (WordPress) or article (Joomla 5/6) with a YOOtheme per-page layout. Required: title. Optional: slug, status (default draft), published (default false → live on true: WP publish / Joomla state 1), layout (JSON), menu_item (Joomla SEF route), dry_run (preflight, no persist). Returns page_id (WP) / article_id (Joomla), slug, template_id (page:{id} or article:{id}), etag, warnings. Joomla: a published article has NO SEF route until a menu item points at it — pass menu_item, else frontend_url may 404. Operates on the default site unless site_id is provided. |
915
1109
  | `yootheme_builder_pages_delete` | idempotent | `confirm`, `force`, `post_id`, `site_id` | Delete a page (WordPress) or article (Joomla 5/6) with its YOOtheme per-page layout. Requires confirm:true (gate against accidental deletion). Default: trash (recoverable). force:true: permanent delete. Refuses non-page/article types with 403 (Layer 9 defense). Returns deleted:true, page_id (WP) / article_id (Joomla), force_deleted, bumped etag. Operates on the default site unless site_id is provided. |
916
- | `yootheme_builder_pages_list` | read+idempotent | `cursor`, `fields`, `label_contains`, `limit`, `site_id` | List pages, templates, and layouts in the YOOtheme Pro builder (template_id, label, type, element count, frontend_url, builder_url per row). CALL THIS FIRST to discover template IDs before page_get_layout / element_list / page_get_schema. Paginates: up to `limit` rows (default 50) plus `total` and a `next_cursor` (pass it back as `cursor`) when more remain. Filter with `label_contains`. Slim rows with `fields:["id","label"]`. Operates on the default site unless site_id is provided. |
917
- | `yootheme_builder_pages_resolve` | read+idempotent | `site_id`, `url` | Resolve a public page/article URL to the template_id that renders it — paste a URL, get a layout-addressable id in one call. Returns {template_id (page:{id}/article:{id}), post_id, type, frontend_url}. 404s with a hint for THEME-template URLs (use pages_list instead). page_get_layout / page_get_schema also accept a `url` param directly. Default site unless site_id given. |
1110
+ | `yootheme_builder_pages_list` | read+idempotent | `cursor`, `fields`, `label_contains`, `limit`, `max_chars`, `site_id` | List pages, templates, and layouts in the YOOtheme Pro builder (template_id, label, type, element count, frontend_url, builder_url per row). CALL THIS FIRST to discover template IDs before page_get_layout / element_list / page_get_schema. Paginates: up to `limit` rows (default 50) plus `total` and a `next_cursor` (pass it back as `cursor`) when more remain. Filter with `label_contains`. Slim rows with `fields:["id","label"]`; bound output with `max_chars`. Operates on the default site unless site_id is provided. |
1111
+ | `yootheme_builder_pages_resolve` | read+idempotent | `site_id`, `url` | Resolve a public page/article URL to the template_id that renders it — paste a URL, get a layout-addressable id in one call. Returns {template_id (page:{id}/article:{id}), post_id, type, frontend_url}. 404s with a hint for THEME-template URLs (use pages_list instead). page_get_layout / page_get_schema also accept a `url` param directly. Operates on the default site unless site_id is provided. |
1112
+ | `yootheme_builder_rename_source` | idempotent | `etag`, `field_map`, `from`, `site_id`, `source_map`, `template_id`, `to` | Template-wide RENAME of a source / type / field name across EVERY binding in a template, in ONE ETag-locked write (not a whole-layout page_save) — preserving each binding's arguments, props and field_mappings. Use after a taxonomy/CPT rename (faq→help) breaks every bound layout. Pass `from`/`to` for one source, and/or `source_map`/`field_map` to rename a relation + its field tokens together; the dotted "<source>.<relation>" form is rewritten segment-by-segment. Returns {replaced_count, changed_paths, new_etag}. ETag req. Operates on the default site unless site_id is provided. |
1113
+ | `yootheme_builder_render_preview` | read+idempotent | `site_id`, `template_id`, `url` | Render-check a saved template over the authenticated channel — does it actually render, with how many items, or is it blank? Address by `template_id` (from pages_list) OR `url` (a public page URL, resolved for you). Returns {rendered, item_count, empty, error?, cache_purge_hint}. Use AFTER a page_save / element_bind_source to confirm the live page is not silently empty (a bad binding "saves" then renders blank); the swallowed YOOtheme render error is surfaced in `error`. Read-only — renders without persisting. Operates on the default site unless site_id is provided. |
918
1114
  | `yootheme_builder_scaffold_section` | mutating | `columns`, `etag`, `site_id`, `template_id` | Create a VALID section → row → column hull in ONE atomic call and return the column JSON-Pointer path(s) to drop content into. This is the EASIEST correct way to start a new layout block: YOOtheme content must live in section → row → column, and adding content anywhere else (root, bare section, bare row) is rejected. Pass `columns` (1-12, default 1) for a multi-column row. Requires ETag. Operates on the default site unless site_id is provided. |
919
1115
  | `yootheme_builder_sites_list` | read+idempotent | `site_id` | List all sites configured in this multi-site MCP installation. Returns site_id + URL + platform (wordpress\|joomla) + default flag per row. CALL THIS FIRST when working with a fresh MCP connection to discover available site_ids before targeting one with any other tool. Read-only, no REST calls. Keywords: list sites, list connections, list installations, discover site_id, available sites, configured sites, what sites exist, multi-site index. (site_id is accepted for schema-uniformity but ignored by this tool.) |
920
1116
  | `yootheme_builder_sites_test` | read+idempotent | `site_id` | Verify connectivity to ONE site: probes /health (no auth) + /etag (auth) in parallel; returns plugin_reachable + bearer_valid. `site_id` is REQUIRED. Use sites_list to find IDs. |
921
- | `yootheme_builder_sources_list` | read+idempotent | `fields`, `site_id` | List all data sources, feeds, and dynamic content sources available in the YOOtheme Pro builder. Returns name + label + origin (apimapper / wordpress / joomla / essentials) per source. CALL THIS BEFORE binding any element to a data source. Then bind directly with yootheme_builder_element_bind_source (a first-class tool in tools/list). Keywords: list sources, list data sources, list feeds, list bindings, dynamic content, available data, what sources exist. Pass `fields[]` to narrow each row. Operates on the default site unless site_id is provided. |
1117
+ | `yootheme_builder_source_get_schema` | read+idempotent | `max_chars`, `name`, `site_id` | Introspect ONE data source: its query methods + arguments + RELATIONS (e.g. Term→Posts: categoryFaqs.taxonomyCategoryFaq field "faq") + a provides_archive_context flag (id:0 = current archive term, auto-scoped). CALL BEFORE binding on an archive/category template turns a ~25-call code-dive into one. Keywords: source schema, query methods, relations, Term to Posts, current term, archive context, taxonomy binding. Get `name` from yootheme_builder_sources_list. Operates on the default site unless site_id is provided. |
1118
+ | `yootheme_builder_sources_list` | read+idempotent | `cursor`, `fields`, `group`, `kind`, `limit`, `max_chars`, `name_contains`, `site_id` | List all data sources, feeds, and dynamic content sources available in the YOOtheme Pro builder. Returns name + label + origin (apimapper / wordpress / joomla / essentials) per source. CALL THIS BEFORE binding any element to a data source. Then bind directly with yootheme_builder_element_bind_source. Keywords: list sources, list feeds, list bindings, dynamic content, what sources exist. Paginates (`limit`/`cursor`/`total`); scope with `group`/`kind`/`name_contains`; slim with `fields[]`; bound output with `max_chars`. Operates on the default site unless site_id is provided. |
1119
+ | `yootheme_builder_template_set_type` | idempotent | `etag`, `site_id`, `template_id`, `type` | Reassign which archive/single a YOOtheme THEME template applies to — set its `type` condition (the value pages_list shows) in ONE ETag-locked write. Use after a taxonomy/CPT rename orphans a template (e.g. re-type "taxonomy-category_faq" → "taxonomy-category_help", "single-gloeckle_faq" → "single-gloeckle_help"). Returns {type, previous_type, new_etag} — previous_type is the read of the prior assignment, folded in. THEME templates only: a page:/article: layout is refused (422). ETag req. Operates on the default site unless site_id is provided. |
922
1120
  | `yootheme_builder_template_summary` | read+idempotent | `site_id`, `template_id` | Token-efficient template overview: element counts by type, binding count, max nesting depth, and named landmark sections — computed server-side in one call. Use this to grasp a large template before pulling element_list or page_get_layout. Example: yootheme_builder_template_summary({ template_id: "default" }). Operates on the default site unless site_id is provided. |
923
1121
  | `yootheme_builder_use_site` | idempotent | `probe`, `site_id` | Switch the ACTIVE site for this multi-site session. After this call, every tool that omits `site_id` targets the site you picked here. NOTE: this default is PROCESS-WIDE — concurrent clients sharing this MCP server inherit it; pass `site_id` per call for isolation between parallel agents. Runs a /health + /etag probe by default; pass `probe: false` to switch offline. A degraded site is a soft warning (the switch still happens). `site_id` is REQUIRED. Keywords: switch/change/set active/target site, select installation, use profile. Use yootheme_builder_sites_list first to find IDs. |
924
1122