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.
- package/.env.production +6 -1
- package/Dockerfile +11 -28
- package/README.md +1 -2
- package/dist/index.js +120 -54
- package/dist/resources/actors.js +71 -13
- package/dist/resources/assets.d.ts +3 -2
- package/dist/resources/assets.js +96 -72
- package/dist/resources/levels.js +2 -2
- package/dist/tools/assets.js +6 -2
- package/dist/tools/build_environment_advanced.js +46 -42
- package/dist/tools/consolidated-tool-definitions.d.ts +232 -15
- package/dist/tools/consolidated-tool-definitions.js +173 -8
- package/dist/tools/consolidated-tool-handlers.js +331 -718
- package/dist/tools/debug.js +4 -6
- package/dist/tools/rc.js +2 -2
- package/dist/tools/sequence.js +21 -2
- package/dist/unreal-bridge.d.ts +4 -1
- package/dist/unreal-bridge.js +211 -53
- package/dist/utils/http.js +4 -2
- package/dist/utils/response-validator.d.ts +6 -1
- package/dist/utils/response-validator.js +43 -15
- package/package.json +5 -5
- package/server.json +2 -2
- package/src/index.ts +120 -56
- package/src/resources/actors.ts +51 -13
- package/src/resources/assets.ts +97 -73
- package/src/resources/levels.ts +2 -2
- package/src/tools/assets.ts +6 -2
- package/src/tools/build_environment_advanced.ts +46 -42
- package/src/tools/consolidated-tool-definitions.ts +173 -8
- package/src/tools/consolidated-tool-handlers.ts +318 -747
- package/src/tools/debug.ts +4 -6
- package/src/tools/rc.ts +2 -2
- package/src/tools/sequence.ts +21 -2
- package/src/unreal-bridge.ts +163 -60
- package/src/utils/http.ts +7 -4
- package/src/utils/response-validator.ts +48 -19
- package/dist/tools/tool-definitions.d.ts +0 -4919
- package/dist/tools/tool-definitions.js +0 -1007
- package/dist/tools/tool-handlers.d.ts +0 -47
- package/dist/tools/tool-handlers.js +0 -863
- package/src/tools/tool-definitions.ts +0 -1023
- package/src/tools/tool-handlers.ts +0 -973
|
@@ -1,1007 +0,0 @@
|
|
|
1
|
-
// Tool definitions for all 16 MCP tools
|
|
2
|
-
export const toolDefinitions = [
|
|
3
|
-
// Asset Tools
|
|
4
|
-
{
|
|
5
|
-
name: 'list_assets',
|
|
6
|
-
description: `List assets in a folder of the project.
|
|
7
|
-
|
|
8
|
-
When to use:
|
|
9
|
-
- Browse project content (use /Game; /Content is auto-mapped by the server).
|
|
10
|
-
- Get a quick inventory of assets in a subfolder to refine subsequent actions.
|
|
11
|
-
|
|
12
|
-
Notes:
|
|
13
|
-
- For /Game, the server may limit results for performance; prefer subfolders (e.g., /Game/ThirdPerson).
|
|
14
|
-
- Returns a structured list with Name/Path/Class/PackagePath when available.
|
|
15
|
-
|
|
16
|
-
Example:
|
|
17
|
-
- {"directory":"/Game/ThirdPerson","recursive":false}`,
|
|
18
|
-
inputSchema: {
|
|
19
|
-
type: 'object',
|
|
20
|
-
properties: {
|
|
21
|
-
directory: { type: 'string', description: 'Directory path (e.g. /Game/Assets)' },
|
|
22
|
-
recursive: { type: 'boolean', description: 'List recursively' }
|
|
23
|
-
},
|
|
24
|
-
required: ['directory']
|
|
25
|
-
},
|
|
26
|
-
outputSchema: {
|
|
27
|
-
type: 'object',
|
|
28
|
-
properties: {
|
|
29
|
-
assets: {
|
|
30
|
-
type: 'array',
|
|
31
|
-
items: {
|
|
32
|
-
type: 'object',
|
|
33
|
-
properties: {
|
|
34
|
-
Name: { type: 'string' },
|
|
35
|
-
Path: { type: 'string' },
|
|
36
|
-
Class: { type: 'string' },
|
|
37
|
-
PackagePath: { type: 'string' }
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
error: { type: 'string' },
|
|
42
|
-
note: { type: 'string' }
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
name: 'import_asset',
|
|
48
|
-
description: `Import a file from disk into the project (e.g., FBX, PNG, WAV, EXR).
|
|
49
|
-
|
|
50
|
-
When to use:
|
|
51
|
-
- Bring external content into /Game at a specific destination path.
|
|
52
|
-
|
|
53
|
-
Notes:
|
|
54
|
-
- destinationPath is a package path like /Game/Environment/Trees.
|
|
55
|
-
- Keep file names simple (avoid spaces and special characters).
|
|
56
|
-
|
|
57
|
-
Example:
|
|
58
|
-
- {"sourcePath":"C:/Temp/Tree.fbx","destinationPath":"/Game/Environment/Trees"}`,
|
|
59
|
-
inputSchema: {
|
|
60
|
-
type: 'object',
|
|
61
|
-
properties: {
|
|
62
|
-
sourcePath: { type: 'string', description: 'File system path to import from' },
|
|
63
|
-
destinationPath: { type: 'string', description: 'Project path to import to' }
|
|
64
|
-
},
|
|
65
|
-
required: ['sourcePath', 'destinationPath']
|
|
66
|
-
},
|
|
67
|
-
outputSchema: {
|
|
68
|
-
type: 'object',
|
|
69
|
-
properties: {
|
|
70
|
-
success: { type: 'boolean' },
|
|
71
|
-
paths: { type: 'array', items: { type: 'string' } },
|
|
72
|
-
message: { type: 'string' },
|
|
73
|
-
error: { type: 'string' }
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
// Actor Tools
|
|
78
|
-
{
|
|
79
|
-
name: 'spawn_actor',
|
|
80
|
-
description: `Spawn a new actor in the current level.
|
|
81
|
-
|
|
82
|
-
When to use:
|
|
83
|
-
- Place a class (e.g., StaticMeshActor, CameraActor) or spawn from an asset path (e.g., /Engine/BasicShapes/Cube).
|
|
84
|
-
|
|
85
|
-
Notes:
|
|
86
|
-
- If an asset path is provided, a StaticMeshActor is auto-spawned with the mesh set.
|
|
87
|
-
- location/rotation are optional; defaults are used if omitted.
|
|
88
|
-
|
|
89
|
-
Example:
|
|
90
|
-
- {"classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}`,
|
|
91
|
-
inputSchema: {
|
|
92
|
-
type: 'object',
|
|
93
|
-
properties: {
|
|
94
|
-
classPath: { type: 'string', description: 'Blueprint/class path' },
|
|
95
|
-
location: {
|
|
96
|
-
type: 'object',
|
|
97
|
-
properties: {
|
|
98
|
-
x: { type: 'number' },
|
|
99
|
-
y: { type: 'number' },
|
|
100
|
-
z: { type: 'number' }
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
rotation: {
|
|
104
|
-
type: 'object',
|
|
105
|
-
properties: {
|
|
106
|
-
pitch: { type: 'number' },
|
|
107
|
-
yaw: { type: 'number' },
|
|
108
|
-
roll: { type: 'number' }
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
required: ['classPath']
|
|
113
|
-
},
|
|
114
|
-
outputSchema: {
|
|
115
|
-
type: 'object',
|
|
116
|
-
properties: {
|
|
117
|
-
success: { type: 'boolean' },
|
|
118
|
-
actor: { type: 'string' },
|
|
119
|
-
error: { type: 'string' }
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
name: 'delete_actor',
|
|
125
|
-
description: `Delete one or more actors by name/label.
|
|
126
|
-
|
|
127
|
-
When to use:
|
|
128
|
-
- Remove actors matching a label/name (case-insensitive).
|
|
129
|
-
|
|
130
|
-
Example:
|
|
131
|
-
- {"actorName":"Cube_1"}`,
|
|
132
|
-
inputSchema: {
|
|
133
|
-
type: 'object',
|
|
134
|
-
properties: {
|
|
135
|
-
actorName: { type: 'string', description: 'Name of the actor to delete' }
|
|
136
|
-
},
|
|
137
|
-
required: ['actorName']
|
|
138
|
-
},
|
|
139
|
-
outputSchema: {
|
|
140
|
-
type: 'object',
|
|
141
|
-
properties: {
|
|
142
|
-
success: { type: 'boolean' },
|
|
143
|
-
deleted: { type: 'string' },
|
|
144
|
-
error: { type: 'string' }
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
// Material Tools
|
|
149
|
-
{
|
|
150
|
-
name: 'create_material',
|
|
151
|
-
description: `Create a simple Material asset at a path.
|
|
152
|
-
|
|
153
|
-
When to use:
|
|
154
|
-
- Quickly scaffold a basic material you can edit later.
|
|
155
|
-
|
|
156
|
-
Example:
|
|
157
|
-
- {"name":"M_Mask","path":"/Game/Materials"}`,
|
|
158
|
-
inputSchema: {
|
|
159
|
-
type: 'object',
|
|
160
|
-
properties: {
|
|
161
|
-
name: { type: 'string', description: 'Material name' },
|
|
162
|
-
path: { type: 'string', description: 'Path to create material' }
|
|
163
|
-
},
|
|
164
|
-
required: ['name', 'path']
|
|
165
|
-
},
|
|
166
|
-
outputSchema: {
|
|
167
|
-
type: 'object',
|
|
168
|
-
properties: {
|
|
169
|
-
success: { type: 'boolean' },
|
|
170
|
-
materialPath: { type: 'string' },
|
|
171
|
-
message: { type: 'string' },
|
|
172
|
-
error: { type: 'string' }
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
name: 'apply_material_to_actor',
|
|
178
|
-
description: `Assign a material to an actor's mesh component.
|
|
179
|
-
|
|
180
|
-
When to use:
|
|
181
|
-
- Swap an actor's material by path; slotIndex defaults to 0.
|
|
182
|
-
|
|
183
|
-
Example:
|
|
184
|
-
- {"actorPath":"/Game/LevelActors/Cube_1","materialPath":"/Game/Materials/M_Mask","slotIndex":0}`,
|
|
185
|
-
inputSchema: {
|
|
186
|
-
type: 'object',
|
|
187
|
-
properties: {
|
|
188
|
-
actorPath: { type: 'string', description: 'Path to the actor' },
|
|
189
|
-
materialPath: { type: 'string', description: 'Path to the material asset' },
|
|
190
|
-
slotIndex: { type: 'number', description: 'Material slot index (default: 0)' }
|
|
191
|
-
},
|
|
192
|
-
required: ['actorPath', 'materialPath']
|
|
193
|
-
},
|
|
194
|
-
outputSchema: {
|
|
195
|
-
type: 'object',
|
|
196
|
-
properties: {
|
|
197
|
-
success: { type: 'boolean' },
|
|
198
|
-
message: { type: 'string' }
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
},
|
|
202
|
-
// Editor Tools
|
|
203
|
-
{
|
|
204
|
-
name: 'play_in_editor',
|
|
205
|
-
description: `Start a Play-In-Editor (PIE) session.
|
|
206
|
-
|
|
207
|
-
When to use:
|
|
208
|
-
- Begin simulating the level in the editor.`,
|
|
209
|
-
inputSchema: {
|
|
210
|
-
type: 'object',
|
|
211
|
-
properties: {}
|
|
212
|
-
},
|
|
213
|
-
outputSchema: {
|
|
214
|
-
type: 'object',
|
|
215
|
-
properties: {
|
|
216
|
-
success: { type: 'boolean' },
|
|
217
|
-
playing: { type: 'boolean' },
|
|
218
|
-
message: { type: 'string' }
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
name: 'stop_play_in_editor',
|
|
224
|
-
description: `Stop the active PIE session.
|
|
225
|
-
|
|
226
|
-
When to use:
|
|
227
|
-
- End simulation and return to the editor.`,
|
|
228
|
-
inputSchema: {
|
|
229
|
-
type: 'object',
|
|
230
|
-
properties: {}
|
|
231
|
-
},
|
|
232
|
-
outputSchema: {
|
|
233
|
-
type: 'object',
|
|
234
|
-
properties: {
|
|
235
|
-
success: { type: 'boolean' },
|
|
236
|
-
playing: { type: 'boolean' },
|
|
237
|
-
message: { type: 'string' }
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
name: 'set_camera',
|
|
243
|
-
description: `Reposition the editor viewport camera.
|
|
244
|
-
|
|
245
|
-
When to use:
|
|
246
|
-
- Move/aim the camera in the editor for framing.
|
|
247
|
-
|
|
248
|
-
Notes:
|
|
249
|
-
- Accepts object or array formats; values are normalized.
|
|
250
|
-
|
|
251
|
-
Example:
|
|
252
|
-
- {"location":{"x":0,"y":-600,"z":250},"rotation":{"pitch":0,"yaw":0,"roll":0}}`,
|
|
253
|
-
inputSchema: {
|
|
254
|
-
type: 'object',
|
|
255
|
-
properties: {
|
|
256
|
-
location: {
|
|
257
|
-
type: 'object',
|
|
258
|
-
properties: {
|
|
259
|
-
x: { type: 'number' },
|
|
260
|
-
y: { type: 'number' },
|
|
261
|
-
z: { type: 'number' }
|
|
262
|
-
}
|
|
263
|
-
},
|
|
264
|
-
rotation: {
|
|
265
|
-
type: 'object',
|
|
266
|
-
properties: {
|
|
267
|
-
pitch: { type: 'number' },
|
|
268
|
-
yaw: { type: 'number' },
|
|
269
|
-
roll: { type: 'number' }
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
},
|
|
273
|
-
required: ['location']
|
|
274
|
-
},
|
|
275
|
-
outputSchema: {
|
|
276
|
-
type: 'object',
|
|
277
|
-
properties: {
|
|
278
|
-
success: { type: 'boolean' },
|
|
279
|
-
location: { type: 'array', items: { type: 'number' } },
|
|
280
|
-
rotation: { type: 'array', items: { type: 'number' } }
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
},
|
|
284
|
-
// Animation Tools
|
|
285
|
-
{
|
|
286
|
-
name: 'create_animation_blueprint',
|
|
287
|
-
description: `Create an Animation Blueprint for a skeleton.
|
|
288
|
-
|
|
289
|
-
When to use:
|
|
290
|
-
- Generate a starter Anim BP for a given skeleton.
|
|
291
|
-
|
|
292
|
-
Example:
|
|
293
|
-
- {"name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}`,
|
|
294
|
-
inputSchema: {
|
|
295
|
-
type: 'object',
|
|
296
|
-
properties: {
|
|
297
|
-
name: { type: 'string', description: 'Animation blueprint name' },
|
|
298
|
-
skeletonPath: { type: 'string', description: 'Path to skeleton' },
|
|
299
|
-
savePath: { type: 'string', description: 'Save location' }
|
|
300
|
-
},
|
|
301
|
-
required: ['name', 'skeletonPath']
|
|
302
|
-
},
|
|
303
|
-
outputSchema: {
|
|
304
|
-
type: 'object',
|
|
305
|
-
properties: {
|
|
306
|
-
success: { type: 'boolean' },
|
|
307
|
-
blueprintPath: { type: 'string' },
|
|
308
|
-
message: { type: 'string' }
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
name: 'play_animation_montage',
|
|
314
|
-
description: `Play a Montage/Animation on an actor.
|
|
315
|
-
|
|
316
|
-
When to use:
|
|
317
|
-
- Trigger a montage on a possessed or editor actor.
|
|
318
|
-
|
|
319
|
-
Example:
|
|
320
|
-
- {"actorName":"Hero","montagePath":"/Game/Anim/MT_Attack","playRate":1.0}`,
|
|
321
|
-
inputSchema: {
|
|
322
|
-
type: 'object',
|
|
323
|
-
properties: {
|
|
324
|
-
actorName: { type: 'string', description: 'Actor name' },
|
|
325
|
-
montagePath: { type: 'string', description: 'Path to montage' },
|
|
326
|
-
playRate: { type: 'number', description: 'Playback rate' }
|
|
327
|
-
},
|
|
328
|
-
required: ['actorName', 'montagePath']
|
|
329
|
-
},
|
|
330
|
-
outputSchema: {
|
|
331
|
-
type: 'object',
|
|
332
|
-
properties: {
|
|
333
|
-
success: { type: 'boolean' },
|
|
334
|
-
playing: { type: 'boolean' },
|
|
335
|
-
message: { type: 'string' }
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
},
|
|
339
|
-
// Physics Tools
|
|
340
|
-
{
|
|
341
|
-
name: 'setup_ragdoll',
|
|
342
|
-
description: `Enable simple ragdoll using a physics asset.
|
|
343
|
-
|
|
344
|
-
When to use:
|
|
345
|
-
- Toggle ragdoll behavior on a character skeleton.
|
|
346
|
-
|
|
347
|
-
Example:
|
|
348
|
-
- {"skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","physicsAssetName":"PHYS_Hero","blendWeight":1.0}`,
|
|
349
|
-
inputSchema: {
|
|
350
|
-
type: 'object',
|
|
351
|
-
properties: {
|
|
352
|
-
skeletonPath: { type: 'string', description: 'Path to skeleton' },
|
|
353
|
-
physicsAssetName: { type: 'string', description: 'Physics asset name' },
|
|
354
|
-
blendWeight: { type: 'number', description: 'Blend weight (0-1)' }
|
|
355
|
-
},
|
|
356
|
-
required: ['skeletonPath', 'physicsAssetName']
|
|
357
|
-
},
|
|
358
|
-
outputSchema: {
|
|
359
|
-
type: 'object',
|
|
360
|
-
properties: {
|
|
361
|
-
success: { type: 'boolean' },
|
|
362
|
-
ragdollActive: { type: 'boolean' },
|
|
363
|
-
message: { type: 'string' }
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
},
|
|
367
|
-
{
|
|
368
|
-
name: 'apply_force',
|
|
369
|
-
description: `Apply a world-space force vector to an actor with physics enabled.
|
|
370
|
-
|
|
371
|
-
Example:
|
|
372
|
-
- {"actorName":"PhysicsBox","force":{"x":0,"y":0,"z":5000}}`,
|
|
373
|
-
inputSchema: {
|
|
374
|
-
type: 'object',
|
|
375
|
-
properties: {
|
|
376
|
-
actorName: { type: 'string', description: 'Actor name' },
|
|
377
|
-
force: {
|
|
378
|
-
type: 'object',
|
|
379
|
-
properties: {
|
|
380
|
-
x: { type: 'number' },
|
|
381
|
-
y: { type: 'number' },
|
|
382
|
-
z: { type: 'number' }
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
},
|
|
386
|
-
required: ['actorName', 'force']
|
|
387
|
-
},
|
|
388
|
-
outputSchema: {
|
|
389
|
-
type: 'object',
|
|
390
|
-
properties: {
|
|
391
|
-
success: { type: 'boolean' },
|
|
392
|
-
physicsEnabled: { type: 'boolean' },
|
|
393
|
-
message: { type: 'string' },
|
|
394
|
-
error: { type: 'string' }
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
},
|
|
398
|
-
// Niagara Tools
|
|
399
|
-
{
|
|
400
|
-
name: 'create_particle_effect',
|
|
401
|
-
description: `Create a simple particle/FX by tag.
|
|
402
|
-
|
|
403
|
-
When to use:
|
|
404
|
-
- Quickly drop a generic Fire/Smoke/Water effect for previews.
|
|
405
|
-
|
|
406
|
-
Example:
|
|
407
|
-
- {"effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}`,
|
|
408
|
-
inputSchema: {
|
|
409
|
-
type: 'object',
|
|
410
|
-
properties: {
|
|
411
|
-
effectType: { type: 'string', description: 'Effect type (Fire, Smoke, Water, etc.)' },
|
|
412
|
-
name: { type: 'string', description: 'Effect name' },
|
|
413
|
-
location: {
|
|
414
|
-
type: 'object',
|
|
415
|
-
properties: {
|
|
416
|
-
x: { type: 'number' },
|
|
417
|
-
y: { type: 'number' },
|
|
418
|
-
z: { type: 'number' }
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
},
|
|
422
|
-
required: ['effectType', 'name', 'location']
|
|
423
|
-
},
|
|
424
|
-
outputSchema: {
|
|
425
|
-
type: 'object',
|
|
426
|
-
properties: {
|
|
427
|
-
success: { type: 'boolean' },
|
|
428
|
-
effectName: { type: 'string' },
|
|
429
|
-
effectPath: { type: 'string' },
|
|
430
|
-
message: { type: 'string' }
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
},
|
|
434
|
-
{
|
|
435
|
-
name: 'spawn_niagara_system',
|
|
436
|
-
description: `Spawn a Niagara system at a location.
|
|
437
|
-
|
|
438
|
-
Example:
|
|
439
|
-
- {"systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}`,
|
|
440
|
-
inputSchema: {
|
|
441
|
-
type: 'object',
|
|
442
|
-
properties: {
|
|
443
|
-
systemPath: { type: 'string', description: 'Path to Niagara system' },
|
|
444
|
-
location: {
|
|
445
|
-
type: 'object',
|
|
446
|
-
properties: {
|
|
447
|
-
x: { type: 'number' },
|
|
448
|
-
y: { type: 'number' },
|
|
449
|
-
z: { type: 'number' }
|
|
450
|
-
}
|
|
451
|
-
},
|
|
452
|
-
scale: { type: 'number', description: 'Scale factor' }
|
|
453
|
-
},
|
|
454
|
-
required: ['systemPath', 'location']
|
|
455
|
-
},
|
|
456
|
-
outputSchema: {
|
|
457
|
-
type: 'object',
|
|
458
|
-
properties: {
|
|
459
|
-
success: { type: 'boolean' },
|
|
460
|
-
spawned: { type: 'boolean' },
|
|
461
|
-
message: { type: 'string' }
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
},
|
|
465
|
-
// Blueprint Tools
|
|
466
|
-
{
|
|
467
|
-
name: 'create_blueprint',
|
|
468
|
-
description: `Create a new Blueprint asset at a path.
|
|
469
|
-
|
|
470
|
-
Example:
|
|
471
|
-
- {"name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}`,
|
|
472
|
-
inputSchema: {
|
|
473
|
-
type: 'object',
|
|
474
|
-
properties: {
|
|
475
|
-
name: { type: 'string', description: 'Blueprint name' },
|
|
476
|
-
blueprintType: { type: 'string', description: 'Type (Actor, Pawn, Character, etc.)' },
|
|
477
|
-
savePath: { type: 'string', description: 'Save location' }
|
|
478
|
-
},
|
|
479
|
-
required: ['name', 'blueprintType']
|
|
480
|
-
},
|
|
481
|
-
outputSchema: {
|
|
482
|
-
type: 'object',
|
|
483
|
-
properties: {
|
|
484
|
-
success: { type: 'boolean' },
|
|
485
|
-
blueprintPath: { type: 'string' },
|
|
486
|
-
message: { type: 'string' }
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
},
|
|
490
|
-
{
|
|
491
|
-
name: 'add_blueprint_component',
|
|
492
|
-
description: `Add a component to an existing Blueprint.
|
|
493
|
-
|
|
494
|
-
Example:
|
|
495
|
-
- {"blueprintName":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
|
|
496
|
-
inputSchema: {
|
|
497
|
-
type: 'object',
|
|
498
|
-
properties: {
|
|
499
|
-
blueprintName: { type: 'string', description: 'Blueprint name' },
|
|
500
|
-
componentType: { type: 'string', description: 'Component type' },
|
|
501
|
-
componentName: { type: 'string', description: 'Component name' }
|
|
502
|
-
},
|
|
503
|
-
required: ['blueprintName', 'componentType', 'componentName']
|
|
504
|
-
},
|
|
505
|
-
outputSchema: {
|
|
506
|
-
type: 'object',
|
|
507
|
-
properties: {
|
|
508
|
-
success: { type: 'boolean' },
|
|
509
|
-
componentAdded: { type: 'string' },
|
|
510
|
-
message: { type: 'string' },
|
|
511
|
-
warning: { type: 'string' }
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
},
|
|
515
|
-
// Level Tools
|
|
516
|
-
{
|
|
517
|
-
name: 'load_level',
|
|
518
|
-
description: `Load a level by path (e.g., /Game/Maps/Lobby).
|
|
519
|
-
|
|
520
|
-
Example:
|
|
521
|
-
- {"levelPath":"/Game/Maps/Lobby","streaming":false}`,
|
|
522
|
-
inputSchema: {
|
|
523
|
-
type: 'object',
|
|
524
|
-
properties: {
|
|
525
|
-
levelPath: { type: 'string', description: 'Path to level' },
|
|
526
|
-
streaming: { type: 'boolean', description: 'Use streaming' }
|
|
527
|
-
},
|
|
528
|
-
required: ['levelPath']
|
|
529
|
-
},
|
|
530
|
-
outputSchema: {
|
|
531
|
-
type: 'object',
|
|
532
|
-
properties: {
|
|
533
|
-
success: { type: 'boolean' },
|
|
534
|
-
levelName: { type: 'string' },
|
|
535
|
-
message: { type: 'string' }
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
},
|
|
539
|
-
{
|
|
540
|
-
name: 'save_level',
|
|
541
|
-
description: `Save the current level to a path or by name.
|
|
542
|
-
|
|
543
|
-
Example:
|
|
544
|
-
- {"levelName":"Lobby","savePath":"/Game/Maps"}`,
|
|
545
|
-
inputSchema: {
|
|
546
|
-
type: 'object',
|
|
547
|
-
properties: {
|
|
548
|
-
levelName: { type: 'string', description: 'Level name' },
|
|
549
|
-
savePath: { type: 'string', description: 'Save path' }
|
|
550
|
-
}
|
|
551
|
-
},
|
|
552
|
-
outputSchema: {
|
|
553
|
-
type: 'object',
|
|
554
|
-
properties: {
|
|
555
|
-
success: { type: 'boolean' },
|
|
556
|
-
saved: { type: 'boolean' },
|
|
557
|
-
message: { type: 'string' }
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
},
|
|
561
|
-
{
|
|
562
|
-
name: 'stream_level',
|
|
563
|
-
description: `Stream in/out a sublevel and set visibility.
|
|
564
|
-
|
|
565
|
-
Example:
|
|
566
|
-
- {'levelName':'Sublevel_A','shouldBeLoaded':true,'shouldBeVisible':true}`,
|
|
567
|
-
inputSchema: {
|
|
568
|
-
type: 'object',
|
|
569
|
-
properties: {
|
|
570
|
-
levelName: { type: 'string', description: 'Level name' },
|
|
571
|
-
shouldBeLoaded: { type: 'boolean', description: 'Load or unload' },
|
|
572
|
-
shouldBeVisible: { type: 'boolean', description: 'Make visible' }
|
|
573
|
-
},
|
|
574
|
-
required: ['levelName', 'shouldBeLoaded', 'shouldBeVisible']
|
|
575
|
-
},
|
|
576
|
-
outputSchema: {
|
|
577
|
-
type: 'object',
|
|
578
|
-
properties: {
|
|
579
|
-
success: { type: 'boolean' },
|
|
580
|
-
loaded: { type: 'boolean' },
|
|
581
|
-
visible: { type: 'boolean' },
|
|
582
|
-
message: { type: 'string' }
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
},
|
|
586
|
-
// Lighting Tools
|
|
587
|
-
{
|
|
588
|
-
name: 'create_light',
|
|
589
|
-
description: `Create a light (Directional/Point/Spot/Rect/Sky) with optional transform/intensity.
|
|
590
|
-
|
|
591
|
-
Examples:
|
|
592
|
-
- {'lightType':'Directional','name':'KeyLight','intensity':5.0}
|
|
593
|
-
- {'lightType':'Point','name':'Fill','location':{'x':0,'y':100,'z':200},'intensity':2000}`,
|
|
594
|
-
inputSchema: {
|
|
595
|
-
type: 'object',
|
|
596
|
-
properties: {
|
|
597
|
-
lightType: { type: 'string', description: 'Light type (Directional, Point, Spot, Rect)' },
|
|
598
|
-
name: { type: 'string', description: 'Light name' },
|
|
599
|
-
location: {
|
|
600
|
-
type: 'object',
|
|
601
|
-
properties: {
|
|
602
|
-
x: { type: 'number' },
|
|
603
|
-
y: { type: 'number' },
|
|
604
|
-
z: { type: 'number' }
|
|
605
|
-
}
|
|
606
|
-
},
|
|
607
|
-
intensity: { type: 'number', description: 'Light intensity' }
|
|
608
|
-
},
|
|
609
|
-
required: ['lightType', 'name']
|
|
610
|
-
},
|
|
611
|
-
outputSchema: {
|
|
612
|
-
type: 'object',
|
|
613
|
-
properties: {
|
|
614
|
-
success: { type: 'boolean' },
|
|
615
|
-
lightName: { type: 'string' },
|
|
616
|
-
message: { type: 'string' }
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
},
|
|
620
|
-
{
|
|
621
|
-
name: 'build_lighting',
|
|
622
|
-
description: 'Start a lighting build at an optional quality level (Preview/Medium/High/Production).',
|
|
623
|
-
inputSchema: {
|
|
624
|
-
type: 'object',
|
|
625
|
-
properties: {
|
|
626
|
-
quality: { type: 'string', description: 'Quality (Preview, Medium, High, Production)' }
|
|
627
|
-
}
|
|
628
|
-
},
|
|
629
|
-
outputSchema: {
|
|
630
|
-
type: 'object',
|
|
631
|
-
properties: {
|
|
632
|
-
success: { type: 'boolean' },
|
|
633
|
-
quality: { type: 'string' },
|
|
634
|
-
message: { type: 'string' }
|
|
635
|
-
}
|
|
636
|
-
}
|
|
637
|
-
},
|
|
638
|
-
// Landscape Tools
|
|
639
|
-
{
|
|
640
|
-
name: 'create_landscape',
|
|
641
|
-
description: 'Attempt to create a landscape. Native Python APIs are limited; you may receive a guidance message to use Landscape Mode in the editor.',
|
|
642
|
-
inputSchema: {
|
|
643
|
-
type: 'object',
|
|
644
|
-
properties: {
|
|
645
|
-
name: { type: 'string', description: 'Landscape name' },
|
|
646
|
-
sizeX: { type: 'number', description: 'Size X' },
|
|
647
|
-
sizeY: { type: 'number', description: 'Size Y' },
|
|
648
|
-
materialPath: { type: 'string', description: 'Material path' }
|
|
649
|
-
},
|
|
650
|
-
required: ['name']
|
|
651
|
-
},
|
|
652
|
-
outputSchema: {
|
|
653
|
-
type: 'object',
|
|
654
|
-
properties: {
|
|
655
|
-
success: { type: 'boolean' },
|
|
656
|
-
landscapeName: { type: 'string' },
|
|
657
|
-
message: { type: 'string' }
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
},
|
|
661
|
-
{
|
|
662
|
-
name: 'sculpt_landscape',
|
|
663
|
-
description: 'Sculpt a landscape using editor tools (best-effort; some operations may require manual Landscape Mode).',
|
|
664
|
-
inputSchema: {
|
|
665
|
-
type: 'object',
|
|
666
|
-
properties: {
|
|
667
|
-
landscapeName: { type: 'string', description: 'Landscape name' },
|
|
668
|
-
tool: { type: 'string', description: 'Tool (Sculpt, Smooth, Flatten, etc.)' },
|
|
669
|
-
brushSize: { type: 'number', description: 'Brush size' },
|
|
670
|
-
strength: { type: 'number', description: 'Tool strength' }
|
|
671
|
-
},
|
|
672
|
-
required: ['landscapeName', 'tool']
|
|
673
|
-
},
|
|
674
|
-
outputSchema: {
|
|
675
|
-
type: 'object',
|
|
676
|
-
properties: {
|
|
677
|
-
success: { type: 'boolean' },
|
|
678
|
-
message: { type: 'string' }
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
},
|
|
682
|
-
// Foliage Tools
|
|
683
|
-
{
|
|
684
|
-
name: 'add_foliage_type',
|
|
685
|
-
description: `Create or load a FoliageType asset for instanced foliage workflows.
|
|
686
|
-
|
|
687
|
-
Example:
|
|
688
|
-
- {'name':'FT_Grass','meshPath':'/Game/Foliage/SM_Grass','density':300}`,
|
|
689
|
-
inputSchema: {
|
|
690
|
-
type: 'object',
|
|
691
|
-
properties: {
|
|
692
|
-
name: { type: 'string', description: 'Foliage type name' },
|
|
693
|
-
meshPath: { type: 'string', description: 'Path to mesh' },
|
|
694
|
-
density: { type: 'number', description: 'Density' }
|
|
695
|
-
},
|
|
696
|
-
required: ['name', 'meshPath']
|
|
697
|
-
},
|
|
698
|
-
outputSchema: {
|
|
699
|
-
type: 'object',
|
|
700
|
-
properties: {
|
|
701
|
-
success: { type: 'boolean' },
|
|
702
|
-
foliageTypeName: { type: 'string' },
|
|
703
|
-
message: { type: 'string' }
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
},
|
|
707
|
-
{
|
|
708
|
-
name: 'paint_foliage',
|
|
709
|
-
description: 'Paint foliage on landscape',
|
|
710
|
-
inputSchema: {
|
|
711
|
-
type: 'object',
|
|
712
|
-
properties: {
|
|
713
|
-
foliageType: { type: 'string', description: 'Foliage type' },
|
|
714
|
-
position: {
|
|
715
|
-
type: 'object',
|
|
716
|
-
properties: {
|
|
717
|
-
x: { type: 'number' },
|
|
718
|
-
y: { type: 'number' },
|
|
719
|
-
z: { type: 'number' }
|
|
720
|
-
}
|
|
721
|
-
},
|
|
722
|
-
brushSize: { type: 'number', description: 'Brush size' }
|
|
723
|
-
},
|
|
724
|
-
required: ['foliageType', 'position']
|
|
725
|
-
},
|
|
726
|
-
outputSchema: {
|
|
727
|
-
type: 'object',
|
|
728
|
-
properties: {
|
|
729
|
-
success: { type: 'boolean' },
|
|
730
|
-
instancesPlaced: { type: 'number' },
|
|
731
|
-
message: { type: 'string' }
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
},
|
|
735
|
-
// Debug Visualization Tools
|
|
736
|
-
{
|
|
737
|
-
name: 'draw_debug_shape',
|
|
738
|
-
description: 'Draw a debug shape',
|
|
739
|
-
inputSchema: {
|
|
740
|
-
type: 'object',
|
|
741
|
-
properties: {
|
|
742
|
-
shape: { type: 'string', description: 'Shape type (Line, Box, Sphere, etc.)' },
|
|
743
|
-
position: {
|
|
744
|
-
type: 'object',
|
|
745
|
-
properties: {
|
|
746
|
-
x: { type: 'number' },
|
|
747
|
-
y: { type: 'number' },
|
|
748
|
-
z: { type: 'number' }
|
|
749
|
-
}
|
|
750
|
-
},
|
|
751
|
-
size: { type: 'number', description: 'Size/radius' },
|
|
752
|
-
color: {
|
|
753
|
-
type: 'array',
|
|
754
|
-
items: { type: 'number' },
|
|
755
|
-
description: 'RGBA color'
|
|
756
|
-
},
|
|
757
|
-
duration: { type: 'number', description: 'Duration in seconds' }
|
|
758
|
-
},
|
|
759
|
-
required: ['shape', 'position']
|
|
760
|
-
},
|
|
761
|
-
outputSchema: {
|
|
762
|
-
type: 'object',
|
|
763
|
-
properties: {
|
|
764
|
-
success: { type: 'boolean' },
|
|
765
|
-
message: { type: 'string' }
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
},
|
|
769
|
-
{
|
|
770
|
-
name: 'set_view_mode',
|
|
771
|
-
description: 'Set the viewport view mode',
|
|
772
|
-
inputSchema: {
|
|
773
|
-
type: 'object',
|
|
774
|
-
properties: {
|
|
775
|
-
mode: { type: 'string', description: 'View mode (Lit, Unlit, Wireframe, etc.)' }
|
|
776
|
-
},
|
|
777
|
-
required: ['mode']
|
|
778
|
-
},
|
|
779
|
-
outputSchema: {
|
|
780
|
-
type: 'object',
|
|
781
|
-
properties: {
|
|
782
|
-
success: { type: 'boolean' },
|
|
783
|
-
viewMode: { type: 'string' },
|
|
784
|
-
message: { type: 'string' }
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
},
|
|
788
|
-
// Performance Tools
|
|
789
|
-
{
|
|
790
|
-
name: 'start_profiling',
|
|
791
|
-
description: 'Start performance profiling',
|
|
792
|
-
inputSchema: {
|
|
793
|
-
type: 'object',
|
|
794
|
-
properties: {
|
|
795
|
-
type: { type: 'string', description: 'Profiling type (CPU, GPU, Memory, etc.)' },
|
|
796
|
-
duration: { type: 'number', description: 'Duration in seconds' }
|
|
797
|
-
},
|
|
798
|
-
required: ['type']
|
|
799
|
-
},
|
|
800
|
-
outputSchema: {
|
|
801
|
-
type: 'object',
|
|
802
|
-
properties: {
|
|
803
|
-
success: { type: 'boolean' },
|
|
804
|
-
profiling: { type: 'boolean' },
|
|
805
|
-
message: { type: 'string' }
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
},
|
|
809
|
-
{
|
|
810
|
-
name: 'show_fps',
|
|
811
|
-
description: 'Show FPS counter',
|
|
812
|
-
inputSchema: {
|
|
813
|
-
type: 'object',
|
|
814
|
-
properties: {
|
|
815
|
-
enabled: { type: 'boolean', description: 'Enable FPS display' },
|
|
816
|
-
verbose: { type: 'boolean', description: 'Show verbose stats' }
|
|
817
|
-
},
|
|
818
|
-
required: ['enabled']
|
|
819
|
-
},
|
|
820
|
-
outputSchema: {
|
|
821
|
-
type: 'object',
|
|
822
|
-
properties: {
|
|
823
|
-
success: { type: 'boolean' },
|
|
824
|
-
fpsVisible: { type: 'boolean' },
|
|
825
|
-
message: { type: 'string' }
|
|
826
|
-
}
|
|
827
|
-
}
|
|
828
|
-
},
|
|
829
|
-
{
|
|
830
|
-
name: 'set_scalability',
|
|
831
|
-
description: 'Set scalability settings',
|
|
832
|
-
inputSchema: {
|
|
833
|
-
type: 'object',
|
|
834
|
-
properties: {
|
|
835
|
-
category: { type: 'string', description: 'Category (Shadows, Textures, Effects, etc.)' },
|
|
836
|
-
level: { type: 'number', description: 'Quality level (0-4)' }
|
|
837
|
-
},
|
|
838
|
-
required: ['category', 'level']
|
|
839
|
-
},
|
|
840
|
-
outputSchema: {
|
|
841
|
-
type: 'object',
|
|
842
|
-
properties: {
|
|
843
|
-
success: { type: 'boolean' },
|
|
844
|
-
qualityLevel: { type: 'number' },
|
|
845
|
-
message: { type: 'string' }
|
|
846
|
-
}
|
|
847
|
-
}
|
|
848
|
-
},
|
|
849
|
-
// Audio Tools
|
|
850
|
-
{
|
|
851
|
-
name: 'play_sound',
|
|
852
|
-
description: 'Play a sound',
|
|
853
|
-
inputSchema: {
|
|
854
|
-
type: 'object',
|
|
855
|
-
properties: {
|
|
856
|
-
soundPath: { type: 'string', description: 'Path to sound asset' },
|
|
857
|
-
location: {
|
|
858
|
-
type: 'object',
|
|
859
|
-
properties: {
|
|
860
|
-
x: { type: 'number' },
|
|
861
|
-
y: { type: 'number' },
|
|
862
|
-
z: { type: 'number' }
|
|
863
|
-
}
|
|
864
|
-
},
|
|
865
|
-
volume: { type: 'number', description: 'Volume (0-1)' },
|
|
866
|
-
is3D: { type: 'boolean', description: '3D or 2D sound' }
|
|
867
|
-
},
|
|
868
|
-
required: ['soundPath']
|
|
869
|
-
},
|
|
870
|
-
outputSchema: {
|
|
871
|
-
type: 'object',
|
|
872
|
-
properties: {
|
|
873
|
-
success: { type: 'boolean' },
|
|
874
|
-
soundPlaying: { type: 'boolean' },
|
|
875
|
-
message: { type: 'string' }
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
},
|
|
879
|
-
{
|
|
880
|
-
name: 'create_ambient_sound',
|
|
881
|
-
description: 'Create an ambient sound',
|
|
882
|
-
inputSchema: {
|
|
883
|
-
type: 'object',
|
|
884
|
-
properties: {
|
|
885
|
-
name: { type: 'string', description: 'Sound name' },
|
|
886
|
-
soundPath: { type: 'string', description: 'Path to sound' },
|
|
887
|
-
location: {
|
|
888
|
-
type: 'object',
|
|
889
|
-
properties: {
|
|
890
|
-
x: { type: 'number' },
|
|
891
|
-
y: { type: 'number' },
|
|
892
|
-
z: { type: 'number' }
|
|
893
|
-
}
|
|
894
|
-
},
|
|
895
|
-
radius: { type: 'number', description: 'Sound radius' }
|
|
896
|
-
},
|
|
897
|
-
required: ['name', 'soundPath', 'location']
|
|
898
|
-
},
|
|
899
|
-
outputSchema: {
|
|
900
|
-
type: 'object',
|
|
901
|
-
properties: {
|
|
902
|
-
success: { type: 'boolean' },
|
|
903
|
-
soundName: { type: 'string' },
|
|
904
|
-
message: { type: 'string' }
|
|
905
|
-
}
|
|
906
|
-
}
|
|
907
|
-
},
|
|
908
|
-
// UI Tools
|
|
909
|
-
{
|
|
910
|
-
name: 'create_widget',
|
|
911
|
-
description: 'Create a UI widget',
|
|
912
|
-
inputSchema: {
|
|
913
|
-
type: 'object',
|
|
914
|
-
properties: {
|
|
915
|
-
name: { type: 'string', description: 'Widget name' },
|
|
916
|
-
type: { type: 'string', description: 'Widget type (HUD, Menu, etc.)' },
|
|
917
|
-
savePath: { type: 'string', description: 'Save location' }
|
|
918
|
-
},
|
|
919
|
-
required: ['name']
|
|
920
|
-
},
|
|
921
|
-
outputSchema: {
|
|
922
|
-
type: 'object',
|
|
923
|
-
properties: {
|
|
924
|
-
success: { type: 'boolean' },
|
|
925
|
-
widgetPath: { type: 'string' },
|
|
926
|
-
message: { type: 'string' }
|
|
927
|
-
}
|
|
928
|
-
}
|
|
929
|
-
},
|
|
930
|
-
{
|
|
931
|
-
name: 'show_widget',
|
|
932
|
-
description: 'Show or hide a widget',
|
|
933
|
-
inputSchema: {
|
|
934
|
-
type: 'object',
|
|
935
|
-
properties: {
|
|
936
|
-
widgetName: { type: 'string', description: 'Widget name' },
|
|
937
|
-
visible: { type: 'boolean', description: 'Show or hide' }
|
|
938
|
-
},
|
|
939
|
-
required: ['widgetName', 'visible']
|
|
940
|
-
},
|
|
941
|
-
outputSchema: {
|
|
942
|
-
type: 'object',
|
|
943
|
-
properties: {
|
|
944
|
-
success: { type: 'boolean' },
|
|
945
|
-
widgetVisible: { type: 'boolean' },
|
|
946
|
-
message: { type: 'string' }
|
|
947
|
-
}
|
|
948
|
-
}
|
|
949
|
-
},
|
|
950
|
-
{
|
|
951
|
-
name: 'create_hud',
|
|
952
|
-
description: 'Create a HUD',
|
|
953
|
-
inputSchema: {
|
|
954
|
-
type: 'object',
|
|
955
|
-
properties: {
|
|
956
|
-
name: { type: 'string', description: 'HUD name' },
|
|
957
|
-
elements: {
|
|
958
|
-
type: 'array',
|
|
959
|
-
items: {
|
|
960
|
-
type: 'object',
|
|
961
|
-
properties: {
|
|
962
|
-
type: { type: 'string', description: 'Element type' },
|
|
963
|
-
position: {
|
|
964
|
-
type: 'array',
|
|
965
|
-
items: { type: 'number' }
|
|
966
|
-
}
|
|
967
|
-
}
|
|
968
|
-
}
|
|
969
|
-
}
|
|
970
|
-
},
|
|
971
|
-
required: ['name']
|
|
972
|
-
},
|
|
973
|
-
outputSchema: {
|
|
974
|
-
type: 'object',
|
|
975
|
-
properties: {
|
|
976
|
-
success: { type: 'boolean' },
|
|
977
|
-
hudPath: { type: 'string' },
|
|
978
|
-
message: { type: 'string' }
|
|
979
|
-
}
|
|
980
|
-
}
|
|
981
|
-
},
|
|
982
|
-
// Console command (universal tool)
|
|
983
|
-
{
|
|
984
|
-
name: 'console_command',
|
|
985
|
-
description: 'Execute any console command in Unreal Engine',
|
|
986
|
-
inputSchema: {
|
|
987
|
-
type: 'object',
|
|
988
|
-
properties: {
|
|
989
|
-
command: { type: 'string', description: 'Console command to execute' }
|
|
990
|
-
},
|
|
991
|
-
required: ['command']
|
|
992
|
-
},
|
|
993
|
-
outputSchema: {
|
|
994
|
-
type: 'object',
|
|
995
|
-
properties: {
|
|
996
|
-
success: { type: 'boolean' },
|
|
997
|
-
command: { type: 'string' },
|
|
998
|
-
result: { type: 'object' },
|
|
999
|
-
warning: { type: 'string' },
|
|
1000
|
-
info: { type: 'string' },
|
|
1001
|
-
error: { type: 'string' },
|
|
1002
|
-
message: { type: 'string' }
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
}
|
|
1006
|
-
];
|
|
1007
|
-
//# sourceMappingURL=tool-definitions.js.map
|