@superdoc-dev/sdk 1.0.0-alpha.47 → 1.0.0-alpha.48

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.
@@ -18,13 +18,16 @@
18
18
  "description": "The action to perform. One of: html, info, markdown, text."
19
19
  },
20
20
  "doc": {
21
- "type": "string"
21
+ "type": "string",
22
+ "description": "Document path. Optional when a session is already open."
22
23
  },
23
24
  "sessionId": {
24
- "type": "string"
25
+ "type": "string",
26
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
25
27
  },
26
28
  "unflattenLists": {
27
- "type": "boolean"
29
+ "type": "boolean",
30
+ "description": "When true, flattens nested list structures in output. Default: false."
28
31
  }
29
32
  },
30
33
  "required": [
@@ -51,26 +54,28 @@
51
54
  "description": "The action to perform. One of: delete, insert, redo, replace, undo."
52
55
  },
53
56
  "doc": {
54
- "type": "string"
57
+ "type": "string",
58
+ "description": "Document path. Optional when a session is already open."
55
59
  },
56
60
  "sessionId": {
57
- "type": "string"
61
+ "type": "string",
62
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
58
63
  },
59
64
  "force": {
60
- "type": "boolean"
61
- },
62
- "expectedRevision": {
63
- "type": "number"
65
+ "type": "boolean",
66
+ "description": "Bypass confirmation checks."
64
67
  },
65
68
  "changeMode": {
66
69
  "type": "string",
67
70
  "enum": [
68
71
  "direct",
69
72
  "tracked"
70
- ]
73
+ ],
74
+ "description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
71
75
  },
72
76
  "dryRun": {
73
- "type": "boolean"
77
+ "type": "boolean",
78
+ "description": "Preview the result without applying changes."
74
79
  },
75
80
  "target": {
76
81
  "oneOf": [
@@ -136,13 +141,16 @@
136
141
  "nodeId"
137
142
  ]
138
143
  }
139
- ]
144
+ ],
145
+ "description": "Target address object. Use 'ref' instead if you have a search handle. Format: {kind:'text', blockId, range:{start,end}} or {kind:'block', nodeType, nodeId}."
140
146
  },
141
147
  "value": {
142
- "type": "string"
148
+ "type": "string",
149
+ "description": "Text content to insert."
143
150
  },
144
151
  "type": {
145
152
  "type": "string",
153
+ "description": "Content format: 'text' (default), 'markdown', or 'html'.",
146
154
  "enum": [
147
155
  "text",
148
156
  "markdown",
@@ -162,10 +170,12 @@
162
170
  "properties": {}
163
171
  }
164
172
  }
165
- ]
173
+ ],
174
+ "description": "Document fragment to insert (structured content)."
166
175
  },
167
176
  "placement": {
168
177
  "type": "string",
178
+ "description": "Where to place content relative to target: 'before', 'after', 'insideStart', or 'insideEnd'.",
169
179
  "enum": [
170
180
  "before",
171
181
  "after",
@@ -182,32 +192,40 @@
182
192
  "allow"
183
193
  ]
184
194
  }
185
- }
195
+ },
196
+ "description": "Controls nesting behavior. tables: 'allow' permits inserting tables inside other tables."
186
197
  },
187
198
  "blockId": {
188
- "type": "string"
199
+ "type": "string",
200
+ "description": "Block ID of the target paragraph."
189
201
  },
190
202
  "offset": {
191
- "type": "number"
203
+ "type": "number",
204
+ "description": "Character offset within the block for insertion."
192
205
  },
193
206
  "text": {
194
- "type": "string"
207
+ "type": "string",
208
+ "description": "Replacement text content."
195
209
  },
196
210
  "ref": {
197
- "type": "string"
211
+ "type": "string",
212
+ "description": "Handle ref string from a superdoc_search result. Pass the handle.ref value directly (e.g. 'text:eyJ...'). Preferred over 'target' for inline formatting."
198
213
  },
199
214
  "start": {
200
- "type": "number"
215
+ "type": "number",
216
+ "description": "Start offset within the block (character index)."
201
217
  },
202
218
  "end": {
203
- "type": "number"
219
+ "type": "number",
220
+ "description": "End offset within the block (character index)."
204
221
  },
205
222
  "behavior": {
206
223
  "type": "string",
207
224
  "enum": [
208
225
  "selection",
209
226
  "exact"
210
- ]
227
+ ],
228
+ "description": "Delete behavior: 'selection' (default) or 'exact'."
211
229
  }
212
230
  },
213
231
  "required": [
@@ -227,33 +245,36 @@
227
245
  "enum": [
228
246
  "inline",
229
247
  "set_alignment",
248
+ "set_direction",
230
249
  "set_indentation",
231
250
  "set_spacing",
232
251
  "set_style"
233
252
  ],
234
- "description": "The action to perform. One of: inline, set_alignment, set_indentation, set_spacing, set_style."
253
+ "description": "The action to perform. One of: inline, set_alignment, set_direction, set_indentation, set_spacing, set_style."
235
254
  },
236
255
  "doc": {
237
- "type": "string"
256
+ "type": "string",
257
+ "description": "Document path. Optional when a session is already open."
238
258
  },
239
259
  "sessionId": {
240
- "type": "string"
260
+ "type": "string",
261
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
241
262
  },
242
263
  "force": {
243
- "type": "boolean"
244
- },
245
- "expectedRevision": {
246
- "type": "number"
264
+ "type": "boolean",
265
+ "description": "Bypass confirmation checks."
247
266
  },
248
267
  "changeMode": {
249
268
  "type": "string",
250
269
  "enum": [
251
270
  "direct",
252
271
  "tracked"
253
- ]
272
+ ],
273
+ "description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
254
274
  },
255
275
  "dryRun": {
256
- "type": "boolean"
276
+ "type": "boolean",
277
+ "description": "Preview the result without applying changes."
257
278
  },
258
279
  "target": {
259
280
  "type": "object",
@@ -331,7 +352,8 @@
331
352
  "edge"
332
353
  ]
333
354
  }
334
- ]
355
+ ],
356
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
335
357
  },
336
358
  "end": {
337
359
  "oneOf": [
@@ -402,645 +424,297 @@
402
424
  "edge"
403
425
  ]
404
426
  }
405
- ]
427
+ ],
428
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
406
429
  }
407
430
  },
408
431
  "required": [
409
432
  "kind",
410
433
  "start",
411
434
  "end"
412
- ]
435
+ ],
436
+ "description": "Selection target: {kind:'selection', start:{kind:'text', blockId, offset}, end:{kind:'text', blockId, offset}}. Use 'ref' instead when you have a search result handle. Required for actions 'set_style', 'set_alignment', 'set_indentation', 'set_spacing', 'set_direction'."
413
437
  },
414
438
  "inline": {
415
439
  "type": "object",
416
440
  "properties": {
417
441
  "bold": {
418
- "oneOf": [
419
- {
420
- "type": "boolean"
421
- },
422
- {}
423
- ]
442
+ "type": "boolean"
424
443
  },
425
444
  "italic": {
426
- "oneOf": [
427
- {
428
- "type": "boolean"
429
- },
430
- {}
431
- ]
445
+ "type": "boolean"
432
446
  },
433
447
  "strike": {
434
- "oneOf": [
435
- {
436
- "type": "boolean"
437
- },
438
- {}
439
- ]
448
+ "type": "boolean"
440
449
  },
441
450
  "underline": {
442
451
  "oneOf": [
443
452
  {
444
453
  "type": "boolean"
445
454
  },
446
- {},
447
455
  {
448
456
  "type": "object",
449
457
  "properties": {
450
458
  "style": {
451
- "oneOf": [
452
- {
453
- "type": "string"
454
- },
455
- {}
456
- ]
459
+ "type": "string"
457
460
  },
458
461
  "color": {
459
- "oneOf": [
460
- {
461
- "type": "string"
462
- },
463
- {}
464
- ]
462
+ "type": "string"
465
463
  },
466
464
  "themeColor": {
467
- "oneOf": [
468
- {
469
- "type": "string"
470
- },
471
- {}
472
- ]
465
+ "type": "string"
473
466
  }
474
467
  }
475
468
  }
476
469
  ]
477
470
  },
478
471
  "highlight": {
479
- "oneOf": [
480
- {
481
- "type": "string"
482
- },
483
- {}
484
- ]
472
+ "type": "string"
485
473
  },
486
474
  "color": {
487
- "oneOf": [
488
- {
489
- "type": "string"
490
- },
491
- {}
492
- ]
475
+ "type": "string"
493
476
  },
494
477
  "fontSize": {
495
- "oneOf": [
496
- {
497
- "type": "number"
498
- },
499
- {}
500
- ]
478
+ "type": "number"
501
479
  },
502
480
  "fontFamily": {
503
- "oneOf": [
504
- {
505
- "type": "string"
506
- },
507
- {}
508
- ]
481
+ "type": "string"
509
482
  },
510
483
  "letterSpacing": {
511
- "oneOf": [
512
- {
513
- "type": "number"
514
- },
515
- {}
516
- ]
484
+ "type": "number"
517
485
  },
518
486
  "vertAlign": {
519
- "oneOf": [
520
- {
521
- "enum": [
522
- "superscript",
523
- "subscript",
524
- "baseline"
525
- ]
526
- },
527
- {}
487
+ "enum": [
488
+ "superscript",
489
+ "subscript",
490
+ "baseline"
528
491
  ]
529
492
  },
530
493
  "position": {
531
- "oneOf": [
532
- {
533
- "type": "number"
534
- },
535
- {}
536
- ]
494
+ "type": "number"
537
495
  },
538
496
  "dstrike": {
539
- "oneOf": [
540
- {
541
- "type": "boolean"
542
- },
543
- {}
544
- ]
497
+ "type": "boolean"
545
498
  },
546
499
  "smallCaps": {
547
- "oneOf": [
548
- {
549
- "type": "boolean"
550
- },
551
- {}
552
- ]
500
+ "type": "boolean"
553
501
  },
554
502
  "caps": {
555
- "oneOf": [
556
- {
557
- "type": "boolean"
558
- },
559
- {}
560
- ]
503
+ "type": "boolean"
561
504
  },
562
505
  "shading": {
563
- "oneOf": [
564
- {
565
- "type": "object",
566
- "properties": {
567
- "fill": {
568
- "oneOf": [
569
- {
570
- "type": "string"
571
- },
572
- {}
573
- ]
574
- },
575
- "color": {
576
- "oneOf": [
577
- {
578
- "type": "string"
579
- },
580
- {}
581
- ]
582
- },
583
- "val": {
584
- "oneOf": [
585
- {
586
- "type": "string"
587
- },
588
- {}
589
- ]
590
- }
591
- }
506
+ "type": "object",
507
+ "properties": {
508
+ "fill": {
509
+ "type": "string"
592
510
  },
593
- {}
594
- ]
511
+ "color": {
512
+ "type": "string"
513
+ },
514
+ "val": {
515
+ "type": "string"
516
+ }
517
+ }
595
518
  },
596
519
  "border": {
597
- "oneOf": [
598
- {
599
- "type": "object",
600
- "properties": {
601
- "val": {
602
- "oneOf": [
603
- {
604
- "type": "string"
605
- },
606
- {}
607
- ]
608
- },
609
- "sz": {
610
- "oneOf": [
611
- {
612
- "type": "number"
613
- },
614
- {}
615
- ]
616
- },
617
- "color": {
618
- "oneOf": [
619
- {
620
- "type": "string"
621
- },
622
- {}
623
- ]
624
- },
625
- "space": {
626
- "oneOf": [
627
- {
628
- "type": "number"
629
- },
630
- {}
631
- ]
632
- }
633
- }
520
+ "type": "object",
521
+ "properties": {
522
+ "val": {
523
+ "type": "string"
634
524
  },
635
- {}
636
- ]
525
+ "sz": {
526
+ "type": "number"
527
+ },
528
+ "color": {
529
+ "type": "string"
530
+ },
531
+ "space": {
532
+ "type": "number"
533
+ }
534
+ }
637
535
  },
638
536
  "outline": {
639
- "oneOf": [
640
- {
641
- "type": "boolean"
642
- },
643
- {}
644
- ]
537
+ "type": "boolean"
645
538
  },
646
539
  "shadow": {
647
- "oneOf": [
648
- {
649
- "type": "boolean"
650
- },
651
- {}
652
- ]
540
+ "type": "boolean"
653
541
  },
654
542
  "emboss": {
655
- "oneOf": [
656
- {
657
- "type": "boolean"
658
- },
659
- {}
660
- ]
543
+ "type": "boolean"
661
544
  },
662
545
  "imprint": {
663
- "oneOf": [
664
- {
665
- "type": "boolean"
666
- },
667
- {}
668
- ]
546
+ "type": "boolean"
669
547
  },
670
548
  "charScale": {
671
- "oneOf": [
672
- {
673
- "type": "number"
674
- },
675
- {}
676
- ]
549
+ "type": "number"
677
550
  },
678
551
  "kerning": {
679
- "oneOf": [
680
- {
681
- "type": "number"
682
- },
683
- {}
684
- ]
552
+ "type": "number"
685
553
  },
686
554
  "vanish": {
687
- "oneOf": [
688
- {
689
- "type": "boolean"
690
- },
691
- {}
692
- ]
555
+ "type": "boolean"
693
556
  },
694
557
  "webHidden": {
695
- "oneOf": [
696
- {
697
- "type": "boolean"
698
- },
699
- {}
700
- ]
558
+ "type": "boolean"
701
559
  },
702
560
  "specVanish": {
703
- "oneOf": [
704
- {
705
- "type": "boolean"
706
- },
707
- {}
708
- ]
561
+ "type": "boolean"
709
562
  },
710
563
  "rtl": {
711
- "oneOf": [
712
- {
713
- "type": "boolean"
714
- },
715
- {}
716
- ]
564
+ "type": "boolean"
717
565
  },
718
566
  "cs": {
719
- "oneOf": [
720
- {
721
- "type": "boolean"
722
- },
723
- {}
724
- ]
567
+ "type": "boolean"
725
568
  },
726
569
  "bCs": {
727
- "oneOf": [
728
- {
729
- "type": "boolean"
730
- },
731
- {}
732
- ]
570
+ "type": "boolean"
733
571
  },
734
572
  "iCs": {
735
- "oneOf": [
736
- {
573
+ "type": "boolean"
574
+ },
575
+ "eastAsianLayout": {
576
+ "type": "object",
577
+ "properties": {
578
+ "id": {
579
+ "type": "string"
580
+ },
581
+ "combine": {
737
582
  "type": "boolean"
738
583
  },
739
- {}
740
- ]
741
- },
742
- "eastAsianLayout": {
743
- "oneOf": [
744
- {
745
- "type": "object",
746
- "properties": {
747
- "id": {
748
- "oneOf": [
749
- {
750
- "type": "string"
751
- },
752
- {}
753
- ]
754
- },
755
- "combine": {
756
- "oneOf": [
757
- {
758
- "type": "boolean"
759
- },
760
- {}
761
- ]
762
- },
763
- "combineBrackets": {
764
- "oneOf": [
765
- {
766
- "type": "string"
767
- },
768
- {}
769
- ]
770
- },
771
- "vert": {
772
- "oneOf": [
773
- {
774
- "type": "boolean"
775
- },
776
- {}
777
- ]
778
- },
779
- "vertCompress": {
780
- "oneOf": [
781
- {
782
- "type": "boolean"
783
- },
784
- {}
785
- ]
786
- }
787
- }
788
- },
789
- {}
790
- ]
584
+ "combineBrackets": {
585
+ "type": "string"
586
+ },
587
+ "vert": {
588
+ "type": "boolean"
589
+ },
590
+ "vertCompress": {
591
+ "type": "boolean"
592
+ }
593
+ }
791
594
  },
792
595
  "em": {
793
- "oneOf": [
794
- {
795
- "type": "string"
796
- },
797
- {}
798
- ]
596
+ "type": "string"
799
597
  },
800
598
  "fitText": {
801
- "oneOf": [
802
- {
803
- "type": "object",
804
- "properties": {
805
- "val": {
806
- "oneOf": [
807
- {
808
- "type": "number"
809
- },
810
- {}
811
- ]
812
- },
813
- "id": {
814
- "oneOf": [
815
- {
816
- "type": "string"
817
- },
818
- {}
819
- ]
820
- }
821
- }
599
+ "type": "object",
600
+ "properties": {
601
+ "val": {
602
+ "type": "number"
822
603
  },
823
- {}
824
- ]
604
+ "id": {
605
+ "type": "string"
606
+ }
607
+ }
825
608
  },
826
609
  "snapToGrid": {
827
- "oneOf": [
828
- {
829
- "type": "boolean"
830
- },
831
- {}
832
- ]
610
+ "type": "boolean"
833
611
  },
834
612
  "lang": {
835
- "oneOf": [
836
- {
837
- "type": "object",
838
- "properties": {
839
- "val": {
840
- "oneOf": [
841
- {
842
- "type": "string"
843
- },
844
- {}
845
- ]
846
- },
847
- "eastAsia": {
848
- "oneOf": [
849
- {
850
- "type": "string"
851
- },
852
- {}
853
- ]
854
- },
855
- "bidi": {
856
- "oneOf": [
857
- {
858
- "type": "string"
859
- },
860
- {}
861
- ]
862
- }
863
- }
613
+ "type": "object",
614
+ "properties": {
615
+ "val": {
616
+ "type": "string"
864
617
  },
865
- {}
866
- ]
618
+ "eastAsia": {
619
+ "type": "string"
620
+ },
621
+ "bidi": {
622
+ "type": "string"
623
+ }
624
+ }
867
625
  },
868
626
  "oMath": {
869
- "oneOf": [
870
- {
871
- "type": "boolean"
872
- },
873
- {}
874
- ]
627
+ "type": "boolean"
875
628
  },
876
629
  "rStyle": {
877
- "oneOf": [
878
- {
879
- "type": "string"
880
- },
881
- {}
882
- ]
630
+ "type": "string"
883
631
  },
884
632
  "rFonts": {
885
- "oneOf": [
886
- {
887
- "type": "object",
888
- "properties": {
889
- "ascii": {
890
- "oneOf": [
891
- {
892
- "type": "string"
893
- },
894
- {}
895
- ]
896
- },
897
- "hAnsi": {
898
- "oneOf": [
899
- {
900
- "type": "string"
901
- },
902
- {}
903
- ]
904
- },
905
- "eastAsia": {
906
- "oneOf": [
907
- {
908
- "type": "string"
909
- },
910
- {}
911
- ]
912
- },
913
- "cs": {
914
- "oneOf": [
915
- {
916
- "type": "string"
917
- },
918
- {}
919
- ]
920
- },
921
- "asciiTheme": {
922
- "oneOf": [
923
- {
924
- "type": "string"
925
- },
926
- {}
927
- ]
928
- },
929
- "hAnsiTheme": {
930
- "oneOf": [
931
- {
932
- "type": "string"
933
- },
934
- {}
935
- ]
936
- },
937
- "eastAsiaTheme": {
938
- "oneOf": [
939
- {
940
- "type": "string"
941
- },
942
- {}
943
- ]
944
- },
945
- "csTheme": {
946
- "oneOf": [
947
- {
948
- "type": "string"
949
- },
950
- {}
951
- ]
952
- },
953
- "hint": {
954
- "oneOf": [
955
- {
956
- "type": "string"
957
- },
958
- {}
959
- ]
960
- }
961
- }
633
+ "type": "object",
634
+ "properties": {
635
+ "ascii": {
636
+ "type": "string"
962
637
  },
963
- {}
964
- ]
638
+ "hAnsi": {
639
+ "type": "string"
640
+ },
641
+ "eastAsia": {
642
+ "type": "string"
643
+ },
644
+ "cs": {
645
+ "type": "string"
646
+ },
647
+ "asciiTheme": {
648
+ "type": "string"
649
+ },
650
+ "hAnsiTheme": {
651
+ "type": "string"
652
+ },
653
+ "eastAsiaTheme": {
654
+ "type": "string"
655
+ },
656
+ "csTheme": {
657
+ "type": "string"
658
+ },
659
+ "hint": {
660
+ "type": "string"
661
+ }
662
+ }
965
663
  },
966
664
  "fontSizeCs": {
967
- "oneOf": [
968
- {
969
- "type": "number"
970
- },
971
- {}
972
- ]
665
+ "type": "number"
973
666
  },
974
667
  "ligatures": {
975
- "oneOf": [
976
- {
977
- "type": "string"
978
- },
979
- {}
980
- ]
668
+ "type": "string"
981
669
  },
982
670
  "numForm": {
983
- "oneOf": [
984
- {
985
- "type": "string"
986
- },
987
- {}
988
- ]
671
+ "type": "string"
989
672
  },
990
673
  "numSpacing": {
991
- "oneOf": [
992
- {
993
- "type": "string"
994
- },
995
- {}
996
- ]
674
+ "type": "string"
997
675
  },
998
676
  "stylisticSets": {
999
- "oneOf": [
1000
- {
1001
- "type": "array",
1002
- "items": {
1003
- "type": "object",
1004
- "properties": {
1005
- "id": {
1006
- "type": "number"
1007
- },
1008
- "val": {
1009
- "type": "boolean"
1010
- }
1011
- },
1012
- "required": [
1013
- "id"
1014
- ]
677
+ "type": "array",
678
+ "items": {
679
+ "type": "object",
680
+ "properties": {
681
+ "id": {
682
+ "type": "number"
683
+ },
684
+ "val": {
685
+ "type": "boolean"
1015
686
  }
1016
687
  },
1017
- {}
1018
- ]
688
+ "required": [
689
+ "id"
690
+ ]
691
+ }
1019
692
  },
1020
693
  "contextualAlternates": {
1021
- "oneOf": [
1022
- {
1023
- "type": "boolean"
1024
- },
1025
- {}
1026
- ]
694
+ "type": "boolean"
1027
695
  }
1028
- }
696
+ },
697
+ "description": "Inline formatting properties to apply. Set a property to apply it, use null to clear it. Example: {bold: true, italic: true} or {bold: null} to remove bold."
1029
698
  },
1030
699
  "ref": {
1031
- "type": "string"
700
+ "type": "string",
701
+ "description": "Handle ref string from a superdoc_search result. Pass the handle.ref value directly (e.g. 'text:eyJ...'). Preferred over 'target' for inline formatting."
1032
702
  },
1033
703
  "blockId": {
1034
- "type": "string"
704
+ "type": "string",
705
+ "description": "Block ID of the target paragraph."
1035
706
  },
1036
707
  "start": {
1037
- "type": "number"
708
+ "type": "number",
709
+ "description": "Start offset within the block (character index)."
1038
710
  },
1039
711
  "end": {
1040
- "type": "number"
712
+ "type": "number",
713
+ "description": "End offset within the block (character index)."
1041
714
  },
1042
715
  "styleId": {
1043
- "type": "string"
716
+ "type": "string",
717
+ "description": "Required for action 'set_style'."
1044
718
  },
1045
719
  "alignment": {
1046
720
  "type": "string",
@@ -1049,36 +723,60 @@
1049
723
  "center",
1050
724
  "right",
1051
725
  "justify"
1052
- ]
726
+ ],
727
+ "description": "Required for action 'set_alignment'."
1053
728
  },
1054
729
  "left": {
1055
- "type": "number"
730
+ "type": "number",
731
+ "description": "Left indentation in twips (1440 = 1 inch)."
1056
732
  },
1057
733
  "right": {
1058
- "type": "number"
734
+ "type": "number",
735
+ "description": "Right indentation in twips (1440 = 1 inch)."
1059
736
  },
1060
737
  "firstLine": {
1061
- "type": "number"
738
+ "type": "number",
739
+ "description": "First line indent in twips. Cannot be combined with hanging."
1062
740
  },
1063
741
  "hanging": {
1064
- "type": "number"
742
+ "type": "number",
743
+ "description": "Hanging indent in twips. Cannot be combined with firstLine."
1065
744
  },
1066
745
  "before": {
1067
- "type": "number"
746
+ "type": "number",
747
+ "description": "Space before paragraph in twips (20 twips = 1pt)."
1068
748
  },
1069
749
  "after": {
1070
- "type": "number"
750
+ "type": "number",
751
+ "description": "Space after paragraph in twips (20 twips = 1pt)."
1071
752
  },
1072
753
  "line": {
1073
- "type": "number"
754
+ "type": "number",
755
+ "description": "Line spacing value. Meaning depends on lineRule. Must be provided together with lineRule."
1074
756
  },
1075
757
  "lineRule": {
1076
758
  "type": "string",
759
+ "description": "Line spacing rule. Required when 'line' is set.",
1077
760
  "enum": [
1078
761
  "auto",
1079
762
  "exact",
1080
763
  "atLeast"
1081
764
  ]
765
+ },
766
+ "direction": {
767
+ "type": "string",
768
+ "enum": [
769
+ "ltr",
770
+ "rtl"
771
+ ],
772
+ "description": "Required for action 'set_direction'."
773
+ },
774
+ "alignmentPolicy": {
775
+ "type": "string",
776
+ "enum": [
777
+ "preserve",
778
+ "matchDirection"
779
+ ]
1082
780
  }
1083
781
  },
1084
782
  "required": [
@@ -1102,26 +800,28 @@
1102
800
  "description": "The action to perform. One of: heading, paragraph."
1103
801
  },
1104
802
  "doc": {
1105
- "type": "string"
803
+ "type": "string",
804
+ "description": "Document path. Optional when a session is already open."
1106
805
  },
1107
806
  "sessionId": {
1108
- "type": "string"
807
+ "type": "string",
808
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
1109
809
  },
1110
810
  "force": {
1111
- "type": "boolean"
1112
- },
1113
- "expectedRevision": {
1114
- "type": "number"
811
+ "type": "boolean",
812
+ "description": "Bypass confirmation checks."
1115
813
  },
1116
814
  "changeMode": {
1117
815
  "type": "string",
1118
816
  "enum": [
1119
817
  "direct",
1120
818
  "tracked"
1121
- ]
819
+ ],
820
+ "description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
1122
821
  },
1123
822
  "dryRun": {
1124
- "type": "boolean"
823
+ "type": "boolean",
824
+ "description": "Preview the result without applying changes."
1125
825
  },
1126
826
  "at": {
1127
827
  "oneOf": [
@@ -1235,16 +935,20 @@
1235
935
  "target"
1236
936
  ]
1237
937
  }
1238
- ]
938
+ ],
939
+ "description": "Position: {kind:'documentEnd'} to append, {kind:'documentStart'} to prepend, or {kind:'before'|'after', target:{kind:'block', nodeType:'...', nodeId:'...'}} for relative placement."
1239
940
  },
1240
941
  "text": {
1241
- "type": "string"
942
+ "type": "string",
943
+ "description": "Paragraph text content."
1242
944
  },
1243
945
  "input": {
1244
- "type": "object"
946
+ "type": "object",
947
+ "description": "Full paragraph input as JSON (alternative to individual text/at params)."
1245
948
  },
1246
949
  "level": {
1247
- "type": "number"
950
+ "type": "number",
951
+ "description": "Heading level (1-6). Required for action 'heading'."
1248
952
  }
1249
953
  },
1250
954
  "required": [
@@ -1273,26 +977,28 @@
1273
977
  "description": "The action to perform. One of: create, detach, indent, insert, outdent, set_level, set_type."
1274
978
  },
1275
979
  "doc": {
1276
- "type": "string"
980
+ "type": "string",
981
+ "description": "Document path. Optional when a session is already open."
1277
982
  },
1278
983
  "sessionId": {
1279
- "type": "string"
984
+ "type": "string",
985
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
1280
986
  },
1281
987
  "force": {
1282
- "type": "boolean"
1283
- },
1284
- "expectedRevision": {
1285
- "type": "number"
988
+ "type": "boolean",
989
+ "description": "Bypass confirmation checks."
1286
990
  },
1287
991
  "changeMode": {
1288
992
  "type": "string",
1289
993
  "enum": [
1290
994
  "direct",
1291
995
  "tracked"
1292
- ]
996
+ ],
997
+ "description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
1293
998
  },
1294
999
  "dryRun": {
1295
- "type": "boolean"
1000
+ "type": "boolean",
1001
+ "description": "Preview the result without applying changes."
1296
1002
  },
1297
1003
  "target": {
1298
1004
  "type": "object",
@@ -1313,26 +1019,32 @@
1313
1019
  "kind",
1314
1020
  "nodeType",
1315
1021
  "nodeId"
1316
- ]
1022
+ ],
1023
+ "description": "The target list item. For 'insert': the item to insert relative to. For 'create' with mode 'fromParagraphs': use nodeType 'paragraph' instead. Format: {kind:'block', nodeType:'listItem', nodeId:'<id>'}. Required for actions 'insert', 'detach', 'indent', 'outdent', 'set_level', 'set_type'."
1317
1024
  },
1318
1025
  "position": {
1319
1026
  "type": "string",
1027
+ "description": "Required. Insert position relative to target: 'before' or 'after'. Required for action 'insert'.",
1320
1028
  "enum": [
1321
1029
  "before",
1322
1030
  "after"
1323
1031
  ]
1324
1032
  },
1325
1033
  "text": {
1326
- "type": "string"
1034
+ "type": "string",
1035
+ "description": "Text content for the new list item."
1327
1036
  },
1328
1037
  "input": {
1329
- "type": "object"
1038
+ "type": "object",
1039
+ "description": "Operation input as JSON object."
1330
1040
  },
1331
1041
  "nodeId": {
1332
- "type": "string"
1042
+ "type": "string",
1043
+ "description": "Node ID of the target list item."
1333
1044
  },
1334
1045
  "mode": {
1335
1046
  "type": "string",
1047
+ "description": "Required. Creation mode: 'empty' creates a new empty list at the paragraph specified by 'at'; 'fromParagraphs' converts existing paragraph(s) specified by 'target' into list items. Required for action 'create'.",
1336
1048
  "enum": [
1337
1049
  "empty",
1338
1050
  "fromParagraphs"
@@ -1357,70 +1069,194 @@
1357
1069
  "kind",
1358
1070
  "nodeType",
1359
1071
  "nodeId"
1360
- ]
1072
+ ],
1073
+ "description": "Required when mode is 'empty'. The paragraph to create the list at. Format: {kind:'block', nodeType:'paragraph', nodeId:'<id>'}."
1361
1074
  },
1362
1075
  "kind": {
1363
1076
  "type": "string",
1077
+ "description": "List type: 'bullet' for bullet points, 'ordered' for numbered lists. Required for action 'set_type'.",
1364
1078
  "enum": [
1365
1079
  "ordered",
1366
1080
  "bullet"
1367
1081
  ]
1368
1082
  },
1369
1083
  "level": {
1370
- "type": "number"
1084
+ "type": "number",
1085
+ "description": "List nesting level (0-8). 0 is the top level. Required for action 'set_level'."
1371
1086
  },
1372
- "continuity": {
1087
+ "preset": {
1373
1088
  "type": "string",
1089
+ "description": "Predefined list style preset. Overrides 'kind' with a specific numbering or bullet format.",
1374
1090
  "enum": [
1375
- "preserve",
1376
- "none"
1091
+ "decimal",
1092
+ "decimalParenthesis",
1093
+ "lowerLetter",
1094
+ "upperLetter",
1095
+ "lowerRoman",
1096
+ "upperRoman",
1097
+ "disc",
1098
+ "circle",
1099
+ "square",
1100
+ "dash"
1377
1101
  ]
1378
- }
1379
- },
1380
- "required": [
1381
- "action"
1382
- ],
1383
- "additionalProperties": false
1384
- }
1385
- },
1386
- {
1387
- "name": "superdoc_comment",
1388
- "description": "Comment threads — create, edit, delete",
1389
- "input_schema": {
1390
- "type": "object",
1391
- "properties": {
1392
- "action": {
1393
- "type": "string",
1394
- "enum": [
1395
- "create",
1396
- "delete",
1397
- "get",
1398
- "list",
1399
- "update"
1102
+ },
1103
+ "style": {
1104
+ "type": "object",
1105
+ "properties": {
1106
+ "version": {
1107
+ "const": 1,
1108
+ "type": "number"
1109
+ },
1110
+ "levels": {
1111
+ "type": "array",
1112
+ "items": {
1113
+ "type": "object",
1114
+ "properties": {
1115
+ "level": {
1116
+ "type": "number"
1117
+ },
1118
+ "numFmt": {
1119
+ "type": "string"
1120
+ },
1121
+ "lvlText": {
1122
+ "type": "string"
1123
+ },
1124
+ "start": {
1125
+ "type": "number"
1126
+ },
1127
+ "alignment": {
1128
+ "enum": [
1129
+ "left",
1130
+ "center",
1131
+ "right"
1132
+ ]
1133
+ },
1134
+ "indents": {
1135
+ "type": "object",
1136
+ "properties": {
1137
+ "left": {
1138
+ "type": "number"
1139
+ },
1140
+ "hanging": {
1141
+ "type": "number"
1142
+ },
1143
+ "firstLine": {
1144
+ "type": "number"
1145
+ }
1146
+ }
1147
+ },
1148
+ "trailingCharacter": {
1149
+ "enum": [
1150
+ "tab",
1151
+ "space",
1152
+ "nothing"
1153
+ ]
1154
+ },
1155
+ "markerFont": {
1156
+ "type": "string"
1157
+ },
1158
+ "pictureBulletId": {
1159
+ "type": "number"
1160
+ },
1161
+ "tabStopAt": {}
1162
+ },
1163
+ "required": [
1164
+ "level"
1165
+ ]
1166
+ }
1167
+ }
1168
+ },
1169
+ "required": [
1170
+ "version",
1171
+ "levels"
1172
+ ]
1173
+ },
1174
+ "sequence": {
1175
+ "oneOf": [
1176
+ {
1177
+ "type": "object",
1178
+ "properties": {
1179
+ "mode": {
1180
+ "const": "new",
1181
+ "type": "string"
1182
+ },
1183
+ "startAt": {
1184
+ "type": "number"
1185
+ }
1186
+ },
1187
+ "required": [
1188
+ "mode"
1189
+ ]
1190
+ },
1191
+ {
1192
+ "type": "object",
1193
+ "properties": {
1194
+ "mode": {
1195
+ "const": "continuePrevious",
1196
+ "type": "string"
1197
+ }
1198
+ },
1199
+ "required": [
1200
+ "mode"
1201
+ ]
1202
+ }
1203
+ ]
1204
+ },
1205
+ "continuity": {
1206
+ "type": "string",
1207
+ "description": "Numbering continuity: 'preserve' keeps numbering; 'none' restarts.",
1208
+ "enum": [
1209
+ "preserve",
1210
+ "none"
1211
+ ]
1212
+ }
1213
+ },
1214
+ "required": [
1215
+ "action"
1216
+ ],
1217
+ "additionalProperties": false
1218
+ }
1219
+ },
1220
+ {
1221
+ "name": "superdoc_comment",
1222
+ "description": "Comment threads — create, edit, delete",
1223
+ "input_schema": {
1224
+ "type": "object",
1225
+ "properties": {
1226
+ "action": {
1227
+ "type": "string",
1228
+ "enum": [
1229
+ "create",
1230
+ "delete",
1231
+ "get",
1232
+ "list",
1233
+ "update"
1400
1234
  ],
1401
1235
  "description": "The action to perform. One of: create, delete, get, list, update."
1402
1236
  },
1403
1237
  "doc": {
1404
- "type": "string"
1238
+ "type": "string",
1239
+ "description": "Document path. Optional when a session is already open."
1405
1240
  },
1406
1241
  "sessionId": {
1407
- "type": "string"
1242
+ "type": "string",
1243
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
1408
1244
  },
1409
1245
  "force": {
1410
- "type": "boolean"
1411
- },
1412
- "expectedRevision": {
1413
- "type": "number"
1246
+ "type": "boolean",
1247
+ "description": "Bypass confirmation checks."
1414
1248
  },
1415
1249
  "changeMode": {
1416
1250
  "type": "string",
1417
1251
  "enum": [
1418
1252
  "direct",
1419
1253
  "tracked"
1420
- ]
1254
+ ],
1255
+ "description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
1421
1256
  },
1422
1257
  "text": {
1423
- "type": "string"
1258
+ "type": "string",
1259
+ "description": "Comment text content. Required for action 'create'."
1424
1260
  },
1425
1261
  "target": {
1426
1262
  "type": "object",
@@ -1452,40 +1288,51 @@
1452
1288
  "kind",
1453
1289
  "blockId",
1454
1290
  "range"
1455
- ]
1291
+ ],
1292
+ "description": "Text range to anchor the comment: {kind:'text', blockId:'...', range:{start:N, end:N}}."
1456
1293
  },
1457
1294
  "parentId": {
1458
- "type": "string"
1295
+ "type": "string",
1296
+ "description": "Parent comment ID for creating a threaded reply."
1459
1297
  },
1460
1298
  "blockId": {
1461
- "type": "string"
1299
+ "type": "string",
1300
+ "description": "Block ID of the target paragraph."
1462
1301
  },
1463
1302
  "start": {
1464
- "type": "number"
1303
+ "type": "number",
1304
+ "description": "Start offset within the block (character index)."
1465
1305
  },
1466
1306
  "end": {
1467
- "type": "number"
1307
+ "type": "number",
1308
+ "description": "End offset within the block (character index)."
1468
1309
  },
1469
1310
  "id": {
1470
- "type": "string"
1311
+ "type": "string",
1312
+ "description": "Required for actions 'delete', 'get'."
1471
1313
  },
1472
1314
  "status": {
1473
1315
  "type": "string",
1316
+ "description": "Set comment status. Use 'resolved' to mark as resolved.",
1474
1317
  "enum": [
1475
1318
  "resolved"
1476
1319
  ]
1477
1320
  },
1478
1321
  "isInternal": {
1479
- "type": "boolean"
1322
+ "type": "boolean",
1323
+ "description": "When true, marks the comment as internal (hidden from external collaborators)."
1480
1324
  },
1481
1325
  "includeResolved": {
1482
- "type": "boolean"
1326
+ "type": "boolean",
1327
+ "description": "When true, includes resolved comments in results. Default: false."
1483
1328
  },
1484
1329
  "limit": {
1485
- "type": "number"
1330
+ "type": "number",
1331
+ "description": "Maximum number of comments to return."
1486
1332
  },
1487
1333
  "offset": {
1488
- "type": "number"
1334
+ "type": "number",
1335
+ "description": "Number of comments to skip for pagination."
1489
1336
  }
1490
1337
  },
1491
1338
  "required": [
@@ -1509,19 +1356,24 @@
1509
1356
  "description": "The action to perform. One of: decide, list."
1510
1357
  },
1511
1358
  "doc": {
1512
- "type": "string"
1359
+ "type": "string",
1360
+ "description": "Document path. Optional when a session is already open."
1513
1361
  },
1514
1362
  "sessionId": {
1515
- "type": "string"
1363
+ "type": "string",
1364
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
1516
1365
  },
1517
1366
  "limit": {
1518
- "type": "number"
1367
+ "type": "number",
1368
+ "description": "Maximum number of tracked changes to return."
1519
1369
  },
1520
1370
  "offset": {
1521
- "type": "number"
1371
+ "type": "number",
1372
+ "description": "Number of tracked changes to skip for pagination."
1522
1373
  },
1523
1374
  "type": {
1524
1375
  "type": "string",
1376
+ "description": "Filter by change type: 'insert', 'delete', or 'format'.",
1525
1377
  "enum": [
1526
1378
  "insert",
1527
1379
  "delete",
@@ -1529,24 +1381,24 @@
1529
1381
  ]
1530
1382
  },
1531
1383
  "force": {
1532
- "type": "boolean"
1533
- },
1534
- "expectedRevision": {
1535
- "type": "number"
1384
+ "type": "boolean",
1385
+ "description": "Bypass confirmation checks."
1536
1386
  },
1537
1387
  "changeMode": {
1538
1388
  "type": "string",
1539
1389
  "enum": [
1540
1390
  "direct",
1541
1391
  "tracked"
1542
- ]
1392
+ ],
1393
+ "description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
1543
1394
  },
1544
1395
  "decision": {
1545
1396
  "type": "string",
1546
1397
  "enum": [
1547
1398
  "accept",
1548
1399
  "reject"
1549
- ]
1400
+ ],
1401
+ "description": "Required for action 'decide'."
1550
1402
  },
1551
1403
  "target": {
1552
1404
  "oneOf": [
@@ -1574,7 +1426,8 @@
1574
1426
  "scope"
1575
1427
  ]
1576
1428
  }
1577
- ]
1429
+ ],
1430
+ "description": "Required for action 'decide'."
1578
1431
  }
1579
1432
  },
1580
1433
  "required": [
@@ -1590,10 +1443,12 @@
1590
1443
  "type": "object",
1591
1444
  "properties": {
1592
1445
  "doc": {
1593
- "type": "string"
1446
+ "type": "string",
1447
+ "description": "Document path. Optional when a session is already open."
1594
1448
  },
1595
1449
  "sessionId": {
1596
- "type": "string"
1450
+ "type": "string",
1451
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
1597
1452
  },
1598
1453
  "select": {
1599
1454
  "oneOf": [
@@ -1602,19 +1457,23 @@
1602
1457
  "properties": {
1603
1458
  "type": {
1604
1459
  "const": "text",
1460
+ "description": "Must be 'text' for text pattern search.",
1605
1461
  "type": "string"
1606
1462
  },
1607
1463
  "pattern": {
1608
- "type": "string"
1464
+ "type": "string",
1465
+ "description": "Text or regex pattern to match."
1609
1466
  },
1610
1467
  "mode": {
1468
+ "description": "Match mode: 'contains' (substring) or 'regex'.",
1611
1469
  "enum": [
1612
1470
  "contains",
1613
1471
  "regex"
1614
1472
  ]
1615
1473
  },
1616
1474
  "caseSensitive": {
1617
- "type": "boolean"
1475
+ "type": "boolean",
1476
+ "description": "Case-sensitive matching. Default: false."
1618
1477
  }
1619
1478
  },
1620
1479
  "required": [
@@ -1627,9 +1486,11 @@
1627
1486
  "properties": {
1628
1487
  "type": {
1629
1488
  "const": "node",
1489
+ "description": "Must be 'node' for node type search.",
1630
1490
  "type": "string"
1631
1491
  },
1632
1492
  "nodeType": {
1493
+ "description": "Block type to match (paragraph, heading, table, listItem, etc.).",
1633
1494
  "enum": [
1634
1495
  "paragraph",
1635
1496
  "heading",
@@ -1656,6 +1517,7 @@
1656
1517
  ]
1657
1518
  },
1658
1519
  "kind": {
1520
+ "description": "Filter: 'block' or 'inline'.",
1659
1521
  "enum": [
1660
1522
  "block",
1661
1523
  "inline"
@@ -1666,7 +1528,8 @@
1666
1528
  "type"
1667
1529
  ]
1668
1530
  }
1669
- ]
1531
+ ],
1532
+ "description": "Search selector. Use {type:'text', pattern:'...'} for text search or {type:'node', nodeType:'paragraph'|'heading'|...} for node search."
1670
1533
  },
1671
1534
  "within": {
1672
1535
  "type": "object",
@@ -1696,10 +1559,12 @@
1696
1559
  "kind",
1697
1560
  "nodeType",
1698
1561
  "nodeId"
1699
- ]
1562
+ ],
1563
+ "description": "Limit search scope to within a specific block: {kind:'block', nodeType:'...', nodeId:'...'}."
1700
1564
  },
1701
1565
  "require": {
1702
1566
  "type": "string",
1567
+ "description": "Match cardinality: 'any' (all matches), 'first' (only first), 'exactlyOne' (fail if != 1), 'all' (fail if 0).",
1703
1568
  "enum": [
1704
1569
  "any",
1705
1570
  "first",
@@ -1709,19 +1574,23 @@
1709
1574
  },
1710
1575
  "mode": {
1711
1576
  "type": "string",
1577
+ "description": "Search mode: 'strict' (default, exact matching) or 'candidates' (returns scored potential matches).",
1712
1578
  "enum": [
1713
1579
  "strict",
1714
1580
  "candidates"
1715
1581
  ]
1716
1582
  },
1717
1583
  "includeNodes": {
1718
- "type": "boolean"
1584
+ "type": "boolean",
1585
+ "description": "When true, includes full node data in results. Default: false."
1719
1586
  },
1720
1587
  "limit": {
1721
- "type": "number"
1588
+ "type": "number",
1589
+ "description": "Maximum number of matches to return."
1722
1590
  },
1723
1591
  "offset": {
1724
- "type": "number"
1592
+ "type": "number",
1593
+ "description": "Number of matches to skip for pagination."
1725
1594
  }
1726
1595
  },
1727
1596
  "required": [
@@ -1745,19 +1614,24 @@
1745
1614
  "description": "The action to perform. One of: apply, preview."
1746
1615
  },
1747
1616
  "doc": {
1748
- "type": "string"
1617
+ "type": "string",
1618
+ "description": "Document path. Optional when a session is already open."
1749
1619
  },
1750
1620
  "sessionId": {
1751
- "type": "string"
1621
+ "type": "string",
1622
+ "description": "Session ID for multi-session workflows. Optional when only one session is open."
1752
1623
  },
1753
1624
  "expectedRevision": {
1754
- "type": "string"
1625
+ "type": "string",
1626
+ "description": "Document revision for optimistic concurrency. Mutation fails if document was modified since this revision."
1755
1627
  },
1756
1628
  "atomic": {
1757
- "type": "boolean"
1629
+ "type": "boolean",
1630
+ "description": "Must be true. All steps execute as one atomic transaction."
1758
1631
  },
1759
1632
  "changeMode": {
1760
1633
  "type": "string",
1634
+ "description": "Required. Use 'direct' for immediate edits or 'tracked' for suggestions. Must always be provided.",
1761
1635
  "enum": [
1762
1636
  "direct",
1763
1637
  "tracked"
@@ -1793,19 +1667,23 @@
1793
1667
  "properties": {
1794
1668
  "type": {
1795
1669
  "const": "text",
1670
+ "description": "Must be 'text' for text pattern search.",
1796
1671
  "type": "string"
1797
1672
  },
1798
1673
  "pattern": {
1799
- "type": "string"
1674
+ "type": "string",
1675
+ "description": "Text or regex pattern to match."
1800
1676
  },
1801
1677
  "mode": {
1678
+ "description": "Match mode: 'contains' (substring) or 'regex'.",
1802
1679
  "enum": [
1803
1680
  "contains",
1804
1681
  "regex"
1805
1682
  ]
1806
1683
  },
1807
1684
  "caseSensitive": {
1808
- "type": "boolean"
1685
+ "type": "boolean",
1686
+ "description": "Case-sensitive matching. Default: false."
1809
1687
  }
1810
1688
  },
1811
1689
  "required": [
@@ -1818,9 +1696,11 @@
1818
1696
  "properties": {
1819
1697
  "type": {
1820
1698
  "const": "node",
1699
+ "description": "Must be 'node' for node type search.",
1821
1700
  "type": "string"
1822
1701
  },
1823
1702
  "nodeType": {
1703
+ "description": "Block type to match (paragraph, heading, table, listItem, etc.).",
1824
1704
  "enum": [
1825
1705
  "paragraph",
1826
1706
  "heading",
@@ -1847,6 +1727,7 @@
1847
1727
  ]
1848
1728
  },
1849
1729
  "kind": {
1730
+ "description": "Filter: 'block' or 'inline'.",
1850
1731
  "enum": [
1851
1732
  "block",
1852
1733
  "inline"
@@ -2032,7 +1913,8 @@
2032
1913
  "edge"
2033
1914
  ]
2034
1915
  }
2035
- ]
1916
+ ],
1917
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
2036
1918
  },
2037
1919
  "end": {
2038
1920
  "oneOf": [
@@ -2103,7 +1985,8 @@
2103
1985
  "edge"
2104
1986
  ]
2105
1987
  }
2106
- ]
1988
+ ],
1989
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
2107
1990
  }
2108
1991
  },
2109
1992
  "required": [
@@ -2280,19 +2163,23 @@
2280
2163
  "properties": {
2281
2164
  "type": {
2282
2165
  "const": "text",
2166
+ "description": "Must be 'text' for text pattern search.",
2283
2167
  "type": "string"
2284
2168
  },
2285
2169
  "pattern": {
2286
- "type": "string"
2170
+ "type": "string",
2171
+ "description": "Text or regex pattern to match."
2287
2172
  },
2288
2173
  "mode": {
2174
+ "description": "Match mode: 'contains' (substring) or 'regex'.",
2289
2175
  "enum": [
2290
2176
  "contains",
2291
2177
  "regex"
2292
2178
  ]
2293
2179
  },
2294
2180
  "caseSensitive": {
2295
- "type": "boolean"
2181
+ "type": "boolean",
2182
+ "description": "Case-sensitive matching. Default: false."
2296
2183
  }
2297
2184
  },
2298
2185
  "required": [
@@ -2305,9 +2192,11 @@
2305
2192
  "properties": {
2306
2193
  "type": {
2307
2194
  "const": "node",
2195
+ "description": "Must be 'node' for node type search.",
2308
2196
  "type": "string"
2309
2197
  },
2310
2198
  "nodeType": {
2199
+ "description": "Block type to match (paragraph, heading, table, listItem, etc.).",
2311
2200
  "enum": [
2312
2201
  "paragraph",
2313
2202
  "heading",
@@ -2334,6 +2223,7 @@
2334
2223
  ]
2335
2224
  },
2336
2225
  "kind": {
2226
+ "description": "Filter: 'block' or 'inline'.",
2337
2227
  "enum": [
2338
2228
  "block",
2339
2229
  "inline"
@@ -2505,19 +2395,23 @@
2505
2395
  "properties": {
2506
2396
  "type": {
2507
2397
  "const": "text",
2398
+ "description": "Must be 'text' for text pattern search.",
2508
2399
  "type": "string"
2509
2400
  },
2510
2401
  "pattern": {
2511
- "type": "string"
2402
+ "type": "string",
2403
+ "description": "Text or regex pattern to match."
2512
2404
  },
2513
2405
  "mode": {
2406
+ "description": "Match mode: 'contains' (substring) or 'regex'.",
2514
2407
  "enum": [
2515
2408
  "contains",
2516
2409
  "regex"
2517
2410
  ]
2518
2411
  },
2519
2412
  "caseSensitive": {
2520
- "type": "boolean"
2413
+ "type": "boolean",
2414
+ "description": "Case-sensitive matching. Default: false."
2521
2415
  }
2522
2416
  },
2523
2417
  "required": [
@@ -2530,9 +2424,11 @@
2530
2424
  "properties": {
2531
2425
  "type": {
2532
2426
  "const": "node",
2427
+ "description": "Must be 'node' for node type search.",
2533
2428
  "type": "string"
2534
2429
  },
2535
2430
  "nodeType": {
2431
+ "description": "Block type to match (paragraph, heading, table, listItem, etc.).",
2536
2432
  "enum": [
2537
2433
  "paragraph",
2538
2434
  "heading",
@@ -2559,6 +2455,7 @@
2559
2455
  ]
2560
2456
  },
2561
2457
  "kind": {
2458
+ "description": "Filter: 'block' or 'inline'.",
2562
2459
  "enum": [
2563
2460
  "block",
2564
2461
  "inline"
@@ -2744,7 +2641,8 @@
2744
2641
  "edge"
2745
2642
  ]
2746
2643
  }
2747
- ]
2644
+ ],
2645
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
2748
2646
  },
2749
2647
  "end": {
2750
2648
  "oneOf": [
@@ -2815,7 +2713,8 @@
2815
2713
  "edge"
2816
2714
  ]
2817
2715
  }
2818
- ]
2716
+ ],
2717
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
2819
2718
  }
2820
2719
  },
2821
2720
  "required": [
@@ -2877,19 +2776,23 @@
2877
2776
  "properties": {
2878
2777
  "type": {
2879
2778
  "const": "text",
2779
+ "description": "Must be 'text' for text pattern search.",
2880
2780
  "type": "string"
2881
2781
  },
2882
2782
  "pattern": {
2883
- "type": "string"
2783
+ "type": "string",
2784
+ "description": "Text or regex pattern to match."
2884
2785
  },
2885
2786
  "mode": {
2787
+ "description": "Match mode: 'contains' (substring) or 'regex'.",
2886
2788
  "enum": [
2887
2789
  "contains",
2888
2790
  "regex"
2889
2791
  ]
2890
2792
  },
2891
2793
  "caseSensitive": {
2892
- "type": "boolean"
2794
+ "type": "boolean",
2795
+ "description": "Case-sensitive matching. Default: false."
2893
2796
  }
2894
2797
  },
2895
2798
  "required": [
@@ -2902,9 +2805,11 @@
2902
2805
  "properties": {
2903
2806
  "type": {
2904
2807
  "const": "node",
2808
+ "description": "Must be 'node' for node type search.",
2905
2809
  "type": "string"
2906
2810
  },
2907
2811
  "nodeType": {
2812
+ "description": "Block type to match (paragraph, heading, table, listItem, etc.).",
2908
2813
  "enum": [
2909
2814
  "paragraph",
2910
2815
  "heading",
@@ -2931,6 +2836,7 @@
2931
2836
  ]
2932
2837
  },
2933
2838
  "kind": {
2839
+ "description": "Filter: 'block' or 'inline'.",
2934
2840
  "enum": [
2935
2841
  "block",
2936
2842
  "inline"
@@ -3116,7 +3022,8 @@
3116
3022
  "edge"
3117
3023
  ]
3118
3024
  }
3119
- ]
3025
+ ],
3026
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
3120
3027
  },
3121
3028
  "end": {
3122
3029
  "oneOf": [
@@ -3187,7 +3094,8 @@
3187
3094
  "edge"
3188
3095
  ]
3189
3096
  }
3190
- ]
3097
+ ],
3098
+ "description": "A point in the document. Use {kind:'text', blockId, offset} for character positions or {kind:'nodeEdge', node:{kind:'block', nodeType, nodeId}, edge:'before'|'after'} for block boundaries."
3191
3099
  }
3192
3100
  },
3193
3101
  "required": [
@@ -3211,615 +3119,259 @@
3211
3119
  "type": "object",
3212
3120
  "properties": {
3213
3121
  "bold": {
3214
- "oneOf": [
3215
- {
3216
- "type": "boolean"
3217
- },
3218
- {}
3219
- ]
3122
+ "type": "boolean"
3220
3123
  },
3221
3124
  "italic": {
3222
- "oneOf": [
3223
- {
3224
- "type": "boolean"
3225
- },
3226
- {}
3227
- ]
3125
+ "type": "boolean"
3228
3126
  },
3229
3127
  "strike": {
3230
- "oneOf": [
3231
- {
3232
- "type": "boolean"
3233
- },
3234
- {}
3235
- ]
3128
+ "type": "boolean"
3236
3129
  },
3237
3130
  "underline": {
3238
3131
  "oneOf": [
3239
3132
  {
3240
3133
  "type": "boolean"
3241
3134
  },
3242
- {},
3243
3135
  {
3244
3136
  "type": "object",
3245
3137
  "properties": {
3246
3138
  "style": {
3247
- "oneOf": [
3248
- {
3249
- "type": "string"
3250
- },
3251
- {}
3252
- ]
3139
+ "type": "string"
3253
3140
  },
3254
3141
  "color": {
3255
- "oneOf": [
3256
- {
3257
- "type": "string"
3258
- },
3259
- {}
3260
- ]
3142
+ "type": "string"
3261
3143
  },
3262
3144
  "themeColor": {
3263
- "oneOf": [
3264
- {
3265
- "type": "string"
3266
- },
3267
- {}
3268
- ]
3145
+ "type": "string"
3269
3146
  }
3270
3147
  }
3271
3148
  }
3272
3149
  ]
3273
3150
  },
3274
3151
  "highlight": {
3275
- "oneOf": [
3276
- {
3277
- "type": "string"
3278
- },
3279
- {}
3280
- ]
3152
+ "type": "string"
3281
3153
  },
3282
3154
  "color": {
3283
- "oneOf": [
3284
- {
3285
- "type": "string"
3286
- },
3287
- {}
3288
- ]
3155
+ "type": "string"
3289
3156
  },
3290
3157
  "fontSize": {
3291
- "oneOf": [
3292
- {
3293
- "type": "number"
3294
- },
3295
- {}
3296
- ]
3158
+ "type": "number"
3297
3159
  },
3298
3160
  "fontFamily": {
3299
- "oneOf": [
3300
- {
3301
- "type": "string"
3302
- },
3303
- {}
3304
- ]
3161
+ "type": "string"
3305
3162
  },
3306
3163
  "letterSpacing": {
3307
- "oneOf": [
3308
- {
3309
- "type": "number"
3310
- },
3311
- {}
3312
- ]
3164
+ "type": "number"
3313
3165
  },
3314
3166
  "vertAlign": {
3315
- "oneOf": [
3316
- {
3317
- "enum": [
3318
- "superscript",
3319
- "subscript",
3320
- "baseline"
3321
- ]
3322
- },
3323
- {}
3167
+ "enum": [
3168
+ "superscript",
3169
+ "subscript",
3170
+ "baseline"
3324
3171
  ]
3325
3172
  },
3326
3173
  "position": {
3327
- "oneOf": [
3328
- {
3329
- "type": "number"
3330
- },
3331
- {}
3332
- ]
3174
+ "type": "number"
3333
3175
  },
3334
3176
  "dstrike": {
3335
- "oneOf": [
3336
- {
3337
- "type": "boolean"
3338
- },
3339
- {}
3340
- ]
3177
+ "type": "boolean"
3341
3178
  },
3342
3179
  "smallCaps": {
3343
- "oneOf": [
3344
- {
3345
- "type": "boolean"
3346
- },
3347
- {}
3348
- ]
3180
+ "type": "boolean"
3349
3181
  },
3350
3182
  "caps": {
3351
- "oneOf": [
3352
- {
3353
- "type": "boolean"
3354
- },
3355
- {}
3356
- ]
3183
+ "type": "boolean"
3357
3184
  },
3358
3185
  "shading": {
3359
- "oneOf": [
3360
- {
3361
- "type": "object",
3362
- "properties": {
3363
- "fill": {
3364
- "oneOf": [
3365
- {
3366
- "type": "string"
3367
- },
3368
- {}
3369
- ]
3370
- },
3371
- "color": {
3372
- "oneOf": [
3373
- {
3374
- "type": "string"
3375
- },
3376
- {}
3377
- ]
3378
- },
3379
- "val": {
3380
- "oneOf": [
3381
- {
3382
- "type": "string"
3383
- },
3384
- {}
3385
- ]
3386
- }
3387
- }
3186
+ "type": "object",
3187
+ "properties": {
3188
+ "fill": {
3189
+ "type": "string"
3388
3190
  },
3389
- {}
3390
- ]
3191
+ "color": {
3192
+ "type": "string"
3193
+ },
3194
+ "val": {
3195
+ "type": "string"
3196
+ }
3197
+ }
3391
3198
  },
3392
3199
  "border": {
3393
- "oneOf": [
3394
- {
3395
- "type": "object",
3396
- "properties": {
3397
- "val": {
3398
- "oneOf": [
3399
- {
3400
- "type": "string"
3401
- },
3402
- {}
3403
- ]
3404
- },
3405
- "sz": {
3406
- "oneOf": [
3407
- {
3408
- "type": "number"
3409
- },
3410
- {}
3411
- ]
3412
- },
3413
- "color": {
3414
- "oneOf": [
3415
- {
3416
- "type": "string"
3417
- },
3418
- {}
3419
- ]
3420
- },
3421
- "space": {
3422
- "oneOf": [
3423
- {
3424
- "type": "number"
3425
- },
3426
- {}
3427
- ]
3428
- }
3429
- }
3200
+ "type": "object",
3201
+ "properties": {
3202
+ "val": {
3203
+ "type": "string"
3430
3204
  },
3431
- {}
3432
- ]
3205
+ "sz": {
3206
+ "type": "number"
3207
+ },
3208
+ "color": {
3209
+ "type": "string"
3210
+ },
3211
+ "space": {
3212
+ "type": "number"
3213
+ }
3214
+ }
3433
3215
  },
3434
3216
  "outline": {
3435
- "oneOf": [
3436
- {
3437
- "type": "boolean"
3438
- },
3439
- {}
3440
- ]
3217
+ "type": "boolean"
3441
3218
  },
3442
3219
  "shadow": {
3443
- "oneOf": [
3444
- {
3445
- "type": "boolean"
3446
- },
3447
- {}
3448
- ]
3220
+ "type": "boolean"
3449
3221
  },
3450
3222
  "emboss": {
3451
- "oneOf": [
3452
- {
3453
- "type": "boolean"
3454
- },
3455
- {}
3456
- ]
3223
+ "type": "boolean"
3457
3224
  },
3458
3225
  "imprint": {
3459
- "oneOf": [
3460
- {
3461
- "type": "boolean"
3462
- },
3463
- {}
3464
- ]
3226
+ "type": "boolean"
3465
3227
  },
3466
3228
  "charScale": {
3467
- "oneOf": [
3468
- {
3469
- "type": "number"
3470
- },
3471
- {}
3472
- ]
3229
+ "type": "number"
3473
3230
  },
3474
3231
  "kerning": {
3475
- "oneOf": [
3476
- {
3477
- "type": "number"
3478
- },
3479
- {}
3480
- ]
3232
+ "type": "number"
3481
3233
  },
3482
3234
  "vanish": {
3483
- "oneOf": [
3484
- {
3485
- "type": "boolean"
3486
- },
3487
- {}
3488
- ]
3235
+ "type": "boolean"
3489
3236
  },
3490
3237
  "webHidden": {
3491
- "oneOf": [
3492
- {
3493
- "type": "boolean"
3494
- },
3495
- {}
3496
- ]
3238
+ "type": "boolean"
3497
3239
  },
3498
3240
  "specVanish": {
3499
- "oneOf": [
3500
- {
3501
- "type": "boolean"
3502
- },
3503
- {}
3504
- ]
3241
+ "type": "boolean"
3505
3242
  },
3506
3243
  "rtl": {
3507
- "oneOf": [
3508
- {
3509
- "type": "boolean"
3510
- },
3511
- {}
3512
- ]
3244
+ "type": "boolean"
3513
3245
  },
3514
3246
  "cs": {
3515
- "oneOf": [
3516
- {
3517
- "type": "boolean"
3518
- },
3519
- {}
3520
- ]
3247
+ "type": "boolean"
3521
3248
  },
3522
3249
  "bCs": {
3523
- "oneOf": [
3524
- {
3525
- "type": "boolean"
3526
- },
3527
- {}
3528
- ]
3250
+ "type": "boolean"
3529
3251
  },
3530
3252
  "iCs": {
3531
- "oneOf": [
3532
- {
3533
- "type": "boolean"
3534
- },
3535
- {}
3536
- ]
3253
+ "type": "boolean"
3537
3254
  },
3538
3255
  "eastAsianLayout": {
3539
- "oneOf": [
3540
- {
3541
- "type": "object",
3542
- "properties": {
3543
- "id": {
3544
- "oneOf": [
3545
- {
3546
- "type": "string"
3547
- },
3548
- {}
3549
- ]
3550
- },
3551
- "combine": {
3552
- "oneOf": [
3553
- {
3554
- "type": "boolean"
3555
- },
3556
- {}
3557
- ]
3558
- },
3559
- "combineBrackets": {
3560
- "oneOf": [
3561
- {
3562
- "type": "string"
3563
- },
3564
- {}
3565
- ]
3566
- },
3567
- "vert": {
3568
- "oneOf": [
3569
- {
3570
- "type": "boolean"
3571
- },
3572
- {}
3573
- ]
3574
- },
3575
- "vertCompress": {
3576
- "oneOf": [
3577
- {
3578
- "type": "boolean"
3579
- },
3580
- {}
3581
- ]
3582
- }
3583
- }
3256
+ "type": "object",
3257
+ "properties": {
3258
+ "id": {
3259
+ "type": "string"
3584
3260
  },
3585
- {}
3586
- ]
3587
- },
3588
- "em": {
3589
- "oneOf": [
3590
- {
3261
+ "combine": {
3262
+ "type": "boolean"
3263
+ },
3264
+ "combineBrackets": {
3591
3265
  "type": "string"
3592
3266
  },
3593
- {}
3594
- ]
3267
+ "vert": {
3268
+ "type": "boolean"
3269
+ },
3270
+ "vertCompress": {
3271
+ "type": "boolean"
3272
+ }
3273
+ }
3274
+ },
3275
+ "em": {
3276
+ "type": "string"
3595
3277
  },
3596
3278
  "fitText": {
3597
- "oneOf": [
3598
- {
3599
- "type": "object",
3600
- "properties": {
3601
- "val": {
3602
- "oneOf": [
3603
- {
3604
- "type": "number"
3605
- },
3606
- {}
3607
- ]
3608
- },
3609
- "id": {
3610
- "oneOf": [
3611
- {
3612
- "type": "string"
3613
- },
3614
- {}
3615
- ]
3616
- }
3617
- }
3279
+ "type": "object",
3280
+ "properties": {
3281
+ "val": {
3282
+ "type": "number"
3618
3283
  },
3619
- {}
3620
- ]
3284
+ "id": {
3285
+ "type": "string"
3286
+ }
3287
+ }
3621
3288
  },
3622
3289
  "snapToGrid": {
3623
- "oneOf": [
3624
- {
3625
- "type": "boolean"
3626
- },
3627
- {}
3628
- ]
3290
+ "type": "boolean"
3629
3291
  },
3630
3292
  "lang": {
3631
- "oneOf": [
3632
- {
3633
- "type": "object",
3634
- "properties": {
3635
- "val": {
3636
- "oneOf": [
3637
- {
3638
- "type": "string"
3639
- },
3640
- {}
3641
- ]
3642
- },
3643
- "eastAsia": {
3644
- "oneOf": [
3645
- {
3646
- "type": "string"
3647
- },
3648
- {}
3649
- ]
3650
- },
3651
- "bidi": {
3652
- "oneOf": [
3653
- {
3654
- "type": "string"
3655
- },
3656
- {}
3657
- ]
3658
- }
3659
- }
3293
+ "type": "object",
3294
+ "properties": {
3295
+ "val": {
3296
+ "type": "string"
3660
3297
  },
3661
- {}
3662
- ]
3298
+ "eastAsia": {
3299
+ "type": "string"
3300
+ },
3301
+ "bidi": {
3302
+ "type": "string"
3303
+ }
3304
+ }
3663
3305
  },
3664
3306
  "oMath": {
3665
- "oneOf": [
3666
- {
3667
- "type": "boolean"
3668
- },
3669
- {}
3670
- ]
3307
+ "type": "boolean"
3671
3308
  },
3672
3309
  "rStyle": {
3673
- "oneOf": [
3674
- {
3675
- "type": "string"
3676
- },
3677
- {}
3678
- ]
3310
+ "type": "string"
3679
3311
  },
3680
3312
  "rFonts": {
3681
- "oneOf": [
3682
- {
3683
- "type": "object",
3684
- "properties": {
3685
- "ascii": {
3686
- "oneOf": [
3687
- {
3688
- "type": "string"
3689
- },
3690
- {}
3691
- ]
3692
- },
3693
- "hAnsi": {
3694
- "oneOf": [
3695
- {
3696
- "type": "string"
3697
- },
3698
- {}
3699
- ]
3700
- },
3701
- "eastAsia": {
3702
- "oneOf": [
3703
- {
3704
- "type": "string"
3705
- },
3706
- {}
3707
- ]
3708
- },
3709
- "cs": {
3710
- "oneOf": [
3711
- {
3712
- "type": "string"
3713
- },
3714
- {}
3715
- ]
3716
- },
3717
- "asciiTheme": {
3718
- "oneOf": [
3719
- {
3720
- "type": "string"
3721
- },
3722
- {}
3723
- ]
3724
- },
3725
- "hAnsiTheme": {
3726
- "oneOf": [
3727
- {
3728
- "type": "string"
3729
- },
3730
- {}
3731
- ]
3732
- },
3733
- "eastAsiaTheme": {
3734
- "oneOf": [
3735
- {
3736
- "type": "string"
3737
- },
3738
- {}
3739
- ]
3740
- },
3741
- "csTheme": {
3742
- "oneOf": [
3743
- {
3744
- "type": "string"
3745
- },
3746
- {}
3747
- ]
3748
- },
3749
- "hint": {
3750
- "oneOf": [
3751
- {
3752
- "type": "string"
3753
- },
3754
- {}
3755
- ]
3756
- }
3757
- }
3313
+ "type": "object",
3314
+ "properties": {
3315
+ "ascii": {
3316
+ "type": "string"
3758
3317
  },
3759
- {}
3760
- ]
3318
+ "hAnsi": {
3319
+ "type": "string"
3320
+ },
3321
+ "eastAsia": {
3322
+ "type": "string"
3323
+ },
3324
+ "cs": {
3325
+ "type": "string"
3326
+ },
3327
+ "asciiTheme": {
3328
+ "type": "string"
3329
+ },
3330
+ "hAnsiTheme": {
3331
+ "type": "string"
3332
+ },
3333
+ "eastAsiaTheme": {
3334
+ "type": "string"
3335
+ },
3336
+ "csTheme": {
3337
+ "type": "string"
3338
+ },
3339
+ "hint": {
3340
+ "type": "string"
3341
+ }
3342
+ }
3761
3343
  },
3762
3344
  "fontSizeCs": {
3763
- "oneOf": [
3764
- {
3765
- "type": "number"
3766
- },
3767
- {}
3768
- ]
3345
+ "type": "number"
3769
3346
  },
3770
3347
  "ligatures": {
3771
- "oneOf": [
3772
- {
3773
- "type": "string"
3774
- },
3775
- {}
3776
- ]
3348
+ "type": "string"
3777
3349
  },
3778
3350
  "numForm": {
3779
- "oneOf": [
3780
- {
3781
- "type": "string"
3782
- },
3783
- {}
3784
- ]
3351
+ "type": "string"
3785
3352
  },
3786
3353
  "numSpacing": {
3787
- "oneOf": [
3788
- {
3789
- "type": "string"
3790
- },
3791
- {}
3792
- ]
3354
+ "type": "string"
3793
3355
  },
3794
3356
  "stylisticSets": {
3795
- "oneOf": [
3796
- {
3797
- "type": "array",
3798
- "items": {
3799
- "type": "object",
3800
- "properties": {
3801
- "id": {
3802
- "type": "number"
3803
- },
3804
- "val": {
3805
- "type": "boolean"
3806
- }
3807
- },
3808
- "required": [
3809
- "id"
3810
- ]
3357
+ "type": "array",
3358
+ "items": {
3359
+ "type": "object",
3360
+ "properties": {
3361
+ "id": {
3362
+ "type": "number"
3363
+ },
3364
+ "val": {
3365
+ "type": "boolean"
3811
3366
  }
3812
3367
  },
3813
- {}
3814
- ]
3368
+ "required": [
3369
+ "id"
3370
+ ]
3371
+ }
3815
3372
  },
3816
3373
  "contextualAlternates": {
3817
- "oneOf": [
3818
- {
3819
- "type": "boolean"
3820
- },
3821
- {}
3822
- ]
3374
+ "type": "boolean"
3823
3375
  }
3824
3376
  }
3825
3377
  }
@@ -3860,19 +3412,23 @@
3860
3412
  "properties": {
3861
3413
  "type": {
3862
3414
  "const": "text",
3415
+ "description": "Must be 'text' for text pattern search.",
3863
3416
  "type": "string"
3864
3417
  },
3865
3418
  "pattern": {
3866
- "type": "string"
3419
+ "type": "string",
3420
+ "description": "Text or regex pattern to match."
3867
3421
  },
3868
3422
  "mode": {
3423
+ "description": "Match mode: 'contains' (substring) or 'regex'.",
3869
3424
  "enum": [
3870
3425
  "contains",
3871
3426
  "regex"
3872
3427
  ]
3873
3428
  },
3874
3429
  "caseSensitive": {
3875
- "type": "boolean"
3430
+ "type": "boolean",
3431
+ "description": "Case-sensitive matching. Default: false."
3876
3432
  }
3877
3433
  },
3878
3434
  "required": [
@@ -3885,9 +3441,11 @@
3885
3441
  "properties": {
3886
3442
  "type": {
3887
3443
  "const": "node",
3444
+ "description": "Must be 'node' for node type search.",
3888
3445
  "type": "string"
3889
3446
  },
3890
3447
  "nodeType": {
3448
+ "description": "Block type to match (paragraph, heading, table, listItem, etc.).",
3891
3449
  "enum": [
3892
3450
  "paragraph",
3893
3451
  "heading",
@@ -3914,6 +3472,7 @@
3914
3472
  ]
3915
3473
  },
3916
3474
  "kind": {
3475
+ "description": "Filter: 'block' or 'inline'.",
3917
3476
  "enum": [
3918
3477
  "block",
3919
3478
  "inline"
@@ -3982,15 +3541,18 @@
3982
3541
  ]
3983
3542
  }
3984
3543
  ]
3985
- }
3544
+ },
3545
+ "description": "Ordered array of mutation steps. Each step needs 'op' (text.rewrite, text.insert, text.delete, format.apply, or assert) and a 'where' targeting clause."
3986
3546
  },
3987
3547
  "force": {
3988
- "type": "boolean"
3548
+ "type": "boolean",
3549
+ "description": "Bypass confirmation checks."
3989
3550
  }
3990
3551
  },
3991
3552
  "required": [
3992
3553
  "action",
3993
3554
  "atomic",
3555
+ "changeMode",
3994
3556
  "steps"
3995
3557
  ],
3996
3558
  "additionalProperties": false