flockbay 0.10.32 → 0.10.33

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 (44) hide show
  1. package/bin/flockbay.mjs +12 -1
  2. package/dist/codex/flockbayMcpStdioBridge.cjs +67 -29
  3. package/dist/codex/flockbayMcpStdioBridge.mjs +67 -29
  4. package/dist/{index-v_Eyd-J9.cjs → index-CW0hfZk5.cjs} +863 -172
  5. package/dist/{index-D0SVmCGD.mjs → index-D-dGWPfr.mjs} +866 -176
  6. package/dist/index.cjs +2 -2
  7. package/dist/index.mjs +2 -2
  8. package/dist/lib.cjs +1 -1
  9. package/dist/lib.d.cts +3 -0
  10. package/dist/lib.d.mts +3 -0
  11. package/dist/lib.mjs +1 -1
  12. package/dist/migratePlugin-CjGTLdxt.mjs +144 -0
  13. package/dist/migratePlugin-DEn9akG0.cjs +146 -0
  14. package/dist/{runCodex-Jf5LkfEO.cjs → runCodex-D3I0Ugan.cjs} +23 -2
  15. package/dist/{runCodex-F93OWlPh.mjs → runCodex-DUKeBn_A.mjs} +23 -2
  16. package/dist/{runGemini-Du8A3Lzi.cjs → runGemini-CMVFxRTE.cjs} +23 -2
  17. package/dist/{runGemini-Cvo7a4eh.mjs → runGemini-mJG92k8v.mjs} +23 -2
  18. package/dist/{types-hWvKGEw7.cjs → types-BSEP9O60.cjs} +288 -51
  19. package/dist/{types-6KOeU7L8.mjs → types-BiOVCwQP.mjs} +286 -53
  20. package/package.json +1 -1
  21. package/scripts/unpack-tools.cjs +24 -1
  22. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/UnrealMCP.uplugin → FlockbayMCP/FlockbayMCP.uplugin} +2 -2
  23. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP/UnrealMCP.Build.cs → FlockbayMCP/Source/FlockbayMCP/FlockbayMCP.Build.cs} +2 -2
  24. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/Commands/UnrealMCPCommandSchema.cpp +15 -0
  25. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/MCPServerRunnable.cpp +51 -3
  26. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/UnrealMCPBridge.cpp +3 -3
  27. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/UnrealMCPModule.cpp +3 -3
  28. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/Commands/UnrealMCPBlueprintCommands.h +1 -1
  29. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/Commands/UnrealMCPBlueprintNodeCommands.h +1 -1
  30. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/Commands/UnrealMCPCommandSchema.h +1 -2
  31. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/Commands/UnrealMCPCommonUtils.h +2 -2
  32. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/Commands/UnrealMCPEditorCommands.h +1 -1
  33. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/Commands/UnrealMCPProjectCommands.h +2 -2
  34. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/Commands/UnrealMCPUMGCommands.h +2 -2
  35. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/UnrealMCPBridge.h +2 -2
  36. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/UnrealMCPModule.h +3 -3
  37. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP → FlockbayMCP}/Config/FilterPlugin.ini +0 -0
  38. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/Commands/UnrealMCPBlueprintCommands.cpp +0 -0
  39. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/Commands/UnrealMCPBlueprintNodeCommands.cpp +0 -0
  40. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/Commands/UnrealMCPCommonUtils.cpp +0 -0
  41. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/Commands/UnrealMCPEditorCommands.cpp +0 -0
  42. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/Commands/UnrealMCPProjectCommands.cpp +0 -0
  43. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Private/Commands/UnrealMCPUMGCommands.cpp +0 -0
  44. /package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/{UnrealMCP/Source/UnrealMCP → FlockbayMCP/Source/FlockbayMCP}/Public/MCPServerRunnable.h +0 -0
package/bin/flockbay.mjs CHANGED
@@ -38,6 +38,13 @@ const entrypoint = (() => {
38
38
  const useTsx = entrypoint.endsWith('.ts');
39
39
  const invokedCwd = process.cwd();
40
40
 
41
+ function rewriteTopLevelAliases(args) {
42
+ const cmd = args[0];
43
+ if (cmd === 'install') return ['daemon', 'install', ...args.slice(1)];
44
+ if (cmd === 'uninstall') return ['daemon', 'uninstall', ...args.slice(1)];
45
+ return args;
46
+ }
47
+
41
48
  function resolveTsxImportArgs() {
42
49
  if (!useTsx) return [];
43
50
  const candidates = [
@@ -50,6 +57,8 @@ function resolveTsxImportArgs() {
50
57
  return resolved ? ['--import', resolved] : ['--import', 'tsx'];
51
58
  }
52
59
 
60
+ const rewrittenArgs = rewriteTopLevelAliases(process.argv.slice(2));
61
+
53
62
  if (!hasNoWarnings || !hasNoDeprecation || useTsx) {
54
63
  try {
55
64
  execFileSync(
@@ -59,7 +68,7 @@ if (!hasNoWarnings || !hasNoDeprecation || useTsx) {
59
68
  '--no-deprecation',
60
69
  ...resolveTsxImportArgs(),
61
70
  entrypoint,
62
- ...process.argv.slice(2),
71
+ ...rewrittenArgs,
63
72
  ],
64
73
  {
65
74
  stdio: 'inherit',
@@ -74,5 +83,7 @@ if (!hasNoWarnings || !hasNoDeprecation || useTsx) {
74
83
  process.exit(error?.status || 1);
75
84
  }
76
85
  } else {
86
+ // When running via direct import, mutate argv so the entrypoint sees the same aliases.
87
+ process.argv.splice(2, process.argv.length - 2, ...rewrittenArgs);
77
88
  await import('../dist/index.mjs');
78
89
  }
@@ -42,7 +42,7 @@ async function main() {
42
42
  return client;
43
43
  }
44
44
  const server = new mcp_js.McpServer({
45
- name: "Flockbay MCP Bridge",
45
+ name: "MCP Local Connector",
46
46
  version: "1.0.0"
47
47
  });
48
48
  function forwardTool(name, inputSchema, title, description) {
@@ -112,6 +112,25 @@ async function main() {
112
112
  "Evidence Get",
113
113
  "Fetch one server-stored evidence manifest by id."
114
114
  );
115
+ forwardTool(
116
+ "tool_result_read",
117
+ {
118
+ toolName: z.z.string().optional().describe("Tool name (folder under .flockbay/artifacts/tool-results)."),
119
+ toolResultId: z.z.string().describe("toolResultId from a prior tool observation.")
120
+ },
121
+ "Tool Result Read",
122
+ "Read a previously-stored MCP tool result artifact (full tool input/output JSON)."
123
+ );
124
+ forwardTool(
125
+ "tool_result_query",
126
+ {
127
+ toolName: z.z.string().optional().describe("Tool name (folder under .flockbay/artifacts/tool-results)."),
128
+ toolResultId: z.z.string().describe("toolResultId from a prior tool observation."),
129
+ paths: z.z.array(z.z.string()).min(1).describe('JSON pointer paths ("/output/result/location") or dot-paths ("output.result.location").')
130
+ },
131
+ "Tool Result Query",
132
+ "Query one or more JSON paths from a stored tool result artifact (small slices)."
133
+ );
115
134
  forwardTool(
116
135
  "ask_user_question",
117
136
  {
@@ -221,6 +240,16 @@ async function main() {
221
240
  "Docs Get",
222
241
  "Fetch a single Documentation document node (includes markdown body)."
223
242
  );
243
+ forwardTool(
244
+ "docs_read",
245
+ {
246
+ nodeId: z.z.string().describe("Document node id."),
247
+ offset: z.z.number().int().nonnegative().optional().describe("Character offset into bodyMarkdown (default 0)."),
248
+ maxChars: z.z.number().int().positive().optional().describe("Max characters to return (default 4000; max 8000).")
249
+ },
250
+ "Docs Read (chunked)",
251
+ "Read a Documentation document body in small chunks to avoid token blowups."
252
+ );
224
253
  forwardTool(
225
254
  "docs_search",
226
255
  {
@@ -327,12 +356,12 @@ async function main() {
327
356
  forwardTool(
328
357
  "unreal_mcp_command",
329
358
  {
330
- type: z.z.string().describe('UnrealMCP command type (e.g. "get_actors_in_level", "spawn_actor").'),
359
+ type: z.z.string().describe('Unreal MCP command type (e.g. "get_actors_in_level", "spawn_actor").'),
331
360
  params: z.z.record(z.z.any()).optional().describe("Optional params object for the command."),
332
361
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
333
362
  },
334
- "Unreal Editor Command (UnrealMCP)",
335
- "Send a single UnrealMCP command to the running Unreal Editor (engine plugin) and return the JSON response."
363
+ "Unreal Editor Command (Unreal MCP)",
364
+ "Send a single Unreal MCP command to the running Unreal Editor (engine plugin) and return the JSON response."
336
365
  );
337
366
  forwardTool(
338
367
  "unreal_mcp_search_assets",
@@ -343,8 +372,8 @@ async function main() {
343
372
  limit: z.z.number().int().positive().optional().describe("Max results (default 25, max 200)."),
344
373
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
345
374
  },
346
- "Unreal Search Assets (UnrealMCP)",
347
- "Search for assets in the current Unreal project via the UnrealMCP engine plugin (AssetRegistry-backed)."
375
+ "Unreal Search Assets (Unreal MCP)",
376
+ "Search for assets in the current Unreal project via the Unreal MCP engine plugin (AssetRegistry-backed)."
348
377
  );
349
378
  forwardTool(
350
379
  "unreal_mcp_get_asset_info",
@@ -353,8 +382,8 @@ async function main() {
353
382
  includeDependencies: z.z.boolean().optional().describe("Include package dependencies (default false)."),
354
383
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
355
384
  },
356
- "Unreal Asset Info (UnrealMCP)",
357
- "Get metadata for a single Unreal asset (class/path + optional dependencies) via the UnrealMCP engine plugin."
385
+ "Unreal Asset Info (Unreal MCP)",
386
+ "Get metadata for a single Unreal asset (class/path + optional dependencies) via the Unreal MCP engine plugin."
358
387
  );
359
388
  forwardTool(
360
389
  "unreal_mcp_list_asset_packs",
@@ -362,8 +391,8 @@ async function main() {
362
391
  limit: z.z.number().int().positive().optional().describe("Max number of packs (default 200)."),
363
392
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
364
393
  },
365
- "Unreal List Asset Packs (UnrealMCP)",
366
- 'List top-level /Game content folders (best-effort "asset packs") via the UnrealMCP engine plugin.'
394
+ "Unreal List Asset Packs (Unreal MCP)",
395
+ 'List top-level /Game content folders (best-effort "asset packs") via the Unreal MCP engine plugin.'
367
396
  );
368
397
  forwardTool(
369
398
  "unreal_mcp_place_asset",
@@ -375,7 +404,7 @@ async function main() {
375
404
  scale: z.z.array(z.z.number()).length(3).optional().describe("Spawn scale [X,Y,Z]."),
376
405
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
377
406
  },
378
- "Unreal Place Asset (UnrealMCP)",
407
+ "Unreal Place Asset (Unreal MCP)",
379
408
  "Place an asset into the current Unreal level by object path (StaticMesh/Blueprint). Fails if PIE is running."
380
409
  );
381
410
  forwardTool(
@@ -383,7 +412,7 @@ async function main() {
383
412
  {
384
413
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
385
414
  },
386
- "Unreal Editor Context (UnrealMCP)",
415
+ "Unreal Editor Context (Unreal MCP)",
387
416
  "Return a compact snapshot of editor context: map, selection, and active viewport camera."
388
417
  );
389
418
  forwardTool(
@@ -423,7 +452,7 @@ async function main() {
423
452
  source: z.z.enum(["editor", "pie"]).optional().describe("World source (default editor)."),
424
453
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
425
454
  },
426
- "Unreal Actor Transform (UnrealMCP)",
455
+ "Unreal Actor Transform (Unreal MCP)",
427
456
  "Get a single actor transform (location/rotation/scale) by actor name or label."
428
457
  );
429
458
  forwardTool(
@@ -433,7 +462,7 @@ async function main() {
433
462
  source: z.z.enum(["editor", "pie"]).optional().describe("World source (default editor)."),
434
463
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
435
464
  },
436
- "Unreal Actor Bounds (UnrealMCP)",
465
+ "Unreal Actor Bounds (Unreal MCP)",
437
466
  "Get a single actor bounds (origin/extent + min/max) by actor name or label."
438
467
  );
439
468
  forwardTool(
@@ -443,7 +472,7 @@ async function main() {
443
472
  limit: z.z.number().int().positive().optional().describe("Max number of issues to return (default 200, max 1000)."),
444
473
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 15000).")
445
474
  },
446
- "Unreal Map Check (UnrealMCP)",
475
+ "Unreal Map Check (Unreal MCP)",
447
476
  "Run Unreal Map Check and return structured issues. Fails if PIE is running."
448
477
  );
449
478
  forwardTool(
@@ -454,7 +483,7 @@ async function main() {
454
483
  limit: z.z.number().int().positive().optional().describe("Max number of blueprints to compile (default 500, max 10000)."),
455
484
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 60000).")
456
485
  },
457
- "Unreal Compile All Blueprints (UnrealMCP)",
486
+ "Unreal Compile All Blueprints (Unreal MCP)",
458
487
  "Compile all Blueprints and return a structured list of compile messages. Fails if PIE is running."
459
488
  );
460
489
  forwardTool(
@@ -462,7 +491,7 @@ async function main() {
462
491
  {
463
492
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 60000).")
464
493
  },
465
- "Unreal Save All (UnrealMCP)",
494
+ "Unreal Save All (Unreal MCP)",
466
495
  "Save all dirty packages (maps + content) in the running Unreal Editor without prompting. Fails if PIE is running."
467
496
  );
468
497
  forwardTool(
@@ -479,8 +508,8 @@ async function main() {
479
508
  materialPath: z.z.string().optional().describe('Optional landscape material object path (e.g. "/Game/\u2026/M_Landscape.M_Landscape").'),
480
509
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 30000).")
481
510
  },
482
- "Unreal Create Landscape (UnrealMCP)",
483
- "Create a new Landscape in the current editor level via the UnrealMCP engine plugin. Fails if PIE is running."
511
+ "Unreal Create Landscape (Unreal MCP)",
512
+ "Create a new Landscape in the current editor level via the Unreal MCP engine plugin. Fails if PIE is running."
484
513
  );
485
514
  forwardTool(
486
515
  "unreal_mcp_list_capabilities",
@@ -488,7 +517,7 @@ async function main() {
488
517
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 2000).")
489
518
  },
490
519
  "Unreal MCP: Capabilities",
491
- "Query the running UnrealMCP plugin for build info, supported commands, and capability flags."
520
+ "Query the running Unreal MCP Plugin for build info, supported commands, and capability flags."
492
521
  );
493
522
  forwardTool(
494
523
  "unreal_mcp_get_command_schema",
@@ -497,7 +526,7 @@ async function main() {
497
526
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 2000).")
498
527
  },
499
528
  "Unreal MCP: Command Schema",
500
- "Fetch per-command schema (required params, aliases, examples) from the running UnrealMCP plugin."
529
+ "Fetch per-command schema (required params, aliases, examples) from the running Unreal MCP Plugin."
501
530
  );
502
531
  forwardTool(
503
532
  "unreal_mcp_search_blueprint_functions",
@@ -559,8 +588,8 @@ async function main() {
559
588
  {
560
589
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
561
590
  },
562
- "Unreal Actors In Level (UnrealMCP)",
563
- "List all actors in the current Unreal Editor level via the UnrealMCP engine plugin."
591
+ "Unreal Actors In Level (Unreal MCP)",
592
+ "List all actors in the current Unreal Editor level via the Unreal MCP engine plugin."
564
593
  );
565
594
  forwardTool(
566
595
  "unreal_mcp_get_play_in_editor_status",
@@ -568,15 +597,24 @@ async function main() {
568
597
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
569
598
  },
570
599
  "Unreal Play Status (PIE)",
571
- "Get Play-In-Editor status from the UnrealMCP engine plugin."
600
+ "Get Play-In-Editor status from the Unreal MCP engine plugin."
601
+ );
602
+ forwardTool(
603
+ "unreal_mcp_plugin_status",
604
+ {
605
+ uprojectPath: z.z.string().optional().describe("Optional absolute path to the .uproject file (enables config check)."),
606
+ timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 1500).")
607
+ },
608
+ "Unreal Plugin Status (Unreal MCP)",
609
+ "Deterministically detect whether Unreal Editor is running and the Unreal MCP Plugin is enabled/reachable."
572
610
  );
573
611
  forwardTool(
574
612
  "unreal_mcp_editor_health",
575
613
  {
576
614
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 1500).")
577
615
  },
578
- "Unreal Editor Health (UnrealMCP)",
579
- "Best-effort health check for Unreal Editor + UnrealMCP (detects if the editor is reachable)."
616
+ "Unreal Editor Health (Unreal MCP)",
617
+ "Best-effort health check for Unreal Editor + Unreal MCP (detects if the editor is reachable)."
580
618
  );
581
619
  forwardTool(
582
620
  "unreal_mcp_play_in_editor",
@@ -584,7 +622,7 @@ async function main() {
584
622
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
585
623
  },
586
624
  "Unreal Play In Editor (Viewport)",
587
- "Start Play-In-Editor (PIE) in the active editor viewport via the UnrealMCP engine plugin."
625
+ "Start Play-In-Editor (PIE) in the active editor viewport via the Unreal MCP engine plugin."
588
626
  );
589
627
  forwardTool(
590
628
  "unreal_mcp_play_in_editor_windowed",
@@ -592,7 +630,7 @@ async function main() {
592
630
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
593
631
  },
594
632
  "Unreal Play In Editor (New Window)",
595
- "Start Play-In-Editor (PIE) in a new editor window via the UnrealMCP engine plugin."
633
+ "Start Play-In-Editor (PIE) in a new editor window via the Unreal MCP engine plugin."
596
634
  );
597
635
  forwardTool(
598
636
  "unreal_mcp_stop_play_in_editor",
@@ -600,7 +638,7 @@ async function main() {
600
638
  timeoutMs: z.z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
601
639
  },
602
640
  "Unreal Stop Play In Editor",
603
- "Stop a running Play-In-Editor session via the UnrealMCP engine plugin."
641
+ "Stop a running Play-In-Editor session via the Unreal MCP engine plugin."
604
642
  );
605
643
  forwardTool(
606
644
  "unreal_editor_launch",
@@ -40,7 +40,7 @@ async function main() {
40
40
  return client;
41
41
  }
42
42
  const server = new McpServer({
43
- name: "Flockbay MCP Bridge",
43
+ name: "MCP Local Connector",
44
44
  version: "1.0.0"
45
45
  });
46
46
  function forwardTool(name, inputSchema, title, description) {
@@ -110,6 +110,25 @@ async function main() {
110
110
  "Evidence Get",
111
111
  "Fetch one server-stored evidence manifest by id."
112
112
  );
113
+ forwardTool(
114
+ "tool_result_read",
115
+ {
116
+ toolName: z.string().optional().describe("Tool name (folder under .flockbay/artifacts/tool-results)."),
117
+ toolResultId: z.string().describe("toolResultId from a prior tool observation.")
118
+ },
119
+ "Tool Result Read",
120
+ "Read a previously-stored MCP tool result artifact (full tool input/output JSON)."
121
+ );
122
+ forwardTool(
123
+ "tool_result_query",
124
+ {
125
+ toolName: z.string().optional().describe("Tool name (folder under .flockbay/artifacts/tool-results)."),
126
+ toolResultId: z.string().describe("toolResultId from a prior tool observation."),
127
+ paths: z.array(z.string()).min(1).describe('JSON pointer paths ("/output/result/location") or dot-paths ("output.result.location").')
128
+ },
129
+ "Tool Result Query",
130
+ "Query one or more JSON paths from a stored tool result artifact (small slices)."
131
+ );
113
132
  forwardTool(
114
133
  "ask_user_question",
115
134
  {
@@ -219,6 +238,16 @@ async function main() {
219
238
  "Docs Get",
220
239
  "Fetch a single Documentation document node (includes markdown body)."
221
240
  );
241
+ forwardTool(
242
+ "docs_read",
243
+ {
244
+ nodeId: z.string().describe("Document node id."),
245
+ offset: z.number().int().nonnegative().optional().describe("Character offset into bodyMarkdown (default 0)."),
246
+ maxChars: z.number().int().positive().optional().describe("Max characters to return (default 4000; max 8000).")
247
+ },
248
+ "Docs Read (chunked)",
249
+ "Read a Documentation document body in small chunks to avoid token blowups."
250
+ );
222
251
  forwardTool(
223
252
  "docs_search",
224
253
  {
@@ -325,12 +354,12 @@ async function main() {
325
354
  forwardTool(
326
355
  "unreal_mcp_command",
327
356
  {
328
- type: z.string().describe('UnrealMCP command type (e.g. "get_actors_in_level", "spawn_actor").'),
357
+ type: z.string().describe('Unreal MCP command type (e.g. "get_actors_in_level", "spawn_actor").'),
329
358
  params: z.record(z.any()).optional().describe("Optional params object for the command."),
330
359
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
331
360
  },
332
- "Unreal Editor Command (UnrealMCP)",
333
- "Send a single UnrealMCP command to the running Unreal Editor (engine plugin) and return the JSON response."
361
+ "Unreal Editor Command (Unreal MCP)",
362
+ "Send a single Unreal MCP command to the running Unreal Editor (engine plugin) and return the JSON response."
334
363
  );
335
364
  forwardTool(
336
365
  "unreal_mcp_search_assets",
@@ -341,8 +370,8 @@ async function main() {
341
370
  limit: z.number().int().positive().optional().describe("Max results (default 25, max 200)."),
342
371
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
343
372
  },
344
- "Unreal Search Assets (UnrealMCP)",
345
- "Search for assets in the current Unreal project via the UnrealMCP engine plugin (AssetRegistry-backed)."
373
+ "Unreal Search Assets (Unreal MCP)",
374
+ "Search for assets in the current Unreal project via the Unreal MCP engine plugin (AssetRegistry-backed)."
346
375
  );
347
376
  forwardTool(
348
377
  "unreal_mcp_get_asset_info",
@@ -351,8 +380,8 @@ async function main() {
351
380
  includeDependencies: z.boolean().optional().describe("Include package dependencies (default false)."),
352
381
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
353
382
  },
354
- "Unreal Asset Info (UnrealMCP)",
355
- "Get metadata for a single Unreal asset (class/path + optional dependencies) via the UnrealMCP engine plugin."
383
+ "Unreal Asset Info (Unreal MCP)",
384
+ "Get metadata for a single Unreal asset (class/path + optional dependencies) via the Unreal MCP engine plugin."
356
385
  );
357
386
  forwardTool(
358
387
  "unreal_mcp_list_asset_packs",
@@ -360,8 +389,8 @@ async function main() {
360
389
  limit: z.number().int().positive().optional().describe("Max number of packs (default 200)."),
361
390
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
362
391
  },
363
- "Unreal List Asset Packs (UnrealMCP)",
364
- 'List top-level /Game content folders (best-effort "asset packs") via the UnrealMCP engine plugin.'
392
+ "Unreal List Asset Packs (Unreal MCP)",
393
+ 'List top-level /Game content folders (best-effort "asset packs") via the Unreal MCP engine plugin.'
365
394
  );
366
395
  forwardTool(
367
396
  "unreal_mcp_place_asset",
@@ -373,7 +402,7 @@ async function main() {
373
402
  scale: z.array(z.number()).length(3).optional().describe("Spawn scale [X,Y,Z]."),
374
403
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
375
404
  },
376
- "Unreal Place Asset (UnrealMCP)",
405
+ "Unreal Place Asset (Unreal MCP)",
377
406
  "Place an asset into the current Unreal level by object path (StaticMesh/Blueprint). Fails if PIE is running."
378
407
  );
379
408
  forwardTool(
@@ -381,7 +410,7 @@ async function main() {
381
410
  {
382
411
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
383
412
  },
384
- "Unreal Editor Context (UnrealMCP)",
413
+ "Unreal Editor Context (Unreal MCP)",
385
414
  "Return a compact snapshot of editor context: map, selection, and active viewport camera."
386
415
  );
387
416
  forwardTool(
@@ -421,7 +450,7 @@ async function main() {
421
450
  source: z.enum(["editor", "pie"]).optional().describe("World source (default editor)."),
422
451
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
423
452
  },
424
- "Unreal Actor Transform (UnrealMCP)",
453
+ "Unreal Actor Transform (Unreal MCP)",
425
454
  "Get a single actor transform (location/rotation/scale) by actor name or label."
426
455
  );
427
456
  forwardTool(
@@ -431,7 +460,7 @@ async function main() {
431
460
  source: z.enum(["editor", "pie"]).optional().describe("World source (default editor)."),
432
461
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
433
462
  },
434
- "Unreal Actor Bounds (UnrealMCP)",
463
+ "Unreal Actor Bounds (Unreal MCP)",
435
464
  "Get a single actor bounds (origin/extent + min/max) by actor name or label."
436
465
  );
437
466
  forwardTool(
@@ -441,7 +470,7 @@ async function main() {
441
470
  limit: z.number().int().positive().optional().describe("Max number of issues to return (default 200, max 1000)."),
442
471
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 15000).")
443
472
  },
444
- "Unreal Map Check (UnrealMCP)",
473
+ "Unreal Map Check (Unreal MCP)",
445
474
  "Run Unreal Map Check and return structured issues. Fails if PIE is running."
446
475
  );
447
476
  forwardTool(
@@ -452,7 +481,7 @@ async function main() {
452
481
  limit: z.number().int().positive().optional().describe("Max number of blueprints to compile (default 500, max 10000)."),
453
482
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 60000).")
454
483
  },
455
- "Unreal Compile All Blueprints (UnrealMCP)",
484
+ "Unreal Compile All Blueprints (Unreal MCP)",
456
485
  "Compile all Blueprints and return a structured list of compile messages. Fails if PIE is running."
457
486
  );
458
487
  forwardTool(
@@ -460,7 +489,7 @@ async function main() {
460
489
  {
461
490
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 60000).")
462
491
  },
463
- "Unreal Save All (UnrealMCP)",
492
+ "Unreal Save All (Unreal MCP)",
464
493
  "Save all dirty packages (maps + content) in the running Unreal Editor without prompting. Fails if PIE is running."
465
494
  );
466
495
  forwardTool(
@@ -477,8 +506,8 @@ async function main() {
477
506
  materialPath: z.string().optional().describe('Optional landscape material object path (e.g. "/Game/\u2026/M_Landscape.M_Landscape").'),
478
507
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 30000).")
479
508
  },
480
- "Unreal Create Landscape (UnrealMCP)",
481
- "Create a new Landscape in the current editor level via the UnrealMCP engine plugin. Fails if PIE is running."
509
+ "Unreal Create Landscape (Unreal MCP)",
510
+ "Create a new Landscape in the current editor level via the Unreal MCP engine plugin. Fails if PIE is running."
482
511
  );
483
512
  forwardTool(
484
513
  "unreal_mcp_list_capabilities",
@@ -486,7 +515,7 @@ async function main() {
486
515
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 2000).")
487
516
  },
488
517
  "Unreal MCP: Capabilities",
489
- "Query the running UnrealMCP plugin for build info, supported commands, and capability flags."
518
+ "Query the running Unreal MCP Plugin for build info, supported commands, and capability flags."
490
519
  );
491
520
  forwardTool(
492
521
  "unreal_mcp_get_command_schema",
@@ -495,7 +524,7 @@ async function main() {
495
524
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 2000).")
496
525
  },
497
526
  "Unreal MCP: Command Schema",
498
- "Fetch per-command schema (required params, aliases, examples) from the running UnrealMCP plugin."
527
+ "Fetch per-command schema (required params, aliases, examples) from the running Unreal MCP Plugin."
499
528
  );
500
529
  forwardTool(
501
530
  "unreal_mcp_search_blueprint_functions",
@@ -557,8 +586,8 @@ async function main() {
557
586
  {
558
587
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
559
588
  },
560
- "Unreal Actors In Level (UnrealMCP)",
561
- "List all actors in the current Unreal Editor level via the UnrealMCP engine plugin."
589
+ "Unreal Actors In Level (Unreal MCP)",
590
+ "List all actors in the current Unreal Editor level via the Unreal MCP engine plugin."
562
591
  );
563
592
  forwardTool(
564
593
  "unreal_mcp_get_play_in_editor_status",
@@ -566,15 +595,24 @@ async function main() {
566
595
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
567
596
  },
568
597
  "Unreal Play Status (PIE)",
569
- "Get Play-In-Editor status from the UnrealMCP engine plugin."
598
+ "Get Play-In-Editor status from the Unreal MCP engine plugin."
599
+ );
600
+ forwardTool(
601
+ "unreal_mcp_plugin_status",
602
+ {
603
+ uprojectPath: z.string().optional().describe("Optional absolute path to the .uproject file (enables config check)."),
604
+ timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 1500).")
605
+ },
606
+ "Unreal Plugin Status (Unreal MCP)",
607
+ "Deterministically detect whether Unreal Editor is running and the Unreal MCP Plugin is enabled/reachable."
570
608
  );
571
609
  forwardTool(
572
610
  "unreal_mcp_editor_health",
573
611
  {
574
612
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 1500).")
575
613
  },
576
- "Unreal Editor Health (UnrealMCP)",
577
- "Best-effort health check for Unreal Editor + UnrealMCP (detects if the editor is reachable)."
614
+ "Unreal Editor Health (Unreal MCP)",
615
+ "Best-effort health check for Unreal Editor + Unreal MCP (detects if the editor is reachable)."
578
616
  );
579
617
  forwardTool(
580
618
  "unreal_mcp_play_in_editor",
@@ -582,7 +620,7 @@ async function main() {
582
620
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
583
621
  },
584
622
  "Unreal Play In Editor (Viewport)",
585
- "Start Play-In-Editor (PIE) in the active editor viewport via the UnrealMCP engine plugin."
623
+ "Start Play-In-Editor (PIE) in the active editor viewport via the Unreal MCP engine plugin."
586
624
  );
587
625
  forwardTool(
588
626
  "unreal_mcp_play_in_editor_windowed",
@@ -590,7 +628,7 @@ async function main() {
590
628
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
591
629
  },
592
630
  "Unreal Play In Editor (New Window)",
593
- "Start Play-In-Editor (PIE) in a new editor window via the UnrealMCP engine plugin."
631
+ "Start Play-In-Editor (PIE) in a new editor window via the Unreal MCP engine plugin."
594
632
  );
595
633
  forwardTool(
596
634
  "unreal_mcp_stop_play_in_editor",
@@ -598,7 +636,7 @@ async function main() {
598
636
  timeoutMs: z.number().int().positive().optional().describe("Socket timeout in ms (default 5000).")
599
637
  },
600
638
  "Unreal Stop Play In Editor",
601
- "Stop a running Play-In-Editor session via the UnrealMCP engine plugin."
639
+ "Stop a running Play-In-Editor session via the Unreal MCP engine plugin."
602
640
  );
603
641
  forwardTool(
604
642
  "unreal_editor_launch",