sublime-mcp 1.14.3 → 1.14.5

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/fallback-tools.json +96 -61
  2. package/package.json +1 -1
@@ -46,10 +46,15 @@
46
46
  },
47
47
  {
48
48
  "name": "add_to_kill_ring",
49
- "description": "Add the current selection to the kill ring (TextCommand, used by yank).",
49
+ "description": "Add the current selection to the kill ring (TextCommand, used by yank). forward=false (default) adds the selection; forward=true is the variant used when killing forward.",
50
50
  "inputSchema": {
51
51
  "type": "object",
52
- "properties": {}
52
+ "properties": {
53
+ "forward": {
54
+ "type": "boolean",
55
+ "default": false
56
+ }
57
+ }
53
58
  }
54
59
  },
55
60
  {
@@ -104,10 +109,18 @@
104
109
  },
105
110
  {
106
111
  "name": "arithmetic",
107
- "description": "Evaluate the selected expression as arithmetic and replace it with the result (TextCommand). Select '2+2' to get '4'.",
112
+ "description": "Replace each selection with the result of an expression (TextCommand). expr is evaluated once per selection with x = the selection read as a number, s = its text, i = its index (0, 1, ...) and math; for example expr='x*10' turns the selections 2 and 3 into 20 and 30, and expr='i + 1' numbers the cursors.",
108
113
  "inputSchema": {
109
114
  "type": "object",
110
- "properties": {}
115
+ "properties": {
116
+ "expr": {
117
+ "type": "string",
118
+ "description": "Python expression using x, s, i and math."
119
+ }
120
+ },
121
+ "required": [
122
+ "expr"
123
+ ]
111
124
  }
112
125
  },
113
126
  {
@@ -476,7 +489,7 @@
476
489
  },
477
490
  {
478
491
  "name": "close_others",
479
- "description": "Close all views in the current group except the active one (Close Other Tabs).",
492
+ "description": "Close all tabs in the active tab's group except the active one (Close Other Tabs).",
480
493
  "inputSchema": {
481
494
  "type": "object",
482
495
  "properties": {}
@@ -563,7 +576,7 @@
563
576
  },
564
577
  {
565
578
  "name": "close_unmodified",
566
- "description": "Close all unmodified (clean) views in the current window.",
579
+ "description": "Close the tabs without unsaved changes in the active tab's group (Close Unmodified Tabs).",
567
580
  "inputSchema": {
568
581
  "type": "object",
569
582
  "properties": {}
@@ -950,17 +963,22 @@
950
963
  },
951
964
  {
952
965
  "name": "edit_settings",
953
- "description": "Open the given settings resource for editing (WindowCommand). Pass 'resource' (e.g. 'Preferences').",
966
+ "description": "Open a settings file for editing in a split view: the default settings on the left, your own on the right (WindowCommand edit_settings). resource is the settings name without the extension, e.g. 'Preferences' or 'Python'; or pass base_file and user_file as Sublime's own commands do.",
954
967
  "inputSchema": {
955
968
  "type": "object",
956
969
  "properties": {
957
970
  "resource": {
971
+ "type": "string",
972
+ "description": "e.g. 'Preferences'."
973
+ },
974
+ "base_file": {
975
+ "type": "string",
976
+ "description": "e.g. ${packages}/Default/Preferences.sublime-settings"
977
+ },
978
+ "user_file": {
958
979
  "type": "string"
959
980
  }
960
- },
961
- "required": [
962
- "resource"
963
- ]
981
+ }
964
982
  }
965
983
  },
966
984
  {
@@ -1247,19 +1265,20 @@
1247
1265
  },
1248
1266
  {
1249
1267
  "name": "find_in_folder",
1250
- "description": "Open Find in Files scoped to a folder (WindowCommand). Pass 'pattern' (regex) and optional 'where'.",
1268
+ "description": "Open the Find in Files panel with its Where box set to the given folders (WindowCommand find_in_folder, the sidebar's Find in Folder). To search, use project_search or find_in_files.",
1251
1269
  "inputSchema": {
1252
1270
  "type": "object",
1253
1271
  "properties": {
1254
- "pattern": {
1255
- "type": "string"
1256
- },
1257
- "where": {
1258
- "type": "string"
1272
+ "dirs": {
1273
+ "type": "array",
1274
+ "items": {
1275
+ "type": "string"
1276
+ },
1277
+ "description": "Folder path(s) to search."
1259
1278
  }
1260
1279
  },
1261
1280
  "required": [
1262
- "pattern"
1281
+ "dirs"
1263
1282
  ]
1264
1283
  }
1265
1284
  },
@@ -1445,7 +1464,7 @@
1445
1464
  },
1446
1465
  {
1447
1466
  "name": "fold_unfold",
1448
- "description": "Toggle the fold state of the region at the cursor (TextCommand). Collapses or expands the enclosing code block.",
1467
+ "description": "Fold the code block at the cursor, or unfold it when it is already folded.",
1449
1468
  "inputSchema": {
1450
1469
  "type": "object",
1451
1470
  "properties": {}
@@ -1898,7 +1917,7 @@
1898
1917
  },
1899
1918
  {
1900
1919
  "name": "get_view_phantoms",
1901
- "description": "Return phantom HTML and extracted text from a view by name.\nIf key is omitted, returns phantoms for all keys. Output can be huge for a view with hundreds of phantoms (a GhostShell omp tab: about 290 KB): html=false drops the HTML and the empty spacer phantoms, last=N keeps only the newest N, max_chars cuts each text.",
1920
+ "description": "Return phantom HTML and extracted text from a view by name.\nSublime has no API to list phantoms, so this sees only phantom sets that a plugin keeps in a module-level _phantom_sets dict (view id -> PhantomSet), as GhostShell does; phantoms added any other way are not listed.\nIf key is omitted, returns phantoms for all keys. Output can be huge for a view with hundreds of phantoms (a GhostShell omp tab: about 290 KB): html=false drops the HTML and the empty spacer phantoms, last=N keeps only the newest N, max_chars cuts each text.",
1902
1921
  "inputSchema": {
1903
1922
  "type": "object",
1904
1923
  "properties": {
@@ -2353,19 +2372,18 @@
2353
2372
  },
2354
2373
  {
2355
2374
  "name": "move_view",
2356
- "description": "Move the active view to a different group. Optional args: group (target group index), direction ('left'/'right'/'up'/'down').",
2375
+ "description": "Move the active view to another group (Sublime's move_to_group). group is the target group index (0-based).",
2357
2376
  "inputSchema": {
2358
2377
  "type": "object",
2359
2378
  "properties": {
2360
2379
  "group": {
2361
2380
  "type": "integer",
2362
- "default": -1
2363
- },
2364
- "direction": {
2365
- "type": "string",
2366
- "default": ""
2381
+ "description": "Target group index, 0-based."
2367
2382
  }
2368
- }
2383
+ },
2384
+ "required": [
2385
+ "group"
2386
+ ]
2369
2387
  }
2370
2388
  },
2371
2389
  {
@@ -2386,25 +2404,40 @@
2386
2404
  },
2387
2405
  {
2388
2406
  "name": "new_file_at",
2389
- "description": "Create a new file at the given path (WindowCommand). Pass 'path' in args.",
2407
+ "description": "Create a new file inside the given folders (WindowCommand new_file_at, the sidebar's New File). It opens an input panel for the file name: answer it with drive_input_panel (text=<name>, action='submit').",
2390
2408
  "inputSchema": {
2391
2409
  "type": "object",
2392
2410
  "properties": {
2393
- "path": {
2394
- "type": "string"
2411
+ "dirs": {
2412
+ "type": "array",
2413
+ "items": {
2414
+ "type": "string"
2415
+ },
2416
+ "description": "Folder path(s) to create the file in."
2395
2417
  }
2396
2418
  },
2397
2419
  "required": [
2398
- "path"
2420
+ "dirs"
2399
2421
  ]
2400
2422
  }
2401
2423
  },
2402
2424
  {
2403
2425
  "name": "new_folder",
2404
- "description": "Create a new folder in the current project (WindowCommand).",
2426
+ "description": "Create a new folder inside the given folders (WindowCommand new_folder, the sidebar's New Folder). It opens an input panel for the folder name: answer it with drive_input_panel (text=<name>, action='submit').",
2405
2427
  "inputSchema": {
2406
2428
  "type": "object",
2407
- "properties": {}
2429
+ "properties": {
2430
+ "dirs": {
2431
+ "type": "array",
2432
+ "items": {
2433
+ "type": "string"
2434
+ },
2435
+ "description": "Folder path(s) to create the folder in."
2436
+ }
2437
+ },
2438
+ "required": [
2439
+ "dirs"
2440
+ ]
2408
2441
  }
2409
2442
  },
2410
2443
  {
@@ -2513,7 +2546,7 @@
2513
2546
  },
2514
2547
  {
2515
2548
  "name": "next_pane",
2516
- "description": "Move focus to the next pane/group in the window.",
2549
+ "description": "Move focus to the next pane/group in the window (Sublime's focus_neighboring_group).",
2517
2550
  "inputSchema": {
2518
2551
  "type": "object",
2519
2552
  "properties": {}
@@ -2689,7 +2722,12 @@
2689
2722
  "description": "Opens a recently opened file. (WindowCommand)",
2690
2723
  "inputSchema": {
2691
2724
  "type": "object",
2692
- "properties": {}
2725
+ "properties": {
2726
+ "index": {
2727
+ "type": "integer",
2728
+ "description": "The index of the recent file to open, 0 being the most recent. Without it the command does nothing."
2729
+ }
2730
+ }
2693
2731
  }
2694
2732
  },
2695
2733
  {
@@ -2878,7 +2916,7 @@
2878
2916
  },
2879
2917
  {
2880
2918
  "name": "prev_pane",
2881
- "description": "Move focus to the previous pane/group in the window.",
2919
+ "description": "Move focus to the previous pane/group in the window (focus_neighboring_group, backwards).",
2882
2920
  "inputSchema": {
2883
2921
  "type": "object",
2884
2922
  "properties": {}
@@ -3181,17 +3219,10 @@
3181
3219
  },
3182
3220
  {
3183
3221
  "name": "rename_file",
3184
- "description": "Rename the active file (WindowCommand). Pass 'path' for the new name.",
3222
+ "description": "Open the File > Rename prompt for the active file (WindowCommand rename_file). The prompt is an input panel: enter the new name with drive_input_panel (text=<new name>, action='submit').",
3185
3223
  "inputSchema": {
3186
3224
  "type": "object",
3187
- "properties": {
3188
- "path": {
3189
- "type": "string"
3190
- }
3191
- },
3192
- "required": [
3193
- "path"
3194
- ]
3225
+ "properties": {}
3195
3226
  }
3196
3227
  },
3197
3228
  {
@@ -3254,7 +3285,7 @@
3254
3285
  },
3255
3286
  {
3256
3287
  "name": "replace_in_files",
3257
- "description": "Run the Replace half of Find in Files (Ctrl+Shift+H \u2192 Replace All) and show the diff preview panel so the user can review every replacement before it is committed. Same `where` syntax as find_in_files. Replace string may be empty for deletion. Regex capture-group backrefs ($1, $2) supported when regex=True.",
3288
+ "description": "Fill the Find in Files panel and press its Replace button (Find in Files, Replace). Sublime then asks 'Confirm Replace': answer it with dismiss_native_window (action='button', button='Replace' or 'Cancel'). On Replace, the changes are made in the matching files' open buffers (the files open with unsaved changes); write them to disk with save_all. Same `where` syntax as find_in_files. Replace string may be empty for deletion. Regex capture-group backrefs ($1, $2) supported when regex=True.",
3258
3289
  "inputSchema": {
3259
3290
  "type": "object",
3260
3291
  "properties": {
@@ -3898,16 +3929,17 @@
3898
3929
  },
3899
3930
  {
3900
3931
  "name": "set_max_columns",
3901
- "description": "Set the maximum number of columns for the current layout (WindowCommand). Pass 'cols' integer.",
3932
+ "description": "Set the maximum number of columns the groups are laid out in (WindowCommand, Sublime's View > Layout > Max Columns). It only matters when the window has more groups than columns.",
3902
3933
  "inputSchema": {
3903
3934
  "type": "object",
3904
3935
  "properties": {
3905
- "cols": {
3906
- "type": "integer"
3936
+ "columns": {
3937
+ "type": "integer",
3938
+ "description": "1 to 4."
3907
3939
  }
3908
3940
  },
3909
3941
  "required": [
3910
- "cols"
3942
+ "columns"
3911
3943
  ]
3912
3944
  }
3913
3945
  },
@@ -4118,10 +4150,20 @@
4118
4150
  },
4119
4151
  {
4120
4152
  "name": "sort_selection",
4121
- "description": "Sort the selected lines alphabetically (locale-aware).",
4153
+ "description": "Sort the contents of several selections among themselves (TextCommand): with the selections c, a, b they become a, b, c. It does not sort lines; use sort_lines for that. Optional case_sensitive, reverse, remove_duplicates.",
4122
4154
  "inputSchema": {
4123
4155
  "type": "object",
4124
- "properties": {}
4156
+ "properties": {
4157
+ "case_sensitive": {
4158
+ "type": "boolean"
4159
+ },
4160
+ "reverse": {
4161
+ "type": "boolean"
4162
+ },
4163
+ "remove_duplicates": {
4164
+ "type": "boolean"
4165
+ }
4166
+ }
4125
4167
  }
4126
4168
  },
4127
4169
  {
@@ -4953,17 +4995,10 @@
4953
4995
  },
4954
4996
  {
4955
4997
  "name": "view_resource",
4956
- "description": "Open a read-only view of a bundled or packaged resource (WindowCommand). Pass 'resource'.",
4998
+ "description": "Open Sublime's View Package File picker (WindowCommand view_resource): pick a package, then a file in it. It takes no arguments; answer the pickers with ui_type_text and ui_press_key.",
4957
4999
  "inputSchema": {
4958
5000
  "type": "object",
4959
- "properties": {
4960
- "resource": {
4961
- "type": "string"
4962
- }
4963
- },
4964
- "required": [
4965
- "resource"
4966
- ]
5001
+ "properties": {}
4967
5002
  }
4968
5003
  },
4969
5004
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sublime-mcp",
3
- "version": "1.14.3",
3
+ "version": "1.14.5",
4
4
  "description": "MCP server for Sublime Text 4 — exposes editor state and editing tools to AI assistants via the Model Context Protocol.",
5
5
  "type": "module",
6
6
  "bin": {