unreal-engine-mcp-server 0.3.0 → 0.4.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.
Files changed (43) hide show
  1. package/.env.production +6 -1
  2. package/Dockerfile +11 -28
  3. package/README.md +1 -2
  4. package/dist/index.js +120 -54
  5. package/dist/resources/actors.js +71 -13
  6. package/dist/resources/assets.d.ts +3 -2
  7. package/dist/resources/assets.js +96 -72
  8. package/dist/resources/levels.js +2 -2
  9. package/dist/tools/assets.js +6 -2
  10. package/dist/tools/build_environment_advanced.js +46 -42
  11. package/dist/tools/consolidated-tool-definitions.d.ts +232 -15
  12. package/dist/tools/consolidated-tool-definitions.js +173 -8
  13. package/dist/tools/consolidated-tool-handlers.js +331 -718
  14. package/dist/tools/debug.js +4 -6
  15. package/dist/tools/rc.js +2 -2
  16. package/dist/tools/sequence.js +21 -2
  17. package/dist/unreal-bridge.d.ts +4 -1
  18. package/dist/unreal-bridge.js +211 -53
  19. package/dist/utils/http.js +4 -2
  20. package/dist/utils/response-validator.d.ts +6 -1
  21. package/dist/utils/response-validator.js +43 -15
  22. package/package.json +5 -5
  23. package/server.json +2 -2
  24. package/src/index.ts +120 -56
  25. package/src/resources/actors.ts +51 -13
  26. package/src/resources/assets.ts +97 -73
  27. package/src/resources/levels.ts +2 -2
  28. package/src/tools/assets.ts +6 -2
  29. package/src/tools/build_environment_advanced.ts +46 -42
  30. package/src/tools/consolidated-tool-definitions.ts +173 -8
  31. package/src/tools/consolidated-tool-handlers.ts +318 -747
  32. package/src/tools/debug.ts +4 -6
  33. package/src/tools/rc.ts +2 -2
  34. package/src/tools/sequence.ts +21 -2
  35. package/src/unreal-bridge.ts +163 -60
  36. package/src/utils/http.ts +7 -4
  37. package/src/utils/response-validator.ts +48 -19
  38. package/dist/tools/tool-definitions.d.ts +0 -4919
  39. package/dist/tools/tool-definitions.js +0 -1007
  40. package/dist/tools/tool-handlers.d.ts +0 -47
  41. package/dist/tools/tool-handlers.js +0 -863
  42. package/src/tools/tool-definitions.ts +0 -1023
  43. package/src/tools/tool-handlers.ts +0 -973
@@ -63,8 +63,15 @@ export declare const consolidatedToolDefinitions: ({
63
63
  sizeX?: undefined;
64
64
  sizeY?: undefined;
65
65
  tool?: undefined;
66
- meshPath?: undefined;
66
+ subdivisions?: undefined;
67
+ heightFunction?: undefined;
68
+ materialPath?: undefined;
69
+ bounds?: undefined;
70
+ foliageTypes?: undefined;
71
+ seed?: undefined;
67
72
  foliageType?: undefined;
73
+ transforms?: undefined;
74
+ meshPath?: undefined;
68
75
  density?: undefined;
69
76
  position?: undefined;
70
77
  brushSize?: undefined;
@@ -294,8 +301,15 @@ export declare const consolidatedToolDefinitions: ({
294
301
  sizeX?: undefined;
295
302
  sizeY?: undefined;
296
303
  tool?: undefined;
297
- meshPath?: undefined;
304
+ subdivisions?: undefined;
305
+ heightFunction?: undefined;
306
+ materialPath?: undefined;
307
+ bounds?: undefined;
308
+ foliageTypes?: undefined;
309
+ seed?: undefined;
298
310
  foliageType?: undefined;
311
+ transforms?: undefined;
312
+ meshPath?: undefined;
299
313
  density?: undefined;
300
314
  position?: undefined;
301
315
  brushSize?: undefined;
@@ -489,8 +503,15 @@ export declare const consolidatedToolDefinitions: ({
489
503
  sizeX?: undefined;
490
504
  sizeY?: undefined;
491
505
  tool?: undefined;
492
- meshPath?: undefined;
506
+ subdivisions?: undefined;
507
+ heightFunction?: undefined;
508
+ materialPath?: undefined;
509
+ bounds?: undefined;
510
+ foliageTypes?: undefined;
511
+ seed?: undefined;
493
512
  foliageType?: undefined;
513
+ transforms?: undefined;
514
+ meshPath?: undefined;
494
515
  density?: undefined;
495
516
  position?: undefined;
496
517
  brushSize?: undefined;
@@ -703,8 +724,15 @@ export declare const consolidatedToolDefinitions: ({
703
724
  sizeX?: undefined;
704
725
  sizeY?: undefined;
705
726
  tool?: undefined;
706
- meshPath?: undefined;
727
+ subdivisions?: undefined;
728
+ heightFunction?: undefined;
729
+ materialPath?: undefined;
730
+ bounds?: undefined;
731
+ foliageTypes?: undefined;
732
+ seed?: undefined;
707
733
  foliageType?: undefined;
734
+ transforms?: undefined;
735
+ meshPath?: undefined;
708
736
  density?: undefined;
709
737
  position?: undefined;
710
738
  brushSize?: undefined;
@@ -899,8 +927,15 @@ export declare const consolidatedToolDefinitions: ({
899
927
  sizeX?: undefined;
900
928
  sizeY?: undefined;
901
929
  tool?: undefined;
902
- meshPath?: undefined;
930
+ subdivisions?: undefined;
931
+ heightFunction?: undefined;
932
+ materialPath?: undefined;
933
+ bounds?: undefined;
934
+ foliageTypes?: undefined;
935
+ seed?: undefined;
903
936
  foliageType?: undefined;
937
+ transforms?: undefined;
938
+ meshPath?: undefined;
904
939
  density?: undefined;
905
940
  position?: undefined;
906
941
  brushSize?: undefined;
@@ -1105,8 +1140,15 @@ export declare const consolidatedToolDefinitions: ({
1105
1140
  sizeX?: undefined;
1106
1141
  sizeY?: undefined;
1107
1142
  tool?: undefined;
1108
- meshPath?: undefined;
1143
+ subdivisions?: undefined;
1144
+ heightFunction?: undefined;
1145
+ materialPath?: undefined;
1146
+ bounds?: undefined;
1147
+ foliageTypes?: undefined;
1148
+ seed?: undefined;
1109
1149
  foliageType?: undefined;
1150
+ transforms?: undefined;
1151
+ meshPath?: undefined;
1110
1152
  density?: undefined;
1111
1153
  position?: undefined;
1112
1154
  brushSize?: undefined;
@@ -1289,8 +1331,15 @@ export declare const consolidatedToolDefinitions: ({
1289
1331
  sizeX?: undefined;
1290
1332
  sizeY?: undefined;
1291
1333
  tool?: undefined;
1292
- meshPath?: undefined;
1334
+ subdivisions?: undefined;
1335
+ heightFunction?: undefined;
1336
+ materialPath?: undefined;
1337
+ bounds?: undefined;
1338
+ foliageTypes?: undefined;
1339
+ seed?: undefined;
1293
1340
  foliageType?: undefined;
1341
+ transforms?: undefined;
1342
+ meshPath?: undefined;
1294
1343
  density?: undefined;
1295
1344
  position?: undefined;
1296
1345
  brushSize?: undefined;
@@ -1429,12 +1478,146 @@ export declare const consolidatedToolDefinitions: ({
1429
1478
  type: string;
1430
1479
  description: string;
1431
1480
  };
1432
- meshPath: {
1481
+ location: {
1482
+ type: string;
1483
+ properties: {
1484
+ x: {
1485
+ type: string;
1486
+ };
1487
+ y: {
1488
+ type: string;
1489
+ };
1490
+ z: {
1491
+ type: string;
1492
+ };
1493
+ };
1494
+ };
1495
+ subdivisions: {
1496
+ type: string;
1497
+ };
1498
+ heightFunction: {
1499
+ type: string;
1500
+ };
1501
+ materialPath: {
1502
+ type: string;
1503
+ };
1504
+ bounds: {
1505
+ type: string;
1506
+ properties: {
1507
+ location: {
1508
+ type: string;
1509
+ properties: {
1510
+ x: {
1511
+ type: string;
1512
+ };
1513
+ y: {
1514
+ type: string;
1515
+ };
1516
+ z: {
1517
+ type: string;
1518
+ };
1519
+ };
1520
+ };
1521
+ size: {
1522
+ type: string;
1523
+ properties: {
1524
+ x: {
1525
+ type: string;
1526
+ };
1527
+ y: {
1528
+ type: string;
1529
+ };
1530
+ z: {
1531
+ type: string;
1532
+ };
1533
+ };
1534
+ };
1535
+ };
1536
+ };
1537
+ foliageTypes: {
1538
+ type: string;
1539
+ items: {
1540
+ type: string;
1541
+ properties: {
1542
+ meshPath: {
1543
+ type: string;
1544
+ };
1545
+ density: {
1546
+ type: string;
1547
+ };
1548
+ minScale: {
1549
+ type: string;
1550
+ };
1551
+ maxScale: {
1552
+ type: string;
1553
+ };
1554
+ alignToNormal: {
1555
+ type: string;
1556
+ };
1557
+ randomYaw: {
1558
+ type: string;
1559
+ };
1560
+ };
1561
+ };
1562
+ };
1563
+ seed: {
1433
1564
  type: string;
1434
- description: string;
1435
1565
  };
1436
1566
  foliageType: {
1437
1567
  type: string;
1568
+ };
1569
+ transforms: {
1570
+ type: string;
1571
+ items: {
1572
+ type: string;
1573
+ properties: {
1574
+ location: {
1575
+ type: string;
1576
+ properties: {
1577
+ x: {
1578
+ type: string;
1579
+ };
1580
+ y: {
1581
+ type: string;
1582
+ };
1583
+ z: {
1584
+ type: string;
1585
+ };
1586
+ };
1587
+ };
1588
+ rotation: {
1589
+ type: string;
1590
+ properties: {
1591
+ pitch: {
1592
+ type: string;
1593
+ };
1594
+ yaw: {
1595
+ type: string;
1596
+ };
1597
+ roll: {
1598
+ type: string;
1599
+ };
1600
+ };
1601
+ };
1602
+ scale: {
1603
+ type: string;
1604
+ properties: {
1605
+ x: {
1606
+ type: string;
1607
+ };
1608
+ y: {
1609
+ type: string;
1610
+ };
1611
+ z: {
1612
+ type: string;
1613
+ };
1614
+ };
1615
+ };
1616
+ };
1617
+ };
1618
+ };
1619
+ meshPath: {
1620
+ type: string;
1438
1621
  description: string;
1439
1622
  };
1440
1623
  density: {
@@ -1469,7 +1652,6 @@ export declare const consolidatedToolDefinitions: ({
1469
1652
  path?: undefined;
1470
1653
  actorName?: undefined;
1471
1654
  classPath?: undefined;
1472
- location?: undefined;
1473
1655
  rotation?: undefined;
1474
1656
  force?: undefined;
1475
1657
  viewMode?: undefined;
@@ -1724,8 +1906,15 @@ export declare const consolidatedToolDefinitions: ({
1724
1906
  sizeX?: undefined;
1725
1907
  sizeY?: undefined;
1726
1908
  tool?: undefined;
1727
- meshPath?: undefined;
1909
+ subdivisions?: undefined;
1910
+ heightFunction?: undefined;
1911
+ materialPath?: undefined;
1912
+ bounds?: undefined;
1913
+ foliageTypes?: undefined;
1914
+ seed?: undefined;
1728
1915
  foliageType?: undefined;
1916
+ transforms?: undefined;
1917
+ meshPath?: undefined;
1729
1918
  density?: undefined;
1730
1919
  position?: undefined;
1731
1920
  brushSize?: undefined;
@@ -1894,8 +2083,15 @@ export declare const consolidatedToolDefinitions: ({
1894
2083
  sizeX?: undefined;
1895
2084
  sizeY?: undefined;
1896
2085
  tool?: undefined;
1897
- meshPath?: undefined;
2086
+ subdivisions?: undefined;
2087
+ heightFunction?: undefined;
2088
+ materialPath?: undefined;
2089
+ bounds?: undefined;
2090
+ foliageTypes?: undefined;
2091
+ seed?: undefined;
1898
2092
  foliageType?: undefined;
2093
+ transforms?: undefined;
2094
+ meshPath?: undefined;
1899
2095
  density?: undefined;
1900
2096
  position?: undefined;
1901
2097
  brushSize?: undefined;
@@ -2083,8 +2279,15 @@ export declare const consolidatedToolDefinitions: ({
2083
2279
  sizeX?: undefined;
2084
2280
  sizeY?: undefined;
2085
2281
  tool?: undefined;
2086
- meshPath?: undefined;
2282
+ subdivisions?: undefined;
2283
+ heightFunction?: undefined;
2284
+ materialPath?: undefined;
2285
+ bounds?: undefined;
2286
+ foliageTypes?: undefined;
2287
+ seed?: undefined;
2087
2288
  foliageType?: undefined;
2289
+ transforms?: undefined;
2290
+ meshPath?: undefined;
2088
2291
  density?: undefined;
2089
2292
  position?: undefined;
2090
2293
  brushSize?: undefined;
@@ -2292,8 +2495,15 @@ export declare const consolidatedToolDefinitions: ({
2292
2495
  sizeX?: undefined;
2293
2496
  sizeY?: undefined;
2294
2497
  tool?: undefined;
2295
- meshPath?: undefined;
2498
+ subdivisions?: undefined;
2499
+ heightFunction?: undefined;
2500
+ materialPath?: undefined;
2501
+ bounds?: undefined;
2502
+ foliageTypes?: undefined;
2503
+ seed?: undefined;
2296
2504
  foliageType?: undefined;
2505
+ transforms?: undefined;
2506
+ meshPath?: undefined;
2297
2507
  density?: undefined;
2298
2508
  position?: undefined;
2299
2509
  brushSize?: undefined;
@@ -2487,8 +2697,15 @@ export declare const consolidatedToolDefinitions: ({
2487
2697
  sizeX?: undefined;
2488
2698
  sizeY?: undefined;
2489
2699
  tool?: undefined;
2490
- meshPath?: undefined;
2700
+ subdivisions?: undefined;
2701
+ heightFunction?: undefined;
2702
+ materialPath?: undefined;
2703
+ bounds?: undefined;
2704
+ foliageTypes?: undefined;
2705
+ seed?: undefined;
2491
2706
  foliageType?: undefined;
2707
+ transforms?: undefined;
2708
+ meshPath?: undefined;
2492
2709
  density?: undefined;
2493
2710
  position?: undefined;
2494
2711
  brushSize?: undefined;
@@ -72,18 +72,28 @@ Examples:
72
72
  description: `Spawn, delete, and apply physics to actors in the level.
73
73
 
74
74
  When to use this tool:
75
- - You need to place an actor or mesh in the level, remove an actor, or nudge an actor with a physics force.
75
+ - Place an actor/mesh, remove an actor, or nudge an actor with a physics force.
76
+
77
+ Supported actions:
78
+ - spawn
79
+ - delete
80
+ - apply_force
76
81
 
77
82
  Spawning:
78
83
  - classPath can be a class name (e.g., StaticMeshActor, CameraActor) OR an asset path (e.g., /Engine/BasicShapes/Cube, /Game/Meshes/SM_Rock).
79
- - If an asset path is provided, a StaticMeshActor is auto-spawned with the mesh assigned.
84
+ - Asset paths auto-spawn StaticMeshActor with the mesh assigned.
80
85
 
81
86
  Deleting:
82
- - Finds actors by label/name (case-insensitive). Deletes matching actors.
87
+ - Finds actors by label/name (case-insensitive) and deletes matches.
83
88
 
84
89
  Apply force:
85
90
  - Applies a world-space force vector to an actor with physics enabled.
86
91
 
92
+ Tips:
93
+ - classPath accepts classes or asset paths; simple names like Cube auto-resolve to engine assets.
94
+ - location/rotation are optional; defaults are used if omitted.
95
+ - For delete/apply_force, provide actorName.
96
+
87
97
  Examples:
88
98
  - {"action":"spawn","classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}
89
99
  - {"action":"delete","actorName":"Cube_1"}
@@ -151,9 +161,15 @@ Examples:
151
161
  When to use this tool:
152
162
  - Start/stop a PIE session, move the viewport camera, or change viewmode (Lit/Unlit/Wireframe/etc.).
153
163
 
164
+ Supported actions:
165
+ - play
166
+ - stop
167
+ - set_camera
168
+ - set_view_mode
169
+
154
170
  Notes:
155
- - View modes are validated and unsafe modes are blocked.
156
- - Camera accepts location and/or rotation (both optional). Values are normalized.
171
+ - View modes are validated; unsafe modes are blocked.
172
+ - Camera accepts location/rotation (optional); values normalized.
157
173
 
158
174
  Examples:
159
175
  - {"action":"play"}
@@ -221,6 +237,18 @@ Examples:
221
237
  When to use this tool:
222
238
  - Switch to a level, save the current level, stream sublevels, add a light, or start a lighting build.
223
239
 
240
+ Supported actions:
241
+ - load
242
+ - save
243
+ - stream
244
+ - create_light
245
+ - build_lighting
246
+
247
+ Tips:
248
+ - Use /Game paths for levels (e.g., /Game/Maps/Level).
249
+ - For streaming, set shouldBeLoaded and shouldBeVisible accordingly.
250
+ - For lights, provide lightType and optional location/intensity.
251
+
224
252
  Examples:
225
253
  - {"action":"load","levelPath":"/Game/Maps/Lobby"}
226
254
  - {"action":"stream","levelName":"Sublevel_A","shouldBeLoaded":true,"shouldBeVisible":true}
@@ -285,6 +313,16 @@ Examples:
285
313
  When to use this tool:
286
314
  - Generate an Anim Blueprint for a skeleton, play a Montage/Animation on an actor, or enable ragdoll.
287
315
 
316
+ Supported actions:
317
+ - create_animation_bp
318
+ - play_montage
319
+ - setup_ragdoll
320
+
321
+ Tips:
322
+ - Ensure the montage/animation is compatible with the target actor/skeleton.
323
+ - setup_ragdoll requires a valid physicsAssetName on the skeleton.
324
+ - Use savePath when creating new assets.
325
+
288
326
  Examples:
289
327
  - {"action":"create_animation_bp","name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}
290
328
  - {"action":"play_montage","actorName":"Hero","montagePath":"/Game/Anim/MT_Attack"}
@@ -332,6 +370,15 @@ Examples:
332
370
  When to use this tool:
333
371
  - Spawn a Niagara system at a location, create a particle effect by type tag, or draw debug geometry for planning.
334
372
 
373
+ Supported actions:
374
+ - particle
375
+ - niagara
376
+ - debug_shape
377
+
378
+ Tips:
379
+ - Set color as RGBA [r,g,b,a]; scale defaults to 1 if omitted.
380
+ - Use debug shapes for quick layout planning and measurements.
381
+
335
382
  Examples:
336
383
  - {"action":"niagara","systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}
337
384
  - {"action":"particle","effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}
@@ -400,6 +447,14 @@ Examples:
400
447
  When to use this tool:
401
448
  - Quickly scaffold a Blueprint asset or add a component to an existing Blueprint.
402
449
 
450
+ Supported actions:
451
+ - create
452
+ - add_component
453
+
454
+ Tips:
455
+ - blueprintType can be Actor, Pawn, Character, etc.
456
+ - Component names should be unique within the Blueprint.
457
+
403
458
  Examples:
404
459
  - {"action":"create","name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}
405
460
  - {"action":"add_component","name":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
@@ -441,10 +496,19 @@ Examples:
441
496
  When to use this tool:
442
497
  - Create a procedural terrain alternative, add/paint foliage, or attempt a landscape workflow.
443
498
 
499
+ Supported actions:
500
+ - create_landscape
501
+ - sculpt
502
+ - add_foliage
503
+ - paint_foliage
504
+
444
505
  Important:
445
506
  - Native Landscape creation via Python is limited and may return a helpful error suggesting Landscape Mode in the editor.
446
507
  - Foliage helpers create FoliageType assets and support simple placement.
447
508
 
509
+ Tips:
510
+ - Adjust brushSize and strength to tune sculpting results.
511
+
448
512
  Examples:
449
513
  - {"action":"create_landscape","name":"Landscape_Basic","sizeX":1024,"sizeY":1024}
450
514
  - {"action":"add_foliage","name":"FT_Grass","meshPath":"/Game/Foliage/SM_Grass","density":300}
@@ -454,7 +518,7 @@ Examples:
454
518
  properties: {
455
519
  action: {
456
520
  type: 'string',
457
- enum: ['create_landscape', 'sculpt', 'add_foliage', 'paint_foliage'],
521
+ enum: ['create_landscape', 'sculpt', 'add_foliage', 'paint_foliage', 'create_procedural_terrain', 'create_procedural_foliage', 'add_foliage_instances', 'create_landscape_grass_type'],
458
522
  description: 'Environment action'
459
523
  },
460
524
  // Common
@@ -466,9 +530,52 @@ Examples:
466
530
  type: 'string',
467
531
  description: 'Sculpt tool (Sculpt, Smooth, Flatten, etc.)'
468
532
  },
469
- // Foliage
533
+ // Advanced: procedural terrain
534
+ location: {
535
+ type: 'object',
536
+ properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } }
537
+ },
538
+ subdivisions: { type: 'number' },
539
+ heightFunction: { type: 'string' },
540
+ materialPath: { type: 'string' },
541
+ // Advanced: procedural foliage
542
+ bounds: {
543
+ type: 'object',
544
+ properties: {
545
+ location: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
546
+ size: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
547
+ }
548
+ },
549
+ foliageTypes: {
550
+ type: 'array',
551
+ items: {
552
+ type: 'object',
553
+ properties: {
554
+ meshPath: { type: 'string' },
555
+ density: { type: 'number' },
556
+ minScale: { type: 'number' },
557
+ maxScale: { type: 'number' },
558
+ alignToNormal: { type: 'boolean' },
559
+ randomYaw: { type: 'boolean' }
560
+ }
561
+ }
562
+ },
563
+ seed: { type: 'number' },
564
+ // Advanced: direct foliage instances
565
+ foliageType: { type: 'string' },
566
+ transforms: {
567
+ type: 'array',
568
+ items: {
569
+ type: 'object',
570
+ properties: {
571
+ location: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
572
+ rotation: { type: 'object', properties: { pitch: { type: 'number' }, yaw: { type: 'number' }, roll: { type: 'number' } } },
573
+ scale: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
574
+ }
575
+ }
576
+ },
577
+ // Foliage (for add_foliage)
470
578
  meshPath: { type: 'string', description: 'Mesh path' },
471
- foliageType: { type: 'string', description: 'Foliage type' },
472
579
  density: { type: 'number', description: 'Density' },
473
580
  // Painting
474
581
  position: {
@@ -503,6 +610,21 @@ Examples:
503
610
  When to use this tool:
504
611
  - Toggle profiling and FPS stats, adjust quality (sg.*), play a sound, create/show a basic widget, take a screenshot, or launch/quit the editor.
505
612
 
613
+ Supported actions:
614
+ - profile
615
+ - show_fps
616
+ - set_quality
617
+ - play_sound
618
+ - create_widget
619
+ - show_widget
620
+ - screenshot
621
+ - engine_start
622
+ - engine_quit
623
+
624
+ Tips:
625
+ - Screenshot resolution format: 1920x1080.
626
+ - engine_start can read UE project path from env; provide editorExe/projectPath if needed.
627
+
506
628
  Examples:
507
629
  - {"action":"show_fps","enabled":true}
508
630
  - {"action":"set_quality","category":"Shadows","level":2}
@@ -585,6 +707,9 @@ Safety:
585
707
  - Dangerous commands are blocked (quit/exit, GPU crash triggers, unsafe visualizebuffer modes, etc.).
586
708
  - Unknown commands will return a warning instead of crashing.
587
709
 
710
+ Tips:
711
+ - Prefer dedicated tools (system_control, control_editor) when available for structured control.
712
+
588
713
  Examples:
589
714
  - {"command":"stat fps"}
590
715
  - {"command":"viewmode wireframe"}
@@ -616,6 +741,18 @@ Examples:
616
741
  When to use this tool:
617
742
  - Automate Remote Control (RC) preset authoring and interaction from the assistant.
618
743
 
744
+ Supported actions:
745
+ - create_preset
746
+ - expose_actor
747
+ - expose_property
748
+ - list_fields
749
+ - set_property
750
+ - get_property
751
+
752
+ Tips:
753
+ - value must be JSON-serializable.
754
+ - Use objectPath/presetPath with full asset/object paths.
755
+
619
756
  Examples:
620
757
  - {"action":"create_preset","name":"LivePreset","path":"/Game/RCPresets"}
621
758
  - {"action":"expose_actor","presetPath":"/Game/RCPresets/LivePreset","actorName":"CameraActor"}
@@ -660,6 +797,26 @@ Examples:
660
797
  When to use this tool:
661
798
  - Build quick cinematics: create/open a sequence, add a camera or actors, tweak properties, and play.
662
799
 
800
+ Supported actions:
801
+ - create
802
+ - open
803
+ - add_camera
804
+ - add_actor
805
+ - add_actors
806
+ - remove_actors
807
+ - get_bindings
808
+ - add_spawnable_from_class
809
+ - play
810
+ - pause
811
+ - stop
812
+ - set_properties
813
+ - get_properties
814
+ - set_playback_speed
815
+
816
+ Tips:
817
+ - Set spawnable=true to auto-create a camera actor.
818
+ - Use frameRate/lengthInFrames to define timing; use playbackStart/End to trim.
819
+
663
820
  Examples:
664
821
  - {"action":"create","name":"Intro","path":"/Game/Cinematics"}
665
822
  - {"action":"add_camera","spawnable":true}
@@ -722,6 +879,14 @@ Examples:
722
879
  When to use this tool:
723
880
  - Inspect an object by path (class default object or actor/component) and optionally modify properties.
724
881
 
882
+ Supported actions:
883
+ - inspect_object
884
+ - set_property
885
+
886
+ Tips:
887
+ - propertyName is case-sensitive; ensure it exists on the target object.
888
+ - For class default objects (CDOs), use the /Script/...Default__Class path.
889
+
725
890
  Examples:
726
891
  - {"action":"inspect_object","objectPath":"/Script/Engine.Default__Engine"}
727
892
  - {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomBool","value":true}`,