@sweepypanda/wp-elementor-mcp 1.7.1

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 (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +381 -0
  3. package/client-config.json +13 -0
  4. package/dist/elementor-handler.d.ts +51 -0
  5. package/dist/elementor-handler.d.ts.map +1 -0
  6. package/dist/elementor-handler.js +358 -0
  7. package/dist/elementor-handler.js.map +1 -0
  8. package/dist/helpers.d.ts +24 -0
  9. package/dist/helpers.d.ts.map +1 -0
  10. package/dist/helpers.js +107 -0
  11. package/dist/helpers.js.map +1 -0
  12. package/dist/index-backup.d.ts +3 -0
  13. package/dist/index-backup.d.ts.map +1 -0
  14. package/dist/index-backup.js +3752 -0
  15. package/dist/index-backup.js.map +1 -0
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +187 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/server-config.d.ts +80 -0
  21. package/dist/server-config.d.ts.map +1 -0
  22. package/dist/server-config.js +137 -0
  23. package/dist/server-config.js.map +1 -0
  24. package/dist/tool-handlers.d.ts +44 -0
  25. package/dist/tool-handlers.d.ts.map +1 -0
  26. package/dist/tool-handlers.js +1682 -0
  27. package/dist/tool-handlers.js.map +1 -0
  28. package/dist/tool-schemas.d.ts +859 -0
  29. package/dist/tool-schemas.d.ts.map +1 -0
  30. package/dist/tool-schemas.js +870 -0
  31. package/dist/tool-schemas.js.map +1 -0
  32. package/dist/types.d.ts +19 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +2 -0
  35. package/dist/types.js.map +1 -0
  36. package/dist/utils.d.ts +10 -0
  37. package/dist/utils.d.ts.map +1 -0
  38. package/dist/utils.js +142 -0
  39. package/dist/utils.js.map +1 -0
  40. package/dist/wordpress-client.d.ts +21 -0
  41. package/dist/wordpress-client.d.ts.map +1 -0
  42. package/dist/wordpress-client.js +151 -0
  43. package/dist/wordpress-client.js.map +1 -0
  44. package/package.json +74 -0
@@ -0,0 +1,870 @@
1
+ export const toolSchemas = {
2
+ // WordPress Basic Operations
3
+ get_page: {
4
+ name: 'get_page',
5
+ description: 'Get a specific WordPress page by ID',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ id: {
10
+ type: 'number',
11
+ description: 'Page ID',
12
+ },
13
+ },
14
+ required: ['id'],
15
+ },
16
+ },
17
+ // Elementor Smart Tools
18
+ get_elementor_data_smart: {
19
+ name: 'get_elementor_data_smart',
20
+ description: 'Get Elementor data with intelligent chunking for large pages - automatically handles nested structures and token limits',
21
+ inputSchema: {
22
+ type: 'object',
23
+ properties: {
24
+ post_id: {
25
+ type: 'number',
26
+ description: 'Post/Page ID',
27
+ },
28
+ element_index: {
29
+ type: 'number',
30
+ description: 'Zero-based index of top-level element to retrieve (default: 0)',
31
+ default: 0,
32
+ },
33
+ max_depth: {
34
+ type: 'number',
35
+ description: 'Maximum nesting depth to include (default: 2 - sections and columns only)',
36
+ default: 2,
37
+ },
38
+ include_widget_previews: {
39
+ type: 'boolean',
40
+ description: 'Include widget content previews (default: false)',
41
+ default: false,
42
+ },
43
+ },
44
+ required: ['post_id'],
45
+ },
46
+ },
47
+ get_elementor_structure_summary: {
48
+ name: 'get_elementor_structure_summary',
49
+ description: 'Get a compact summary of the page structure without heavy content to understand layout quickly',
50
+ inputSchema: {
51
+ type: 'object',
52
+ properties: {
53
+ post_id: {
54
+ type: 'number',
55
+ description: 'Post/Page ID',
56
+ },
57
+ max_depth: {
58
+ type: 'number',
59
+ description: 'Maximum depth to analyze (default: 4)',
60
+ default: 4,
61
+ },
62
+ },
63
+ required: ['post_id'],
64
+ },
65
+ },
66
+ // NEW: Temp file operations
67
+ get_elementor_data_to_file: {
68
+ name: 'get_elementor_data_to_file',
69
+ description: 'Get complete Elementor data for a page and write to temp file (avoids token limits)',
70
+ inputSchema: {
71
+ type: 'object',
72
+ properties: {
73
+ post_id: {
74
+ type: 'number',
75
+ description: 'Post/Page ID',
76
+ },
77
+ },
78
+ required: ['post_id'],
79
+ },
80
+ },
81
+ get_page_structure_to_file: {
82
+ name: 'get_page_structure_to_file',
83
+ description: 'Get simplified page structure and write to temp file (avoids token limits)',
84
+ inputSchema: {
85
+ type: 'object',
86
+ properties: {
87
+ post_id: {
88
+ type: 'number',
89
+ description: 'Post/Page ID',
90
+ },
91
+ include_settings: {
92
+ type: 'boolean',
93
+ description: 'Include basic settings for each element (default: false)',
94
+ default: false,
95
+ },
96
+ },
97
+ required: ['post_id'],
98
+ },
99
+ },
100
+ backup_elementor_data_to_file: {
101
+ name: 'backup_elementor_data_to_file',
102
+ description: 'Create backup of Elementor page data to temp file',
103
+ inputSchema: {
104
+ type: 'object',
105
+ properties: {
106
+ post_id: {
107
+ type: 'number',
108
+ description: 'Post/Page ID to backup',
109
+ },
110
+ backup_name: {
111
+ type: 'string',
112
+ description: 'Optional name for the backup',
113
+ },
114
+ },
115
+ required: ['post_id'],
116
+ },
117
+ },
118
+ // Original schemas (keeping existing ones)
119
+ get_elementor_data: {
120
+ name: 'get_elementor_data',
121
+ description: 'Get complete Elementor data for a page',
122
+ inputSchema: {
123
+ type: 'object',
124
+ properties: {
125
+ post_id: {
126
+ type: 'number',
127
+ description: 'Post/Page ID',
128
+ },
129
+ },
130
+ required: ['post_id'],
131
+ },
132
+ },
133
+ get_page_structure: {
134
+ name: 'get_page_structure',
135
+ description: 'Get a simplified overview of the page structure',
136
+ inputSchema: {
137
+ type: 'object',
138
+ properties: {
139
+ post_id: {
140
+ type: 'number',
141
+ description: 'Post/Page ID',
142
+ },
143
+ include_settings: {
144
+ type: 'boolean',
145
+ description: 'Include basic settings for each element (default: false)',
146
+ default: false,
147
+ },
148
+ },
149
+ required: ['post_id'],
150
+ },
151
+ },
152
+ backup_elementor_data: {
153
+ name: 'backup_elementor_data',
154
+ description: 'Create a backup of Elementor page data',
155
+ inputSchema: {
156
+ type: 'object',
157
+ properties: {
158
+ post_id: {
159
+ type: 'number',
160
+ description: 'Post/Page ID to backup',
161
+ },
162
+ backup_name: {
163
+ type: 'string',
164
+ description: 'Optional name for the backup',
165
+ },
166
+ },
167
+ required: ['post_id'],
168
+ },
169
+ },
170
+ // WordPress Basic Operations
171
+ get_posts: {
172
+ name: 'get_posts',
173
+ description: 'Get WordPress posts with filtering options',
174
+ inputSchema: {
175
+ type: 'object',
176
+ properties: {
177
+ per_page: {
178
+ type: 'number',
179
+ description: 'Number of posts to retrieve (default: 10)',
180
+ default: 10,
181
+ },
182
+ status: {
183
+ type: 'string',
184
+ description: 'Post status (default: publish)',
185
+ default: 'publish',
186
+ },
187
+ search: {
188
+ type: 'string',
189
+ description: 'Search term to filter posts',
190
+ },
191
+ },
192
+ },
193
+ },
194
+ get_post: {
195
+ name: 'get_post',
196
+ description: 'Get a specific WordPress post by ID',
197
+ inputSchema: {
198
+ type: 'object',
199
+ properties: {
200
+ id: {
201
+ type: 'number',
202
+ description: 'Post ID',
203
+ },
204
+ },
205
+ required: ['id'],
206
+ },
207
+ },
208
+ create_post: {
209
+ name: 'create_post',
210
+ description: 'Create a new WordPress post',
211
+ inputSchema: {
212
+ type: 'object',
213
+ properties: {
214
+ title: {
215
+ type: 'string',
216
+ description: 'Post title',
217
+ },
218
+ content: {
219
+ type: 'string',
220
+ description: 'Post content',
221
+ },
222
+ status: {
223
+ type: 'string',
224
+ description: 'Post status (default: draft)',
225
+ default: 'draft',
226
+ },
227
+ excerpt: {
228
+ type: 'string',
229
+ description: 'Post excerpt',
230
+ },
231
+ },
232
+ required: ['title', 'content'],
233
+ },
234
+ },
235
+ update_post: {
236
+ name: 'update_post',
237
+ description: 'Update an existing WordPress post',
238
+ inputSchema: {
239
+ type: 'object',
240
+ properties: {
241
+ id: {
242
+ type: 'number',
243
+ description: 'Post ID',
244
+ },
245
+ title: {
246
+ type: 'string',
247
+ description: 'Post title',
248
+ },
249
+ content: {
250
+ type: 'string',
251
+ description: 'Post content',
252
+ },
253
+ status: {
254
+ type: 'string',
255
+ description: 'Post status',
256
+ },
257
+ excerpt: {
258
+ type: 'string',
259
+ description: 'Post excerpt',
260
+ },
261
+ },
262
+ required: ['id'],
263
+ },
264
+ },
265
+ get_pages: {
266
+ name: 'get_pages',
267
+ description: 'Get WordPress pages with filtering options',
268
+ inputSchema: {
269
+ type: 'object',
270
+ properties: {
271
+ per_page: {
272
+ type: 'number',
273
+ description: 'Number of pages to retrieve (default: 10)',
274
+ default: 10,
275
+ },
276
+ status: {
277
+ type: 'string',
278
+ description: 'Page status (default: publish)',
279
+ default: 'publish',
280
+ },
281
+ },
282
+ },
283
+ },
284
+ list_all_content: {
285
+ name: 'list_all_content',
286
+ description: 'List all content (posts and pages) with Elementor status',
287
+ inputSchema: {
288
+ type: 'object',
289
+ properties: {
290
+ per_page: {
291
+ type: 'number',
292
+ description: 'Number of items per type to retrieve (default: 50)',
293
+ default: 50,
294
+ },
295
+ include_all_statuses: {
296
+ type: 'boolean',
297
+ description: 'Include all statuses including drafts and trash (default: false)',
298
+ default: false,
299
+ },
300
+ },
301
+ },
302
+ },
303
+ create_page: {
304
+ name: 'create_page',
305
+ description: 'Create a new WordPress page',
306
+ inputSchema: {
307
+ type: 'object',
308
+ properties: {
309
+ title: {
310
+ type: 'string',
311
+ description: 'Page title',
312
+ },
313
+ content: {
314
+ type: 'string',
315
+ description: 'Page content',
316
+ },
317
+ status: {
318
+ type: 'string',
319
+ description: 'Page status (default: draft)',
320
+ default: 'draft',
321
+ },
322
+ excerpt: {
323
+ type: 'string',
324
+ description: 'Page excerpt',
325
+ },
326
+ parent: {
327
+ type: 'number',
328
+ description: 'Parent page ID',
329
+ },
330
+ },
331
+ required: ['title', 'content'],
332
+ },
333
+ },
334
+ update_page: {
335
+ name: 'update_page',
336
+ description: 'Update an existing WordPress page',
337
+ inputSchema: {
338
+ type: 'object',
339
+ properties: {
340
+ id: {
341
+ type: 'number',
342
+ description: 'Page ID',
343
+ },
344
+ title: {
345
+ type: 'string',
346
+ description: 'Page title',
347
+ },
348
+ content: {
349
+ type: 'string',
350
+ description: 'Page content',
351
+ },
352
+ status: {
353
+ type: 'string',
354
+ description: 'Page status',
355
+ },
356
+ excerpt: {
357
+ type: 'string',
358
+ description: 'Page excerpt',
359
+ },
360
+ parent: {
361
+ type: 'number',
362
+ description: 'Parent page ID',
363
+ },
364
+ },
365
+ required: ['id'],
366
+ },
367
+ },
368
+ // Media Operations
369
+ get_media: {
370
+ name: 'get_media',
371
+ description: 'Get WordPress media files',
372
+ inputSchema: {
373
+ type: 'object',
374
+ properties: {
375
+ per_page: {
376
+ type: 'number',
377
+ description: 'Number of media items to retrieve (default: 10)',
378
+ default: 10,
379
+ },
380
+ media_type: {
381
+ type: 'string',
382
+ description: 'Media type filter (image, video, audio, etc.)',
383
+ },
384
+ },
385
+ },
386
+ },
387
+ upload_media: {
388
+ name: 'upload_media',
389
+ description: 'Upload media file to WordPress',
390
+ inputSchema: {
391
+ type: 'object',
392
+ properties: {
393
+ file_path: {
394
+ type: 'string',
395
+ description: 'Local file path to upload',
396
+ },
397
+ title: {
398
+ type: 'string',
399
+ description: 'Media title',
400
+ },
401
+ alt_text: {
402
+ type: 'string',
403
+ description: 'Alt text for images',
404
+ },
405
+ },
406
+ required: ['file_path'],
407
+ },
408
+ },
409
+ // Elementor Extended Operations
410
+ get_elementor_templates: {
411
+ name: 'get_elementor_templates',
412
+ description: 'Get Elementor templates',
413
+ inputSchema: {
414
+ type: 'object',
415
+ properties: {
416
+ per_page: {
417
+ type: 'number',
418
+ description: 'Number of templates to retrieve (default: 10)',
419
+ default: 10,
420
+ },
421
+ type: {
422
+ type: 'string',
423
+ description: 'Template type',
424
+ },
425
+ },
426
+ },
427
+ },
428
+ update_elementor_data: {
429
+ name: 'update_elementor_data',
430
+ description: 'Update Elementor data for a page/post',
431
+ inputSchema: {
432
+ type: 'object',
433
+ properties: {
434
+ post_id: {
435
+ type: 'number',
436
+ description: 'Post/Page ID',
437
+ },
438
+ elementor_data: {
439
+ type: 'string',
440
+ description: 'JSON string of Elementor data',
441
+ },
442
+ },
443
+ required: ['post_id', 'elementor_data'],
444
+ },
445
+ },
446
+ update_elementor_widget: {
447
+ name: 'update_elementor_widget',
448
+ description: 'Update a specific Elementor widget',
449
+ inputSchema: {
450
+ type: 'object',
451
+ properties: {
452
+ post_id: {
453
+ type: 'number',
454
+ description: 'Post/Page ID',
455
+ },
456
+ widget_id: {
457
+ type: 'string',
458
+ description: 'Widget ID',
459
+ },
460
+ widget_settings: {
461
+ type: 'object',
462
+ description: 'Widget settings to update',
463
+ },
464
+ widget_content: {
465
+ type: 'string',
466
+ description: 'Widget content to update',
467
+ },
468
+ },
469
+ required: ['post_id', 'widget_id'],
470
+ },
471
+ },
472
+ get_elementor_widget: {
473
+ name: 'get_elementor_widget',
474
+ description: 'Get a specific Elementor widget',
475
+ inputSchema: {
476
+ type: 'object',
477
+ properties: {
478
+ post_id: {
479
+ type: 'number',
480
+ description: 'Post/Page ID',
481
+ },
482
+ widget_id: {
483
+ type: 'string',
484
+ description: 'Widget ID',
485
+ },
486
+ },
487
+ required: ['post_id', 'widget_id'],
488
+ },
489
+ },
490
+ get_elementor_elements: {
491
+ name: 'get_elementor_elements',
492
+ description: 'Get all Elementor elements from a page',
493
+ inputSchema: {
494
+ type: 'object',
495
+ properties: {
496
+ post_id: {
497
+ type: 'number',
498
+ description: 'Post/Page ID',
499
+ },
500
+ include_content: {
501
+ type: 'boolean',
502
+ description: 'Include content previews (default: false)',
503
+ default: false,
504
+ },
505
+ },
506
+ required: ['post_id'],
507
+ },
508
+ },
509
+ update_elementor_section: {
510
+ name: 'update_elementor_section',
511
+ description: 'Update multiple widgets in an Elementor section',
512
+ inputSchema: {
513
+ type: 'object',
514
+ properties: {
515
+ post_id: {
516
+ type: 'number',
517
+ description: 'Post/Page ID',
518
+ },
519
+ section_id: {
520
+ type: 'string',
521
+ description: 'Section ID',
522
+ },
523
+ widgets_updates: {
524
+ type: 'array',
525
+ description: 'Array of widget updates',
526
+ items: {
527
+ type: 'object',
528
+ properties: {
529
+ widget_id: {
530
+ type: 'string',
531
+ description: 'Widget ID',
532
+ },
533
+ widget_settings: {
534
+ type: 'object',
535
+ description: 'Widget settings',
536
+ },
537
+ widget_content: {
538
+ type: 'string',
539
+ description: 'Widget content',
540
+ },
541
+ },
542
+ required: ['widget_id'],
543
+ },
544
+ },
545
+ },
546
+ required: ['post_id', 'section_id', 'widgets_updates'],
547
+ },
548
+ },
549
+ // Section and Container Creation
550
+ create_elementor_section: {
551
+ name: 'create_elementor_section',
552
+ description: 'Create a new Elementor section',
553
+ inputSchema: {
554
+ type: 'object',
555
+ properties: {
556
+ post_id: {
557
+ type: 'number',
558
+ description: 'Post/Page ID',
559
+ },
560
+ position: {
561
+ type: 'number',
562
+ description: 'Position to insert section',
563
+ },
564
+ columns: {
565
+ type: 'number',
566
+ description: 'Number of columns (default: 1)',
567
+ default: 1,
568
+ },
569
+ section_settings: {
570
+ type: 'object',
571
+ description: 'Section settings',
572
+ },
573
+ },
574
+ required: ['post_id'],
575
+ },
576
+ },
577
+ create_elementor_container: {
578
+ name: 'create_elementor_container',
579
+ description: 'Create a new Elementor container',
580
+ inputSchema: {
581
+ type: 'object',
582
+ properties: {
583
+ post_id: {
584
+ type: 'number',
585
+ description: 'Post/Page ID',
586
+ },
587
+ position: {
588
+ type: 'number',
589
+ description: 'Position to insert container',
590
+ },
591
+ container_settings: {
592
+ type: 'object',
593
+ description: 'Container settings',
594
+ },
595
+ },
596
+ required: ['post_id'],
597
+ },
598
+ },
599
+ add_column_to_section: {
600
+ name: 'add_column_to_section',
601
+ description: 'Add columns to an existing Elementor section',
602
+ inputSchema: {
603
+ type: 'object',
604
+ properties: {
605
+ post_id: {
606
+ type: 'number',
607
+ description: 'Post/Page ID',
608
+ },
609
+ section_id: {
610
+ type: 'string',
611
+ description: 'Section ID',
612
+ },
613
+ columns_to_add: {
614
+ type: 'number',
615
+ description: 'Number of columns to add (default: 1)',
616
+ default: 1,
617
+ },
618
+ },
619
+ required: ['post_id', 'section_id'],
620
+ },
621
+ },
622
+ duplicate_section: {
623
+ name: 'duplicate_section',
624
+ description: 'Duplicate an existing Elementor section',
625
+ inputSchema: {
626
+ type: 'object',
627
+ properties: {
628
+ post_id: {
629
+ type: 'number',
630
+ description: 'Post/Page ID',
631
+ },
632
+ section_id: {
633
+ type: 'string',
634
+ description: 'Section ID to duplicate',
635
+ },
636
+ position: {
637
+ type: 'number',
638
+ description: 'Position to insert duplicated section',
639
+ },
640
+ },
641
+ required: ['post_id', 'section_id'],
642
+ },
643
+ },
644
+ // Widget Addition Tools
645
+ add_widget_to_section: {
646
+ name: 'add_widget_to_section',
647
+ description: 'Add a widget to an Elementor section or column',
648
+ inputSchema: {
649
+ type: 'object',
650
+ properties: {
651
+ post_id: {
652
+ type: 'number',
653
+ description: 'Post/Page ID',
654
+ },
655
+ widget_type: {
656
+ type: 'string',
657
+ description: 'Widget type (e.g., heading, text-editor, image)',
658
+ },
659
+ section_id: {
660
+ type: 'string',
661
+ description: 'Section ID',
662
+ },
663
+ column_id: {
664
+ type: 'string',
665
+ description: 'Column ID (optional, uses first column if not specified)',
666
+ },
667
+ position: {
668
+ type: 'number',
669
+ description: 'Position within column',
670
+ },
671
+ widget_settings: {
672
+ type: 'object',
673
+ description: 'Widget settings',
674
+ },
675
+ },
676
+ required: ['post_id', 'widget_type'],
677
+ },
678
+ },
679
+ insert_widget_at_position: {
680
+ name: 'insert_widget_at_position',
681
+ description: 'Insert a widget at a specific position relative to another element',
682
+ inputSchema: {
683
+ type: 'object',
684
+ properties: {
685
+ post_id: {
686
+ type: 'number',
687
+ description: 'Post/Page ID',
688
+ },
689
+ widget_type: {
690
+ type: 'string',
691
+ description: 'Widget type',
692
+ },
693
+ target_element_id: {
694
+ type: 'string',
695
+ description: 'Target element ID for positioning',
696
+ },
697
+ insert_position: {
698
+ type: 'string',
699
+ description: 'Position relative to target (before, after, inside)',
700
+ default: 'after',
701
+ },
702
+ widget_settings: {
703
+ type: 'object',
704
+ description: 'Widget settings',
705
+ },
706
+ },
707
+ required: ['post_id', 'widget_type', 'target_element_id'],
708
+ },
709
+ },
710
+ clone_widget: {
711
+ name: 'clone_widget',
712
+ description: 'Clone an existing widget',
713
+ inputSchema: {
714
+ type: 'object',
715
+ properties: {
716
+ post_id: {
717
+ type: 'number',
718
+ description: 'Post/Page ID',
719
+ },
720
+ widget_id: {
721
+ type: 'string',
722
+ description: 'Widget ID to clone',
723
+ },
724
+ target_element_id: {
725
+ type: 'string',
726
+ description: 'Target element ID for positioning cloned widget',
727
+ },
728
+ insert_position: {
729
+ type: 'string',
730
+ description: 'Position relative to target (before, after, inside)',
731
+ default: 'after',
732
+ },
733
+ },
734
+ required: ['post_id', 'widget_id'],
735
+ },
736
+ },
737
+ move_widget: {
738
+ name: 'move_widget',
739
+ description: 'Move a widget to a different location',
740
+ inputSchema: {
741
+ type: 'object',
742
+ properties: {
743
+ post_id: {
744
+ type: 'number',
745
+ description: 'Post/Page ID',
746
+ },
747
+ widget_id: {
748
+ type: 'string',
749
+ description: 'Widget ID to move',
750
+ },
751
+ target_section_id: {
752
+ type: 'string',
753
+ description: 'Target section ID',
754
+ },
755
+ target_column_id: {
756
+ type: 'string',
757
+ description: 'Target column ID',
758
+ },
759
+ position: {
760
+ type: 'number',
761
+ description: 'Position within target',
762
+ },
763
+ },
764
+ required: ['post_id', 'widget_id'],
765
+ },
766
+ },
767
+ // Element Management
768
+ delete_elementor_element: {
769
+ name: 'delete_elementor_element',
770
+ description: 'Delete an Elementor element (section, column, or widget)',
771
+ inputSchema: {
772
+ type: 'object',
773
+ properties: {
774
+ post_id: {
775
+ type: 'number',
776
+ description: 'Post/Page ID',
777
+ },
778
+ element_id: {
779
+ type: 'string',
780
+ description: 'Element ID to delete',
781
+ },
782
+ },
783
+ required: ['post_id', 'element_id'],
784
+ },
785
+ },
786
+ reorder_elements: {
787
+ name: 'reorder_elements',
788
+ description: 'Reorder elements within a container',
789
+ inputSchema: {
790
+ type: 'object',
791
+ properties: {
792
+ post_id: {
793
+ type: 'number',
794
+ description: 'Post/Page ID',
795
+ },
796
+ container_id: {
797
+ type: 'string',
798
+ description: 'Container ID',
799
+ },
800
+ element_ids: {
801
+ type: 'array',
802
+ description: 'Array of element IDs in desired order',
803
+ items: {
804
+ type: 'string',
805
+ },
806
+ },
807
+ },
808
+ required: ['post_id', 'container_id', 'element_ids'],
809
+ },
810
+ },
811
+ copy_element_settings: {
812
+ name: 'copy_element_settings',
813
+ description: 'Copy settings from one element to another',
814
+ inputSchema: {
815
+ type: 'object',
816
+ properties: {
817
+ post_id: {
818
+ type: 'number',
819
+ description: 'Post/Page ID',
820
+ },
821
+ source_element_id: {
822
+ type: 'string',
823
+ description: 'Source element ID',
824
+ },
825
+ target_element_id: {
826
+ type: 'string',
827
+ description: 'Target element ID',
828
+ },
829
+ settings_to_copy: {
830
+ type: 'array',
831
+ description: 'Specific settings to copy (default: all)',
832
+ items: {
833
+ type: 'string',
834
+ },
835
+ },
836
+ },
837
+ required: ['post_id', 'source_element_id', 'target_element_id'],
838
+ },
839
+ },
840
+ // Page Structure Tools
841
+ rebuild_page_structure: {
842
+ name: 'rebuild_page_structure',
843
+ description: 'Rebuild page structure (placeholder - not yet implemented)',
844
+ inputSchema: {
845
+ type: 'object',
846
+ properties: {
847
+ post_id: {
848
+ type: 'number',
849
+ description: 'Post/Page ID',
850
+ },
851
+ },
852
+ required: ['post_id'],
853
+ },
854
+ },
855
+ validate_elementor_data: {
856
+ name: 'validate_elementor_data',
857
+ description: 'Validate Elementor data structure',
858
+ inputSchema: {
859
+ type: 'object',
860
+ properties: {
861
+ post_id: {
862
+ type: 'number',
863
+ description: 'Post/Page ID',
864
+ },
865
+ },
866
+ required: ['post_id'],
867
+ },
868
+ }
869
+ };
870
+ //# sourceMappingURL=tool-schemas.js.map