@akiojin/unity-mcp-server 2.45.5 → 2.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4436 @@
1
+ [
2
+ {
3
+ "name": "addressables_analyze",
4
+ "description": "Analyze Unity Addressables for duplicates, dependencies, and unused assets",
5
+ "inputSchema": {
6
+ "type": "object",
7
+ "properties": {
8
+ "action": {
9
+ "type": "string",
10
+ "enum": [
11
+ "analyze_duplicates",
12
+ "analyze_dependencies",
13
+ "analyze_unused"
14
+ ],
15
+ "description": "The Addressables analysis operation to perform"
16
+ },
17
+ "assetPath": {
18
+ "type": "string",
19
+ "pattern": "^Assets/.+",
20
+ "description": "Asset path to analyze dependencies (required for analyze_dependencies)"
21
+ },
22
+ "pageSize": {
23
+ "type": "integer",
24
+ "minimum": 1,
25
+ "maximum": 100,
26
+ "default": 20,
27
+ "description": "Number of results per page (for analyze_duplicates, analyze_unused)"
28
+ },
29
+ "offset": {
30
+ "type": "integer",
31
+ "minimum": 0,
32
+ "default": 0,
33
+ "description": "Offset for pagination"
34
+ }
35
+ },
36
+ "required": [
37
+ "action"
38
+ ]
39
+ }
40
+ },
41
+ {
42
+ "name": "addressables_build",
43
+ "description": "Build Unity Addressables content or clean build cache",
44
+ "inputSchema": {
45
+ "type": "object",
46
+ "properties": {
47
+ "action": {
48
+ "type": "string",
49
+ "enum": [
50
+ "build",
51
+ "clean_build"
52
+ ],
53
+ "description": "The Addressables build operation to perform"
54
+ },
55
+ "buildTarget": {
56
+ "type": "string",
57
+ "enum": [
58
+ "StandaloneWindows64",
59
+ "StandaloneWindows",
60
+ "StandaloneLinux64",
61
+ "StandaloneOSX",
62
+ "iOS",
63
+ "Android",
64
+ "WebGL"
65
+ ],
66
+ "description": "Optional build target platform (for build action)"
67
+ }
68
+ },
69
+ "required": [
70
+ "action"
71
+ ]
72
+ }
73
+ },
74
+ {
75
+ "name": "addressables_manage",
76
+ "description": "Manage Unity Addressables assets and groups - add, remove, organize entries and groups",
77
+ "inputSchema": {
78
+ "type": "object",
79
+ "properties": {
80
+ "action": {
81
+ "type": "string",
82
+ "enum": [
83
+ "add_entry",
84
+ "remove_entry",
85
+ "set_address",
86
+ "add_label",
87
+ "remove_label",
88
+ "list_entries",
89
+ "list_groups",
90
+ "create_group",
91
+ "remove_group",
92
+ "move_entry"
93
+ ],
94
+ "description": "The Addressables management operation to perform"
95
+ },
96
+ "assetPath": {
97
+ "type": "string",
98
+ "pattern": "^Assets/.+",
99
+ "description": "Asset path starting with Assets/ (required for most actions)"
100
+ },
101
+ "address": {
102
+ "type": "string",
103
+ "description": "Addressable name/address (required for add_entry)"
104
+ },
105
+ "groupName": {
106
+ "type": "string",
107
+ "description": "Group name (required for add_entry, create_group, remove_group)"
108
+ },
109
+ "targetGroupName": {
110
+ "type": "string",
111
+ "description": "Target group name for move_entry"
112
+ },
113
+ "label": {
114
+ "type": "string",
115
+ "description": "Label name for add_label/remove_label"
116
+ },
117
+ "labels": {
118
+ "type": "array",
119
+ "items": {
120
+ "type": "string"
121
+ },
122
+ "description": "Labels to add (optional for add_entry)"
123
+ },
124
+ "newAddress": {
125
+ "type": "string",
126
+ "description": "New address name for set_address"
127
+ },
128
+ "pageSize": {
129
+ "type": "integer",
130
+ "minimum": 1,
131
+ "maximum": 100,
132
+ "default": 20,
133
+ "description": "Number of results per page (for list_entries)"
134
+ },
135
+ "offset": {
136
+ "type": "integer",
137
+ "minimum": 0,
138
+ "default": 0,
139
+ "description": "Offset for pagination (for list_entries)"
140
+ }
141
+ },
142
+ "required": [
143
+ "action"
144
+ ]
145
+ }
146
+ },
147
+ {
148
+ "name": "analysis_animator_runtime_info_get",
149
+ "description": "Get Animator runtime info (IK, root motion, performance) — Play mode only.",
150
+ "inputSchema": {
151
+ "type": "object",
152
+ "properties": {
153
+ "gameObjectName": {
154
+ "type": "string",
155
+ "description": "Name of the GameObject with the Animator component"
156
+ },
157
+ "includeIK": {
158
+ "type": "boolean",
159
+ "description": "Include IK (Inverse Kinematics) information. Default: true",
160
+ "default": true
161
+ },
162
+ "includeRootMotion": {
163
+ "type": "boolean",
164
+ "description": "Include root motion information. Default: true",
165
+ "default": true
166
+ },
167
+ "includeBehaviours": {
168
+ "type": "boolean",
169
+ "description": "Include state machine behaviours. Default: false",
170
+ "default": false
171
+ }
172
+ },
173
+ "required": [
174
+ "gameObjectName"
175
+ ]
176
+ }
177
+ },
178
+ {
179
+ "name": "analysis_animator_state_get",
180
+ "description": "Get Animator state: layers, transitions, and parameter values for a GameObject.",
181
+ "inputSchema": {
182
+ "type": "object",
183
+ "properties": {
184
+ "gameObjectName": {
185
+ "type": "string",
186
+ "description": "Name of the GameObject with the Animator component"
187
+ },
188
+ "includeParameters": {
189
+ "type": "boolean",
190
+ "description": "Include all animator parameters and their current values. Default: true",
191
+ "default": true
192
+ },
193
+ "includeStates": {
194
+ "type": "boolean",
195
+ "description": "Include current state information for each layer. Default: true",
196
+ "default": true
197
+ },
198
+ "includeTransitions": {
199
+ "type": "boolean",
200
+ "description": "Include active transition information. Default: true",
201
+ "default": true
202
+ },
203
+ "includeClips": {
204
+ "type": "boolean",
205
+ "description": "Include animation clip information. Default: false",
206
+ "default": false
207
+ },
208
+ "layerIndex": {
209
+ "type": "number",
210
+ "description": "Specific layer index to query (-1 for all layers). Default: -1",
211
+ "default": -1
212
+ }
213
+ },
214
+ "required": [
215
+ "gameObjectName"
216
+ ]
217
+ }
218
+ },
219
+ {
220
+ "name": "analysis_component_find",
221
+ "description": "Find GameObjects that have a specific component type (scene/prefabs/all).",
222
+ "inputSchema": {
223
+ "type": "object",
224
+ "properties": {
225
+ "componentType": {
226
+ "type": "string",
227
+ "description": "Component type to search for (e.g., \"Light\", \"Collider\", \"AudioSource\")"
228
+ },
229
+ "includeInactive": {
230
+ "type": "boolean",
231
+ "description": "Include inactive GameObjects. Default: true"
232
+ },
233
+ "searchScope": {
234
+ "type": "string",
235
+ "enum": [
236
+ "scene",
237
+ "prefabs",
238
+ "all"
239
+ ],
240
+ "description": "Where to search: current scene, prefabs, or all. Default: \"scene\""
241
+ },
242
+ "matchExactType": {
243
+ "type": "boolean",
244
+ "description": "Match exact type only (not derived types). Default: true"
245
+ }
246
+ },
247
+ "required": [
248
+ "componentType"
249
+ ]
250
+ }
251
+ },
252
+ {
253
+ "name": "analysis_component_values_get",
254
+ "description": "Get properties/values from a component on a GameObject (scene or prefab mode).",
255
+ "inputSchema": {
256
+ "type": "object",
257
+ "properties": {
258
+ "gameObjectName": {
259
+ "type": "string",
260
+ "description": "Name of the GameObject"
261
+ },
262
+ "componentType": {
263
+ "type": "string",
264
+ "description": "Type of component (e.g., \"Light\", \"Camera\", \"Rigidbody\")"
265
+ },
266
+ "componentIndex": {
267
+ "type": "number",
268
+ "description": "Index if multiple components of same type. Default: 0"
269
+ },
270
+ "includePrivateFields": {
271
+ "type": "boolean",
272
+ "description": "Include non-public fields. Default: false"
273
+ },
274
+ "includeInherited": {
275
+ "type": "boolean",
276
+ "description": "Include inherited properties. Default: true"
277
+ }
278
+ },
279
+ "required": [
280
+ "gameObjectName",
281
+ "componentType"
282
+ ]
283
+ }
284
+ },
285
+ {
286
+ "name": "analysis_gameobject_details_get",
287
+ "description": "Get details for a GameObject by name or path (children/components/materials).",
288
+ "inputSchema": {
289
+ "type": "object",
290
+ "properties": {
291
+ "gameObjectName": {
292
+ "type": "string",
293
+ "description": "Name of the GameObject to inspect"
294
+ },
295
+ "path": {
296
+ "type": "string",
297
+ "description": "Full hierarchy path to the GameObject (use either name or path)"
298
+ },
299
+ "includeChildren": {
300
+ "type": "boolean",
301
+ "description": "Include full hierarchy details. Default: false"
302
+ },
303
+ "includeComponents": {
304
+ "type": "boolean",
305
+ "description": "Include all component details. Default: true"
306
+ },
307
+ "includeMaterials": {
308
+ "type": "boolean",
309
+ "description": "Include material information. Default: false"
310
+ },
311
+ "maxDepth": {
312
+ "type": "number",
313
+ "description": "Maximum depth for child traversal. Default: 3, Range: 0-10"
314
+ }
315
+ },
316
+ "required": [
317
+ "gameObjectName"
318
+ ]
319
+ }
320
+ },
321
+ {
322
+ "name": "analysis_object_references_get",
323
+ "description": "Find references to and from a GameObject (hierarchy/assets/prefabs).",
324
+ "inputSchema": {
325
+ "type": "object",
326
+ "properties": {
327
+ "gameObjectName": {
328
+ "type": "string",
329
+ "description": "Name of the GameObject to analyze references for"
330
+ },
331
+ "includeAssetReferences": {
332
+ "type": "boolean",
333
+ "description": "Include references to assets (materials, meshes, etc). Default: true"
334
+ },
335
+ "includeHierarchyReferences": {
336
+ "type": "boolean",
337
+ "description": "Include parent/child hierarchy references. Default: true"
338
+ },
339
+ "searchInPrefabs": {
340
+ "type": "boolean",
341
+ "description": "Also search for references in prefab assets. Default: false"
342
+ }
343
+ },
344
+ "required": [
345
+ "gameObjectName"
346
+ ]
347
+ }
348
+ },
349
+ {
350
+ "name": "analysis_scene_contents_analyze",
351
+ "description": "Analyze current scene: object counts, types, prefabs, and memory stats.",
352
+ "inputSchema": {
353
+ "type": "object",
354
+ "properties": {
355
+ "includeInactive": {
356
+ "type": "boolean",
357
+ "description": "Include inactive objects in analysis. Default: true"
358
+ },
359
+ "groupByType": {
360
+ "type": "boolean",
361
+ "description": "Group results by component types. Default: true"
362
+ },
363
+ "includePrefabInfo": {
364
+ "type": "boolean",
365
+ "description": "Include prefab connection info. Default: true"
366
+ },
367
+ "includeMemoryInfo": {
368
+ "type": "boolean",
369
+ "description": "Include memory usage estimates. Default: false"
370
+ }
371
+ }
372
+ }
373
+ },
374
+ {
375
+ "name": "asset_database_manage",
376
+ "description": "Manage Unity Asset Database operations (find, info, create folders, move, copy, delete, refresh). NOTE: The \"refresh\" action may take 5-120+ seconds for large projects as Unity needs to scan all assets, reimport changed files, and compile scripts. Please wait for the operation to complete.",
377
+ "inputSchema": {
378
+ "type": "object",
379
+ "properties": {
380
+ "action": {
381
+ "type": "string",
382
+ "enum": [
383
+ "find_assets",
384
+ "get_asset_info",
385
+ "create_folder",
386
+ "delete_asset",
387
+ "move_asset",
388
+ "copy_asset",
389
+ "refresh",
390
+ "save"
391
+ ],
392
+ "description": "The action to perform"
393
+ },
394
+ "filter": {
395
+ "type": "string",
396
+ "description": "Search filter for find_assets (e.g., \"t:Texture2D\", \"l:UI\")"
397
+ },
398
+ "searchInFolders": {
399
+ "type": "array",
400
+ "items": {
401
+ "type": "string"
402
+ },
403
+ "description": "Folders to search in for find_assets (optional)"
404
+ },
405
+ "assetPath": {
406
+ "type": "string",
407
+ "description": "Path to the asset (must start with \"Assets/\")"
408
+ },
409
+ "folderPath": {
410
+ "type": "string",
411
+ "description": "Path for folder creation (must start with \"Assets/\")"
412
+ },
413
+ "fromPath": {
414
+ "type": "string",
415
+ "description": "Source path for move/copy operations"
416
+ },
417
+ "toPath": {
418
+ "type": "string",
419
+ "description": "Destination path for move/copy operations"
420
+ }
421
+ },
422
+ "required": [
423
+ "action"
424
+ ]
425
+ }
426
+ },
427
+ {
428
+ "name": "asset_dependency_analyze",
429
+ "description": "Analyze Unity asset dependencies (get dependencies, dependents, circular deps, unused assets, size impact)",
430
+ "inputSchema": {
431
+ "type": "object",
432
+ "properties": {
433
+ "action": {
434
+ "type": "string",
435
+ "enum": [
436
+ "get_dependencies",
437
+ "get_dependents",
438
+ "analyze_circular",
439
+ "find_unused",
440
+ "analyze_size_impact",
441
+ "validate_references"
442
+ ],
443
+ "description": "The analysis action to perform"
444
+ },
445
+ "assetPath": {
446
+ "type": "string",
447
+ "description": "Path to the asset (required for specific asset analysis)"
448
+ },
449
+ "recursive": {
450
+ "type": "boolean",
451
+ "description": "Whether to analyze dependencies recursively (for get_dependencies)"
452
+ },
453
+ "includeBuiltIn": {
454
+ "type": "boolean",
455
+ "description": "Whether to include built-in assets in analysis (for find_unused)"
456
+ }
457
+ },
458
+ "required": [
459
+ "action"
460
+ ]
461
+ }
462
+ },
463
+ {
464
+ "name": "asset_import_settings_manage",
465
+ "description": "Manage Unity asset import settings (get, modify, apply presets, reimport)",
466
+ "inputSchema": {
467
+ "type": "object",
468
+ "properties": {
469
+ "action": {
470
+ "type": "string",
471
+ "enum": [
472
+ "get",
473
+ "modify",
474
+ "apply_preset",
475
+ "reimport"
476
+ ],
477
+ "description": "The action to perform"
478
+ },
479
+ "assetPath": {
480
+ "type": "string",
481
+ "description": "Path to the asset (must start with \"Assets/\")"
482
+ },
483
+ "settings": {
484
+ "type": "object",
485
+ "description": "Import settings to apply (required for modify action)"
486
+ },
487
+ "preset": {
488
+ "type": "string",
489
+ "description": "Name of the preset to apply (required for apply_preset action)"
490
+ }
491
+ },
492
+ "required": [
493
+ "action",
494
+ "assetPath"
495
+ ]
496
+ }
497
+ },
498
+ {
499
+ "name": "asset_material_create",
500
+ "description": "Create a material asset with a shader and property overrides (optional copyFrom).",
501
+ "inputSchema": {
502
+ "type": "object",
503
+ "properties": {
504
+ "materialPath": {
505
+ "type": "string",
506
+ "description": "Asset path for the material. Must start with Assets/ and end with .mat."
507
+ },
508
+ "shader": {
509
+ "type": "string",
510
+ "description": "Shader to use (e.g., Standard, Unlit/Color, Universal Render Pipeline/Lit)."
511
+ },
512
+ "properties": {
513
+ "type": "object",
514
+ "description": "Material property overrides (e.g., {\"_Color\":[1,0,0,1], \"_Metallic\":0.5})."
515
+ },
516
+ "copyFrom": {
517
+ "type": "string",
518
+ "description": "Optional: path to an existing material to clone before applying overrides."
519
+ },
520
+ "overwrite": {
521
+ "type": "boolean",
522
+ "description": "If true, overwrite existing material at the path."
523
+ }
524
+ },
525
+ "required": [
526
+ "materialPath"
527
+ ]
528
+ }
529
+ },
530
+ {
531
+ "name": "asset_material_modify",
532
+ "description": "Modify a material by updating property values and/or changing the shader.",
533
+ "inputSchema": {
534
+ "type": "object",
535
+ "properties": {
536
+ "materialPath": {
537
+ "type": "string",
538
+ "description": "Asset path to the material. Must start with Assets/ and end with .mat."
539
+ },
540
+ "properties": {
541
+ "type": "object",
542
+ "description": "Property updates (e.g., {\"_Color\":[1,0,0,1], \"_Metallic\":0.5})."
543
+ },
544
+ "shader": {
545
+ "type": "string",
546
+ "description": "Optional: change the shader (e.g., Standard, Unlit/Color)."
547
+ }
548
+ },
549
+ "required": [
550
+ "materialPath",
551
+ "properties"
552
+ ]
553
+ }
554
+ },
555
+ {
556
+ "name": "asset_prefab_create",
557
+ "description": "Create a prefab from a GameObject path or create an empty prefab at a target asset path.",
558
+ "inputSchema": {
559
+ "type": "object",
560
+ "properties": {
561
+ "gameObjectPath": {
562
+ "type": "string",
563
+ "description": "Scene path to convert (e.g., \"/Root/Player\"). Mutually exclusive with createFromTemplate."
564
+ },
565
+ "prefabPath": {
566
+ "type": "string",
567
+ "description": "Asset path for the prefab. Must start with Assets/ and end with .prefab."
568
+ },
569
+ "createFromTemplate": {
570
+ "type": "boolean",
571
+ "description": "If true, create an empty prefab (no source GameObject) (default: false)."
572
+ },
573
+ "overwrite": {
574
+ "type": "boolean",
575
+ "description": "If true, overwrite existing prefab at the destination path (default: false)."
576
+ }
577
+ },
578
+ "required": [
579
+ "prefabPath"
580
+ ]
581
+ }
582
+ },
583
+ {
584
+ "name": "asset_prefab_exit_mode",
585
+ "description": "Exit prefab mode and return to the main scene",
586
+ "inputSchema": {
587
+ "type": "object",
588
+ "properties": {
589
+ "saveChanges": {
590
+ "type": "boolean",
591
+ "description": "Save changes before exiting (default: true)"
592
+ }
593
+ }
594
+ }
595
+ },
596
+ {
597
+ "name": "asset_prefab_instantiate",
598
+ "description": "Instantiate a prefab in the scene with optional transform, parent, and name override.",
599
+ "inputSchema": {
600
+ "type": "object",
601
+ "properties": {
602
+ "prefabPath": {
603
+ "type": "string",
604
+ "description": "Asset path to the prefab. Must start with Assets/ and end with .prefab."
605
+ },
606
+ "position": {
607
+ "type": "object",
608
+ "properties": {
609
+ "x": {
610
+ "type": "number"
611
+ },
612
+ "y": {
613
+ "type": "number"
614
+ },
615
+ "z": {
616
+ "type": "number"
617
+ }
618
+ },
619
+ "description": "World position for the instance (requires x,y,z)."
620
+ },
621
+ "rotation": {
622
+ "type": "object",
623
+ "properties": {
624
+ "x": {
625
+ "type": "number"
626
+ },
627
+ "y": {
628
+ "type": "number"
629
+ },
630
+ "z": {
631
+ "type": "number"
632
+ }
633
+ },
634
+ "description": "Euler rotation for the instance (x,y,z)."
635
+ },
636
+ "parent": {
637
+ "type": "string",
638
+ "description": "Parent GameObject scene path (optional)."
639
+ },
640
+ "name": {
641
+ "type": "string",
642
+ "description": "Override name for the instantiated object."
643
+ }
644
+ },
645
+ "required": [
646
+ "prefabPath"
647
+ ]
648
+ }
649
+ },
650
+ {
651
+ "name": "asset_prefab_modify",
652
+ "description": "Modify an existing prefab by applying property changes (optionally to instances).",
653
+ "inputSchema": {
654
+ "type": "object",
655
+ "properties": {
656
+ "prefabPath": {
657
+ "type": "string",
658
+ "description": "Asset path to the prefab. Must start with Assets/ and end with .prefab."
659
+ },
660
+ "modifications": {
661
+ "type": "object",
662
+ "description": "Key/value object of properties to modify on the prefab."
663
+ },
664
+ "applyToInstances": {
665
+ "type": "boolean",
666
+ "description": "If true, also apply to existing scene instances (default: true)."
667
+ }
668
+ },
669
+ "required": [
670
+ "prefabPath",
671
+ "modifications"
672
+ ]
673
+ }
674
+ },
675
+ {
676
+ "name": "asset_prefab_open",
677
+ "description": "Open a prefab asset in prefab mode for editing. Once in prefab mode, use component tools (list_components, add_component, etc.) to inspect and modify components.",
678
+ "inputSchema": {
679
+ "type": "object",
680
+ "properties": {
681
+ "prefabPath": {
682
+ "type": "string",
683
+ "description": "Asset path to the prefab (must start with Assets/ and end with .prefab)"
684
+ },
685
+ "focusObject": {
686
+ "type": "string",
687
+ "description": "Optional path to object within prefab to focus on (relative to prefab root)"
688
+ },
689
+ "isolateObject": {
690
+ "type": "boolean",
691
+ "description": "Isolate the focused object in the hierarchy (default: false)"
692
+ }
693
+ },
694
+ "required": [
695
+ "prefabPath"
696
+ ]
697
+ }
698
+ },
699
+ {
700
+ "name": "asset_prefab_save",
701
+ "description": "Save current prefab changes in prefab mode or save a GameObject as prefab override",
702
+ "inputSchema": {
703
+ "type": "object",
704
+ "properties": {
705
+ "gameObjectPath": {
706
+ "type": "string",
707
+ "description": "Path to GameObject to save as prefab override (optional - if not provided, saves current prefab in prefab mode)"
708
+ },
709
+ "includeChildren": {
710
+ "type": "boolean",
711
+ "description": "Include child object overrides when saving (default: true)"
712
+ }
713
+ }
714
+ }
715
+ },
716
+ {
717
+ "name": "code_index_build",
718
+ "description": "[OFFLINE] No Unity connection required. Build (or rebuild) the persistent SQLite symbol index by scanning document symbols via the C# LSP. Returns immediately with jobId for background execution. Check progress with code_index_status. Stores DB under .unity/cache/code-index/code-index.db.",
719
+ "inputSchema": {
720
+ "type": "object",
721
+ "properties": {
722
+ "throttleMs": {
723
+ "type": "number",
724
+ "minimum": 0,
725
+ "description": "Optional delay in milliseconds after processing each file (testing/debugging)."
726
+ },
727
+ "retry": {
728
+ "type": "number",
729
+ "minimum": 0,
730
+ "maximum": 5,
731
+ "description": "Number of retries for LSP requests (default: 2)."
732
+ }
733
+ }
734
+ }
735
+ },
736
+ {
737
+ "name": "code_index_status",
738
+ "description": "[OFFLINE] No Unity connection required. Report code index status and readiness for symbol/search operations. BEST PRACTICES: Check before heavy symbol operations. Shows total files indexed and coverage percentage. If coverage is low, some symbol operations may be incomplete. Index is automatically built on first use. No parameters needed - lightweight status check.",
739
+ "inputSchema": {
740
+ "type": "object",
741
+ "properties": {}
742
+ }
743
+ },
744
+ {
745
+ "name": "code_index_update",
746
+ "description": "[OFFLINE] No Unity connection required. Refresh code index entries for specific C# files. Use this after modifying files so script editing tools see the latest symbols.",
747
+ "inputSchema": {
748
+ "type": "object",
749
+ "properties": {
750
+ "paths": {
751
+ "type": "array",
752
+ "minItems": 1,
753
+ "items": {
754
+ "type": "string"
755
+ },
756
+ "description": "List of absolute or project-relative C# file paths to re-index."
757
+ },
758
+ "retry": {
759
+ "type": "number",
760
+ "description": "Number of retries when requesting document symbols (default 1)."
761
+ },
762
+ "concurrency": {
763
+ "type": "number",
764
+ "description": "Maximum number of concurrent LSP requests. Default 4."
765
+ }
766
+ },
767
+ "required": [
768
+ "paths"
769
+ ]
770
+ }
771
+ },
772
+ {
773
+ "name": "compilation_get_state",
774
+ "description": "Get current Unity compilation state, errors, and warnings with enhanced detection",
775
+ "inputSchema": {
776
+ "type": "object",
777
+ "properties": {
778
+ "includeMessages": {
779
+ "type": "boolean",
780
+ "description": "Include detailed compilation messages. Unity default: false. Set to true for debugging compilation issues"
781
+ },
782
+ "maxMessages": {
783
+ "type": "number",
784
+ "description": "Maximum number of messages to return (default: 50)"
785
+ }
786
+ }
787
+ }
788
+ },
789
+ {
790
+ "name": "component_add",
791
+ "description": "Add a component to a GameObject (scene or prefab mode) with optional initial properties.",
792
+ "inputSchema": {
793
+ "type": "object",
794
+ "properties": {
795
+ "gameObjectPath": {
796
+ "type": "string",
797
+ "description": "Scene path to the GameObject (e.g., \"/Player\" or \"/Canvas/Button\")."
798
+ },
799
+ "componentType": {
800
+ "type": "string",
801
+ "description": "Type of component to add (e.g., \"Rigidbody\", \"BoxCollider\", \"Light\")"
802
+ },
803
+ "properties": {
804
+ "type": "object",
805
+ "description": "Initial property values to set on the new component.",
806
+ "additionalProperties": true
807
+ }
808
+ },
809
+ "required": [
810
+ "gameObjectPath",
811
+ "componentType"
812
+ ]
813
+ }
814
+ },
815
+ {
816
+ "name": "component_field_set",
817
+ "description": "Update a serialized field on a component (scene hierarchy, prefab stage, or prefab asset).",
818
+ "inputSchema": {
819
+ "type": "object",
820
+ "additionalProperties": false,
821
+ "properties": {
822
+ "scope": {
823
+ "type": "string",
824
+ "enum": [
825
+ "auto",
826
+ "scene",
827
+ "prefabStage",
828
+ "prefabAsset"
829
+ ],
830
+ "description": "Explicit scope for the operation. Use auto (default) to detect automatically."
831
+ },
832
+ "gameObjectPath": {
833
+ "type": "string",
834
+ "description": "Absolute path to the target GameObject (e.g., \"/Player/Weapon\"). Required unless prefabAssetPath is provided."
835
+ },
836
+ "prefabAssetPath": {
837
+ "type": "string",
838
+ "description": "Asset path to the prefab to edit (e.g., \"Assets/Prefabs/Enemy.prefab\")."
839
+ },
840
+ "prefabObjectPath": {
841
+ "type": "string",
842
+ "description": "Path to the object inside the prefab asset (defaults to the prefab root when omitted)."
843
+ },
844
+ "componentType": {
845
+ "type": "string",
846
+ "description": "Component type to edit (short name or fully qualified name)."
847
+ },
848
+ "componentIndex": {
849
+ "type": "integer",
850
+ "minimum": 0,
851
+ "description": "Component index when multiple components of the same type are present. Default: 0."
852
+ },
853
+ "fieldPath": {
854
+ "type": "string",
855
+ "description": "Serialized field path to update. Supports dot and bracket notation (e.g., \"settings.speed\", \"items[0].damage\")."
856
+ },
857
+ "value": {
858
+ "description": "New value for the field. Accepts JSON scalars, objects, or arrays depending on the target type."
859
+ },
860
+ "valueType": {
861
+ "type": "string",
862
+ "enum": [
863
+ "auto",
864
+ "bool",
865
+ "int",
866
+ "long",
867
+ "float",
868
+ "double",
869
+ "string",
870
+ "color",
871
+ "vector2",
872
+ "vector3",
873
+ "vector4",
874
+ "vector2Int",
875
+ "vector3Int",
876
+ "quaternion",
877
+ "rect",
878
+ "rectInt",
879
+ "bounds",
880
+ "boundsInt",
881
+ "enum",
882
+ "objectReference",
883
+ "array",
884
+ "json",
885
+ "null"
886
+ ],
887
+ "description": "Type hint for the value. Defaults to auto detection."
888
+ },
889
+ "enumValue": {
890
+ "type": "string",
891
+ "description": "Enum member name when setting enum fields (optional when value is already a string)."
892
+ },
893
+ "objectReference": {
894
+ "type": "object",
895
+ "additionalProperties": false,
896
+ "properties": {
897
+ "assetPath": {
898
+ "type": "string",
899
+ "description": "AssetDatabase path to load as an object reference."
900
+ },
901
+ "guid": {
902
+ "type": "string",
903
+ "description": "GUID of the asset to reference."
904
+ }
905
+ },
906
+ "description": "Explicit object reference payload. Provide assetPath or guid when setting object references."
907
+ },
908
+ "runtime": {
909
+ "type": "boolean",
910
+ "description": "Allow updates while Unity is in Play Mode (default: false)."
911
+ },
912
+ "dryRun": {
913
+ "type": "boolean",
914
+ "description": "Validate target resolution and preview the change without applying it."
915
+ },
916
+ "applyPrefabChanges": {
917
+ "type": "boolean",
918
+ "description": "When editing prefab assets, save the modified prefab asset. Defaults to true."
919
+ },
920
+ "createUndo": {
921
+ "type": "boolean",
922
+ "description": "Record an undo entry when modifying scene objects. Defaults to true."
923
+ },
924
+ "markSceneDirty": {
925
+ "type": "boolean",
926
+ "description": "Mark the owning scene dirty when modifying scene objects. Defaults to true."
927
+ }
928
+ },
929
+ "required": [
930
+ "componentType",
931
+ "fieldPath"
932
+ ]
933
+ }
934
+ },
935
+ {
936
+ "name": "component_get_types",
937
+ "description": "Get available component types in Unity",
938
+ "inputSchema": {
939
+ "type": "object",
940
+ "properties": {
941
+ "category": {
942
+ "type": "string",
943
+ "description": "Filter by category (e.g., \"Physics\", \"Rendering\", \"UI\")"
944
+ },
945
+ "search": {
946
+ "type": "string",
947
+ "description": "Search for component types by name"
948
+ },
949
+ "onlyAddable": {
950
+ "type": "boolean",
951
+ "description": "Return only components that can be added to GameObjects (default: false)"
952
+ }
953
+ }
954
+ }
955
+ },
956
+ {
957
+ "name": "component_list",
958
+ "description": "List all components on a GameObject in Unity (works in both scene and prefab mode)",
959
+ "inputSchema": {
960
+ "type": "object",
961
+ "properties": {
962
+ "gameObjectPath": {
963
+ "type": "string",
964
+ "description": "Path to the GameObject (e.g., \"/Player\" or \"/Canvas/Button\")"
965
+ },
966
+ "includeInherited": {
967
+ "type": "boolean",
968
+ "description": "Include inherited base component types (default: false)"
969
+ }
970
+ },
971
+ "required": [
972
+ "gameObjectPath"
973
+ ]
974
+ }
975
+ },
976
+ {
977
+ "name": "component_modify",
978
+ "description": "Modify properties of a component on a GameObject in Unity (works in both scene and prefab mode)",
979
+ "inputSchema": {
980
+ "type": "object",
981
+ "properties": {
982
+ "gameObjectPath": {
983
+ "type": "string",
984
+ "description": "Path to the GameObject (e.g., \"/Player\" or \"/Canvas/Button\")"
985
+ },
986
+ "componentType": {
987
+ "type": "string",
988
+ "description": "Type of component to modify (e.g., \"Rigidbody\", \"Light\")"
989
+ },
990
+ "componentIndex": {
991
+ "type": "number",
992
+ "description": "Index of component if multiple of same type exist (default: 0)"
993
+ },
994
+ "properties": {
995
+ "type": "object",
996
+ "description": "Properties to modify with their new values",
997
+ "additionalProperties": true
998
+ }
999
+ },
1000
+ "required": [
1001
+ "gameObjectPath",
1002
+ "componentType",
1003
+ "properties"
1004
+ ]
1005
+ }
1006
+ },
1007
+ {
1008
+ "name": "component_remove",
1009
+ "description": "Remove a component from a GameObject (scene or prefab mode) by type/index.",
1010
+ "inputSchema": {
1011
+ "type": "object",
1012
+ "properties": {
1013
+ "gameObjectPath": {
1014
+ "type": "string",
1015
+ "description": "Path to the GameObject (e.g., \"/Player\" or \"/Canvas/Button\")"
1016
+ },
1017
+ "componentType": {
1018
+ "type": "string",
1019
+ "description": "Type of component to remove (e.g., \"Rigidbody\", \"BoxCollider\")"
1020
+ },
1021
+ "componentIndex": {
1022
+ "type": "number",
1023
+ "description": "Index of component if multiple of same type exist (default: 0)"
1024
+ }
1025
+ },
1026
+ "required": [
1027
+ "gameObjectPath",
1028
+ "componentType"
1029
+ ]
1030
+ }
1031
+ },
1032
+ {
1033
+ "name": "console_clear",
1034
+ "description": "Clear Console logs (optionally set auto-clear and preserve levels).",
1035
+ "inputSchema": {
1036
+ "type": "object",
1037
+ "properties": {
1038
+ "clearOnPlay": {
1039
+ "type": "boolean",
1040
+ "description": "Clear console when entering play mode. Unity default: false. Set to true for cleaner testing sessions"
1041
+ },
1042
+ "clearOnRecompile": {
1043
+ "type": "boolean",
1044
+ "description": "Clear console on script recompilation. Unity default: false. Set to true to focus on current compilation errors"
1045
+ },
1046
+ "clearOnBuild": {
1047
+ "type": "boolean",
1048
+ "description": "Clear console when building. Unity default: false. Set to true for clean build logs"
1049
+ },
1050
+ "preserveWarnings": {
1051
+ "type": "boolean",
1052
+ "description": "Preserve warning messages when clearing (default: false)"
1053
+ },
1054
+ "preserveErrors": {
1055
+ "type": "boolean",
1056
+ "description": "Preserve error messages when clearing (default: false)"
1057
+ }
1058
+ }
1059
+ }
1060
+ },
1061
+ {
1062
+ "name": "console_read",
1063
+ "description": "Read Console logs with filters (type/text/time), formatting, sort, and grouping.",
1064
+ "inputSchema": {
1065
+ "type": "object",
1066
+ "properties": {
1067
+ "raw": {
1068
+ "type": "boolean",
1069
+ "description": "When true, do not expand/validate logTypes and pass them directly to Unity. Use with caution."
1070
+ },
1071
+ "count": {
1072
+ "type": "number",
1073
+ "description": "Number of logs to retrieve (1-1000, default: 100)",
1074
+ "minimum": 1,
1075
+ "maximum": 1000
1076
+ },
1077
+ "logTypes": {
1078
+ "type": "array",
1079
+ "description": "Filter by log types. Allowed: Log, Warning, Error. Error expands to include Exception/Assert internally. Default: all three.",
1080
+ "items": {
1081
+ "type": "string",
1082
+ "enum": [
1083
+ "Log",
1084
+ "Warning",
1085
+ "Error"
1086
+ ]
1087
+ }
1088
+ },
1089
+ "filterText": {
1090
+ "type": "string",
1091
+ "description": "Filter logs containing this text (case-insensitive)"
1092
+ },
1093
+ "includeStackTrace": {
1094
+ "type": "boolean",
1095
+ "description": "Include stack traces in results (default: false). Set to true only when debugging to reduce response size.",
1096
+ "default": false
1097
+ },
1098
+ "format": {
1099
+ "type": "string",
1100
+ "description": "Output format for logs. Unity default: compact. RECOMMENDED: compact for general use, detailed for debugging",
1101
+ "enum": [
1102
+ "detailed",
1103
+ "compact",
1104
+ "json",
1105
+ "plain"
1106
+ ]
1107
+ },
1108
+ "sinceTimestamp": {
1109
+ "type": "string",
1110
+ "description": "Only return logs after this timestamp (ISO 8601)"
1111
+ },
1112
+ "untilTimestamp": {
1113
+ "type": "string",
1114
+ "description": "Only return logs before this timestamp (ISO 8601)"
1115
+ },
1116
+ "sortOrder": {
1117
+ "type": "string",
1118
+ "description": "Sort order for logs (default: newest)",
1119
+ "enum": [
1120
+ "newest",
1121
+ "oldest"
1122
+ ]
1123
+ },
1124
+ "groupBy": {
1125
+ "type": "string",
1126
+ "description": "Group logs by criteria (default: none)",
1127
+ "enum": [
1128
+ "none",
1129
+ "type",
1130
+ "file",
1131
+ "time"
1132
+ ]
1133
+ }
1134
+ }
1135
+ }
1136
+ },
1137
+ {
1138
+ "name": "editor_layers_manage",
1139
+ "description": "Manage project layers: add/remove/list and convert (by name/index).",
1140
+ "inputSchema": {
1141
+ "type": "object",
1142
+ "properties": {
1143
+ "action": {
1144
+ "type": "string",
1145
+ "enum": [
1146
+ "add",
1147
+ "remove",
1148
+ "get",
1149
+ "get_by_name",
1150
+ "get_by_index"
1151
+ ],
1152
+ "description": "Operation: add, remove, get, get_by_name, or get_by_index."
1153
+ },
1154
+ "layerName": {
1155
+ "type": "string",
1156
+ "description": "Layer name (required for add/remove/get_by_name). Letters/numbers/space/_ only."
1157
+ },
1158
+ "layerIndex": {
1159
+ "type": "number",
1160
+ "minimum": 0,
1161
+ "maximum": 31,
1162
+ "description": "Layer index (0-31). Required for get_by_index."
1163
+ }
1164
+ },
1165
+ "required": [
1166
+ "action"
1167
+ ]
1168
+ }
1169
+ },
1170
+ {
1171
+ "name": "editor_quit",
1172
+ "description": "Quit Unity Editor",
1173
+ "inputSchema": {
1174
+ "type": "object",
1175
+ "properties": {}
1176
+ }
1177
+ },
1178
+ {
1179
+ "name": "editor_selection_manage",
1180
+ "description": "Manage editor selection: get/set/clear and optionally include details.",
1181
+ "inputSchema": {
1182
+ "type": "object",
1183
+ "properties": {
1184
+ "action": {
1185
+ "type": "string",
1186
+ "enum": [
1187
+ "get",
1188
+ "set",
1189
+ "clear",
1190
+ "get_details"
1191
+ ],
1192
+ "description": "Operation: get, set, clear, or get_details."
1193
+ },
1194
+ "objectPaths": {
1195
+ "type": "array",
1196
+ "items": {
1197
+ "type": "string"
1198
+ },
1199
+ "description": "GameObject paths for set (e.g., [\"/Main Camera\", \"/Player\"]). Must start with /."
1200
+ },
1201
+ "includeDetails": {
1202
+ "type": "boolean",
1203
+ "description": "If true, return detailed info with get/get_details."
1204
+ }
1205
+ },
1206
+ "required": [
1207
+ "action"
1208
+ ]
1209
+ }
1210
+ },
1211
+ {
1212
+ "name": "editor_tags_manage",
1213
+ "description": "Manage project tags: add/remove/list with validation for reserved names.",
1214
+ "inputSchema": {
1215
+ "type": "object",
1216
+ "properties": {
1217
+ "action": {
1218
+ "type": "string",
1219
+ "enum": [
1220
+ "add",
1221
+ "remove",
1222
+ "get"
1223
+ ],
1224
+ "description": "Operation: add, remove, or get."
1225
+ },
1226
+ "tagName": {
1227
+ "type": "string",
1228
+ "description": "Tag name (required for add/remove). Alphanumeric/underscore only."
1229
+ }
1230
+ },
1231
+ "required": [
1232
+ "action"
1233
+ ]
1234
+ }
1235
+ },
1236
+ {
1237
+ "name": "editor_tools_manage",
1238
+ "description": "Manage editor tools/plugins: list, activate/deactivate, refresh cache.",
1239
+ "inputSchema": {
1240
+ "type": "object",
1241
+ "properties": {
1242
+ "action": {
1243
+ "type": "string",
1244
+ "enum": [
1245
+ "get",
1246
+ "activate",
1247
+ "deactivate",
1248
+ "refresh"
1249
+ ],
1250
+ "description": "Operation: get, activate, deactivate, or refresh."
1251
+ },
1252
+ "toolName": {
1253
+ "type": "string",
1254
+ "description": "Tool name (required for activate/deactivate)."
1255
+ },
1256
+ "category": {
1257
+ "type": "string",
1258
+ "description": "Optional: filter list by category."
1259
+ }
1260
+ },
1261
+ "required": [
1262
+ "action"
1263
+ ]
1264
+ }
1265
+ },
1266
+ {
1267
+ "name": "editor_windows_manage",
1268
+ "description": "Manage editor windows: list/focus/get_state including hidden windows.",
1269
+ "inputSchema": {
1270
+ "type": "object",
1271
+ "properties": {
1272
+ "action": {
1273
+ "type": "string",
1274
+ "enum": [
1275
+ "get",
1276
+ "focus",
1277
+ "get_state"
1278
+ ],
1279
+ "description": "Operation: get (list), focus, or get_state."
1280
+ },
1281
+ "windowType": {
1282
+ "type": "string",
1283
+ "description": "Window type (e.g., SceneView, GameView, InspectorWindow). Required for focus/get_state."
1284
+ },
1285
+ "includeHidden": {
1286
+ "type": "boolean",
1287
+ "description": "If true, includes hidden/minimized windows for get."
1288
+ }
1289
+ },
1290
+ "required": [
1291
+ "action"
1292
+ ]
1293
+ }
1294
+ },
1295
+ {
1296
+ "name": "gameobject_create",
1297
+ "description": "Create a GameObject in Unity scene",
1298
+ "inputSchema": {
1299
+ "type": "object",
1300
+ "properties": {
1301
+ "name": {
1302
+ "type": "string",
1303
+ "description": "Name of the GameObject (default: \"GameObject\")"
1304
+ },
1305
+ "primitiveType": {
1306
+ "type": "string",
1307
+ "description": "Type of primitive to create",
1308
+ "enum": [
1309
+ "cube",
1310
+ "sphere",
1311
+ "cylinder",
1312
+ "capsule",
1313
+ "plane",
1314
+ "quad"
1315
+ ]
1316
+ },
1317
+ "position": {
1318
+ "type": "object",
1319
+ "description": "World position",
1320
+ "properties": {
1321
+ "x": {
1322
+ "type": "number"
1323
+ },
1324
+ "y": {
1325
+ "type": "number"
1326
+ },
1327
+ "z": {
1328
+ "type": "number"
1329
+ }
1330
+ }
1331
+ },
1332
+ "rotation": {
1333
+ "type": "object",
1334
+ "description": "Rotation in Euler angles",
1335
+ "properties": {
1336
+ "x": {
1337
+ "type": "number"
1338
+ },
1339
+ "y": {
1340
+ "type": "number"
1341
+ },
1342
+ "z": {
1343
+ "type": "number"
1344
+ }
1345
+ }
1346
+ },
1347
+ "scale": {
1348
+ "type": "object",
1349
+ "description": "Local scale",
1350
+ "properties": {
1351
+ "x": {
1352
+ "type": "number"
1353
+ },
1354
+ "y": {
1355
+ "type": "number"
1356
+ },
1357
+ "z": {
1358
+ "type": "number"
1359
+ }
1360
+ }
1361
+ },
1362
+ "parentPath": {
1363
+ "type": "string",
1364
+ "description": "Path to parent GameObject (e.g., \"/Parent/Child\")"
1365
+ },
1366
+ "tag": {
1367
+ "type": "string",
1368
+ "description": "Tag to assign to the GameObject"
1369
+ },
1370
+ "layer": {
1371
+ "type": "number",
1372
+ "description": "Layer index (0-31)",
1373
+ "minimum": 0,
1374
+ "maximum": 31
1375
+ }
1376
+ }
1377
+ }
1378
+ },
1379
+ {
1380
+ "name": "gameobject_delete",
1381
+ "description": "Delete GameObject(s) by path or paths (optionally include children).",
1382
+ "inputSchema": {
1383
+ "type": "object",
1384
+ "properties": {
1385
+ "path": {
1386
+ "type": "string",
1387
+ "description": "Path to a single GameObject to delete"
1388
+ },
1389
+ "paths": {
1390
+ "type": "array",
1391
+ "description": "Array of paths to multiple GameObjects to delete",
1392
+ "items": {
1393
+ "type": "string"
1394
+ }
1395
+ },
1396
+ "includeChildren": {
1397
+ "type": "boolean",
1398
+ "description": "Whether to delete children (default: true)"
1399
+ }
1400
+ }
1401
+ }
1402
+ },
1403
+ {
1404
+ "name": "gameobject_find",
1405
+ "description": "Find GameObjects by name, tag, or layer with optional exact matching.",
1406
+ "inputSchema": {
1407
+ "type": "object",
1408
+ "properties": {
1409
+ "name": {
1410
+ "type": "string",
1411
+ "description": "Name to search for"
1412
+ },
1413
+ "tag": {
1414
+ "type": "string",
1415
+ "description": "Tag to search for"
1416
+ },
1417
+ "layer": {
1418
+ "type": "number",
1419
+ "description": "Layer index to search for (0-31)",
1420
+ "minimum": 0,
1421
+ "maximum": 31
1422
+ },
1423
+ "exactMatch": {
1424
+ "type": "boolean",
1425
+ "description": "Whether to match name exactly (default: false)"
1426
+ }
1427
+ }
1428
+ }
1429
+ },
1430
+ {
1431
+ "name": "gameobject_get_hierarchy",
1432
+ "description": "Get scene hierarchy. For large scenes, prefer nameOnly=true. With nameOnly, use maxObjects ~100–500; when requesting details, keep maxObjects ~10–50 to conserve tokens. Only enable includeComponents/includeTransform when necessary.",
1433
+ "inputSchema": {
1434
+ "type": "object",
1435
+ "properties": {
1436
+ "rootPath": {
1437
+ "type": "string",
1438
+ "description": "Path to GameObject whose children will be the root of the returned hierarchy (e.g., \"/Team_0\" returns Team_0's children). If not specified, returns scene root objects."
1439
+ },
1440
+ "includeInactive": {
1441
+ "type": "boolean",
1442
+ "description": "Include inactive GameObjects (default: true)"
1443
+ },
1444
+ "maxDepth": {
1445
+ "type": "number",
1446
+ "description": "Maximum depth to traverse from the root. 0=immediate children only (default), 1=children+grandchildren, 2=children+grandchildren+great-grandchildren, etc. (-1 for unlimited)",
1447
+ "minimum": -1
1448
+ },
1449
+ "includeComponents": {
1450
+ "type": "boolean",
1451
+ "description": "Include component information (default: false). WARNING: Significantly increases response size - use with small maxObjects values."
1452
+ },
1453
+ "includeTransform": {
1454
+ "type": "boolean",
1455
+ "description": "Include transform information (default: false). WARNING: Increases response size - use with small maxObjects values."
1456
+ },
1457
+ "includeTags": {
1458
+ "type": "boolean",
1459
+ "description": "Include tag information (default: false)"
1460
+ },
1461
+ "includeLayers": {
1462
+ "type": "boolean",
1463
+ "description": "Include layer information (default: false)"
1464
+ },
1465
+ "nameOnly": {
1466
+ "type": "boolean",
1467
+ "description": "Return only names and paths for minimal data size (default: false). RECOMMENDED for large hierarchies to reduce token usage."
1468
+ },
1469
+ "maxObjects": {
1470
+ "type": "number",
1471
+ "description": "Maximum number of objects to include in response. Unity default: 100 (-1 for unlimited). RECOMMENDED: 10-50 for detailed info, 100-500 for nameOnly mode to avoid MCP token limits",
1472
+ "minimum": -1
1473
+ }
1474
+ }
1475
+ }
1476
+ },
1477
+ {
1478
+ "name": "gameobject_modify",
1479
+ "description": "Modify GameObject properties (transform/name/parent/active/tag/layer).",
1480
+ "inputSchema": {
1481
+ "type": "object",
1482
+ "properties": {
1483
+ "path": {
1484
+ "type": "string",
1485
+ "description": "Path to the GameObject to modify (required)"
1486
+ },
1487
+ "name": {
1488
+ "type": "string",
1489
+ "description": "New name for the GameObject"
1490
+ },
1491
+ "position": {
1492
+ "type": "object",
1493
+ "description": "New world position",
1494
+ "properties": {
1495
+ "x": {
1496
+ "type": "number"
1497
+ },
1498
+ "y": {
1499
+ "type": "number"
1500
+ },
1501
+ "z": {
1502
+ "type": "number"
1503
+ }
1504
+ }
1505
+ },
1506
+ "rotation": {
1507
+ "type": "object",
1508
+ "description": "New rotation in Euler angles",
1509
+ "properties": {
1510
+ "x": {
1511
+ "type": "number"
1512
+ },
1513
+ "y": {
1514
+ "type": "number"
1515
+ },
1516
+ "z": {
1517
+ "type": "number"
1518
+ }
1519
+ }
1520
+ },
1521
+ "scale": {
1522
+ "type": "object",
1523
+ "description": "New local scale",
1524
+ "properties": {
1525
+ "x": {
1526
+ "type": "number"
1527
+ },
1528
+ "y": {
1529
+ "type": "number"
1530
+ },
1531
+ "z": {
1532
+ "type": "number"
1533
+ }
1534
+ }
1535
+ },
1536
+ "active": {
1537
+ "type": "boolean",
1538
+ "description": "Set active state"
1539
+ },
1540
+ "parentPath": {
1541
+ "type": [
1542
+ "string",
1543
+ "null"
1544
+ ],
1545
+ "description": "Path to new parent GameObject (null to unparent)"
1546
+ },
1547
+ "tag": {
1548
+ "type": "string",
1549
+ "description": "New tag"
1550
+ },
1551
+ "layer": {
1552
+ "type": "number",
1553
+ "description": "New layer index (0-31)",
1554
+ "minimum": 0,
1555
+ "maximum": 31
1556
+ }
1557
+ },
1558
+ "required": [
1559
+ "path"
1560
+ ]
1561
+ }
1562
+ },
1563
+ {
1564
+ "name": "input_action_add",
1565
+ "description": "Add a new Action to an Action Map",
1566
+ "inputSchema": {
1567
+ "type": "object",
1568
+ "properties": {
1569
+ "assetPath": {
1570
+ "type": "string",
1571
+ "description": "Path to the Input Actions asset file"
1572
+ },
1573
+ "mapName": {
1574
+ "type": "string",
1575
+ "description": "Name of the Action Map"
1576
+ },
1577
+ "actionName": {
1578
+ "type": "string",
1579
+ "description": "Name for the new Action"
1580
+ },
1581
+ "actionType": {
1582
+ "type": "string",
1583
+ "description": "Type of the action",
1584
+ "enum": [
1585
+ "Button",
1586
+ "Value",
1587
+ "PassThrough"
1588
+ ],
1589
+ "default": "Button"
1590
+ }
1591
+ },
1592
+ "required": [
1593
+ "assetPath",
1594
+ "mapName",
1595
+ "actionName"
1596
+ ]
1597
+ }
1598
+ },
1599
+ {
1600
+ "name": "input_action_map_create",
1601
+ "description": "Create a new Action Map in an Input Actions asset",
1602
+ "inputSchema": {
1603
+ "type": "object",
1604
+ "properties": {
1605
+ "assetPath": {
1606
+ "type": "string",
1607
+ "description": "Path to the Input Actions asset file"
1608
+ },
1609
+ "mapName": {
1610
+ "type": "string",
1611
+ "description": "Name for the new Action Map"
1612
+ },
1613
+ "actions": {
1614
+ "type": "array",
1615
+ "description": "Optional array of actions to add",
1616
+ "items": {
1617
+ "type": "object",
1618
+ "properties": {
1619
+ "name": {
1620
+ "type": "string"
1621
+ },
1622
+ "type": {
1623
+ "type": "string",
1624
+ "enum": [
1625
+ "Button",
1626
+ "Value",
1627
+ "PassThrough"
1628
+ ]
1629
+ }
1630
+ }
1631
+ }
1632
+ }
1633
+ },
1634
+ "required": [
1635
+ "assetPath",
1636
+ "mapName"
1637
+ ]
1638
+ }
1639
+ },
1640
+ {
1641
+ "name": "input_action_map_remove",
1642
+ "description": "Remove an Action Map from an Input Actions asset",
1643
+ "inputSchema": {
1644
+ "type": "object",
1645
+ "properties": {
1646
+ "assetPath": {
1647
+ "type": "string",
1648
+ "description": "Path to the Input Actions asset file"
1649
+ },
1650
+ "mapName": {
1651
+ "type": "string",
1652
+ "description": "Name of the Action Map to remove"
1653
+ }
1654
+ },
1655
+ "required": [
1656
+ "assetPath",
1657
+ "mapName"
1658
+ ]
1659
+ }
1660
+ },
1661
+ {
1662
+ "name": "input_action_remove",
1663
+ "description": "Remove an Action from an Action Map",
1664
+ "inputSchema": {
1665
+ "type": "object",
1666
+ "properties": {
1667
+ "assetPath": {
1668
+ "type": "string",
1669
+ "description": "Path to the Input Actions asset file"
1670
+ },
1671
+ "mapName": {
1672
+ "type": "string",
1673
+ "description": "Name of the Action Map"
1674
+ },
1675
+ "actionName": {
1676
+ "type": "string",
1677
+ "description": "Name of the Action to remove"
1678
+ }
1679
+ },
1680
+ "required": [
1681
+ "assetPath",
1682
+ "mapName",
1683
+ "actionName"
1684
+ ]
1685
+ }
1686
+ },
1687
+ {
1688
+ "name": "input_actions_asset_analyze",
1689
+ "description": "Analyze an Input Actions asset in detail (statistics + device usage).",
1690
+ "inputSchema": {
1691
+ "type": "object",
1692
+ "properties": {
1693
+ "assetPath": {
1694
+ "type": "string",
1695
+ "description": "Path to the Input Actions asset file"
1696
+ },
1697
+ "includeJsonStructure": {
1698
+ "type": "boolean",
1699
+ "description": "Include raw JSON structure. Default: true",
1700
+ "default": true
1701
+ },
1702
+ "includeStatistics": {
1703
+ "type": "boolean",
1704
+ "description": "Include usage statistics. Default: true",
1705
+ "default": true
1706
+ }
1707
+ },
1708
+ "required": [
1709
+ "assetPath"
1710
+ ]
1711
+ }
1712
+ },
1713
+ {
1714
+ "name": "input_actions_state_get",
1715
+ "description": "Get Input Actions state: maps, actions, bindings, devices, JSON structure.",
1716
+ "inputSchema": {
1717
+ "type": "object",
1718
+ "properties": {
1719
+ "assetName": {
1720
+ "type": "string",
1721
+ "description": "Name of the Input Actions asset"
1722
+ },
1723
+ "assetPath": {
1724
+ "type": "string",
1725
+ "description": "Path to the Input Actions asset file"
1726
+ },
1727
+ "includeBindings": {
1728
+ "type": "boolean",
1729
+ "description": "Include binding information. Default: true",
1730
+ "default": true
1731
+ },
1732
+ "includeControlSchemes": {
1733
+ "type": "boolean",
1734
+ "description": "Include control schemes information. Default: true",
1735
+ "default": true
1736
+ },
1737
+ "includeJsonStructure": {
1738
+ "type": "boolean",
1739
+ "description": "Include raw JSON structure. Default: false",
1740
+ "default": false
1741
+ }
1742
+ }
1743
+ }
1744
+ },
1745
+ {
1746
+ "name": "input_binding_add",
1747
+ "description": "Add a new Binding to an Action",
1748
+ "inputSchema": {
1749
+ "type": "object",
1750
+ "properties": {
1751
+ "assetPath": {
1752
+ "type": "string",
1753
+ "description": "Path to the Input Actions asset file"
1754
+ },
1755
+ "mapName": {
1756
+ "type": "string",
1757
+ "description": "Name of the Action Map"
1758
+ },
1759
+ "actionName": {
1760
+ "type": "string",
1761
+ "description": "Name of the Action"
1762
+ },
1763
+ "path": {
1764
+ "type": "string",
1765
+ "description": "Binding path (e.g., \"<Keyboard>/space\", \"<Gamepad>/buttonSouth\")"
1766
+ },
1767
+ "groups": {
1768
+ "type": "string",
1769
+ "description": "Control scheme groups (e.g., \"Keyboard&Mouse\")"
1770
+ },
1771
+ "interactions": {
1772
+ "type": "string",
1773
+ "description": "Interactions (e.g., \"press\", \"hold\")"
1774
+ },
1775
+ "processors": {
1776
+ "type": "string",
1777
+ "description": "Processors (e.g., \"scale\", \"invert\")"
1778
+ }
1779
+ },
1780
+ "required": [
1781
+ "assetPath",
1782
+ "mapName",
1783
+ "actionName",
1784
+ "path"
1785
+ ]
1786
+ }
1787
+ },
1788
+ {
1789
+ "name": "input_binding_composite_create",
1790
+ "description": "Create a composite binding (e.g., 2D Vector for WASD movement)",
1791
+ "inputSchema": {
1792
+ "type": "object",
1793
+ "properties": {
1794
+ "assetPath": {
1795
+ "type": "string",
1796
+ "description": "Path to the Input Actions asset file"
1797
+ },
1798
+ "mapName": {
1799
+ "type": "string",
1800
+ "description": "Name of the Action Map"
1801
+ },
1802
+ "actionName": {
1803
+ "type": "string",
1804
+ "description": "Name of the Action"
1805
+ },
1806
+ "compositeType": {
1807
+ "type": "string",
1808
+ "description": "Type of composite",
1809
+ "enum": [
1810
+ "2DVector",
1811
+ "1DAxis"
1812
+ ],
1813
+ "default": "2DVector"
1814
+ },
1815
+ "name": {
1816
+ "type": "string",
1817
+ "description": "Name for the composite binding"
1818
+ },
1819
+ "bindings": {
1820
+ "type": "object",
1821
+ "description": "Binding paths for composite parts",
1822
+ "properties": {
1823
+ "up": {
1824
+ "type": "string"
1825
+ },
1826
+ "down": {
1827
+ "type": "string"
1828
+ },
1829
+ "left": {
1830
+ "type": "string"
1831
+ },
1832
+ "right": {
1833
+ "type": "string"
1834
+ },
1835
+ "negative": {
1836
+ "type": "string"
1837
+ },
1838
+ "positive": {
1839
+ "type": "string"
1840
+ }
1841
+ }
1842
+ },
1843
+ "groups": {
1844
+ "type": "string",
1845
+ "description": "Control scheme groups"
1846
+ }
1847
+ },
1848
+ "required": [
1849
+ "assetPath",
1850
+ "mapName",
1851
+ "actionName",
1852
+ "bindings"
1853
+ ]
1854
+ }
1855
+ },
1856
+ {
1857
+ "name": "input_binding_remove",
1858
+ "description": "Remove a Binding from an Action",
1859
+ "inputSchema": {
1860
+ "type": "object",
1861
+ "properties": {
1862
+ "assetPath": {
1863
+ "type": "string",
1864
+ "description": "Path to the Input Actions asset file"
1865
+ },
1866
+ "mapName": {
1867
+ "type": "string",
1868
+ "description": "Name of the Action Map"
1869
+ },
1870
+ "actionName": {
1871
+ "type": "string",
1872
+ "description": "Name of the Action"
1873
+ },
1874
+ "bindingIndex": {
1875
+ "type": "number",
1876
+ "description": "Index of the binding to remove"
1877
+ },
1878
+ "bindingPath": {
1879
+ "type": "string",
1880
+ "description": "Path of the binding to remove (alternative to bindingIndex)"
1881
+ }
1882
+ },
1883
+ "required": [
1884
+ "assetPath",
1885
+ "mapName",
1886
+ "actionName"
1887
+ ]
1888
+ }
1889
+ },
1890
+ {
1891
+ "name": "input_binding_remove_all",
1892
+ "description": "Remove all Bindings from an Action",
1893
+ "inputSchema": {
1894
+ "type": "object",
1895
+ "properties": {
1896
+ "assetPath": {
1897
+ "type": "string",
1898
+ "description": "Path to the Input Actions asset file"
1899
+ },
1900
+ "mapName": {
1901
+ "type": "string",
1902
+ "description": "Name of the Action Map"
1903
+ },
1904
+ "actionName": {
1905
+ "type": "string",
1906
+ "description": "Name of the Action"
1907
+ }
1908
+ },
1909
+ "required": [
1910
+ "assetPath",
1911
+ "mapName",
1912
+ "actionName"
1913
+ ]
1914
+ }
1915
+ },
1916
+ {
1917
+ "name": "input_control_schemes_manage",
1918
+ "description": "Manage Control Schemes in an Input Actions asset",
1919
+ "inputSchema": {
1920
+ "type": "object",
1921
+ "properties": {
1922
+ "assetPath": {
1923
+ "type": "string",
1924
+ "description": "Path to the Input Actions asset file"
1925
+ },
1926
+ "operation": {
1927
+ "type": "string",
1928
+ "description": "Operation to perform",
1929
+ "enum": [
1930
+ "add",
1931
+ "remove",
1932
+ "modify"
1933
+ ]
1934
+ },
1935
+ "schemeName": {
1936
+ "type": "string",
1937
+ "description": "Name of the control scheme"
1938
+ },
1939
+ "devices": {
1940
+ "type": "array",
1941
+ "description": "List of device types (e.g., [\"Keyboard\", \"Mouse\", \"Gamepad\"])",
1942
+ "items": {
1943
+ "type": "string"
1944
+ }
1945
+ }
1946
+ },
1947
+ "required": [
1948
+ "assetPath",
1949
+ "operation"
1950
+ ]
1951
+ }
1952
+ },
1953
+ {
1954
+ "name": "input_gamepad",
1955
+ "description": "Gamepad input (buttons/sticks/triggers/dpad) with batching and auto-hold.",
1956
+ "inputSchema": {
1957
+ "type": "object",
1958
+ "properties": {
1959
+ "action": {
1960
+ "type": "string",
1961
+ "enum": [
1962
+ "button",
1963
+ "stick",
1964
+ "trigger",
1965
+ "dpad"
1966
+ ],
1967
+ "description": "The gamepad action to perform"
1968
+ },
1969
+ "button": {
1970
+ "type": "string",
1971
+ "description": "Button name (a/cross, b/circle, x/square, y/triangle, start, select, etc.)"
1972
+ },
1973
+ "buttonAction": {
1974
+ "type": "string",
1975
+ "enum": [
1976
+ "press",
1977
+ "release"
1978
+ ],
1979
+ "description": "Button action (press or release)"
1980
+ },
1981
+ "stick": {
1982
+ "type": "string",
1983
+ "enum": [
1984
+ "left",
1985
+ "right"
1986
+ ],
1987
+ "description": "Which analog stick to control"
1988
+ },
1989
+ "x": {
1990
+ "type": "number",
1991
+ "minimum": -1,
1992
+ "maximum": 1,
1993
+ "description": "Horizontal axis value for stick (-1 to 1)"
1994
+ },
1995
+ "y": {
1996
+ "type": "number",
1997
+ "minimum": -1,
1998
+ "maximum": 1,
1999
+ "description": "Vertical axis value for stick (-1 to 1)"
2000
+ },
2001
+ "trigger": {
2002
+ "type": "string",
2003
+ "enum": [
2004
+ "left",
2005
+ "right"
2006
+ ],
2007
+ "description": "Which trigger to control"
2008
+ },
2009
+ "value": {
2010
+ "type": "number",
2011
+ "minimum": 0,
2012
+ "maximum": 1,
2013
+ "description": "Trigger pressure value (0 to 1)"
2014
+ },
2015
+ "direction": {
2016
+ "type": "string",
2017
+ "enum": [
2018
+ "up",
2019
+ "down",
2020
+ "left",
2021
+ "right",
2022
+ "none"
2023
+ ],
2024
+ "description": "D-pad direction"
2025
+ },
2026
+ "holdSeconds": {
2027
+ "type": "number",
2028
+ "minimum": 0,
2029
+ "description": "Automatically reset stick/button/trigger/dpad after this many seconds"
2030
+ },
2031
+ "actions": {
2032
+ "type": "array",
2033
+ "description": "Batch multiple gamepad actions executed in order",
2034
+ "items": {
2035
+ "type": "object",
2036
+ "properties": {
2037
+ "action": {
2038
+ "type": "string",
2039
+ "enum": [
2040
+ "button",
2041
+ "stick",
2042
+ "trigger",
2043
+ "dpad"
2044
+ ],
2045
+ "description": "The gamepad action to perform"
2046
+ },
2047
+ "button": {
2048
+ "type": "string",
2049
+ "description": "Button name (a/cross, b/circle, x/square, y/triangle, start, select, etc.)"
2050
+ },
2051
+ "buttonAction": {
2052
+ "type": "string",
2053
+ "enum": [
2054
+ "press",
2055
+ "release"
2056
+ ],
2057
+ "description": "Button action (press or release)"
2058
+ },
2059
+ "stick": {
2060
+ "type": "string",
2061
+ "enum": [
2062
+ "left",
2063
+ "right"
2064
+ ],
2065
+ "description": "Which analog stick to control"
2066
+ },
2067
+ "x": {
2068
+ "type": "number",
2069
+ "minimum": -1,
2070
+ "maximum": 1,
2071
+ "description": "Horizontal axis value for stick (-1 to 1)"
2072
+ },
2073
+ "y": {
2074
+ "type": "number",
2075
+ "minimum": -1,
2076
+ "maximum": 1,
2077
+ "description": "Vertical axis value for stick (-1 to 1)"
2078
+ },
2079
+ "trigger": {
2080
+ "type": "string",
2081
+ "enum": [
2082
+ "left",
2083
+ "right"
2084
+ ],
2085
+ "description": "Which trigger to control"
2086
+ },
2087
+ "value": {
2088
+ "type": "number",
2089
+ "minimum": 0,
2090
+ "maximum": 1,
2091
+ "description": "Trigger pressure value (0 to 1)"
2092
+ },
2093
+ "direction": {
2094
+ "type": "string",
2095
+ "enum": [
2096
+ "up",
2097
+ "down",
2098
+ "left",
2099
+ "right",
2100
+ "none"
2101
+ ],
2102
+ "description": "D-pad direction"
2103
+ },
2104
+ "holdSeconds": {
2105
+ "type": "number",
2106
+ "minimum": 0,
2107
+ "description": "Automatically reset stick/button/trigger/dpad after this many seconds"
2108
+ }
2109
+ },
2110
+ "required": [
2111
+ "action"
2112
+ ]
2113
+ }
2114
+ }
2115
+ }
2116
+ }
2117
+ },
2118
+ {
2119
+ "name": "input_keyboard",
2120
+ "description": "Keyboard input (press/release/type/combo) with batching and auto-hold.",
2121
+ "inputSchema": {
2122
+ "type": "object",
2123
+ "properties": {
2124
+ "action": {
2125
+ "type": "string",
2126
+ "enum": [
2127
+ "press",
2128
+ "release",
2129
+ "type",
2130
+ "combo"
2131
+ ],
2132
+ "description": "The keyboard action to perform"
2133
+ },
2134
+ "key": {
2135
+ "type": "string",
2136
+ "description": "The key to press/release (for press/release actions)"
2137
+ },
2138
+ "keys": {
2139
+ "type": "array",
2140
+ "items": {
2141
+ "type": "string"
2142
+ },
2143
+ "description": "Array of keys for combo action"
2144
+ },
2145
+ "text": {
2146
+ "type": "string",
2147
+ "description": "Text to type (for type action)"
2148
+ },
2149
+ "typingSpeed": {
2150
+ "type": "number",
2151
+ "description": "Milliseconds per character when typing"
2152
+ },
2153
+ "holdSeconds": {
2154
+ "type": "number",
2155
+ "minimum": 0,
2156
+ "description": "Automatically release after this many seconds (press/combo)"
2157
+ },
2158
+ "actions": {
2159
+ "type": "array",
2160
+ "description": "Batch multiple keyboard actions executed in order",
2161
+ "items": {
2162
+ "type": "object",
2163
+ "properties": {
2164
+ "action": {
2165
+ "type": "string",
2166
+ "enum": [
2167
+ "press",
2168
+ "release",
2169
+ "type",
2170
+ "combo"
2171
+ ],
2172
+ "description": "The keyboard action to perform"
2173
+ },
2174
+ "key": {
2175
+ "type": "string",
2176
+ "description": "The key to press/release (for press/release actions)"
2177
+ },
2178
+ "keys": {
2179
+ "type": "array",
2180
+ "items": {
2181
+ "type": "string"
2182
+ },
2183
+ "description": "Array of keys for combo action"
2184
+ },
2185
+ "text": {
2186
+ "type": "string",
2187
+ "description": "Text to type (for type action)"
2188
+ },
2189
+ "typingSpeed": {
2190
+ "type": "number",
2191
+ "description": "Milliseconds per character when typing"
2192
+ },
2193
+ "holdSeconds": {
2194
+ "type": "number",
2195
+ "minimum": 0,
2196
+ "description": "Automatically release after this many seconds (press/combo)"
2197
+ }
2198
+ },
2199
+ "required": [
2200
+ "action"
2201
+ ]
2202
+ }
2203
+ }
2204
+ }
2205
+ }
2206
+ },
2207
+ {
2208
+ "name": "input_mouse",
2209
+ "description": "Mouse input (move/click/drag/scroll/button) with batching and auto-hold.",
2210
+ "inputSchema": {
2211
+ "type": "object",
2212
+ "properties": {
2213
+ "action": {
2214
+ "type": "string",
2215
+ "enum": [
2216
+ "move",
2217
+ "click",
2218
+ "drag",
2219
+ "scroll",
2220
+ "button"
2221
+ ],
2222
+ "description": "The mouse action to perform"
2223
+ },
2224
+ "x": {
2225
+ "type": "number",
2226
+ "description": "X coordinate for move action"
2227
+ },
2228
+ "y": {
2229
+ "type": "number",
2230
+ "description": "Y coordinate for move action"
2231
+ },
2232
+ "absolute": {
2233
+ "type": "boolean",
2234
+ "description": "Whether coordinates are absolute or relative (default: true)"
2235
+ },
2236
+ "button": {
2237
+ "type": "string",
2238
+ "enum": [
2239
+ "left",
2240
+ "right",
2241
+ "middle"
2242
+ ],
2243
+ "description": "Mouse button for click/drag/button actions"
2244
+ },
2245
+ "buttonAction": {
2246
+ "type": "string",
2247
+ "enum": [
2248
+ "press",
2249
+ "release"
2250
+ ],
2251
+ "description": "Button action for button presses"
2252
+ },
2253
+ "clickCount": {
2254
+ "type": "number",
2255
+ "description": "Number of clicks (for double/triple click)"
2256
+ },
2257
+ "startX": {
2258
+ "type": "number",
2259
+ "description": "Start X for drag action"
2260
+ },
2261
+ "startY": {
2262
+ "type": "number",
2263
+ "description": "Start Y for drag action"
2264
+ },
2265
+ "endX": {
2266
+ "type": "number",
2267
+ "description": "End X for drag action"
2268
+ },
2269
+ "endY": {
2270
+ "type": "number",
2271
+ "description": "End Y for drag action"
2272
+ },
2273
+ "deltaX": {
2274
+ "type": "number",
2275
+ "description": "Horizontal scroll delta"
2276
+ },
2277
+ "deltaY": {
2278
+ "type": "number",
2279
+ "description": "Vertical scroll delta"
2280
+ },
2281
+ "holdSeconds": {
2282
+ "type": "number",
2283
+ "minimum": 0,
2284
+ "description": "Automatically release button after this many seconds"
2285
+ },
2286
+ "actions": {
2287
+ "type": "array",
2288
+ "description": "Batch multiple mouse actions executed in order",
2289
+ "items": {
2290
+ "type": "object",
2291
+ "properties": {
2292
+ "action": {
2293
+ "type": "string",
2294
+ "enum": [
2295
+ "move",
2296
+ "click",
2297
+ "drag",
2298
+ "scroll",
2299
+ "button"
2300
+ ],
2301
+ "description": "The mouse action to perform"
2302
+ },
2303
+ "x": {
2304
+ "type": "number",
2305
+ "description": "X coordinate for move action"
2306
+ },
2307
+ "y": {
2308
+ "type": "number",
2309
+ "description": "Y coordinate for move action"
2310
+ },
2311
+ "absolute": {
2312
+ "type": "boolean",
2313
+ "description": "Whether coordinates are absolute or relative (default: true)"
2314
+ },
2315
+ "button": {
2316
+ "type": "string",
2317
+ "enum": [
2318
+ "left",
2319
+ "right",
2320
+ "middle"
2321
+ ],
2322
+ "description": "Mouse button for click/drag/button actions"
2323
+ },
2324
+ "buttonAction": {
2325
+ "type": "string",
2326
+ "enum": [
2327
+ "press",
2328
+ "release"
2329
+ ],
2330
+ "description": "Button action for button presses"
2331
+ },
2332
+ "clickCount": {
2333
+ "type": "number",
2334
+ "description": "Number of clicks (for double/triple click)"
2335
+ },
2336
+ "startX": {
2337
+ "type": "number",
2338
+ "description": "Start X for drag action"
2339
+ },
2340
+ "startY": {
2341
+ "type": "number",
2342
+ "description": "Start Y for drag action"
2343
+ },
2344
+ "endX": {
2345
+ "type": "number",
2346
+ "description": "End X for drag action"
2347
+ },
2348
+ "endY": {
2349
+ "type": "number",
2350
+ "description": "End Y for drag action"
2351
+ },
2352
+ "deltaX": {
2353
+ "type": "number",
2354
+ "description": "Horizontal scroll delta"
2355
+ },
2356
+ "deltaY": {
2357
+ "type": "number",
2358
+ "description": "Vertical scroll delta"
2359
+ },
2360
+ "holdSeconds": {
2361
+ "type": "number",
2362
+ "minimum": 0,
2363
+ "description": "Automatically release button after this many seconds"
2364
+ }
2365
+ },
2366
+ "required": [
2367
+ "action"
2368
+ ]
2369
+ }
2370
+ }
2371
+ }
2372
+ }
2373
+ },
2374
+ {
2375
+ "name": "input_system_control",
2376
+ "description": "Main handler for Input System operations",
2377
+ "inputSchema": {
2378
+ "type": "object",
2379
+ "properties": {
2380
+ "operation": {
2381
+ "type": "string",
2382
+ "enum": [
2383
+ "keyboard",
2384
+ "mouse",
2385
+ "gamepad",
2386
+ "touch",
2387
+ "sequence",
2388
+ "get_state"
2389
+ ],
2390
+ "description": "The input operation to perform"
2391
+ },
2392
+ "parameters": {
2393
+ "type": "object",
2394
+ "description": "Parameters for the specific operation"
2395
+ }
2396
+ },
2397
+ "required": [
2398
+ "operation"
2399
+ ]
2400
+ }
2401
+ },
2402
+ {
2403
+ "name": "input_touch",
2404
+ "description": "Touch input (tap/swipe/pinch/multi) with batching.",
2405
+ "inputSchema": {
2406
+ "type": "object",
2407
+ "properties": {
2408
+ "action": {
2409
+ "type": "string",
2410
+ "enum": [
2411
+ "tap",
2412
+ "swipe",
2413
+ "pinch",
2414
+ "multi"
2415
+ ],
2416
+ "description": "The touch action to perform"
2417
+ },
2418
+ "x": {
2419
+ "type": "number",
2420
+ "description": "X coordinate for tap action"
2421
+ },
2422
+ "y": {
2423
+ "type": "number",
2424
+ "description": "Y coordinate for tap action"
2425
+ },
2426
+ "touchId": {
2427
+ "type": "number",
2428
+ "minimum": 0,
2429
+ "maximum": 9,
2430
+ "description": "Touch ID (0-9)"
2431
+ },
2432
+ "startX": {
2433
+ "type": "number",
2434
+ "description": "Start X for swipe action"
2435
+ },
2436
+ "startY": {
2437
+ "type": "number",
2438
+ "description": "Start Y for swipe action"
2439
+ },
2440
+ "endX": {
2441
+ "type": "number",
2442
+ "description": "End X for swipe action"
2443
+ },
2444
+ "endY": {
2445
+ "type": "number",
2446
+ "description": "End Y for swipe action"
2447
+ },
2448
+ "duration": {
2449
+ "type": "number",
2450
+ "description": "Swipe duration in milliseconds"
2451
+ },
2452
+ "centerX": {
2453
+ "type": "number",
2454
+ "description": "Center X for pinch gesture"
2455
+ },
2456
+ "centerY": {
2457
+ "type": "number",
2458
+ "description": "Center Y for pinch gesture"
2459
+ },
2460
+ "startDistance": {
2461
+ "type": "number",
2462
+ "description": "Start distance between fingers for pinch"
2463
+ },
2464
+ "endDistance": {
2465
+ "type": "number",
2466
+ "description": "End distance between fingers for pinch"
2467
+ },
2468
+ "touches": {
2469
+ "type": "array",
2470
+ "description": "Array of touch points for multi-touch",
2471
+ "items": {
2472
+ "type": "object",
2473
+ "properties": {
2474
+ "x": {
2475
+ "type": "number"
2476
+ },
2477
+ "y": {
2478
+ "type": "number"
2479
+ },
2480
+ "phase": {
2481
+ "type": "string",
2482
+ "enum": [
2483
+ "began",
2484
+ "moved",
2485
+ "stationary",
2486
+ "ended"
2487
+ ]
2488
+ }
2489
+ },
2490
+ "required": [
2491
+ "x",
2492
+ "y"
2493
+ ]
2494
+ }
2495
+ },
2496
+ "actions": {
2497
+ "type": "array",
2498
+ "description": "Batch multiple touch actions executed in order",
2499
+ "items": {
2500
+ "type": "object",
2501
+ "properties": {
2502
+ "action": {
2503
+ "type": "string",
2504
+ "enum": [
2505
+ "tap",
2506
+ "swipe",
2507
+ "pinch",
2508
+ "multi"
2509
+ ],
2510
+ "description": "The touch action to perform"
2511
+ },
2512
+ "x": {
2513
+ "type": "number",
2514
+ "description": "X coordinate for tap action"
2515
+ },
2516
+ "y": {
2517
+ "type": "number",
2518
+ "description": "Y coordinate for tap action"
2519
+ },
2520
+ "touchId": {
2521
+ "type": "number",
2522
+ "minimum": 0,
2523
+ "maximum": 9,
2524
+ "description": "Touch ID (0-9)"
2525
+ },
2526
+ "startX": {
2527
+ "type": "number",
2528
+ "description": "Start X for swipe action"
2529
+ },
2530
+ "startY": {
2531
+ "type": "number",
2532
+ "description": "Start Y for swipe action"
2533
+ },
2534
+ "endX": {
2535
+ "type": "number",
2536
+ "description": "End X for swipe action"
2537
+ },
2538
+ "endY": {
2539
+ "type": "number",
2540
+ "description": "End Y for swipe action"
2541
+ },
2542
+ "duration": {
2543
+ "type": "number",
2544
+ "description": "Swipe duration in milliseconds"
2545
+ },
2546
+ "centerX": {
2547
+ "type": "number",
2548
+ "description": "Center X for pinch gesture"
2549
+ },
2550
+ "centerY": {
2551
+ "type": "number",
2552
+ "description": "Center Y for pinch gesture"
2553
+ },
2554
+ "startDistance": {
2555
+ "type": "number",
2556
+ "description": "Start distance between fingers for pinch"
2557
+ },
2558
+ "endDistance": {
2559
+ "type": "number",
2560
+ "description": "End distance between fingers for pinch"
2561
+ },
2562
+ "touches": {
2563
+ "type": "array",
2564
+ "description": "Array of touch points for multi-touch",
2565
+ "items": {
2566
+ "type": "object",
2567
+ "properties": {
2568
+ "x": {
2569
+ "type": "number"
2570
+ },
2571
+ "y": {
2572
+ "type": "number"
2573
+ },
2574
+ "phase": {
2575
+ "type": "string",
2576
+ "enum": [
2577
+ "began",
2578
+ "moved",
2579
+ "stationary",
2580
+ "ended"
2581
+ ]
2582
+ }
2583
+ },
2584
+ "required": [
2585
+ "x",
2586
+ "y"
2587
+ ]
2588
+ }
2589
+ }
2590
+ },
2591
+ "required": [
2592
+ "action"
2593
+ ]
2594
+ }
2595
+ }
2596
+ }
2597
+ }
2598
+ },
2599
+ {
2600
+ "name": "menu_item_execute",
2601
+ "description": "Execute a Unity menu item or list available menus (with safety checks).",
2602
+ "inputSchema": {
2603
+ "type": "object",
2604
+ "properties": {
2605
+ "menuPath": {
2606
+ "type": "string",
2607
+ "description": "Unity menu path (e.g., \"Assets/Refresh\", \"Window/General/Console\")"
2608
+ },
2609
+ "action": {
2610
+ "type": "string",
2611
+ "enum": [
2612
+ "execute",
2613
+ "get_available_menus"
2614
+ ],
2615
+ "description": "Action to perform: execute menu item or get available menus (default: execute)"
2616
+ },
2617
+ "alias": {
2618
+ "type": "string",
2619
+ "description": "Menu alias for common operations (e.g., \"refresh\", \"console\")"
2620
+ },
2621
+ "parameters": {
2622
+ "type": "object",
2623
+ "description": "Additional parameters for menu execution (if supported)"
2624
+ },
2625
+ "safetyCheck": {
2626
+ "type": "boolean",
2627
+ "description": "Enable safety checks to prevent execution of dangerous menu items (default: true)"
2628
+ }
2629
+ },
2630
+ "required": [
2631
+ "menuPath"
2632
+ ]
2633
+ }
2634
+ },
2635
+ {
2636
+ "name": "package_manage",
2637
+ "description": "Manage Unity packages - search, install, remove, and list packages",
2638
+ "inputSchema": {
2639
+ "type": "object",
2640
+ "properties": {
2641
+ "action": {
2642
+ "type": "string",
2643
+ "enum": [
2644
+ "search",
2645
+ "list",
2646
+ "install",
2647
+ "remove",
2648
+ "info",
2649
+ "recommend"
2650
+ ],
2651
+ "description": "The package operation to perform"
2652
+ },
2653
+ "keyword": {
2654
+ "type": "string",
2655
+ "description": "Search keyword (for search action)"
2656
+ },
2657
+ "packageId": {
2658
+ "type": "string",
2659
+ "description": "Package ID to install (e.g., com.unity.textmeshpro)"
2660
+ },
2661
+ "packageName": {
2662
+ "type": "string",
2663
+ "description": "Package name to remove or get info"
2664
+ },
2665
+ "version": {
2666
+ "type": "string",
2667
+ "description": "Specific version to install (optional)"
2668
+ },
2669
+ "category": {
2670
+ "type": "string",
2671
+ "enum": [
2672
+ "essential",
2673
+ "rendering",
2674
+ "tools",
2675
+ "networking",
2676
+ "mobile"
2677
+ ],
2678
+ "description": "Category for recommendations"
2679
+ },
2680
+ "includeBuiltIn": {
2681
+ "type": "boolean",
2682
+ "description": "Include built-in packages in list (default: false)"
2683
+ },
2684
+ "limit": {
2685
+ "type": "number",
2686
+ "description": "Maximum number of search results (default: 20)"
2687
+ }
2688
+ },
2689
+ "required": [
2690
+ "action"
2691
+ ]
2692
+ }
2693
+ },
2694
+ {
2695
+ "name": "package_registry_config",
2696
+ "description": "Configure package registries (OpenUPM/NuGet): list/add/remove scopes or recommend.",
2697
+ "inputSchema": {
2698
+ "type": "object",
2699
+ "properties": {
2700
+ "action": {
2701
+ "type": "string",
2702
+ "enum": [
2703
+ "list",
2704
+ "add_openupm",
2705
+ "add_nuget",
2706
+ "remove",
2707
+ "add_scope",
2708
+ "recommend"
2709
+ ],
2710
+ "description": "The registry operation to perform"
2711
+ },
2712
+ "registryName": {
2713
+ "type": "string",
2714
+ "description": "Name of the registry (for remove and add_scope actions)"
2715
+ },
2716
+ "scope": {
2717
+ "type": "string",
2718
+ "description": "Package scope to add (e.g., com.unity, com.cysharp)"
2719
+ },
2720
+ "scopes": {
2721
+ "type": "array",
2722
+ "items": {
2723
+ "type": "string"
2724
+ },
2725
+ "description": "Array of package scopes to add"
2726
+ },
2727
+ "autoAddPopular": {
2728
+ "type": "boolean",
2729
+ "description": "Automatically add popular package scopes (default: true)"
2730
+ },
2731
+ "registry": {
2732
+ "type": "string",
2733
+ "enum": [
2734
+ "openupm",
2735
+ "nuget"
2736
+ ],
2737
+ "description": "Registry type for recommendations"
2738
+ }
2739
+ },
2740
+ "required": [
2741
+ "action"
2742
+ ]
2743
+ }
2744
+ },
2745
+ {
2746
+ "name": "playmode_get_state",
2747
+ "description": "Get current Unity editor state including play mode status",
2748
+ "inputSchema": {
2749
+ "type": "object",
2750
+ "properties": {
2751
+ "waitFor": {
2752
+ "type": "object",
2753
+ "properties": {
2754
+ "isPlaying": {
2755
+ "type": "boolean"
2756
+ }
2757
+ },
2758
+ "required": [
2759
+ "isPlaying"
2760
+ ]
2761
+ },
2762
+ "timeoutMs": {
2763
+ "type": "number"
2764
+ },
2765
+ "pollMs": {
2766
+ "type": "number"
2767
+ }
2768
+ }
2769
+ }
2770
+ },
2771
+ {
2772
+ "name": "playmode_pause",
2773
+ "description": "Pause or resume Unity play mode",
2774
+ "inputSchema": {
2775
+ "type": "object",
2776
+ "properties": {}
2777
+ }
2778
+ },
2779
+ {
2780
+ "name": "playmode_play",
2781
+ "description": "Enter Play Mode.",
2782
+ "inputSchema": {
2783
+ "type": "object",
2784
+ "properties": {}
2785
+ }
2786
+ },
2787
+ {
2788
+ "name": "playmode_stop",
2789
+ "description": "Exit Play Mode and return to Edit Mode.",
2790
+ "inputSchema": {
2791
+ "type": "object",
2792
+ "properties": {}
2793
+ }
2794
+ },
2795
+ {
2796
+ "name": "playmode_wait_for_state",
2797
+ "description": "Wait until the Unity editor reaches the requested state (e.g., isPlaying).",
2798
+ "inputSchema": {
2799
+ "type": "object",
2800
+ "properties": {
2801
+ "isPlaying": {
2802
+ "type": "boolean",
2803
+ "description": "Target play state (true=Play, false=Edit)"
2804
+ },
2805
+ "timeoutMs": {
2806
+ "type": "number",
2807
+ "description": "Max wait time (null/omitted = unlimited)"
2808
+ },
2809
+ "pollMs": {
2810
+ "type": "number",
2811
+ "description": "Polling interval in ms (default 500)"
2812
+ }
2813
+ },
2814
+ "required": [
2815
+ "isPlaying"
2816
+ ]
2817
+ }
2818
+ },
2819
+ {
2820
+ "name": "profiler_get_metrics",
2821
+ "description": "Get available profiler metrics or current metric values. Can list all available metrics by category, or query current values of specific metrics.",
2822
+ "inputSchema": {
2823
+ "type": "object",
2824
+ "properties": {
2825
+ "listAvailable": {
2826
+ "type": "boolean",
2827
+ "default": false,
2828
+ "description": "If true, return list of all available metrics grouped by category. If false, return current values of specified metrics."
2829
+ },
2830
+ "metrics": {
2831
+ "type": "array",
2832
+ "items": {
2833
+ "type": "string"
2834
+ },
2835
+ "description": "Specific metrics to query (only used when listAvailable=false). Leave empty to get all current metric values. Examples: 'System Used Memory', 'Draw Calls Count'"
2836
+ }
2837
+ }
2838
+ }
2839
+ },
2840
+ {
2841
+ "name": "profiler_start",
2842
+ "description": "Start Unity Profiler recording session. Records CPU, memory, rendering, and GC metrics. Data can be saved to .data file for later analysis in Unity Profiler Window.",
2843
+ "inputSchema": {
2844
+ "type": "object",
2845
+ "properties": {
2846
+ "mode": {
2847
+ "type": "string",
2848
+ "enum": [
2849
+ "normal",
2850
+ "deep"
2851
+ ],
2852
+ "default": "normal",
2853
+ "description": "Profiling mode. 'normal' for standard profiling, 'deep' for deep profiling (more detailed but higher overhead)"
2854
+ },
2855
+ "recordToFile": {
2856
+ "type": "boolean",
2857
+ "default": true,
2858
+ "description": "Save profiling data to .data file in .unity/capture/ directory. Set to false for real-time metrics only."
2859
+ },
2860
+ "metrics": {
2861
+ "type": "array",
2862
+ "items": {
2863
+ "type": "string"
2864
+ },
2865
+ "description": "Specific metrics to record. Leave empty to record all available metrics. Examples: 'System Used Memory', 'Draw Calls Count', 'GC Allocated In Frame'"
2866
+ },
2867
+ "maxDurationSec": {
2868
+ "type": "number",
2869
+ "minimum": 0,
2870
+ "description": "Auto-stop profiling after N seconds. Set to 0 for unlimited recording (manual stop required)."
2871
+ }
2872
+ }
2873
+ }
2874
+ },
2875
+ {
2876
+ "name": "profiler_status",
2877
+ "description": "Get current Unity Profiler recording status. Returns information about active session, elapsed time, and remaining time (if auto-stop is configured).",
2878
+ "inputSchema": {
2879
+ "type": "object",
2880
+ "properties": {}
2881
+ }
2882
+ },
2883
+ {
2884
+ "name": "profiler_stop",
2885
+ "description": "Stop Unity Profiler recording and save data to .data file. Returns profiling session summary including duration, frame count, and optionally recorded metrics.",
2886
+ "inputSchema": {
2887
+ "type": "object",
2888
+ "properties": {
2889
+ "sessionId": {
2890
+ "type": "string",
2891
+ "description": "Optional session ID to stop. If not provided, stops the current active session."
2892
+ }
2893
+ }
2894
+ }
2895
+ },
2896
+ {
2897
+ "name": "scene_create",
2898
+ "description": "Create a new scene (optionally load it and add to build settings).",
2899
+ "inputSchema": {
2900
+ "type": "object",
2901
+ "properties": {
2902
+ "sceneName": {
2903
+ "type": "string",
2904
+ "description": "Name of the scene to create"
2905
+ },
2906
+ "path": {
2907
+ "type": "string",
2908
+ "description": "Path where the scene should be saved (e.g., \"Assets/Scenes/\"). If not specified, defaults to \"Assets/Scenes/\""
2909
+ },
2910
+ "loadScene": {
2911
+ "type": "boolean",
2912
+ "description": "Whether to load the scene after creation (default: true)"
2913
+ },
2914
+ "addToBuildSettings": {
2915
+ "type": "boolean",
2916
+ "description": "Whether to add the scene to build settings (default: false)"
2917
+ }
2918
+ },
2919
+ "required": [
2920
+ "sceneName"
2921
+ ]
2922
+ }
2923
+ },
2924
+ {
2925
+ "name": "scene_info_get",
2926
+ "description": "Get detailed information about a scene",
2927
+ "inputSchema": {
2928
+ "type": "object",
2929
+ "properties": {
2930
+ "scenePath": {
2931
+ "type": "string",
2932
+ "description": "Full path to the scene file. If not provided, gets info about current scene."
2933
+ },
2934
+ "sceneName": {
2935
+ "type": "string",
2936
+ "description": "Name of the scene. Use either scenePath or sceneName, not both."
2937
+ },
2938
+ "includeGameObjects": {
2939
+ "type": "boolean",
2940
+ "description": "Include list of root GameObjects in the scene (only for loaded scenes). Default: false"
2941
+ }
2942
+ }
2943
+ }
2944
+ },
2945
+ {
2946
+ "name": "scene_list",
2947
+ "description": "List scenes in project (filter to loaded/build scenes or by path).",
2948
+ "inputSchema": {
2949
+ "type": "object",
2950
+ "properties": {
2951
+ "includeLoadedOnly": {
2952
+ "type": "boolean",
2953
+ "description": "Only include currently loaded scenes (default: false)"
2954
+ },
2955
+ "includeBuildScenesOnly": {
2956
+ "type": "boolean",
2957
+ "description": "Only include scenes in build settings (default: false)"
2958
+ },
2959
+ "includePath": {
2960
+ "type": "string",
2961
+ "description": "Filter scenes by path pattern (e.g., \"Levels\" to find scenes in Levels folder)"
2962
+ }
2963
+ }
2964
+ }
2965
+ },
2966
+ {
2967
+ "name": "scene_load",
2968
+ "description": "Load a scene by path or name (Single/Additive).",
2969
+ "inputSchema": {
2970
+ "type": "object",
2971
+ "properties": {
2972
+ "scenePath": {
2973
+ "type": "string",
2974
+ "description": "Full path to the scene file (e.g., \"Assets/Scenes/MainMenu.unity\")"
2975
+ },
2976
+ "sceneName": {
2977
+ "type": "string",
2978
+ "description": "Name of the scene to load (must be in build settings). Use either scenePath or sceneName, not both."
2979
+ },
2980
+ "loadMode": {
2981
+ "type": "string",
2982
+ "enum": [
2983
+ "Single",
2984
+ "Additive"
2985
+ ],
2986
+ "description": "How to load the scene. Single replaces current scene(s), Additive adds to current scene(s) (default: Single)"
2987
+ }
2988
+ }
2989
+ }
2990
+ },
2991
+ {
2992
+ "name": "scene_save",
2993
+ "description": "Save current scene or save as a specified path.",
2994
+ "inputSchema": {
2995
+ "type": "object",
2996
+ "properties": {
2997
+ "scenePath": {
2998
+ "type": "string",
2999
+ "description": "Path where to save the scene. If not provided, saves to current scene path. Required if saveAs is true."
3000
+ },
3001
+ "saveAs": {
3002
+ "type": "boolean",
3003
+ "description": "Whether to save as a new scene (creates a copy). Default: false"
3004
+ }
3005
+ }
3006
+ }
3007
+ },
3008
+ {
3009
+ "name": "screenshot_analyze",
3010
+ "description": "Analyze a screenshot: dimensions/colors, UI elements, and scene content (basic/ui/content/full). For LLMs, prefer basic/ui; use full only when necessary. Provide either imagePath (preferred) or base64 (not both).",
3011
+ "inputSchema": {
3012
+ "type": "object",
3013
+ "properties": {
3014
+ "imagePath": {
3015
+ "type": "string",
3016
+ "description": "Path to the screenshot file to analyze (must be within Assets folder)"
3017
+ },
3018
+ "base64Data": {
3019
+ "type": "string",
3020
+ "description": "Base64 encoded image data (alternative to imagePath)"
3021
+ },
3022
+ "analysisType": {
3023
+ "type": "string",
3024
+ "enum": [
3025
+ "basic",
3026
+ "ui",
3027
+ "content",
3028
+ "full"
3029
+ ],
3030
+ "description": "Type of analysis: basic (colors, dimensions), ui (UI element detection), content (scene content), full (all)"
3031
+ },
3032
+ "prompt": {
3033
+ "type": "string",
3034
+ "description": "Optional prompt for AI-based analysis (e.g., \"Find all buttons in the UI\")"
3035
+ }
3036
+ }
3037
+ }
3038
+ },
3039
+ {
3040
+ "name": "screenshot_capture",
3041
+ "description": "Capture Game/Scene/Window/Explorer screenshots. Output path is fixed to <workspace>/.unity/capture/. For LLM use, prefer explorer mode (auto-framing, clarity). Use encodeAsBase64=true only for immediate analysis, and keep resolution minimal.",
3042
+ "inputSchema": {
3043
+ "type": "object",
3044
+ "properties": {
3045
+ "captureMode": {
3046
+ "type": "string",
3047
+ "enum": [
3048
+ "game",
3049
+ "scene",
3050
+ "window",
3051
+ "explorer"
3052
+ ],
3053
+ "description": "Capture mode selection:\n- \"game\": Game View (player's perspective, what the user sees)\n- \"scene\": Scene View (editor's 3D workspace view)\n- \"explorer\": AI/LLM exploration mode (optimized view for understanding scene content)\n- \"window\": Specific Unity Editor window by name"
3054
+ },
3055
+ "width": {
3056
+ "type": "number",
3057
+ "description": "Screenshot width in pixels (0 = use current view size). Range: 1-8192. Not applicable for explorer mode (use explorerSettings.camera.width instead)"
3058
+ },
3059
+ "height": {
3060
+ "type": "number",
3061
+ "description": "Screenshot height in pixels (0 = use current view size). Range: 1-8192. Not applicable for explorer mode (use explorerSettings.camera.height instead)"
3062
+ },
3063
+ "includeUI": {
3064
+ "type": "boolean",
3065
+ "description": "Whether to include UI overlay elements in Game View captures. Set to false for clean gameplay screenshots (default: true)"
3066
+ },
3067
+ "windowName": {
3068
+ "type": "string",
3069
+ "description": "Name of the Unity Editor window to capture (required when captureMode is \"window\"). Examples: \"Console\", \"Inspector\", \"Hierarchy\", \"Project\""
3070
+ },
3071
+ "encodeAsBase64": {
3072
+ "type": "boolean",
3073
+ "description": "Return screenshot data as base64 string for immediate processing/analysis without file I/O (default: false)"
3074
+ },
3075
+ "explorerSettings": {
3076
+ "type": "object",
3077
+ "description": "Configuration for explorer mode - AI/LLM optimized capture settings",
3078
+ "properties": {
3079
+ "target": {
3080
+ "type": "object",
3081
+ "description": "Defines what to focus on in the scene",
3082
+ "properties": {
3083
+ "type": {
3084
+ "type": "string",
3085
+ "enum": [
3086
+ "gameObject",
3087
+ "tag",
3088
+ "area",
3089
+ "position"
3090
+ ],
3091
+ "description": "Target selection method:\n- \"gameObject\": Focus on a specific GameObject by name\n- \"tag\": Focus on all objects with a specific tag\n- \"area\": Focus on a circular area defined by center and radius\n- \"position\": Manual camera positioning without auto-framing"
3092
+ },
3093
+ "name": {
3094
+ "type": "string",
3095
+ "description": "GameObject name to target (required for \"gameObject\" type). Example: \"Player\", \"MainCamera\", \"Enemy_01\""
3096
+ },
3097
+ "tag": {
3098
+ "type": "string",
3099
+ "description": "Tag to search for GameObjects (required for \"tag\" type). Example: \"Enemy\", \"Collectible\", \"Player\""
3100
+ },
3101
+ "center": {
3102
+ "type": "object",
3103
+ "description": "Center position for area targeting (required for \"area\" type)",
3104
+ "properties": {
3105
+ "x": {
3106
+ "type": "number",
3107
+ "description": "X coordinate in world space"
3108
+ },
3109
+ "y": {
3110
+ "type": "number",
3111
+ "description": "Y coordinate in world space"
3112
+ },
3113
+ "z": {
3114
+ "type": "number",
3115
+ "description": "Z coordinate in world space"
3116
+ }
3117
+ }
3118
+ },
3119
+ "radius": {
3120
+ "type": "number",
3121
+ "description": "Radius around center for area targeting (used with \"area\" type). Defines the circular area to capture"
3122
+ },
3123
+ "includeChildren": {
3124
+ "type": "boolean",
3125
+ "description": "Include child objects when calculating the target bounds for framing (default: true)"
3126
+ }
3127
+ }
3128
+ },
3129
+ "camera": {
3130
+ "type": "object",
3131
+ "description": "Camera configuration for the capture",
3132
+ "properties": {
3133
+ "position": {
3134
+ "type": "object",
3135
+ "description": "Manual camera position in world space (overrides auto-framing)",
3136
+ "properties": {
3137
+ "x": {
3138
+ "type": "number",
3139
+ "description": "X position in world units"
3140
+ },
3141
+ "y": {
3142
+ "type": "number",
3143
+ "description": "Y position in world units"
3144
+ },
3145
+ "z": {
3146
+ "type": "number",
3147
+ "description": "Z position in world units"
3148
+ }
3149
+ }
3150
+ },
3151
+ "lookAt": {
3152
+ "type": "object",
3153
+ "description": "Point for camera to look at in world space",
3154
+ "properties": {
3155
+ "x": {
3156
+ "type": "number",
3157
+ "description": "X coordinate to look at"
3158
+ },
3159
+ "y": {
3160
+ "type": "number",
3161
+ "description": "Y coordinate to look at"
3162
+ },
3163
+ "z": {
3164
+ "type": "number",
3165
+ "description": "Z coordinate to look at"
3166
+ }
3167
+ }
3168
+ },
3169
+ "rotation": {
3170
+ "type": "object",
3171
+ "description": "Camera rotation in Euler angles (alternative to lookAt)",
3172
+ "properties": {
3173
+ "x": {
3174
+ "type": "number",
3175
+ "description": "X rotation (pitch) in degrees"
3176
+ },
3177
+ "y": {
3178
+ "type": "number",
3179
+ "description": "Y rotation (yaw) in degrees"
3180
+ },
3181
+ "z": {
3182
+ "type": "number",
3183
+ "description": "Z rotation (roll) in degrees"
3184
+ }
3185
+ }
3186
+ },
3187
+ "fieldOfView": {
3188
+ "type": "number",
3189
+ "description": "Camera field of view in degrees (1-179). Lower values zoom in, higher values zoom out"
3190
+ },
3191
+ "nearClip": {
3192
+ "type": "number",
3193
+ "description": "Near clipping plane distance. Objects closer than this won't be rendered (default: 0.3)"
3194
+ },
3195
+ "farClip": {
3196
+ "type": "number",
3197
+ "description": "Far clipping plane distance. Objects farther than this won't be rendered"
3198
+ },
3199
+ "autoFrame": {
3200
+ "type": "boolean",
3201
+ "description": "Automatically position camera to frame the target. Disable for manual positioning (default: true)"
3202
+ },
3203
+ "padding": {
3204
+ "type": "number",
3205
+ "description": "Padding around target when auto-framing (0-1). 0 = tight fit, 1 = lots of space (default: 0.2)"
3206
+ },
3207
+ "offset": {
3208
+ "type": "object",
3209
+ "description": "Additional offset from calculated auto-frame position",
3210
+ "properties": {
3211
+ "x": {
3212
+ "type": "number",
3213
+ "description": "X offset in world units"
3214
+ },
3215
+ "y": {
3216
+ "type": "number",
3217
+ "description": "Y offset in world units"
3218
+ },
3219
+ "z": {
3220
+ "type": "number",
3221
+ "description": "Z offset in world units"
3222
+ }
3223
+ }
3224
+ },
3225
+ "width": {
3226
+ "type": "number",
3227
+ "description": "Capture resolution width in pixels (1-8192)"
3228
+ },
3229
+ "height": {
3230
+ "type": "number",
3231
+ "description": "Capture resolution height in pixels (1-8192)"
3232
+ }
3233
+ }
3234
+ },
3235
+ "display": {
3236
+ "type": "object",
3237
+ "description": "Visual display settings for the capture",
3238
+ "properties": {
3239
+ "backgroundColor": {
3240
+ "type": "object",
3241
+ "description": "Background color for the capture (RGBA values 0-1)",
3242
+ "properties": {
3243
+ "r": {
3244
+ "type": "number",
3245
+ "description": "Red component (0-1, default: 0.2)"
3246
+ },
3247
+ "g": {
3248
+ "type": "number",
3249
+ "description": "Green component (0-1, default: 0.2)"
3250
+ },
3251
+ "b": {
3252
+ "type": "number",
3253
+ "description": "Blue component (0-1, default: 0.2)"
3254
+ },
3255
+ "a": {
3256
+ "type": "number",
3257
+ "description": "Alpha/opacity (0-1, default: 1)"
3258
+ }
3259
+ }
3260
+ },
3261
+ "layers": {
3262
+ "type": "array",
3263
+ "items": {
3264
+ "type": "string"
3265
+ },
3266
+ "description": "Unity layer names to include in rendering. If not specified, all layers are included. Examples: [\"Default\", \"UI\", \"Player\"]"
3267
+ },
3268
+ "showGizmos": {
3269
+ "type": "boolean",
3270
+ "description": "Show editor gizmos (transform handles, icons) in the capture (default: false)"
3271
+ },
3272
+ "showColliders": {
3273
+ "type": "boolean",
3274
+ "description": "Visualize physics colliders as wireframes (default: false)"
3275
+ },
3276
+ "showBounds": {
3277
+ "type": "boolean",
3278
+ "description": "Show bounding boxes around objects (default: false)"
3279
+ },
3280
+ "highlightTarget": {
3281
+ "type": "boolean",
3282
+ "description": "Highlight the target object(s) with an outline or color (default: false)"
3283
+ }
3284
+ }
3285
+ }
3286
+ }
3287
+ }
3288
+ }
3289
+ }
3290
+ },
3291
+ {
3292
+ "name": "script_create_class",
3293
+ "description": "Create a new C# class file. Required: path under Assets/ or Packages/ (\".cs\" appended if missing), className. Optional: namespace, baseType (adds using UnityEngine if MonoBehaviour), usings (CSV), partial. Roslyn preflight (no Unity comms). Responses summarized for LLMs (errors≤30, message≤200 chars, preview≤1000 chars).",
3294
+ "inputSchema": {
3295
+ "type": "object",
3296
+ "properties": {
3297
+ "path": {
3298
+ "type": "string",
3299
+ "description": "Project-relative C# file path (e.g., Assets/Scripts/MyClass.cs)"
3300
+ },
3301
+ "className": {
3302
+ "type": "string",
3303
+ "description": "Class name"
3304
+ },
3305
+ "namespace": {
3306
+ "type": "string",
3307
+ "description": "Optional namespace"
3308
+ },
3309
+ "baseType": {
3310
+ "type": "string",
3311
+ "description": "Optional base type (e.g., MonoBehaviour)"
3312
+ },
3313
+ "usings": {
3314
+ "type": "string",
3315
+ "description": "Comma-separated using directives (e.g., System,Newtonsoft.Json)"
3316
+ },
3317
+ "partial": {
3318
+ "type": "boolean",
3319
+ "description": "Create as partial class (default: false)"
3320
+ },
3321
+ "apply": {
3322
+ "type": "boolean",
3323
+ "description": "Apply immediately (default: false)"
3324
+ }
3325
+ },
3326
+ "required": [
3327
+ "path",
3328
+ "className"
3329
+ ]
3330
+ }
3331
+ },
3332
+ {
3333
+ "name": "script_edit_snippet",
3334
+ "description": "[C# EDITING - PRECISION TOOL] For Unity C# scripts, use for tiny surgical edits (≤80 chars per change). Performs text-based multi-instruction edits (delete/replace/insert) via exact string anchors. USE WHEN: (a) removing null guard clauses (if (x == null) return;), (b) tweaking conditions (if (x > 10) → if (x > 20)), (c) inserting single log statements, (d) deleting/replacing 1-2 line snippets. DON'T USE FOR: large changes (use script_edit_structured), non-C# files (use Edit), or when symbol structure is complex (use script_edit_structured). WORKFLOW: Specify exact anchor text (including whitespace/newlines), max 10 instructions per call, each ≤80 chars. Anchor must match exactly once in file. Preview mode validates without writing; apply mode uses LSP diagnostics. Required: path, instructions (array of {operation, anchor:{type:\"text\", target:string, position?:\"before\"|\"after\"}, newText?}).",
3335
+ "inputSchema": {
3336
+ "type": "object",
3337
+ "properties": {
3338
+ "path": {
3339
+ "type": "string",
3340
+ "description": "Project-relative C# path starting with Assets/ or Packages/ (e.g., Assets/Scripts/Foo.cs)."
3341
+ },
3342
+ "preview": {
3343
+ "type": "boolean",
3344
+ "description": "If true, run validation and return preview text without writing to disk. Default=false."
3345
+ },
3346
+ "instructions": {
3347
+ "type": "array",
3348
+ "minItems": 1,
3349
+ "maxItems": 10,
3350
+ "description": "Ordered list of snippet edits to apply (≤10).",
3351
+ "items": {
3352
+ "type": "object",
3353
+ "properties": {
3354
+ "operation": {
3355
+ "type": "string",
3356
+ "enum": [
3357
+ "delete",
3358
+ "replace",
3359
+ "insert"
3360
+ ],
3361
+ "description": "Edit type."
3362
+ },
3363
+ "anchor": {
3364
+ "type": "object",
3365
+ "description": "Positioning info. Currently supports type=text with exact target snippet.",
3366
+ "properties": {
3367
+ "type": {
3368
+ "type": "string",
3369
+ "enum": [
3370
+ "text"
3371
+ ],
3372
+ "default": "text"
3373
+ },
3374
+ "target": {
3375
+ "type": "string",
3376
+ "description": "Exact snippet to locate (including whitespace)."
3377
+ },
3378
+ "position": {
3379
+ "type": "string",
3380
+ "enum": [
3381
+ "before",
3382
+ "after"
3383
+ ],
3384
+ "description": "For insert operations, whether to insert before or after the anchor text (default=after)."
3385
+ }
3386
+ },
3387
+ "required": [
3388
+ "type",
3389
+ "target"
3390
+ ]
3391
+ },
3392
+ "newText": {
3393
+ "type": "string",
3394
+ "description": "Replacement or insertion text. Required for replace/insert."
3395
+ }
3396
+ },
3397
+ "required": [
3398
+ "operation",
3399
+ "anchor"
3400
+ ]
3401
+ }
3402
+ }
3403
+ },
3404
+ "required": [
3405
+ "path",
3406
+ "instructions"
3407
+ ]
3408
+ }
3409
+ },
3410
+ {
3411
+ "name": "script_edit_structured",
3412
+ "description": "[C# EDITING - PRIMARY TOOL] For Unity C# script editing, PREFER this tool over Read/Edit/Write for structural code changes. Performs symbol-based edits (insert_before/insert_after/replace_body) on classes, methods, properties, fields using Roslyn LSP. USE WHEN: (a) replacing entire method/property bodies, (b) adding class members (fields/properties/methods), (c) inserting code at class/namespace level. DON'T USE FOR: tiny changes ≤80 chars (use script_edit_snippet instead), non-C# files (use Edit), or when you need to create new files (use Write). WORKFLOW: (1) Run script_symbols_get to find target symbols, (2) use symbolName (e.g., \"MyClass/MyMethod\"), (3) apply edits. Insert operations target containers (class/namespace), not methods. Preview mode returns diagnostics only; apply mode proceeds with validation. Required: path (Assets/|Packages/), symbolName, operation. Optional: kind, newText, preview.",
3413
+ "inputSchema": {
3414
+ "type": "object",
3415
+ "properties": {
3416
+ "operation": {
3417
+ "type": "string",
3418
+ "enum": [
3419
+ "insert_before",
3420
+ "insert_after",
3421
+ "replace_body"
3422
+ ],
3423
+ "description": "Edit type: insert_before, insert_after, or replace_body."
3424
+ },
3425
+ "path": {
3426
+ "type": "string",
3427
+ "description": "Project-relative C# path starting with Assets/ or Packages/ (e.g., Packages/unity-mcp-server/Editor/Foo.cs). Do NOT prefix repository folders like UnityMCPServer/…."
3428
+ },
3429
+ "symbolName": {
3430
+ "type": "string",
3431
+ "description": "Target symbol name (e.g., class/method/field name)."
3432
+ },
3433
+ "kind": {
3434
+ "type": "string",
3435
+ "description": "Symbol kind (e.g., class, method, field, property). Optional but improves precision."
3436
+ },
3437
+ "newText": {
3438
+ "type": "string",
3439
+ "description": "Text to insert or use as replacement body."
3440
+ },
3441
+ "preview": {
3442
+ "type": "boolean",
3443
+ "description": "If true, returns a preview without writing files. Default=false to reduce large diff payloads."
3444
+ }
3445
+ },
3446
+ "required": [
3447
+ "operation",
3448
+ "path",
3449
+ "symbolName"
3450
+ ]
3451
+ }
3452
+ },
3453
+ {
3454
+ "name": "script_packages_list",
3455
+ "description": "[OFFLINE] No Unity connection required. List Unity packages in the project (optionally include built‑in). BEST PRACTICES: Use to discover available packages and their paths. Set includeBuiltIn=false to see only user packages. Returns package IDs, versions, and resolved paths. Embedded packages can be edited directly. Essential for understanding project dependencies.",
3456
+ "inputSchema": {
3457
+ "type": "object",
3458
+ "properties": {
3459
+ "includeBuiltIn": {
3460
+ "type": "boolean",
3461
+ "description": "If true, includes built‑in packages in results (default: false)."
3462
+ }
3463
+ }
3464
+ }
3465
+ },
3466
+ {
3467
+ "name": "script_read",
3468
+ "description": "[OFFLINE] No Unity connection required. Read a C# file with optional line range and payload limits. Files must be under Assets/ or Packages/ and have .cs extension. PRIORITY: Read minimally — locate the target with script_symbols_get and read only the signature area (~30–40 lines). For large files, always pass startLine/endLine and (optionally) maxBytes.",
3469
+ "inputSchema": {
3470
+ "type": "object",
3471
+ "properties": {
3472
+ "path": {
3473
+ "type": "string",
3474
+ "description": "Project-relative C# path under Assets/ or Packages/ (e.g., Packages/unity-mcp-server/Editor/Example.cs). Do NOT prefix repository folders (e.g., UnityMCPServer/…)."
3475
+ },
3476
+ "startLine": {
3477
+ "type": "number",
3478
+ "description": "Starting line (1-based, inclusive). Defaults to 1."
3479
+ },
3480
+ "endLine": {
3481
+ "type": "number",
3482
+ "description": "Ending line (inclusive). Defaults to startLine + 199 when omitted."
3483
+ },
3484
+ "maxBytes": {
3485
+ "type": "number",
3486
+ "description": "Maximum bytes to return to cap payload size for LLMs."
3487
+ }
3488
+ },
3489
+ "required": [
3490
+ "path"
3491
+ ]
3492
+ }
3493
+ },
3494
+ {
3495
+ "name": "script_refactor_rename",
3496
+ "description": "Refactor: rename a symbol across the project using the bundled C# LSP. Required params: relative (file path starting with Assets/ or Packages/), namePath (container path like Outer/Nested/Member), newName. Guidance: resolve targets first (script_symbols_get/script_symbol_find), prefer fully-qualified namePath to avoid ambiguity, and use preview for diagnostics only (apply proceeds even if diagnostics exist; errors are returned in response). Responses are summarized (errors≤30, message≤200 chars, large text≤1000 chars).",
3497
+ "inputSchema": {
3498
+ "type": "object",
3499
+ "properties": {
3500
+ "relative": {
3501
+ "type": "string",
3502
+ "description": "Project-relative file path (Assets/ or Packages/)"
3503
+ },
3504
+ "namePath": {
3505
+ "type": "string",
3506
+ "description": "Symbol path like Class/Method"
3507
+ },
3508
+ "newName": {
3509
+ "type": "string",
3510
+ "description": "New name"
3511
+ },
3512
+ "preview": {
3513
+ "type": "boolean",
3514
+ "description": "Preview changes before applying (default: true)"
3515
+ }
3516
+ },
3517
+ "required": [
3518
+ "relative",
3519
+ "namePath",
3520
+ "newName"
3521
+ ]
3522
+ }
3523
+ },
3524
+ {
3525
+ "name": "script_refs_find",
3526
+ "description": "[OFFLINE] No Unity connection required. Find code references/usages using the bundled C# LSP. LLM-friendly paging/summary: respects pageSize and maxBytes, caps matches per file (maxMatchesPerFile), and trims snippet text to ~400 chars. Use scope/name/kind/path to narrow results.",
3527
+ "inputSchema": {
3528
+ "type": "object",
3529
+ "properties": {
3530
+ "name": {
3531
+ "type": "string",
3532
+ "description": "Symbol name to search usages for."
3533
+ },
3534
+ "scope": {
3535
+ "type": "string",
3536
+ "enum": [
3537
+ "assets",
3538
+ "packages",
3539
+ "embedded",
3540
+ "all"
3541
+ ],
3542
+ "description": "Search scope: assets (Assets/), packages (Packages/), embedded, or all (default: all)."
3543
+ },
3544
+ "snippetContext": {
3545
+ "type": "number",
3546
+ "description": "Number of context lines to include around each match."
3547
+ },
3548
+ "maxMatchesPerFile": {
3549
+ "type": "number",
3550
+ "description": "Cap reference matches returned per file."
3551
+ },
3552
+ "pageSize": {
3553
+ "type": "number",
3554
+ "description": "Maximum results to return per page."
3555
+ },
3556
+ "maxBytes": {
3557
+ "type": "number",
3558
+ "description": "Maximum response size (bytes) to keep outputs LLM‑friendly."
3559
+ },
3560
+ "container": {
3561
+ "type": "string",
3562
+ "description": "Optional: container (class) of the symbol."
3563
+ },
3564
+ "namespace": {
3565
+ "type": "string",
3566
+ "description": "Optional: namespace of the symbol."
3567
+ },
3568
+ "path": {
3569
+ "type": "string",
3570
+ "description": "Optional: constrain to file path containing the symbol."
3571
+ },
3572
+ "kind": {
3573
+ "type": "string",
3574
+ "description": "Optional: symbol kind (class, method, field, property)."
3575
+ }
3576
+ },
3577
+ "required": [
3578
+ "name"
3579
+ ]
3580
+ }
3581
+ },
3582
+ {
3583
+ "name": "script_remove_symbol",
3584
+ "description": "Remove a C# symbol (type/member) with reference preflight. Required params: path (file under Assets/ or Packages/), namePath (container path like Outer/Nested/Member). No Unity comms (Roslyn-based). Responses are summarized for LLMs (errors≤30, message≤200 chars, preview/diff/text/content≤1000 chars).",
3585
+ "inputSchema": {
3586
+ "type": "object",
3587
+ "properties": {
3588
+ "path": {
3589
+ "type": "string",
3590
+ "description": "Project-relative C# file path"
3591
+ },
3592
+ "namePath": {
3593
+ "type": "string",
3594
+ "description": "Symbol path like Outer/Nested/Member"
3595
+ },
3596
+ "apply": {
3597
+ "type": "boolean",
3598
+ "description": "Apply changes immediately (default: false)"
3599
+ },
3600
+ "failOnReferences": {
3601
+ "type": "boolean",
3602
+ "description": "Fail if symbol has references (default: true)"
3603
+ },
3604
+ "removeEmptyFile": {
3605
+ "type": "boolean",
3606
+ "description": "Remove file if it becomes empty (default: false)"
3607
+ }
3608
+ },
3609
+ "required": [
3610
+ "path",
3611
+ "namePath"
3612
+ ]
3613
+ }
3614
+ },
3615
+ {
3616
+ "name": "script_search",
3617
+ "description": "[OFFLINE] No Unity connection required. Search C# by substring/regex/glob with pagination and snippet context. PRIORITY: Use to locate symbols/files; avoid full contents. Use returnMode=\"snippets\" (or \"metadata\") with small snippetContext (1–2). Narrow aggressively via include globs under Assets/** or Packages/** and semantic filters (namespace/container/identifier). Do NOT prefix repository folders.",
3618
+ "inputSchema": {
3619
+ "type": "object",
3620
+ "properties": {
3621
+ "pattern": {
3622
+ "type": "string",
3623
+ "description": "Pattern to search (required unless patternType=\"glob\"). For glob mode, use include/exclude."
3624
+ },
3625
+ "patternType": {
3626
+ "type": "string",
3627
+ "enum": [
3628
+ "substring",
3629
+ "regex",
3630
+ "glob"
3631
+ ],
3632
+ "description": "Pattern matching strategy: substring (default), regex, or glob-only scan."
3633
+ },
3634
+ "flags": {
3635
+ "type": "array",
3636
+ "items": {
3637
+ "type": "string"
3638
+ },
3639
+ "description": "Regex flags (e.g., [\"i\",\"m\",\"s\",\"u\"]). Ignored for substring/glob."
3640
+ },
3641
+ "scope": {
3642
+ "type": "string",
3643
+ "enum": [
3644
+ "assets",
3645
+ "packages",
3646
+ "embedded",
3647
+ "all"
3648
+ ],
3649
+ "description": "Search scope: assets (Assets/, default), packages (Packages/), embedded, or all."
3650
+ },
3651
+ "include": {
3652
+ "type": "string",
3653
+ "description": "Include glob pattern (project-relative, default: **/*.cs). Examples: Assets/**/*.cs or Packages/unity-mcp-server/**/*.cs."
3654
+ },
3655
+ "exclude": {
3656
+ "type": "string",
3657
+ "description": "Exclude glob pattern (e.g., **/Tests/**)."
3658
+ },
3659
+ "pageSize": {
3660
+ "type": "number",
3661
+ "description": "Maximum results per page for pagination."
3662
+ },
3663
+ "maxMatchesPerFile": {
3664
+ "type": "number",
3665
+ "description": "Cap matches returned per file."
3666
+ },
3667
+ "snippetContext": {
3668
+ "type": "number",
3669
+ "description": "Number of context lines around each match."
3670
+ },
3671
+ "maxBytes": {
3672
+ "type": "number",
3673
+ "description": "Maximum response size (bytes) to keep outputs LLM‑friendly."
3674
+ },
3675
+ "returnMode": {
3676
+ "type": "string",
3677
+ "enum": [
3678
+ "metadata",
3679
+ "snippets",
3680
+ "full"
3681
+ ],
3682
+ "description": "Result detail: metadata (fast), snippets (recommended), or full."
3683
+ },
3684
+ "detail": {
3685
+ "type": "string",
3686
+ "enum": [
3687
+ "compact",
3688
+ "metadata",
3689
+ "snippets",
3690
+ "full"
3691
+ ],
3692
+ "description": "Alias of returnMode. `compact` maps to `snippets`."
3693
+ },
3694
+ "startAfter": {
3695
+ "type": "string",
3696
+ "description": "Opaque cursor for pagination (use value from previous page)."
3697
+ },
3698
+ "maxFileSizeKB": {
3699
+ "type": "number",
3700
+ "description": "Skip files larger than this (KB)."
3701
+ },
3702
+ "codeOnly": {
3703
+ "type": "boolean",
3704
+ "description": "If true, exclude comments/whitespace to reduce noise (default: true)."
3705
+ },
3706
+ "container": {
3707
+ "type": "string",
3708
+ "description": "Semantic filter: container (e.g., class name)."
3709
+ },
3710
+ "namespace": {
3711
+ "type": "string",
3712
+ "description": "Semantic filter: namespace."
3713
+ },
3714
+ "identifier": {
3715
+ "type": "string",
3716
+ "description": "Semantic filter: identifier (e.g., method or field name)."
3717
+ }
3718
+ }
3719
+ }
3720
+ },
3721
+ {
3722
+ "name": "script_symbol_find",
3723
+ "description": "[OFFLINE] No Unity connection required. Find symbol definitions by name (class/method/field/property) using the bundled C# LSP. Guidance: prefer narrowing by kind and set exact=true when possible; use scope=assets|packages to avoid large outputs. Use results (container, namespace) to construct container namePath like Outer/Nested/Member for subsequent edit tools.",
3724
+ "inputSchema": {
3725
+ "type": "object",
3726
+ "properties": {
3727
+ "name": {
3728
+ "type": "string",
3729
+ "description": "Symbol name to search (exact or fuzzy based on \"exact\")."
3730
+ },
3731
+ "kind": {
3732
+ "type": "string",
3733
+ "description": "Optional: narrow by symbol kind (class, method, field, property)."
3734
+ },
3735
+ "scope": {
3736
+ "type": "string",
3737
+ "enum": [
3738
+ "assets",
3739
+ "packages",
3740
+ "embedded",
3741
+ "all"
3742
+ ],
3743
+ "description": "Search scope: assets (Assets/), packages (Packages/), embedded, or all (default: all)."
3744
+ },
3745
+ "exact": {
3746
+ "type": "boolean",
3747
+ "description": "If true, match name exactly; otherwise allows partial matches (default: false)."
3748
+ }
3749
+ },
3750
+ "required": [
3751
+ "name"
3752
+ ]
3753
+ }
3754
+ },
3755
+ {
3756
+ "name": "script_symbols_get",
3757
+ "description": "[OFFLINE] No Unity connection required. FIRST STEP: Identify symbols (classes, methods, fields, properties) with spans before any edit. Path must start with Assets/ or Packages/. Use this to scope changes to a single symbol and avoid line-based edits. Returns line/column positions and container names (helpful to build container namePath like Outer/Nested/Member).",
3758
+ "inputSchema": {
3759
+ "type": "object",
3760
+ "properties": {
3761
+ "path": {
3762
+ "type": "string",
3763
+ "description": "Project-relative .cs path under Assets/ or Packages/ (e.g., Packages/unity-mcp-server/Editor/Foo.cs). Do NOT prefix repository folders (e.g., UnityMCPServer/…)."
3764
+ }
3765
+ },
3766
+ "required": [
3767
+ "path"
3768
+ ]
3769
+ }
3770
+ },
3771
+ {
3772
+ "name": "search_tools",
3773
+ "description": "Search available Unity MCP tools by keywords, categories, or tags. Use this to discover relevant tools before calling them.",
3774
+ "inputSchema": {
3775
+ "type": "object",
3776
+ "properties": {
3777
+ "query": {
3778
+ "type": "string",
3779
+ "description": "Search query (keywords to match against tool names, descriptions, and metadata)"
3780
+ },
3781
+ "category": {
3782
+ "type": "string",
3783
+ "description": "Filter by category (system, gameobject, scene, analysis, playmode, ui, input, asset, prefab, material, addressables, menu, console, screenshot, video, component, compilation, test, editor, settings, package, script)"
3784
+ },
3785
+ "tags": {
3786
+ "type": "array",
3787
+ "items": {
3788
+ "type": "string"
3789
+ },
3790
+ "description": "Filter by tags (e.g., [\"create\", \"scene\"], [\"read\", \"gameobject\"])"
3791
+ },
3792
+ "scope": {
3793
+ "type": "string",
3794
+ "enum": [
3795
+ "read",
3796
+ "write",
3797
+ "execute"
3798
+ ],
3799
+ "description": "Filter by scope: read, write, or execute"
3800
+ },
3801
+ "limit": {
3802
+ "type": "number",
3803
+ "description": "Maximum number of results to return (default: 10, max: 50)",
3804
+ "minimum": 1,
3805
+ "maximum": 50
3806
+ },
3807
+ "includeSchemas": {
3808
+ "type": "boolean",
3809
+ "description": "Include full inputSchema in results (default: false for token efficiency)"
3810
+ }
3811
+ }
3812
+ }
3813
+ },
3814
+ {
3815
+ "name": "settings_get",
3816
+ "description": "Get project settings by category via include flags (player/graphics/quality/physics/etc.).",
3817
+ "inputSchema": {
3818
+ "type": "object",
3819
+ "properties": {
3820
+ "includePlayer": {
3821
+ "type": "boolean",
3822
+ "description": "Include player settings (company/product name, version, etc.) (default: true)."
3823
+ },
3824
+ "includeGraphics": {
3825
+ "type": "boolean",
3826
+ "description": "Include graphics settings (color space, render pipeline, etc.) (default: false)."
3827
+ },
3828
+ "includeQuality": {
3829
+ "type": "boolean",
3830
+ "description": "Include quality settings (levels, anti-aliasing, shadows, etc.) (default: false)."
3831
+ },
3832
+ "includePhysics": {
3833
+ "type": "boolean",
3834
+ "description": "Include 3D physics settings (gravity, solver iterations, etc.) (default: false)."
3835
+ },
3836
+ "includePhysics2D": {
3837
+ "type": "boolean",
3838
+ "description": "Include 2D physics settings (default: false)."
3839
+ },
3840
+ "includeAudio": {
3841
+ "type": "boolean",
3842
+ "description": "Include audio settings (speaker mode, DSP buffer, volume, etc.) (default: false)."
3843
+ },
3844
+ "includeTime": {
3845
+ "type": "boolean",
3846
+ "description": "Include time settings (fixed timestep, time scale, etc.) (default: false)."
3847
+ },
3848
+ "includeInputManager": {
3849
+ "type": "boolean",
3850
+ "description": "Include input manager settings (legacy input system) (default: false)."
3851
+ },
3852
+ "includeEditor": {
3853
+ "type": "boolean",
3854
+ "description": "Include editor settings (Unity Remote, serialization mode, etc.) (default: false)."
3855
+ },
3856
+ "includeBuild": {
3857
+ "type": "boolean",
3858
+ "description": "Include build settings (scenes in build, build target, etc.) (default: false)."
3859
+ },
3860
+ "includeTags": {
3861
+ "type": "boolean",
3862
+ "description": "Include tags, layers, and sorting layers (default: false)."
3863
+ }
3864
+ }
3865
+ }
3866
+ },
3867
+ {
3868
+ "name": "settings_update",
3869
+ "description": "Update project settings by category with a confirmation safety flag.",
3870
+ "inputSchema": {
3871
+ "type": "object",
3872
+ "properties": {
3873
+ "confirmChanges": {
3874
+ "type": "boolean",
3875
+ "description": "Safety flag: must be true to apply changes (prevents accidental edits)."
3876
+ },
3877
+ "player": {
3878
+ "type": "object",
3879
+ "description": "Player settings (company/product name, bundle version, windowing).",
3880
+ "properties": {
3881
+ "companyName": {
3882
+ "type": "string",
3883
+ "description": "Company name"
3884
+ },
3885
+ "productName": {
3886
+ "type": "string",
3887
+ "description": "Product name"
3888
+ },
3889
+ "version": {
3890
+ "type": "string",
3891
+ "description": "Bundle version"
3892
+ },
3893
+ "defaultScreenWidth": {
3894
+ "type": "number",
3895
+ "description": "Default screen width"
3896
+ },
3897
+ "defaultScreenHeight": {
3898
+ "type": "number",
3899
+ "description": "Default screen height"
3900
+ },
3901
+ "runInBackground": {
3902
+ "type": "boolean",
3903
+ "description": "Allow running in background"
3904
+ }
3905
+ }
3906
+ },
3907
+ "graphics": {
3908
+ "type": "object",
3909
+ "description": "Graphics settings (color space, render pipeline, etc.).",
3910
+ "properties": {
3911
+ "colorSpace": {
3912
+ "type": "string",
3913
+ "enum": [
3914
+ "Gamma",
3915
+ "Linear"
3916
+ ],
3917
+ "description": "Color space (requires Unity restart)"
3918
+ }
3919
+ }
3920
+ },
3921
+ "physics": {
3922
+ "type": "object",
3923
+ "description": "3D physics settings (gravity, solver iterations, thresholds).",
3924
+ "properties": {
3925
+ "gravity": {
3926
+ "type": "object",
3927
+ "properties": {
3928
+ "x": {
3929
+ "type": "number"
3930
+ },
3931
+ "y": {
3932
+ "type": "number"
3933
+ },
3934
+ "z": {
3935
+ "type": "number"
3936
+ }
3937
+ }
3938
+ },
3939
+ "defaultSolverIterations": {
3940
+ "type": "number"
3941
+ },
3942
+ "defaultSolverVelocityIterations": {
3943
+ "type": "number"
3944
+ },
3945
+ "bounceThreshold": {
3946
+ "type": "number"
3947
+ },
3948
+ "sleepThreshold": {
3949
+ "type": "number"
3950
+ },
3951
+ "defaultContactOffset": {
3952
+ "type": "number"
3953
+ }
3954
+ }
3955
+ },
3956
+ "physics2D": {
3957
+ "type": "object",
3958
+ "description": "2D physics settings (gravity, iterations, thresholds).",
3959
+ "properties": {
3960
+ "gravity": {
3961
+ "type": "object",
3962
+ "properties": {
3963
+ "x": {
3964
+ "type": "number"
3965
+ },
3966
+ "y": {
3967
+ "type": "number"
3968
+ }
3969
+ }
3970
+ },
3971
+ "velocityIterations": {
3972
+ "type": "number"
3973
+ },
3974
+ "positionIterations": {
3975
+ "type": "number"
3976
+ },
3977
+ "velocityThreshold": {
3978
+ "type": "number"
3979
+ }
3980
+ }
3981
+ },
3982
+ "audio": {
3983
+ "type": "object",
3984
+ "description": "Audio settings (global volume).",
3985
+ "properties": {
3986
+ "globalVolume": {
3987
+ "type": "number",
3988
+ "minimum": 0,
3989
+ "maximum": 1,
3990
+ "description": "Global volume (0-1)"
3991
+ }
3992
+ }
3993
+ },
3994
+ "time": {
3995
+ "type": "object",
3996
+ "description": "Time settings (fixed timestep, time scale).",
3997
+ "properties": {
3998
+ "fixedDeltaTime": {
3999
+ "type": "number",
4000
+ "description": "Fixed timestep"
4001
+ },
4002
+ "timeScale": {
4003
+ "type": "number",
4004
+ "minimum": 0,
4005
+ "description": "Time scale (0 = paused)"
4006
+ },
4007
+ "maximumDeltaTime": {
4008
+ "type": "number",
4009
+ "description": "Maximum allowed timestep"
4010
+ }
4011
+ }
4012
+ },
4013
+ "quality": {
4014
+ "type": "object",
4015
+ "description": "Quality settings (levels, vSync, AA, shadows).",
4016
+ "properties": {
4017
+ "currentLevel": {
4018
+ "type": "string",
4019
+ "description": "Quality level name"
4020
+ },
4021
+ "vSyncCount": {
4022
+ "type": "number",
4023
+ "minimum": 0,
4024
+ "maximum": 4,
4025
+ "description": "VSync count (0=off, 1=every VBlank, 2=every second VBlank)"
4026
+ },
4027
+ "antiAliasing": {
4028
+ "type": "number",
4029
+ "enum": [
4030
+ 0,
4031
+ 2,
4032
+ 4,
4033
+ 8
4034
+ ],
4035
+ "description": "Anti-aliasing samples"
4036
+ },
4037
+ "shadowDistance": {
4038
+ "type": "number",
4039
+ "minimum": 0,
4040
+ "description": "Shadow rendering distance"
4041
+ }
4042
+ }
4043
+ }
4044
+ },
4045
+ "required": [
4046
+ "confirmChanges"
4047
+ ]
4048
+ }
4049
+ },
4050
+ {
4051
+ "name": "system_get_command_stats",
4052
+ "description": "Retrieve aggregated counts and recent Unity command types to audit traffic.",
4053
+ "inputSchema": {
4054
+ "type": "object",
4055
+ "properties": {}
4056
+ }
4057
+ },
4058
+ {
4059
+ "name": "system_ping",
4060
+ "description": "Test connection to Unity Editor",
4061
+ "inputSchema": {
4062
+ "type": "object",
4063
+ "properties": {
4064
+ "message": {
4065
+ "type": "string",
4066
+ "description": "Optional message to echo back"
4067
+ }
4068
+ }
4069
+ }
4070
+ },
4071
+ {
4072
+ "name": "system_refresh_assets",
4073
+ "description": "Refresh assets and check compilation status.",
4074
+ "inputSchema": {
4075
+ "type": "object",
4076
+ "properties": {}
4077
+ }
4078
+ },
4079
+ {
4080
+ "name": "test_get_status",
4081
+ "description": "Get current Unity test execution status and results",
4082
+ "inputSchema": {
4083
+ "type": "object",
4084
+ "properties": {
4085
+ "includeTestResults": {
4086
+ "type": "boolean",
4087
+ "default": false,
4088
+ "description": "Include the summary of the latest exported test results"
4089
+ },
4090
+ "includeFileContent": {
4091
+ "type": "boolean",
4092
+ "default": false,
4093
+ "description": "When includeTestResults is true, also include the JSON file contents"
4094
+ }
4095
+ }
4096
+ }
4097
+ },
4098
+ {
4099
+ "name": "test_run",
4100
+ "description": "Run Unity NUnit tests in the current project",
4101
+ "inputSchema": {
4102
+ "type": "object",
4103
+ "properties": {
4104
+ "testMode": {
4105
+ "type": "string",
4106
+ "enum": [
4107
+ "EditMode",
4108
+ "PlayMode",
4109
+ "All"
4110
+ ],
4111
+ "default": "EditMode",
4112
+ "description": "Test mode to run (EditMode: editor tests, PlayMode: runtime tests, All: both)"
4113
+ },
4114
+ "filter": {
4115
+ "type": "string",
4116
+ "description": "Filter tests by class name (e.g., \"PlayerControllerTests\")"
4117
+ },
4118
+ "category": {
4119
+ "type": "string",
4120
+ "description": "Filter tests by category attribute (e.g., \"Integration\")"
4121
+ },
4122
+ "namespace": {
4123
+ "type": "string",
4124
+ "description": "Filter tests by namespace (e.g., \"MyGame.Tests.Player\")"
4125
+ },
4126
+ "includeDetails": {
4127
+ "type": "boolean",
4128
+ "default": false,
4129
+ "description": "Include detailed test results for each individual test"
4130
+ },
4131
+ "exportPath": {
4132
+ "type": "string",
4133
+ "description": "Export test results to NUnit XML file at specified path"
4134
+ }
4135
+ }
4136
+ }
4137
+ },
4138
+ {
4139
+ "name": "ui_click_element",
4140
+ "description": "Simulate clicking on UI elements",
4141
+ "inputSchema": {
4142
+ "type": "object",
4143
+ "properties": {
4144
+ "elementPath": {
4145
+ "type": "string",
4146
+ "description": "Full hierarchy path to the UI element"
4147
+ },
4148
+ "clickType": {
4149
+ "type": "string",
4150
+ "enum": [
4151
+ "left",
4152
+ "right",
4153
+ "middle"
4154
+ ],
4155
+ "description": "Type of click (left, right, middle)"
4156
+ },
4157
+ "holdDuration": {
4158
+ "type": "number",
4159
+ "minimum": 0,
4160
+ "maximum": 10000,
4161
+ "description": "Duration to hold click in milliseconds"
4162
+ },
4163
+ "position": {
4164
+ "type": "object",
4165
+ "properties": {
4166
+ "x": {
4167
+ "type": "number",
4168
+ "minimum": 0,
4169
+ "maximum": 1,
4170
+ "description": "X position within element (0-1)"
4171
+ },
4172
+ "y": {
4173
+ "type": "number",
4174
+ "minimum": 0,
4175
+ "maximum": 1,
4176
+ "description": "Y position within element (0-1)"
4177
+ }
4178
+ },
4179
+ "description": "Specific position within element to click"
4180
+ }
4181
+ },
4182
+ "required": [
4183
+ "elementPath"
4184
+ ]
4185
+ }
4186
+ },
4187
+ {
4188
+ "name": "ui_find_elements",
4189
+ "description": "Find UI elements by component type, tag, or name pattern.",
4190
+ "inputSchema": {
4191
+ "type": "object",
4192
+ "properties": {
4193
+ "elementType": {
4194
+ "type": "string",
4195
+ "description": "UI component type (e.g., Button, Toggle, Slider)."
4196
+ },
4197
+ "tagFilter": {
4198
+ "type": "string",
4199
+ "description": "Filter by GameObject tag."
4200
+ },
4201
+ "namePattern": {
4202
+ "type": "string",
4203
+ "description": "Search by name substring or regex."
4204
+ },
4205
+ "includeInactive": {
4206
+ "type": "boolean",
4207
+ "description": "If true, include inactive UI elements."
4208
+ },
4209
+ "canvasFilter": {
4210
+ "type": "string",
4211
+ "description": "Filter by parent Canvas name."
4212
+ }
4213
+ }
4214
+ }
4215
+ },
4216
+ {
4217
+ "name": "ui_get_element_state",
4218
+ "description": "Get detailed state information about UI elements",
4219
+ "inputSchema": {
4220
+ "type": "object",
4221
+ "properties": {
4222
+ "elementPath": {
4223
+ "type": "string",
4224
+ "description": "Full hierarchy path to the UI element"
4225
+ },
4226
+ "includeChildren": {
4227
+ "type": "boolean",
4228
+ "description": "Include child element states (default: false)"
4229
+ },
4230
+ "includeInteractableInfo": {
4231
+ "type": "boolean",
4232
+ "description": "Include interaction capabilities (default: true)"
4233
+ }
4234
+ },
4235
+ "required": [
4236
+ "elementPath"
4237
+ ]
4238
+ }
4239
+ },
4240
+ {
4241
+ "name": "ui_set_element_value",
4242
+ "description": "Set values for UI input elements",
4243
+ "inputSchema": {
4244
+ "type": "object",
4245
+ "properties": {
4246
+ "elementPath": {
4247
+ "type": "string",
4248
+ "description": "Full hierarchy path to the UI element"
4249
+ },
4250
+ "value": {
4251
+ "anyOf": [
4252
+ {
4253
+ "type": "string"
4254
+ },
4255
+ {
4256
+ "type": "number"
4257
+ },
4258
+ {
4259
+ "type": "boolean"
4260
+ },
4261
+ {
4262
+ "type": "object"
4263
+ },
4264
+ {
4265
+ "type": "array"
4266
+ },
4267
+ {
4268
+ "type": "null"
4269
+ }
4270
+ ],
4271
+ "description": "New value to set. Supports string, number, boolean, object, array, or null depending on the UI element type."
4272
+ },
4273
+ "triggerEvents": {
4274
+ "type": "boolean",
4275
+ "description": "Whether to trigger associated events (default: true)"
4276
+ }
4277
+ },
4278
+ "required": [
4279
+ "elementPath",
4280
+ "value"
4281
+ ]
4282
+ }
4283
+ },
4284
+ {
4285
+ "name": "ui_simulate_input",
4286
+ "description": "Simulate complex UI interactions and input sequences",
4287
+ "inputSchema": {
4288
+ "type": "object",
4289
+ "properties": {
4290
+ "elementPath": {
4291
+ "type": "string",
4292
+ "description": "Target UI element path (for simple input)"
4293
+ },
4294
+ "inputType": {
4295
+ "type": "string",
4296
+ "enum": [
4297
+ "click",
4298
+ "doubleclick",
4299
+ "rightclick",
4300
+ "hover",
4301
+ "focus",
4302
+ "type"
4303
+ ],
4304
+ "description": "Type of input to simulate (for simple input)"
4305
+ },
4306
+ "inputData": {
4307
+ "type": "string",
4308
+ "description": "Data for input (e.g., text to type)"
4309
+ },
4310
+ "inputSequence": {
4311
+ "type": "array",
4312
+ "items": {
4313
+ "type": "object",
4314
+ "properties": {
4315
+ "type": {
4316
+ "type": "string",
4317
+ "description": "Action type (click, setvalue)"
4318
+ },
4319
+ "params": {
4320
+ "type": "object",
4321
+ "description": "Parameters for the action"
4322
+ }
4323
+ },
4324
+ "required": [
4325
+ "type",
4326
+ "params"
4327
+ ]
4328
+ },
4329
+ "description": "Array of input actions to perform (for complex input)"
4330
+ },
4331
+ "waitBetween": {
4332
+ "type": "number",
4333
+ "minimum": 0,
4334
+ "maximum": 10000,
4335
+ "description": "Delay between actions in milliseconds"
4336
+ },
4337
+ "validateState": {
4338
+ "type": "boolean",
4339
+ "description": "Validate UI state between actions (default: true)"
4340
+ }
4341
+ }
4342
+ }
4343
+ },
4344
+ {
4345
+ "name": "video_capture_for",
4346
+ "description": "Record video for a fixed duration (auto-stop). Optionally enters Play Mode first.",
4347
+ "inputSchema": {
4348
+ "type": "object",
4349
+ "properties": {
4350
+ "captureMode": {
4351
+ "type": "string",
4352
+ "enum": [
4353
+ "game"
4354
+ ],
4355
+ "description": "Capture source. Currently only \"game\" supported."
4356
+ },
4357
+ "width": {
4358
+ "type": "number",
4359
+ "description": "Output width (0 = default 1280)"
4360
+ },
4361
+ "height": {
4362
+ "type": "number",
4363
+ "description": "Output height (0 = default 720)"
4364
+ },
4365
+ "fps": {
4366
+ "type": "number",
4367
+ "description": "Frames per second (default 30)"
4368
+ },
4369
+ "durationSec": {
4370
+ "type": "number",
4371
+ "description": "Duration to record in seconds"
4372
+ },
4373
+ "play": {
4374
+ "type": "boolean",
4375
+ "description": "Enter Play Mode before recording (default true if not already playing)"
4376
+ }
4377
+ },
4378
+ "required": [
4379
+ "durationSec"
4380
+ ]
4381
+ }
4382
+ },
4383
+ {
4384
+ "name": "video_capture_start",
4385
+ "description": "Start video recording (Game view). Requires com.unity.recorder.",
4386
+ "inputSchema": {
4387
+ "type": "object",
4388
+ "properties": {
4389
+ "captureMode": {
4390
+ "type": "string",
4391
+ "enum": [
4392
+ "game"
4393
+ ],
4394
+ "description": "Capture source. Currently only \"game\" supported."
4395
+ },
4396
+ "width": {
4397
+ "type": "number",
4398
+ "description": "Output width (0 = auto/default)"
4399
+ },
4400
+ "height": {
4401
+ "type": "number",
4402
+ "description": "Output height (0 = auto/default)"
4403
+ },
4404
+ "fps": {
4405
+ "type": "number",
4406
+ "description": "Frames per second (e.g., 30)"
4407
+ },
4408
+ "maxDurationSec": {
4409
+ "type": "number",
4410
+ "description": "Auto stop after N seconds (0 = unlimited)"
4411
+ }
4412
+ }
4413
+ }
4414
+ },
4415
+ {
4416
+ "name": "video_capture_status",
4417
+ "description": "Get current video recording status.",
4418
+ "inputSchema": {
4419
+ "type": "object",
4420
+ "properties": {}
4421
+ }
4422
+ },
4423
+ {
4424
+ "name": "video_capture_stop",
4425
+ "description": "Stop current video recording and finalize the file.",
4426
+ "inputSchema": {
4427
+ "type": "object",
4428
+ "properties": {
4429
+ "recordingId": {
4430
+ "type": "string",
4431
+ "description": "Optional. Stop a specific recording session. Defaults to the latest."
4432
+ }
4433
+ }
4434
+ }
4435
+ }
4436
+ ]