@noleemits/vision-builder-control-mcp 4.98.0 → 4.105.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 (2) hide show
  1. package/index.js +38 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -111,7 +111,7 @@ process.on('SIGINT', () => {
111
111
  // CONFIG
112
112
  // ================================================================
113
113
 
114
- const VERSION = '4.98.0';
114
+ const VERSION = '4.105.0';
115
115
  const MIN_PLUGIN_VERSION = '4.13.0'; // Minimum WP plugin version required by this MCP server
116
116
 
117
117
  // ================================================================
@@ -3957,6 +3957,22 @@ function getToolDefinitions() {
3957
3957
  required: ['page_id']
3958
3958
  }
3959
3959
  },
3960
+ {
3961
+ name: 'set_page_template',
3962
+ description: 'Set the WP page template for a post. Theme-agnostic solution for full-bleed ' +
3963
+ 'landing pages — use "elementor_canvas" to kill theme chrome on any modern WP/Elementor ' +
3964
+ 'site. Other slugs: "elementor_header_footer" (Elementor body + theme header/footer), ' +
3965
+ '"default" (theme default), "100-width.php" (Avada full-width), ' +
3966
+ '"blank-template.php" (Divi blank). Returns previous and new template slug.',
3967
+ inputSchema: {
3968
+ type: 'object',
3969
+ required: ['post_id', 'template'],
3970
+ properties: {
3971
+ post_id: { type: 'integer', description: 'Post or page ID.' },
3972
+ template: { type: 'string', description: 'Template slug, e.g. "elementor_canvas".' },
3973
+ },
3974
+ },
3975
+ },
3960
3976
  // ── Class Registry ──
3961
3977
  {
3962
3978
  name: 'list_classes',
@@ -4465,6 +4481,20 @@ async function handleToolCall(name, args) {
4465
4481
  if (item.meta.post_placement_instructions) {
4466
4482
  out += ` NOTE: ${item.meta.post_placement_instructions}\n`;
4467
4483
  }
4484
+ const dp = item.meta?.design_properties;
4485
+ if (dp) {
4486
+ const tags = [
4487
+ dp.background,
4488
+ dp.columns ? `${dp.columns}-col` : null,
4489
+ dp.has_image ? 'has-image' : null,
4490
+ dp.has_cta ? `cta:${dp.has_cta}` : null,
4491
+ dp.theme,
4492
+ dp.tone,
4493
+ ].filter(Boolean);
4494
+ if (tags.length) out += ` Tags: ${tags.join(' | ')}\n`;
4495
+ if (dp.best_for) out += ` Best for: ${dp.best_for}\n`;
4496
+ if (dp.not_for) out += ` Not for: ${dp.not_for}\n`;
4497
+ }
4468
4498
  });
4469
4499
  out += '\n';
4470
4500
  });
@@ -7656,6 +7686,13 @@ async function handleToolCall(name, args) {
7656
7686
  return ok(`Front page set to "${r.front_page_title}" (ID: ${r.front_page_id})${r.blog_page_id ? `\nBlog page: ${r.blog_page_id}` : ''}`);
7657
7687
  }
7658
7688
 
7689
+ case 'set_page_template': {
7690
+ const r = await apiCall(`/pages/${args.post_id}/template`, 'POST', {
7691
+ template: args.template,
7692
+ });
7693
+ return ok(`Page ${r.post_id} template: ${r.previous_template} → ${r.template}`);
7694
+ }
7695
+
7659
7696
  case 'list_class_snapshots': {
7660
7697
  const r = await apiCall('/class-snapshots');
7661
7698
  const snaps = r.snapshots || [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noleemits/vision-builder-control-mcp",
3
- "version": "4.98.0",
3
+ "version": "4.105.0",
4
4
  "description": "Vision Builder Control MCP server - design token-driven page builder tools for WordPress/Elementor websites",
5
5
  "type": "module",
6
6
  "main": "index.js",