unreal-engine-mcp-server 0.2.1 → 0.3.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.
@@ -1,10 +1,29 @@
1
- // Consolidated tool definitions - reduced from 36 to 10 multi-purpose tools
1
+ // Consolidated tool definitions - reduced from 36 to 13 multi-purpose tools
2
2
 
3
3
  export const consolidatedToolDefinitions = [
4
4
  // 1. ASSET MANAGER - Combines asset operations
5
5
  {
6
6
  name: 'manage_asset',
7
- description: 'Manage assets - list, import, create materials',
7
+ description: `Search, browse, import, and create simple material assets.
8
+
9
+ When to use this tool:
10
+ - You want to list assets in the project Content directory (use /Game; /Content is auto-mapped).
11
+ - You want to import files from disk into the project (e.g., FBX, PNG, WAV, EXR).
12
+ - You want to generate a very basic Material asset by name at a path.
13
+
14
+ Supported actions:
15
+ - list: Returns assets in a folder (recursive behavior is auto-enabled for /Game).
16
+ - import: Imports a file into the project at a destination path (e.g., /Game/Folder).
17
+ - create_material: Creates a simple Material asset at a path.
18
+
19
+ Tips:
20
+ - Unreal uses /Game for project content; this server maps /Content → /Game automatically.
21
+ - For large projects, listing /Game returns a sample subset for speed; refine to subfolders.
22
+
23
+ Examples:
24
+ - {"action":"list","directory":"/Game/ThirdPerson"}
25
+ - {"action":"import","sourcePath":"C:/Temp/Tree.fbx","destinationPath":"/Game/Environment/Trees"}
26
+ - {"action":"create_material","name":"M_Mask","path":"/Game/Materials"}`,
8
27
  inputSchema: {
9
28
  type: 'object',
10
29
  properties: {
@@ -52,7 +71,25 @@ export const consolidatedToolDefinitions = [
52
71
  // 2. ACTOR CONTROL - Combines actor operations
53
72
  {
54
73
  name: 'control_actor',
55
- description: 'Control actors - spawn, delete, apply physics. For spawning, supports both actor classes (e.g., StaticMeshActor, CameraActor) and asset paths (e.g., /Engine/BasicShapes/Cube) which will auto-spawn as StaticMeshActor',
74
+ description: `Spawn, delete, and apply physics to actors in the level.
75
+
76
+ When to use this tool:
77
+ - You need to place an actor or mesh in the level, remove an actor, or nudge an actor with a physics force.
78
+
79
+ Spawning:
80
+ - classPath can be a class name (e.g., StaticMeshActor, CameraActor) OR an asset path (e.g., /Engine/BasicShapes/Cube, /Game/Meshes/SM_Rock).
81
+ - If an asset path is provided, a StaticMeshActor is auto-spawned with the mesh assigned.
82
+
83
+ Deleting:
84
+ - Finds actors by label/name (case-insensitive). Deletes matching actors.
85
+
86
+ Apply force:
87
+ - Applies a world-space force vector to an actor with physics enabled.
88
+
89
+ Examples:
90
+ - {"action":"spawn","classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}
91
+ - {"action":"delete","actorName":"Cube_1"}
92
+ - {"action":"apply_force","actorName":"PhysicsBox","force":{"x":0,"y":0,"z":5000}}`,
56
93
  inputSchema: {
57
94
  type: 'object',
58
95
  properties: {
@@ -112,7 +149,20 @@ export const consolidatedToolDefinitions = [
112
149
  // 3. EDITOR CONTROL - Combines editor operations
113
150
  {
114
151
  name: 'control_editor',
115
- description: 'Control editor - PIE mode, camera, viewport',
152
+ description: `Play/Stop PIE, position the editor camera, and switch common view modes.
153
+
154
+ When to use this tool:
155
+ - Start/stop a PIE session, move the viewport camera, or change viewmode (Lit/Unlit/Wireframe/etc.).
156
+
157
+ Notes:
158
+ - View modes are validated and unsafe modes are blocked.
159
+ - Camera accepts location and/or rotation (both optional). Values are normalized.
160
+
161
+ Examples:
162
+ - {"action":"play"}
163
+ - {"action":"set_camera","location":{"x":0,"y":-600,"z":250},"rotation":{"pitch":0,"yaw":0,"roll":0}}
164
+ - {"action":"set_view_mode","viewMode":"Wireframe"}
165
+ - {"action":"stop"}`,
116
166
  inputSchema: {
117
167
  type: 'object',
118
168
  properties: {
@@ -170,7 +220,16 @@ export const consolidatedToolDefinitions = [
170
220
  // 4. LEVEL MANAGER - Combines level and lighting operations
171
221
  {
172
222
  name: 'manage_level',
173
- description: 'Manage levels and lighting',
223
+ description: `Load/save/stream levels, create lights, and trigger lighting builds.
224
+
225
+ When to use this tool:
226
+ - Switch to a level, save the current level, stream sublevels, add a light, or start a lighting build.
227
+
228
+ Examples:
229
+ - {"action":"load","levelPath":"/Game/Maps/Lobby"}
230
+ - {"action":"stream","levelName":"Sublevel_A","shouldBeLoaded":true,"shouldBeVisible":true}
231
+ - {"action":"create_light","lightType":"Directional","name":"KeyLight","intensity":5.0}
232
+ - {"action":"build_lighting","quality":"High"}`,
174
233
  inputSchema: {
175
234
  type: 'object',
176
235
  properties: {
@@ -226,7 +285,15 @@ export const consolidatedToolDefinitions = [
226
285
  // 5. ANIMATION SYSTEM - Combines animation and physics setup
227
286
  {
228
287
  name: 'animation_physics',
229
- description: 'Animation and physics systems',
288
+ description: `Create animation blueprints, play montages, and set up simple ragdolls.
289
+
290
+ When to use this tool:
291
+ - Generate an Anim Blueprint for a skeleton, play a Montage/Animation on an actor, or enable ragdoll.
292
+
293
+ Examples:
294
+ - {"action":"create_animation_bp","name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}
295
+ - {"action":"play_montage","actorName":"Hero","montagePath":"/Game/Anim/MT_Attack"}
296
+ - {"action":"setup_ragdoll","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","physicsAssetName":"PHYS_Hero"}`,
230
297
  inputSchema: {
231
298
  type: 'object',
232
299
  properties: {
@@ -266,7 +333,15 @@ export const consolidatedToolDefinitions = [
266
333
  // 6. EFFECTS SYSTEM - Combines particles and visual effects
267
334
  {
268
335
  name: 'create_effect',
269
- description: 'Create visual effects - particles, Niagara',
336
+ description: `Create particles/FX and lightweight debug shapes for rapid iteration.
337
+
338
+ When to use this tool:
339
+ - Spawn a Niagara system at a location, create a particle effect by type tag, or draw debug geometry for planning.
340
+
341
+ Examples:
342
+ - {"action":"niagara","systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}
343
+ - {"action":"particle","effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}
344
+ - {"action":"debug_shape","shape":"Sphere","location":{"x":0,"y":0,"z":0},"size":100,"duration":5}`,
270
345
  inputSchema: {
271
346
  type: 'object',
272
347
  properties: {
@@ -327,7 +402,14 @@ export const consolidatedToolDefinitions = [
327
402
  // 7. BLUEPRINT MANAGER - Blueprint operations
328
403
  {
329
404
  name: 'manage_blueprint',
330
- description: 'Create and modify blueprints',
405
+ description: `Create new Blueprints and add components programmatically.
406
+
407
+ When to use this tool:
408
+ - Quickly scaffold a Blueprint asset or add a component to an existing Blueprint.
409
+
410
+ Examples:
411
+ - {"action":"create","name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}
412
+ - {"action":"add_component","name":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
331
413
  inputSchema: {
332
414
  type: 'object',
333
415
  properties: {
@@ -362,7 +444,19 @@ export const consolidatedToolDefinitions = [
362
444
  // 8. ENVIRONMENT BUILDER - Landscape and foliage
363
445
  {
364
446
  name: 'build_environment',
365
- description: 'Build environment - landscape, foliage',
447
+ description: `Environment authoring helpers (landscape, foliage).
448
+
449
+ When to use this tool:
450
+ - Create a procedural terrain alternative, add/paint foliage, or attempt a landscape workflow.
451
+
452
+ Important:
453
+ - Native Landscape creation via Python is limited and may return a helpful error suggesting Landscape Mode in the editor.
454
+ - Foliage helpers create FoliageType assets and support simple placement.
455
+
456
+ Examples:
457
+ - {"action":"create_landscape","name":"Landscape_Basic","sizeX":1024,"sizeY":1024}
458
+ - {"action":"add_foliage","name":"FT_Grass","meshPath":"/Game/Foliage/SM_Grass","density":300}
459
+ - {"action":"paint_foliage","foliageType":"/Game/Foliage/Types/FT_Grass","position":{"x":0,"y":0,"z":0},"brushSize":300}`,
366
460
  inputSchema: {
367
461
  type: 'object',
368
462
  properties: {
@@ -413,7 +507,16 @@ export const consolidatedToolDefinitions = [
413
507
  // 9. PERFORMANCE & AUDIO - System settings
414
508
  {
415
509
  name: 'system_control',
416
- description: 'Control performance, audio, UI, screenshots, and engine lifecycle',
510
+ description: `Performance toggles, quality settings, audio playback, simple UI helpers, screenshots, and engine lifecycle.
511
+
512
+ When to use this tool:
513
+ - Toggle profiling and FPS stats, adjust quality (sg.*), play a sound, create/show a basic widget, take a screenshot, or launch/quit the editor.
514
+
515
+ Examples:
516
+ - {"action":"show_fps","enabled":true}
517
+ - {"action":"set_quality","category":"Shadows","level":2}
518
+ - {"action":"play_sound","soundPath":"/Game/Audio/SFX/Click","volume":0.5}
519
+ - {"action":"screenshot","resolution":"1920x1080"}`,
417
520
  inputSchema: {
418
521
  type: 'object',
419
522
  properties: {
@@ -483,7 +586,19 @@ export const consolidatedToolDefinitions = [
483
586
  // 10. CONSOLE COMMAND - Universal tool
484
587
  {
485
588
  name: 'console_command',
486
- description: 'Execute any console command in Unreal Engine',
589
+ description: `Execute an Unreal console command with built-in safety.
590
+
591
+ When to use this tool:
592
+ - Fire a specific command (e.g., stat fps, viewmode wireframe, r.ScreenPercentage 75).
593
+
594
+ Safety:
595
+ - Dangerous commands are blocked (quit/exit, GPU crash triggers, unsafe visualizebuffer modes, etc.).
596
+ - Unknown commands will return a warning instead of crashing.
597
+
598
+ Examples:
599
+ - {"command":"stat fps"}
600
+ - {"command":"viewmode wireframe"}
601
+ - {"command":"r.ScreenPercentage 75"}`,
487
602
  inputSchema: {
488
603
  type: 'object',
489
604
  properties: {
@@ -507,7 +622,17 @@ export const consolidatedToolDefinitions = [
507
622
  // 11. REMOTE CONTROL PRESETS
508
623
  {
509
624
  name: 'manage_rc',
510
- description: 'Manage Remote Control presets: create, expose, list fields, set/get values',
625
+ description: `Create and manage Remote Control presets; expose actors/properties; set/get values.
626
+
627
+ When to use this tool:
628
+ - Automate Remote Control (RC) preset authoring and interaction from the assistant.
629
+
630
+ Examples:
631
+ - {"action":"create_preset","name":"LivePreset","path":"/Game/RCPresets"}
632
+ - {"action":"expose_actor","presetPath":"/Game/RCPresets/LivePreset","actorName":"CameraActor"}
633
+ - {"action":"expose_property","presetPath":"/Game/RCPresets/LivePreset","objectPath":"/Script/Engine.Default__Engine","propertyName":"GameUserSettings"}
634
+ - {"action":"list_fields","presetPath":"/Game/RCPresets/LivePreset"}
635
+ - {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomFloat","value":0.5}`,
511
636
  inputSchema: {
512
637
  type: 'object',
513
638
  properties: {
@@ -542,7 +667,17 @@ export const consolidatedToolDefinitions = [
542
667
  // 12. SEQUENCER / CINEMATICS
543
668
  {
544
669
  name: 'manage_sequence',
545
- description: 'Create/open sequences, add cameras/actors, manage bindings, control playback, and set properties',
670
+ description: `Create/open Level Sequences, bind actors, add cameras, and control playback.
671
+
672
+ When to use this tool:
673
+ - Build quick cinematics: create/open a sequence, add a camera or actors, tweak properties, and play.
674
+
675
+ Examples:
676
+ - {"action":"create","name":"Intro","path":"/Game/Cinematics"}
677
+ - {"action":"add_camera","spawnable":true}
678
+ - {"action":"add_actor","actorName":"Hero"}
679
+ - {"action":"play","loopMode":"once"}
680
+ - {"action":"set_properties","path":"/Game/Cinematics/Intro","frameRate":24,"lengthInFrames":480}`,
546
681
  inputSchema: {
547
682
  type: 'object',
548
683
  properties: {
@@ -595,7 +730,14 @@ export const consolidatedToolDefinitions = [
595
730
  // 13. INTROSPECTION
596
731
  {
597
732
  name: 'inspect',
598
- description: 'Inspect objects and set properties safely',
733
+ description: `Read object info and set properties with validation.
734
+
735
+ When to use this tool:
736
+ - Inspect an object by path (class default object or actor/component) and optionally modify properties.
737
+
738
+ Examples:
739
+ - {"action":"inspect_object","objectPath":"/Script/Engine.Default__Engine"}
740
+ - {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomBool","value":true}`,
599
741
  inputSchema: {
600
742
  type: 'object',
601
743
  properties: {
@@ -1,4 +1,4 @@
1
- // Consolidated tool handlers - maps 10 tools to all 36 operations
1
+ // Consolidated tool handlers - maps 13 tools to all 36 operations
2
2
  import { handleToolCall } from './tool-handlers.js';
3
3
  import { cleanObject } from '../utils/safe-json.js';
4
4
 
@@ -4,7 +4,18 @@ export const toolDefinitions = [
4
4
  // Asset Tools
5
5
  {
6
6
  name: 'list_assets',
7
- description: 'List all assets in a directory',
7
+ description: `List assets in a folder of the project.
8
+
9
+ When to use:
10
+ - Browse project content (use /Game; /Content is auto-mapped by the server).
11
+ - Get a quick inventory of assets in a subfolder to refine subsequent actions.
12
+
13
+ Notes:
14
+ - For /Game, the server may limit results for performance; prefer subfolders (e.g., /Game/ThirdPerson).
15
+ - Returns a structured list with Name/Path/Class/PackagePath when available.
16
+
17
+ Example:
18
+ - {"directory":"/Game/ThirdPerson","recursive":false}`,
8
19
  inputSchema: {
9
20
  type: 'object',
10
21
  properties: {
@@ -35,7 +46,17 @@ export const toolDefinitions = [
35
46
  },
36
47
  {
37
48
  name: 'import_asset',
38
- description: 'Import an asset from file system',
49
+ description: `Import a file from disk into the project (e.g., FBX, PNG, WAV, EXR).
50
+
51
+ When to use:
52
+ - Bring external content into /Game at a specific destination path.
53
+
54
+ Notes:
55
+ - destinationPath is a package path like /Game/Environment/Trees.
56
+ - Keep file names simple (avoid spaces and special characters).
57
+
58
+ Example:
59
+ - {"sourcePath":"C:/Temp/Tree.fbx","destinationPath":"/Game/Environment/Trees"}`,
39
60
  inputSchema: {
40
61
  type: 'object',
41
62
  properties: {
@@ -58,7 +79,17 @@ export const toolDefinitions = [
58
79
  // Actor Tools
59
80
  {
60
81
  name: 'spawn_actor',
61
- description: 'Spawn a new actor in the level',
82
+ description: `Spawn a new actor in the current level.
83
+
84
+ When to use:
85
+ - Place a class (e.g., StaticMeshActor, CameraActor) or spawn from an asset path (e.g., /Engine/BasicShapes/Cube).
86
+
87
+ Notes:
88
+ - If an asset path is provided, a StaticMeshActor is auto-spawned with the mesh set.
89
+ - location/rotation are optional; defaults are used if omitted.
90
+
91
+ Example:
92
+ - {"classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}`,
62
93
  inputSchema: {
63
94
  type: 'object',
64
95
  properties: {
@@ -93,7 +124,13 @@ export const toolDefinitions = [
93
124
  },
94
125
  {
95
126
  name: 'delete_actor',
96
- description: 'Delete an actor from the level',
127
+ description: `Delete one or more actors by name/label.
128
+
129
+ When to use:
130
+ - Remove actors matching a label/name (case-insensitive).
131
+
132
+ Example:
133
+ - {"actorName":"Cube_1"}`,
97
134
  inputSchema: {
98
135
  type: 'object',
99
136
  properties: {
@@ -114,7 +151,13 @@ export const toolDefinitions = [
114
151
  // Material Tools
115
152
  {
116
153
  name: 'create_material',
117
- description: 'Create a new material asset',
154
+ description: `Create a simple Material asset at a path.
155
+
156
+ When to use:
157
+ - Quickly scaffold a basic material you can edit later.
158
+
159
+ Example:
160
+ - {"name":"M_Mask","path":"/Game/Materials"}`,
118
161
  inputSchema: {
119
162
  type: 'object',
120
163
  properties: {
@@ -135,7 +178,13 @@ export const toolDefinitions = [
135
178
  },
136
179
  {
137
180
  name: 'apply_material_to_actor',
138
- description: 'Apply a material to an actor in the level',
181
+ description: `Assign a material to an actor's mesh component.
182
+
183
+ When to use:
184
+ - Swap an actor's material by path; slotIndex defaults to 0.
185
+
186
+ Example:
187
+ - {"actorPath":"/Game/LevelActors/Cube_1","materialPath":"/Game/Materials/M_Mask","slotIndex":0}`,
139
188
  inputSchema: {
140
189
  type: 'object',
141
190
  properties: {
@@ -157,7 +206,10 @@ export const toolDefinitions = [
157
206
  // Editor Tools
158
207
  {
159
208
  name: 'play_in_editor',
160
- description: 'Start Play In Editor (PIE) mode',
209
+ description: `Start a Play-In-Editor (PIE) session.
210
+
211
+ When to use:
212
+ - Begin simulating the level in the editor.`,
161
213
  inputSchema: {
162
214
  type: 'object',
163
215
  properties: {}
@@ -173,7 +225,10 @@ export const toolDefinitions = [
173
225
  },
174
226
  {
175
227
  name: 'stop_play_in_editor',
176
- description: 'Stop Play In Editor (PIE) mode',
228
+ description: `Stop the active PIE session.
229
+
230
+ When to use:
231
+ - End simulation and return to the editor.`,
177
232
  inputSchema: {
178
233
  type: 'object',
179
234
  properties: {}
@@ -189,7 +244,16 @@ export const toolDefinitions = [
189
244
  },
190
245
  {
191
246
  name: 'set_camera',
192
- description: 'Set viewport camera position and rotation',
247
+ description: `Reposition the editor viewport camera.
248
+
249
+ When to use:
250
+ - Move/aim the camera in the editor for framing.
251
+
252
+ Notes:
253
+ - Accepts object or array formats; values are normalized.
254
+
255
+ Example:
256
+ - {"location":{"x":0,"y":-600,"z":250},"rotation":{"pitch":0,"yaw":0,"roll":0}}`,
193
257
  inputSchema: {
194
258
  type: 'object',
195
259
  properties: {
@@ -225,7 +289,13 @@ export const toolDefinitions = [
225
289
  // Animation Tools
226
290
  {
227
291
  name: 'create_animation_blueprint',
228
- description: 'Create an animation blueprint',
292
+ description: `Create an Animation Blueprint for a skeleton.
293
+
294
+ When to use:
295
+ - Generate a starter Anim BP for a given skeleton.
296
+
297
+ Example:
298
+ - {"name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}`,
229
299
  inputSchema: {
230
300
  type: 'object',
231
301
  properties: {
@@ -246,7 +316,13 @@ export const toolDefinitions = [
246
316
  },
247
317
  {
248
318
  name: 'play_animation_montage',
249
- description: 'Play an animation montage on an actor',
319
+ description: `Play a Montage/Animation on an actor.
320
+
321
+ When to use:
322
+ - Trigger a montage on a possessed or editor actor.
323
+
324
+ Example:
325
+ - {"actorName":"Hero","montagePath":"/Game/Anim/MT_Attack","playRate":1.0}`,
250
326
  inputSchema: {
251
327
  type: 'object',
252
328
  properties: {
@@ -269,7 +345,13 @@ export const toolDefinitions = [
269
345
  // Physics Tools
270
346
  {
271
347
  name: 'setup_ragdoll',
272
- description: 'Setup ragdoll physics for a skeletal mesh',
348
+ description: `Enable simple ragdoll using a physics asset.
349
+
350
+ When to use:
351
+ - Toggle ragdoll behavior on a character skeleton.
352
+
353
+ Example:
354
+ - {"skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","physicsAssetName":"PHYS_Hero","blendWeight":1.0}`,
273
355
  inputSchema: {
274
356
  type: 'object',
275
357
  properties: {
@@ -290,7 +372,10 @@ export const toolDefinitions = [
290
372
  },
291
373
  {
292
374
  name: 'apply_force',
293
- description: 'Apply force to an actor',
375
+ description: `Apply a world-space force vector to an actor with physics enabled.
376
+
377
+ Example:
378
+ - {"actorName":"PhysicsBox","force":{"x":0,"y":0,"z":5000}}`,
294
379
  inputSchema: {
295
380
  type: 'object',
296
381
  properties: {
@@ -320,7 +405,13 @@ export const toolDefinitions = [
320
405
  // Niagara Tools
321
406
  {
322
407
  name: 'create_particle_effect',
323
- description: 'Create a Niagara particle effect',
408
+ description: `Create a simple particle/FX by tag.
409
+
410
+ When to use:
411
+ - Quickly drop a generic Fire/Smoke/Water effect for previews.
412
+
413
+ Example:
414
+ - {"effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}`,
324
415
  inputSchema: {
325
416
  type: 'object',
326
417
  properties: {
@@ -349,7 +440,10 @@ export const toolDefinitions = [
349
440
  },
350
441
  {
351
442
  name: 'spawn_niagara_system',
352
- description: 'Spawn a Niagara system in the level',
443
+ description: `Spawn a Niagara system at a location.
444
+
445
+ Example:
446
+ - {"systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}`,
353
447
  inputSchema: {
354
448
  type: 'object',
355
449
  properties: {
@@ -379,7 +473,10 @@ export const toolDefinitions = [
379
473
  // Blueprint Tools
380
474
  {
381
475
  name: 'create_blueprint',
382
- description: 'Create a new blueprint',
476
+ description: `Create a new Blueprint asset at a path.
477
+
478
+ Example:
479
+ - {"name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}`,
383
480
  inputSchema: {
384
481
  type: 'object',
385
482
  properties: {
@@ -400,7 +497,10 @@ export const toolDefinitions = [
400
497
  },
401
498
  {
402
499
  name: 'add_blueprint_component',
403
- description: 'Add a component to a blueprint',
500
+ description: `Add a component to an existing Blueprint.
501
+
502
+ Example:
503
+ - {"blueprintName":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
404
504
  inputSchema: {
405
505
  type: 'object',
406
506
  properties: {
@@ -424,7 +524,10 @@ export const toolDefinitions = [
424
524
  // Level Tools
425
525
  {
426
526
  name: 'load_level',
427
- description: 'Load a level',
527
+ description: `Load a level by path (e.g., /Game/Maps/Lobby).
528
+
529
+ Example:
530
+ - {"levelPath":"/Game/Maps/Lobby","streaming":false}`,
428
531
  inputSchema: {
429
532
  type: 'object',
430
533
  properties: {
@@ -444,7 +547,10 @@ export const toolDefinitions = [
444
547
  },
445
548
  {
446
549
  name: 'save_level',
447
- description: 'Save the current level',
550
+ description: `Save the current level to a path or by name.
551
+
552
+ Example:
553
+ - {"levelName":"Lobby","savePath":"/Game/Maps"}`,
448
554
  inputSchema: {
449
555
  type: 'object',
450
556
  properties: {
@@ -463,7 +569,10 @@ export const toolDefinitions = [
463
569
  },
464
570
  {
465
571
  name: 'stream_level',
466
- description: 'Stream a level in or out',
572
+ description: `Stream in/out a sublevel and set visibility.
573
+
574
+ Example:
575
+ - {'levelName':'Sublevel_A','shouldBeLoaded':true,'shouldBeVisible':true}`,
467
576
  inputSchema: {
468
577
  type: 'object',
469
578
  properties: {
@@ -487,7 +596,11 @@ export const toolDefinitions = [
487
596
  // Lighting Tools
488
597
  {
489
598
  name: 'create_light',
490
- description: 'Create a light in the level',
599
+ description: `Create a light (Directional/Point/Spot/Rect/Sky) with optional transform/intensity.
600
+
601
+ Examples:
602
+ - {'lightType':'Directional','name':'KeyLight','intensity':5.0}
603
+ - {'lightType':'Point','name':'Fill','location':{'x':0,'y':100,'z':200},'intensity':2000}`,
491
604
  inputSchema: {
492
605
  type: 'object',
493
606
  properties: {
@@ -516,7 +629,7 @@ export const toolDefinitions = [
516
629
  },
517
630
  {
518
631
  name: 'build_lighting',
519
- description: 'Build lighting for the current level',
632
+ description: 'Start a lighting build at an optional quality level (Preview/Medium/High/Production).',
520
633
  inputSchema: {
521
634
  type: 'object',
522
635
  properties: {
@@ -536,7 +649,7 @@ export const toolDefinitions = [
536
649
  // Landscape Tools
537
650
  {
538
651
  name: 'create_landscape',
539
- description: 'Create a new landscape',
652
+ description: 'Attempt to create a landscape. Native Python APIs are limited; you may receive a guidance message to use Landscape Mode in the editor.',
540
653
  inputSchema: {
541
654
  type: 'object',
542
655
  properties: {
@@ -558,7 +671,7 @@ export const toolDefinitions = [
558
671
  },
559
672
  {
560
673
  name: 'sculpt_landscape',
561
- description: 'Sculpt the landscape',
674
+ description: 'Sculpt a landscape using editor tools (best-effort; some operations may require manual Landscape Mode).',
562
675
  inputSchema: {
563
676
  type: 'object',
564
677
  properties: {
@@ -581,7 +694,10 @@ export const toolDefinitions = [
581
694
  // Foliage Tools
582
695
  {
583
696
  name: 'add_foliage_type',
584
- description: 'Add a foliage type',
697
+ description: `Create or load a FoliageType asset for instanced foliage workflows.
698
+
699
+ Example:
700
+ - {'name':'FT_Grass','meshPath':'/Game/Foliage/SM_Grass','density':300}`,
585
701
  inputSchema: {
586
702
  type: 'object',
587
703
  properties: {