genexus-mcp 2.9.1 → 2.10.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 (166) hide show
  1. package/cli/lib/config.js +27 -1
  2. package/cli/run.js +10 -2
  3. package/package.json +4 -1
  4. package/publish/GxMcp.Gateway.deps.json +2 -2
  5. package/publish/GxMcp.Gateway.dll +0 -0
  6. package/publish/GxMcp.Gateway.exe +0 -0
  7. package/publish/config.json +7 -7
  8. package/publish/start_mcp.bat +15 -12
  9. package/publish/tool_definitions.json +15 -20
  10. package/publish/worker/GxMcp.Worker.exe +0 -0
  11. package/publish/worker/Definitions/APIDefinition.xml +0 -427
  12. package/publish/worker/Definitions/APILanguageAttributes.xml +0 -13
  13. package/publish/worker/Definitions/APILanguageColorsDefinition.xml +0 -247
  14. package/publish/worker/Definitions/ATTDefinition.xml +0 -12943
  15. package/publish/worker/Definitions/BASEDefinition.xml +0 -60
  16. package/publish/worker/Definitions/ContextDefinition.xml +0 -43
  17. package/publish/worker/Definitions/ControlDefinition.xml +0 -34677
  18. package/publish/worker/Definitions/ControlsPEMs.xml +0 -3852
  19. package/publish/worker/Definitions/DATASELECTORDefinition.xml +0 -117
  20. package/publish/worker/Definitions/DK.Frm.Functions.psx +0 -199
  21. package/publish/worker/Definitions/DK.Trn.Rules.Functions.psx +0 -77
  22. package/publish/worker/Definitions/DK.Trn.Rules.psx +0 -205
  23. package/publish/worker/Definitions/DPRVDefinition.xml +0 -1132
  24. package/publish/worker/Definitions/DPrv.Rules.psx +0 -30
  25. package/publish/worker/Definitions/DPrv.Source.Functions.psx +0 -2274
  26. package/publish/worker/Definitions/DashboardDefinition.xml +0 -49
  27. package/publish/worker/Definitions/DeployDefinition.xml +0 -151
  28. package/publish/worker/Definitions/DesignSystemDefinition.xml +0 -106
  29. package/publish/worker/Definitions/DocumentationPartDefinition.xml +0 -139
  30. package/publish/worker/Definitions/EXODefinition.xml +0 -1877
  31. package/publish/worker/Definitions/EXOITEMDefinition.xml +0 -5
  32. package/publish/worker/Definitions/EXOMETHDefinition.xml +0 -1236
  33. package/publish/worker/Definitions/EXOPARAMDefinition.xml +0 -883
  34. package/publish/worker/Definitions/EXOPROPDefinition.xml +0 -4620
  35. package/publish/worker/Definitions/FILEDefinition.xml +0 -223
  36. package/publish/worker/Definitions/FORMCLASSDefinition.xml +0 -133
  37. package/publish/worker/Definitions/FormObjDefinition.xml +0 -22921
  38. package/publish/worker/Definitions/Frm.Functions.psx +0 -1677
  39. package/publish/worker/Definitions/Functions.psx +0 -2117
  40. package/publish/worker/Definitions/GRPDefinition.xml +0 -78
  41. package/publish/worker/Definitions/GXPMCommonDefinition.xml +0 -8700
  42. package/publish/worker/Definitions/Gxplorer_CommonDefinition.xml +0 -5980
  43. package/publish/worker/Definitions/GxpmConditions.xml +0 -238
  44. package/publish/worker/Definitions/HelpGenSettingsDefinition.xml +0 -318
  45. package/publish/worker/Definitions/IDXDefinition.xml +0 -54
  46. package/publish/worker/Definitions/IMAGEDefinition.xml +0 -121
  47. package/publish/worker/Definitions/KBDefinition.xml +0 -696
  48. package/publish/worker/Definitions/LNGDefinition.xml +0 -558
  49. package/publish/worker/Definitions/MBRDefinition.xml +0 -131
  50. package/publish/worker/Definitions/MBROPTIONDefinition.xml +0 -211
  51. package/publish/worker/Definitions/MNUDefinition.xml +0 -334
  52. package/publish/worker/Definitions/MNUOPTIONDefinition.xml +0 -51
  53. package/publish/worker/Definitions/MiniAppDefinition.xml +0 -91
  54. package/publish/worker/Definitions/ModelDefinition.xml +0 -3518
  55. package/publish/worker/Definitions/ModuleInfoDefinition.xml +0 -113
  56. package/publish/worker/Definitions/PALETTEDefinition.xml +0 -66
  57. package/publish/worker/Definitions/PRCDefinition.xml +0 -2453
  58. package/publish/worker/Definitions/Prc.Rules.Functions.psx +0 -1925
  59. package/publish/worker/Definitions/Prc.Rules.psx +0 -393
  60. package/publish/worker/Definitions/Prc.Source.Functions.psx +0 -2308
  61. package/publish/worker/Definitions/RPTDefinition.xml +0 -2123
  62. package/publish/worker/Definitions/RuntimeContextDefinition.xml +0 -43
  63. package/publish/worker/Definitions/SD.Conditions.Functions.psx +0 -1336
  64. package/publish/worker/Definitions/SD.Rules.psx +0 -67
  65. package/publish/worker/Definitions/SD.Source.Functions.psx +0 -1562
  66. package/publish/worker/Definitions/SDTDefinition.xml +0 -176
  67. package/publish/worker/Definitions/SDTITEMDefinition.xml +0 -13239
  68. package/publish/worker/Definitions/SDTLEVELDefinition.xml +0 -384
  69. package/publish/worker/Definitions/SINGLEIMAGEDefinition.xml +0 -388
  70. package/publish/worker/Definitions/STENCILDefinition.xml +0 -73
  71. package/publish/worker/Definitions/SYNCDefinition.xml +0 -410
  72. package/publish/worker/Definitions/SuperAppDefinition.xml +0 -180
  73. package/publish/worker/Definitions/Sync.Rules.psx +0 -191
  74. package/publish/worker/Definitions/TBDDefinition.xml +0 -99
  75. package/publish/worker/Definitions/TBLDefinition.xml +0 -302
  76. package/publish/worker/Definitions/TRNDefinition.xml +0 -5640
  77. package/publish/worker/Definitions/ThemeDefinition.xml +0 -60769
  78. package/publish/worker/Definitions/TransactionAttributeDefinition.xml +0 -25
  79. package/publish/worker/Definitions/TransactionLevelDefinition.xml +0 -48
  80. package/publish/worker/Definitions/Trn.Rules.Functions.psx +0 -2237
  81. package/publish/worker/Definitions/Trn.Rules.psx +0 -560
  82. package/publish/worker/Definitions/Trn.Source.Functions.psx +0 -2154
  83. package/publish/worker/Definitions/UrlRewriteDefinition.xml +0 -66
  84. package/publish/worker/Definitions/UserControlDefinition.xml +0 -146
  85. package/publish/worker/Definitions/WBPDefinition.xml +0 -1874
  86. package/publish/worker/Definitions/WKPDefinition.xml +0 -1813
  87. package/publish/worker/Definitions/Wbp.Conditions.Functions.psx +0 -2032
  88. package/publish/worker/Definitions/Wbp.Rules.Functions.psx +0 -2170
  89. package/publish/worker/Definitions/Wbp.Rules.psx +0 -336
  90. package/publish/worker/Definitions/Wbp.Source.Functions.psx +0 -2344
  91. package/publish/worker/Definitions/Wrk.Conditions.Functions.psx +0 -1909
  92. package/publish/worker/Definitions/Wrk.Rules.Functions.psx +0 -1937
  93. package/publish/worker/Definitions/Wrk.Rules.psx +0 -453
  94. package/publish/worker/Definitions/Wrk.Source.Functions.psx +0 -2224
  95. package/publish/worker/Definitions/XFLDefinition.xml +0 -246
  96. package/publish/worker/Definitions/cobolDefinition.xml +0 -2074
  97. package/publish/worker/Definitions/conditions.xml +0 -251
  98. package/publish/worker/Definitions/conditionsSD.xml +0 -236
  99. package/publish/worker/Definitions/csharpDefinition.xml +0 -3527
  100. package/publish/worker/Definitions/csharpwinDefinition.xml +0 -2979
  101. package/publish/worker/Definitions/dataprovider.xml +0 -254
  102. package/publish/worker/Definitions/ds_AS400NATIVEDefinition.xml +0 -2167
  103. package/publish/worker/Definitions/ds_DAMENGDefinition.xml +0 -2546
  104. package/publish/worker/Definitions/ds_DB2400Definition.xml +0 -2209
  105. package/publish/worker/Definitions/ds_DB2COMMONSERVERSDefinition.xml +0 -2394
  106. package/publish/worker/Definitions/ds_DBFCDXDefinition.xml +0 -5
  107. package/publish/worker/Definitions/ds_DBFIDXDefinition.xml +0 -5
  108. package/publish/worker/Definitions/ds_HANADefinition.xml +0 -1821
  109. package/publish/worker/Definitions/ds_INFORMIXDefinition.xml +0 -2498
  110. package/publish/worker/Definitions/ds_MYSQLDefinition.xml +0 -2222
  111. package/publish/worker/Definitions/ds_ORACLEDefinition.xml +0 -2915
  112. package/publish/worker/Definitions/ds_POSTGRESQLDefinition.xml +0 -2206
  113. package/publish/worker/Definitions/ds_SERVICEDefinition.xml +0 -710
  114. package/publish/worker/Definitions/ds_SQLCEDefinition.xml +0 -822
  115. package/publish/worker/Definitions/ds_SQLITEDefinition.xml +0 -1075
  116. package/publish/worker/Definitions/ds_SQLSERVERDefinition.xml +0 -2481
  117. package/publish/worker/Definitions/dv_AS400NATIVEDefinition.xml +0 -53
  118. package/publish/worker/Definitions/dv_DAMENGDefinition.xml +0 -53
  119. package/publish/worker/Definitions/dv_DB2400Definition.xml +0 -47
  120. package/publish/worker/Definitions/dv_DB2COMMONSERVERSDefinition.xml +0 -47
  121. package/publish/worker/Definitions/dv_DBFCDXDefinition.xml +0 -47
  122. package/publish/worker/Definitions/dv_DBFIDXDefinition.xml +0 -47
  123. package/publish/worker/Definitions/dv_HANADefinition.xml +0 -53
  124. package/publish/worker/Definitions/dv_INFORMIXDefinition.xml +0 -53
  125. package/publish/worker/Definitions/dv_MYSQLDefinition.xml +0 -53
  126. package/publish/worker/Definitions/dv_ORACLEDefinition.xml +0 -53
  127. package/publish/worker/Definitions/dv_POSTGRESQLDefinition.xml +0 -53
  128. package/publish/worker/Definitions/dv_SERVICEDefinition.xml +0 -47
  129. package/publish/worker/Definitions/dv_SQLCEDefinition.xml +0 -48
  130. package/publish/worker/Definitions/dv_SQLITEDefinition.xml +0 -47
  131. package/publish/worker/Definitions/dv_SQLSERVERDefinition.xml +0 -53
  132. package/publish/worker/Definitions/dvi_AS400NATIVEDefinition.xml +0 -53
  133. package/publish/worker/Definitions/dvi_DAMENGDefinition.xml +0 -53
  134. package/publish/worker/Definitions/dvi_DB2400Definition.xml +0 -47
  135. package/publish/worker/Definitions/dvi_DB2COMMONSERVERSDefinition.xml +0 -47
  136. package/publish/worker/Definitions/dvi_DBFCDXDefinition.xml +0 -51
  137. package/publish/worker/Definitions/dvi_DBFIDXDefinition.xml +0 -47
  138. package/publish/worker/Definitions/dvi_HANADefinition.xml +0 -53
  139. package/publish/worker/Definitions/dvi_INFORMIXDefinition.xml +0 -53
  140. package/publish/worker/Definitions/dvi_MYSQLDefinition.xml +0 -53
  141. package/publish/worker/Definitions/dvi_ORACLEDefinition.xml +0 -53
  142. package/publish/worker/Definitions/dvi_POSTGRESQLDefinition.xml +0 -53
  143. package/publish/worker/Definitions/dvi_SERVICEDefinition.xml +0 -47
  144. package/publish/worker/Definitions/dvi_SQLCEDefinition.xml +0 -48
  145. package/publish/worker/Definitions/dvi_SQLITEDefinition.xml +0 -47
  146. package/publish/worker/Definitions/dvi_SQLSERVERDefinition.xml +0 -53
  147. package/publish/worker/Definitions/events.xml +0 -340
  148. package/publish/worker/Definitions/eventsSD.xml +0 -331
  149. package/publish/worker/Definitions/exportDefinition.xml +0 -123
  150. package/publish/worker/Definitions/formula.xml +0 -215
  151. package/publish/worker/Definitions/gxtypes.xml +0 -24099
  152. package/publish/worker/Definitions/importDefinition.xml +0 -148
  153. package/publish/worker/Definitions/javaDefinition.xml +0 -4733
  154. package/publish/worker/Definitions/kbInfoDefinition.xml +0 -43
  155. package/publish/worker/Definitions/netcoreDefinition.xml +0 -3506
  156. package/publish/worker/Definitions/netmobileDefinition.xml +0 -1559
  157. package/publish/worker/Definitions/procedures.xml +0 -292
  158. package/publish/worker/Definitions/rpgDefinition.xml +0 -2083
  159. package/publish/worker/Definitions/rubyDefinition.xml +0 -1358
  160. package/publish/worker/Definitions/rules.xml +0 -279
  161. package/publish/worker/Definitions/rulesSD.xml +0 -253
  162. package/publish/worker/Definitions/sdpatternsDefinition.xml +0 -3509
  163. package/publish/worker/Definitions/smartdeviceDefinition.xml +0 -897
  164. package/publish/worker/Definitions/trn_src.xml +0 -335
  165. package/publish/worker/Definitions/vfpDefinition.xml +0 -2372
  166. package/publish/worker/Definitions/vfpcsDefinition.xml +0 -2631
package/cli/lib/config.js CHANGED
@@ -308,7 +308,14 @@ function readJsonFileSafe(filePath) {
308
308
  } catch {
309
309
  // Fall back to a JSONC-tolerant parse before giving up, so a commented
310
310
  // VS Code / OpenCode config isn't treated as corrupt.
311
- return JSON.parse(stripJsonComments(raw));
311
+ const stripped = stripJsonComments(raw);
312
+ const result = JSON.parse(stripped);
313
+ // Warn: if we ever rewrite this file the comments will be lost.
314
+ process.stderr.write(
315
+ `[genexus-mcp] Warning: ${filePath} contains JSONC comments (// or /* */).\n` +
316
+ `[genexus-mcp] Comments are stripped for reading but will be lost if this file is rewritten by the CLI.\n`
317
+ );
318
+ return result;
312
319
  }
313
320
  } catch {
314
321
  return null;
@@ -331,6 +338,9 @@ function writeFileAtomic(filePath, content) {
331
338
  // Back up a client config once per process run before the first mutation, so the
332
339
  // user has a restore point (the old build-from-source install.ps1 did this; the
333
340
  // CLI now owns it). Best-effort \u2014 a failed backup never blocks the write.
341
+ // After writing a new backup, prune old .bak files for the same config so at
342
+ // most BAK_KEEP_COUNT backups exist (oldest removed first).
343
+ const BAK_KEEP_COUNT = 5;
334
344
  const _backedUpThisRun = new Set();
335
345
  function backupClientConfigOnce(filePath) {
336
346
  if (!fs.existsSync(filePath)) return null;
@@ -345,6 +355,22 @@ function backupClientConfigOnce(filePath) {
345
355
  const bak = `${filePath}.${stamp}.bak`;
346
356
  fs.copyFileSync(filePath, bak);
347
357
  _backedUpThisRun.add(key);
358
+ // Prune: keep only the BAK_KEEP_COUNT most-recent .bak files for this config.
359
+ try {
360
+ const dir = path.dirname(resolved);
361
+ const base = path.basename(resolved);
362
+ const bakPattern = new RegExp(`^${base.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\.\\d{14}\\.bak$`);
363
+ const existing = fs.readdirSync(dir)
364
+ .filter(f => bakPattern.test(f))
365
+ .map(f => path.join(dir, f))
366
+ .sort(); // ISO timestamp stamps sort lexicographically = chronologically
367
+ if (existing.length > BAK_KEEP_COUNT) {
368
+ const toRemove = existing.slice(0, existing.length - BAK_KEEP_COUNT);
369
+ for (const old of toRemove) {
370
+ try { fs.rmSync(old, { force: true }); } catch { /* best-effort */ }
371
+ }
372
+ }
373
+ } catch { /* pruning is best-effort; never block the backup */ }
348
374
  return bak;
349
375
  } catch {
350
376
  return null;
package/cli/run.js CHANGED
@@ -3,11 +3,19 @@ const { main, EXIT_CODES } = require('./index');
3
3
  const { writeStructured } = require('./lib/output');
4
4
  const { operationalErrorEnvelope } = require('./commands/axi');
5
5
 
6
- main(process.argv.slice(2))
6
+ // Detect gateway-passthrough mode: no subcommand means we're forwarding stdio
7
+ // as the MCP JSON-RPC channel. Writing a JSON envelope to stdout there would
8
+ // corrupt the protocol stream. Route errors to stderr instead.
9
+ const argv = process.argv.slice(2);
10
+ const KNOWN_COMMANDS = new Set(['status', 'doctor', 'tools', 'config', 'init', 'setup', 'whoami', 'uninstall', 'kb', 'clients', 'help', 'home', 'axi', 'llm', 'layout', 'update']);
11
+ const isInteractiveCommand = argv.length > 0 && KNOWN_COMMANDS.has(argv[0]);
12
+ const errorOut = isInteractiveCommand ? process.stdout : process.stderr;
13
+
14
+ main(argv)
7
15
  .then((code) => process.exit(code))
8
16
  .catch(() => {
9
17
  const envelope = operationalErrorEnvelope('Unhandled CLI failure.', EXIT_CODES.ERROR);
10
18
  envelope.meta = { ...(envelope.meta || {}), command: 'runtime' };
11
- writeStructured(process.stdout, envelope, 'toon');
19
+ writeStructured(errorOut, envelope, 'toon');
12
20
  process.exit(EXIT_CODES.ERROR);
13
21
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genexus-mcp",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "mcpName": "io.github.lennix1337/genexus",
5
5
  "description": "GeneXus 18 MCP server — read, edit, and analyze GeneXus knowledge base objects (transactions, web panels, procedures, SDTs) directly from Claude, Cursor, and other AI agents over the Model Context Protocol.",
6
6
  "keywords": [
@@ -41,6 +41,9 @@
41
41
  "publish",
42
42
  "docs/llm_cli_mcp_playbook.md"
43
43
  ],
44
+ "os": [
45
+ "win32"
46
+ ],
44
47
  "engines": {
45
48
  "node": ">=18.0.0"
46
49
  },
@@ -7,7 +7,7 @@
7
7
  "targets": {
8
8
  ".NETCoreApp,Version=v8.0": {},
9
9
  ".NETCoreApp,Version=v8.0/win-x64": {
10
- "GxMcp.Gateway/2.9.1": {
10
+ "GxMcp.Gateway/2.10.0": {
11
11
  "dependencies": {
12
12
  "Newtonsoft.Json": "13.0.3",
13
13
  "System.Management": "10.0.5",
@@ -66,7 +66,7 @@
66
66
  }
67
67
  },
68
68
  "libraries": {
69
- "GxMcp.Gateway/2.9.1": {
69
+ "GxMcp.Gateway/2.10.0": {
70
70
  "type": "project",
71
71
  "serviceable": false,
72
72
  "sha512": ""
Binary file
Binary file
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "GeneXus": {
3
- "WorkerExecutable": "C:\\Projetos\\Genexus18MCP\\publish\\\\worker\\\\GxMcp.Worker.exe",
4
- "InstallationPath": "C:\\\\Program Files (x86)\\\\GeneXus\\\\GeneXus18"
3
+ "InstallationPath": "C:\\\\Program Files (x86)\\\\GeneXus\\\\GeneXus18",
4
+ "WorkerExecutable": "C:\\Projetos\\Genexus18MCP\\publish\\\\worker\\\\GxMcp.Worker.exe"
5
5
  },
6
- "Server": {
7
- "McpStdio": true,
8
- "HttpPort": 5000
6
+ "Environment": {
7
+ "KBPath": "C:\\\\KBs\\\\YourKB"
9
8
  },
10
9
  "Logging": {
11
10
  "Path": "logs",
12
11
  "Level": "Debug"
13
12
  },
14
- "Environment": {
15
- "KBPath": "C:\\\\KBs\\\\YourKB"
13
+ "Server": {
14
+ "McpStdio": true,
15
+ "HttpPort": 5000
16
16
  }
17
17
  }
@@ -1,22 +1,25 @@
1
1
  @echo off
2
2
  setlocal
3
3
 
4
- set "REPO_ROOT=C:\Projetos\Genexus18MCP"
5
- set "GX_CONFIG_PATH=C:\Projetos\Genexus18MCP\config.json"
6
- set "GX_MCP_STDIO=true"
7
-
8
- set "DEBUG_GATEWAY=%REPO_ROOT%\src\GxMcp.Gateway\bin\Debug\net8.0-windows\GxMcp.Gateway.exe"
9
- set "RELEASE_GATEWAY=%REPO_ROOT%\src\GxMcp.Gateway\bin\Release\net8.0-windows\GxMcp.Gateway.exe"
4
+ rem Resolve the directory containing this bat file (works at any install path).
5
+ set "BAT_DIR=%~dp0"
6
+ rem Remove trailing backslash so paths join cleanly.
7
+ if "%BAT_DIR:~-1%"=="\" set "BAT_DIR=%BAT_DIR:~0,-1%"
10
8
 
11
- if exist "%DEBUG_GATEWAY%" (
12
- "%DEBUG_GATEWAY%"
13
- exit /b %ERRORLEVEL%
9
+ rem Only set GX_CONFIG_PATH when the caller hasn't provided one.
10
+ if not defined GX_CONFIG_PATH (
11
+ set "GX_CONFIG_PATH=%BAT_DIR%\config.json"
14
12
  )
15
13
 
16
- if exist "%RELEASE_GATEWAY%" (
17
- "%RELEASE_GATEWAY%"
14
+ set "GX_MCP_STDIO=true"
15
+
16
+ rem Launch the gateway exe that lives alongside this bat file.
17
+ set "GATEWAY_EXE=%BAT_DIR%\GxMcp.Gateway.exe"
18
+ if exist "%GATEWAY_EXE%" (
19
+ "%GATEWAY_EXE%"
18
20
  exit /b %ERRORLEVEL%
19
21
  )
20
22
 
21
- cd /d "%~dp0"
23
+ rem Fallback: run the DLL via dotnet (dev layout where .exe is not present).
24
+ cd /d "%BAT_DIR%"
22
25
  dotnet GxMcp.Gateway.dll
@@ -1,25 +1,25 @@
1
1
  [
2
2
  {"name":"genexus_whoami","description":"KB context + version + playbooks + skills catalog. Call FIRST every session — the `skills` block lists verified GeneXus reference resources (navigation, GAM, SD panel, WebPanel events). Read those BEFORE invoking properties/methods you aren't 100% sure exist.","inputSchema":{"type":"object","properties":{},"examples":[{}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
3
3
  {"name":"genexus_recipe","description":"Named playbooks + self-extending macros. action=list|describe|run|suggest_macro|crystallize.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Recipe key (latest version), 'name@v1' (pinned), or 'list'."},"action":{"type":"string","enum":["list","describe","run","suggest_macro","crystallize"],"description":"suggest_macro: detect repeated sequences; crystallize: save one as a recipe."},"windowMinutes":{"type":"integer","description":"suggest_macro: history window (default 30)."},"minRepetitions":{"type":"integer","description":"suggest_macro: threshold (default 3)."},"macroName":{"type":"string","description":"crystallize: proposed name from suggest_macro."},"description":{"type":"string","description":"crystallize: human-readable description."}},"examples":[{"name":"list"},{"name":"wwp_on_transaction"},{"action":"suggest_macro"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
4
- {"name":"genexus_query","description":"Search objects in active KB. Prefixes: name:, type:, usedby:, parent:, parentPath:, description:. name:\"X\" (or bare quoted \"X\") demands exact-name match — use it when you know the object's name. Compact by default. See genexus://kb/tool-help/genexus_query.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"typeFilter":{"type":"string"},"domainFilter":{"type":"string"},"limit":{"type":"integer"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N."},"sort":{"type":"string","enum":["relevance","lastUpdate"],"description":"relevance (default) or lastUpdate (newest first; bypasses score ranking)."},"since":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate >= since."},"modifiedBefore":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate < modifiedBefore."},"cursor":{"type":"string","description":"Opaque token from prior nextCursor. Use with sort=lastUpdate for stable paging."},"kb":{"type":"string","description":"KB alias."},"axiCompact":{"type":"boolean","description":"Compact projection (default true).","default":true}},"required":["query"],"examples":[{"query":"type:Transaction parent:Customers"},{"query":"\"Customer\"","limit":5}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
4
+ {"name":"genexus_query","description":"Search objects in active KB. Prefixes: name:, type:, usedby:, parent:, parentPath:, description:. name:\"X\" (or bare quoted \"X\") demands exact-name match — use it when you know the object's name. Compact by default. See genexus://kb/tool-help/genexus_query. Requires the KB index to be Ready — check genexus_lifecycle action=status if results look empty.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"typeFilter":{"type":"string"},"domainFilter":{"type":"string"},"limit":{"type":"integer"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N."},"sort":{"type":"string","enum":["relevance","lastUpdate"],"description":"relevance (default) or lastUpdate (newest first; bypasses score ranking)."},"since":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate >= since."},"modifiedBefore":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate < modifiedBefore."},"cursor":{"type":"string","description":"Opaque token from prior nextCursor. Use with sort=lastUpdate for stable paging."},"kb":{"type":"string","description":"KB alias."},"axiCompact":{"type":"boolean","description":"Compact projection (default true).","default":true}},"required":["query"],"examples":[{"query":"type:Transaction parent:Customers"},{"query":"\"Customer\"","limit":5}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
5
5
  {"name":"genexus_list_objects","description":"List objects with pagination. Feed nextOffset until hasMore=false. Returns minimal shape by default (name, type, path, parent); verbose=true for full shape.","inputSchema":{"type":"object","properties":{"filter":{"type":"string","description":"Legacy: name OR description. Prefer nameFilter/descriptionFilter."},"nameFilter":{"type":"string","description":"Substring on name."},"descriptionFilter":{"type":"string","description":"Substring on description."},"pathPrefix":{"type":"string","description":"Folder prefix, e.g. 'Root Module/X/'."},"limit":{"type":"integer"},"offset":{"type":"integer"},"parent":{"type":"string"},"parentPath":{"type":"string"},"typeFilter":{"type":"string"},"verbose":{"type":"boolean","description":"Full item shape."},"sort":{"type":"string","enum":["name","lastUpdate"],"description":"name (default, type-bucketed) or lastUpdate (newest first)."},"since":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate >= since."},"modifiedBefore":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate < modifiedBefore."},"cursor":{"type":"string","description":"Opaque token from prior nextCursor. Use with sort=lastUpdate for stable paging."},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N."},"kb":{"type":"string","description":"KB alias."},"axiCompact":{"type":"boolean","description":"Compact projection (default true).","default":true},"projection":{"type":"string","enum":["minimal","standard","verbose"],"description":"minimal=name+type+lastUpdate; standard=default compact; verbose=all fields. Overrides axiCompact when set."}},"examples":[{"limit":25},{"typeFilter":"Transaction","limit":10}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
6
6
  {"name":"genexus_read","description":"Read parts of objects. name or targets + parts=[...]. Paginate via offset/limit. See genexus://kb/tool-help/genexus_read.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"targets":{"type":"array","items":{"type":"string"}},"part":{"type":"string"},"parts":{"type":"array","items":{"type":"string"},"description":"When set, only the listed parts are returned in a combined response. Mutually exclusive with part/offset/limit."},"offset":{"type":"integer"},"limit":{"type":"integer"},"type":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer"},{"name":"Customer","part":"Source"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
7
- {"name":"genexus_edit","description":"Edit object part. name or targets (exclusive). mode: full|patch|ops. dryRun first. async=true returns an operationId for lifecycle polling. For WWP edit host's PatternInstance NOT the parent WebForm (gets overwritten on reapply). Uncertain about a property/method/event? → resources/read uri=genexus://kb/skills/navigation (or gam-integrated-security / sd-panel-mobile / webpanel-events) first.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"mode":{"type":"string","enum":["full","patch","ops"]},"content":{"type":"string"},"ops":{"type":"array","description":"GeneXus semantic ops (NOT RFC 6902 JSON-Patch). Each item: {op, args}. Supported ops: set_attribute, add_attribute, remove_attribute (Transaction); add_rule, remove_rule (Transaction/Procedure/WebPanel); set_property (any kind). Use mode=patch for textual find/replace.","items":{"type":"object","properties":{"op":{"type":"string","enum":["set_attribute","add_attribute","remove_attribute","add_rule","remove_rule","set_property"]},"args":{"type":"object","description":"Op-specific args. set_attribute: {name, type?, description?}. add_attribute: {name, type, ...}. add_rule: {rule}. set_property: {name, value}."}},"required":["op"]}},"patch":{"description":"String or {find,replace} object. Prefer operation+context+content."},"context":{"type":"string"},"operation":{"type":"string","enum":["Replace","Insert_After","Append"]},"expectedCount":{"type":"integer"},"replaceAll":{"type":"boolean","description":"patch mode only. Apply to ALL occurrences instead of requiring expectedCount to match exactly."},"dryRun":{"type":"boolean"},"async":{"type":"boolean","description":"Run as a background job. Result returns operationId/job_id for genexus_lifecycle polling."},"estimated_seconds":{"type":"integer","description":"When async=true, expected runtime used for progress/job metadata (default 30)."},"verifyRollback":{"type":"boolean"},"targets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"content":{"type":"string"}},"required":["name","content"]}},"type":{"type":"string"},"return_post_state":{"type":"boolean","description":"Omit post_state.diff (default true)."},"verbose":{"type":"boolean","description":"Add ±15-line slices to post_state."},"validate":{"type":"string","enum":["strict","best-effort","only"],"description":"strict (default) aborts on first error. best-effort applies what compiles. only runs in-memory, no persist."},"visualVerify":{"type":"boolean","default":false,"description":"Post-edit headless screenshot + pixel-diff vs baseline. See tool-help."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new"}},{"name":"Customer","mode":"patch","part":"Rules","patch":{"find":"error(","replace":"msg("},"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
7
+ {"name":"genexus_edit","description":"Edit object part. name or targets (exclusive). mode: full|patch|ops. dryRun first. async=true returns an operationId for lifecycle polling. For WWP edit host's PatternInstance NOT the parent WebForm (gets overwritten on reapply). Uncertain about a property/method/event? → resources/read uri=genexus://kb/skills/navigation (or gam-integrated-security / sd-panel-mobile / webpanel-events) first.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"mode":{"type":"string","enum":["full","patch","ops"]},"content":{"type":"string"},"ops":{"type":"array","description":"GeneXus semantic ops (NOT RFC 6902 JSON-Patch). Each item: {op, args}. Supported ops: set_attribute, add_attribute, remove_attribute (Transaction); add_rule, remove_rule (Transaction/Procedure/WebPanel); set_property (any kind). Use mode=patch for textual find/replace.","items":{"type":"object","properties":{"op":{"type":"string","enum":["set_attribute","add_attribute","remove_attribute","add_rule","remove_rule","set_property"]},"args":{"type":"object","description":"Op-specific args. set_attribute: {name, type?, description?}. add_attribute: {name, type, ...}. add_rule: {rule}. set_property: {name, value}."}},"required":["op"]}},"patch":{"description":"String or {find,replace} object. Prefer operation+context+content."},"context":{"type":"string"},"operation":{"type":"string","enum":["Replace","Insert_After","Append"]},"expectedCount":{"type":"integer"},"replaceAll":{"type":"boolean","description":"patch mode only. Apply to ALL occurrences instead of requiring expectedCount to match exactly."},"dryRun":{"type":"boolean"},"async":{"type":"boolean","description":"Run as a background job. Result returns operationId/job_id for genexus_lifecycle polling."},"estimated_seconds":{"type":"integer","description":"When async=true, expected runtime used for progress/job metadata (default 30)."},"verifyRollback":{"type":"boolean"},"targets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"content":{"type":"string"}},"required":["name","content"]}},"type":{"type":"string"},"return_post_state":{"type":"boolean","description":"Omit post_state.diff (default true)."},"verbose":{"type":"boolean","description":"Add ±15-line slices to post_state."},"validate":{"type":"string","enum":["strict","best-effort","only"],"description":"strict (default) aborts on first error. best-effort applies what compiles. only runs in-memory, no persist."},"visualVerify":{"type":"boolean","default":false,"description":"Post-edit headless screenshot + pixel-diff vs baseline. See tool-help."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new"}},{"name":"Customer","mode":"patch","part":"Rules","patch":{"find":"error(","replace":"msg("},"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
8
8
  {"name":"genexus_inspect","description":"Use to snapshot an object: metadata, variables, structure, signature. Raw shape, no source text — use genexus_read for code. runtimeIds requires a prior build.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"include":{"type":"array","items":{"type":"string","enum":["metadata","variables","signature","structure","parts","controls","events_repertoire","callers","runtimeIds"]}},"projection":{"type":"string","enum":["minimal","standard","verbose"],"description":"minimal=name+type+lastUpdate; standard=default; verbose=all fields."},"type":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"required":["name"],"examples":[{"name":"Customer"},{"name":"Customer","include":["variables","signature"]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
9
- {"name":"genexus_analyze","description":"Use this for cross-object semantic analysis: impact, dependencies, complexity, naming, summary. See tool-help for mode selection.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"mode":{"type":"string","enum":["linter","navigation","hierarchy","impact","cross_platform_impact","callers","event_flow","data_context","ui_context","pattern_metadata","summary","dependency_heatmap"]},"format":{"type":"string","enum":["json","ascii"],"description":"mode=dependency_heatmap: ascii adds rendered bar chart."},"kb":{"type":"string","description":"KB alias."},"waitForIndex":{"type":"boolean","description":"mode=impact: block up to 30s for Ready index (default true).","default":true}},"required":["name","mode"],"examples":[{"name":"Customer","mode":"impact"},{"name":"Customer","mode":"summary"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
10
- {"name":"genexus_lifecycle","description":"Build, validate, index, or poll the KB. Long ops are async with operationId. dryRun=true (build/rebuild/index) returns the build plan or index plan without executing. See genexus://kb/tool-help/genexus_lifecycle for actions and target formats.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["build","cancel","rebuild","reorg","reorg_preview","validate","validate-kb","sync","index","status","result","snapshots-list","snapshots-restore"]},"target":{"type":"string","description":"Object name(s), taskId, job_id, or op:<id>. Build accepts CSV ('Foo,Bar')."},"code":{"type":"string"},"limit":{"type":"integer"},"snapshotPath":{"type":"string"},"estimated_seconds":{"type":"integer","description":"Build: <20 sync, >=20 async (default 60)."},"wait_seconds":{"type":"integer","description":"Status/build long-poll cap, 0-600s."},"wait_until_done":{"type":"boolean","description":"Build/rebuild: block in one turn until terminal (up to wait_seconds, default 600)."},"wait":{"type":"integer","description":"Status taskId event-driven block, 0-600s."},"since":{"type":"string","description":"Status: prior _meta.snapshot for chained waits."},"compact":{"type":"boolean","description":"Status: counts + top-10 errors (default true)."},"force":{"type":"boolean","description":"Index: full SDK rescan (clears snapshot)."},"dryRun":{"type":"boolean","default":false,"description":"build/rebuild/index: returns the plan (object list / index entries) without executing."},"includeCallees":{"type":"string","enum":["none","direct","transitive"],"description":"Build: expand call graph so callees compile first (default transitive)."},"buildPlanCap":{"type":"integer","description":"Build: max nodes before BuildPlanTooLarge (default 200)."},"skipFullDeploy":{"type":"boolean","description":"EXPERIMENTAL. Skip deploy step (single-target, includeCallees=none). See tool-help."},"fastIncremental":{"type":"boolean","description":"EXPERIMENTAL. Skip clean targets via dirty-tracker; falls back to legacy build on miss. See tool-help."},"notifyOnFailure":{"type":"string","description":"Build: Slack/Discord webhook posted on terminal=Failed. See tool-help."},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"build"},{"action":"status","target":"op:abc123"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
9
+ {"name":"genexus_analyze","description":"Use this for cross-object semantic analysis: impact, dependencies, complexity, naming, summary. See tool-help for mode selection. Requires the KB index to be Ready for impact/callers modes — check genexus_lifecycle action=status if results look empty.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"mode":{"type":"string","enum":["linter","navigation","hierarchy","impact","cross_platform_impact","callers","event_flow","data_context","ui_context","pattern_metadata","summary","dependency_heatmap"]},"format":{"type":"string","enum":["json","ascii"],"description":"mode=dependency_heatmap: ascii adds rendered bar chart."},"kb":{"type":"string","description":"KB alias."},"waitForIndex":{"type":"boolean","description":"mode=impact: block up to 30s for Ready index (default true).","default":true}},"required":["name","mode"],"examples":[{"name":"Customer","mode":"impact"},{"name":"Customer","mode":"summary"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
10
+ {"name":"genexus_lifecycle","description":"Build, validate, index, or poll the KB. Long ops are async with operationId. dryRun=true (build/rebuild/index) returns the build plan or index plan without executing. See genexus://kb/tool-help/genexus_lifecycle for actions and target formats.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["build","cancel","rebuild","reorg","reorg_preview","validate","validate-kb","sync","index","status","result","snapshots-list","snapshots-restore"]},"target":{"type":"string","description":"Object name(s), taskId, job_id, or op:<id>. Build accepts CSV ('Foo,Bar')."},"code":{"type":"string"},"limit":{"type":"integer"},"snapshotPath":{"type":"string"},"estimated_seconds":{"type":"integer","description":"Build: <20 sync, >=20 async (default 60)."},"wait_seconds":{"type":"integer","description":"Status/build long-poll cap, 0-600s."},"wait_until_done":{"type":"boolean","description":"Build/rebuild: block in one turn until terminal (up to wait_seconds, default 600)."},"wait":{"type":"integer","description":"Status taskId event-driven block, 0-600s."},"since":{"type":"string","description":"Status: prior _meta.snapshot for chained waits."},"compact":{"type":"boolean","description":"Status: counts + top-10 errors (default true)."},"force":{"type":"boolean","description":"Index: full SDK rescan (clears snapshot)."},"dryRun":{"type":"boolean","default":false,"description":"build/rebuild/index: returns the plan (object list / index entries) without executing."},"includeCallees":{"type":"string","enum":["none","direct","transitive"],"description":"Build: expand call graph so callees compile first (default transitive)."},"buildPlanCap":{"type":"integer","description":"Build: max nodes before BuildPlanTooLarge (default 200)."},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"build"},{"action":"status","target":"op:abc123"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
11
11
  {"name":"genexus_test","description":"Execute native GeneXus tests (GXtest).","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"required":["name"],"examples":[{"name":"MyTestProc"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
12
12
  {"name":"genexus_sdk_probe","description":"Dump SDK surface (types/methods/props) to docs/sdk-probe/. Use when hunting for entry points.","inputSchema":{"type":"object","properties":{"outputDir":{"type":"string","description":"Absolute path. Default <repo>/docs/sdk-probe/."}},"examples":[{}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
13
- {"name":"genexus_worker_reload","description":"Reload worker. modes: soft (drain+respawn), hard (copy sourceDir+respawn), warm (EXPERIMENTAL; persist index snapshot). force=true: gateway kills directly. See tool-help.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["soft","hard","warm"]},"force":{"type":"boolean","description":"Bypass drain; gateway kills + respawns. Use when worker is wedged."},"sourceDir":{"type":"string","description":"Required for mode=hard."},"drainTimeoutMs":{"type":"integer","description":"Soft/warm only; default 30000."}},"examples":[{"mode":"soft"},{"mode":"hard","sourceDir":"C:\\Projetos\\Genexus18MCP\\src\\GxMcp.Worker\\bin\\Debug"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
13
+ {"name":"genexus_worker_reload","description":"Reload worker. modes: soft (drain+respawn), hard (copy sourceDir+respawn). force=true: gateway kills directly. See tool-help.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["soft","hard"]},"force":{"type":"boolean","description":"Bypass drain; gateway kills + respawns. Use when worker is wedged."},"sourceDir":{"type":"string","description":"Required for mode=hard."},"drainTimeoutMs":{"type":"integer","description":"Soft only; default 30000."}},"examples":[{"mode":"soft"},{"mode":"hard","sourceDir":"C:\\Projetos\\Genexus18MCP\\src\\GxMcp.Worker\\bin\\Debug"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
14
14
  {"name":"genexus_delete_object","description":"Delete an object from the KB. Irreversible — confirm=true required. dryRun=true returns what would be deleted without persisting.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"confirm":{"type":"boolean"},"dryRun":{"type":"boolean","default":false,"description":"When true, returns the object that would be deleted without deleting it."},"kb":{"type":"string","description":"KB alias."}},"required":["name","confirm"],"examples":[{"name":"ObsoletePanel","type":"WebPanel","confirm":true},{"name":"ObsoletePanel","type":"WebPanel","confirm":true,"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
15
- {"name":"genexus_refactor","description":"Run GeneXus refactor: rename, extract procedure, or WWP condition set. dryRun=true previews what would change without persisting.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["RenameAttribute","RenameVariable","RenameObject","ExtractProcedure","WWPSetCondition"]},"target":{"type":"string","description":"Primary object or symbol to refactor."},"newName":{"type":"string"},"objectName":{"type":"string"},"code":{"type":"string"},"procedureName":{"type":"string"},"controlAttribute":{"type":"string"},"value":{"type":"string"},"type":{"type":"string"},"dryRun":{"type":"boolean","default":false,"description":"When true, returns what would be changed without persisting."},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"RenameObject","target":"Customer","newName":"Client"},{"action":"RenameAttribute","target":"CustomerId","newName":"ClientId"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
15
+ {"name":"genexus_refactor","description":"Run GeneXus refactor: rename, extract procedure, or WWP condition set. For KB-wide rename with call-site patching (RenameObject/RenameAttribute), the response includes a patched-site count from RefactorService. dryRun=true previews what would change without persisting.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["RenameAttribute","RenameVariable","RenameObject","ExtractProcedure","WWPSetCondition"]},"target":{"type":"string","description":"Primary object or symbol to refactor."},"newName":{"type":"string"},"objectName":{"type":"string"},"code":{"type":"string"},"procedureName":{"type":"string"},"controlAttribute":{"type":"string"},"value":{"type":"string"},"type":{"type":"string"},"dryRun":{"type":"boolean","default":false,"description":"When true, returns what would be changed without persisting."},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"RenameObject","target":"Customer","newName":"Client"},{"action":"RenameAttribute","target":"CustomerId","newName":"ClientId"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
16
16
  {"name":"genexus_run_object","description":"Resolve runtime URL for an object (webRoot + aspx + encoded args). gamSession='auto'|{user,pass,...} captures GAM cookies. Does NOT open a browser. dryRun=true returns the resolved URL without performing GAM login.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"args":{"type":"array","items":{"type":"string"},"description":"Positional parameter values."},"gamSession":{"description":"'auto' (use GXMCP_GAM_USER/PASS env) or {user, pass, repository?, loginUrl?}."},"dryRun":{"type":"boolean","default":false,"description":"When true, returns the resolved URL without performing the GAM login step."},"kb":{"type":"string","description":"KB alias."}},"required":["name"],"examples":[{"name":"WPMain"},{"name":"WPCustomer","args":["42"]}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
17
17
  {"name":"genexus_format","description":"Format a GeneXus code snippet using worker rules.","inputSchema":{"type":"object","properties":{"code":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"required":["code"],"examples":[{"code":"for each Customer where CustomerId = &Id\n &Name = CustomerName\nendfor"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
18
- {"name":"genexus_properties","description":"Read or update GeneXus object properties. Note: Description is the title-bar text shown when a WebPanel/Popup is opened via .Popup(). Uncertain a property exists or what values it takes? → resources/read uri=genexus://kb/skills/navigation (CallProtocol does NOT apply to Web/SD Panels and 'Modal' is not a value).","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get","set"]},"name":{"type":"string"},"control":{"type":"string","description":"Optional. Layout control name (e.g. BtnConfirmar), variable name with & prefix (e.g. &Alu2RegProf), or attribute name."},"propertyName":{"type":"string"},"value":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"get","name":"MyPanel"},{"action":"set","name":"MyPanel","propertyName":"Description","value":"Customer Details"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
19
- {"name":"genexus_structure","description":"Read or update visual and logical structure of GeneXus objects.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get_visual","update_visual","get_indexes","get_logic"]},"name":{"type":"string"},"payload":{"type":"object","description":"Update payload for update_visual."},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"get_visual","name":"Customer"},{"action":"get_indexes","name":"Customer"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
20
- {"name":"genexus_layout","description":"SDK layout/WebForm ops: get_tree, set_property, find_controls, inspect_surface, scan_mutators.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get_tree","set_property","find_controls","set_properties","inspect_surface","get_preview","scan_mutators","rename_printblock","add_printblock"]},"name":{"type":"string"},"target":{"type":"string","description":"Alias for name (backcompat)."},"control":{"type":"string"},"propertyName":{"type":"string"},"value":{"type":"string"},"query":{"type":"string"},"changes":{"type":"array","items":{"type":"object","properties":{"control":{"type":"string"},"propertyName":{"type":"string"},"value":{"type":"string"}},"required":["control","propertyName","value"]}},"limit":{"type":"integer"},"currentName":{"type":"string"},"newName":{"type":"string"},"printBlockName":{"type":"string"},"height":{"type":"integer"},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"get_tree","name":"WPMain"},{"action":"find_controls","name":"WPMain","query":"Button"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
18
+ {"name":"genexus_properties","description":"Read or update GeneXus object properties. Note: Description is the title-bar text shown when a WebPanel/Popup is opened via .Popup(). Uncertain a property exists or what values it takes? → resources/read uri=genexus://kb/skills/navigation (CallProtocol does NOT apply to Web/SD Panels and 'Modal' is not a value). Use genexus_layout set_property for layout control properties.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get","set"]},"name":{"type":"string"},"control":{"type":"string","description":"Optional. Layout control name (e.g. BtnConfirmar), variable name with & prefix (e.g. &Alu2RegProf), or attribute name."},"propertyName":{"type":"string"},"value":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"get","name":"MyPanel"},{"action":"set","name":"MyPanel","propertyName":"Description","value":"Customer Details"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
19
+ {"name":"genexus_structure","description":"Read or update visual and logical structure of GeneXus objects. For layout control trees use genexus_layout get_tree; for object-level visual structure use get_visual here.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get_visual","update_visual","get_indexes","get_logic"]},"name":{"type":"string"},"payload":{"type":"object","description":"Update payload for update_visual."},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"get_visual","name":"Customer"},{"action":"get_indexes","name":"Customer"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
20
+ {"name":"genexus_layout","description":"SDK layout/WebForm ops: get_tree, set_property, find_controls, inspect_surface, scan_mutators. For object-level properties use genexus_properties; for object-level visual structure use genexus_structure get_visual.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get_tree","set_property","find_controls","set_properties","inspect_surface","get_preview","scan_mutators","rename_printblock","add_printblock"]},"name":{"type":"string"},"control":{"type":"string"},"propertyName":{"type":"string"},"value":{"type":"string"},"query":{"type":"string"},"changes":{"type":"array","items":{"type":"object","properties":{"control":{"type":"string"},"propertyName":{"type":"string"},"value":{"type":"string"}},"required":["control","propertyName","value"]}},"limit":{"type":"integer"},"currentName":{"type":"string"},"newName":{"type":"string"},"printBlockName":{"type":"string"},"height":{"type":"integer"},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"get_tree","name":"WPMain"},{"action":"find_controls","name":"WPMain","query":"Button"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
21
21
  {"name":"genexus_doc","description":"Use to generate structured docs (wiki, sequence diagrams, health reports). Don't use for programmatic analysis (see genexus_analyze) or source (see genexus_read).","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["wiki","visualize","health"]},"target":{"type":"string","description":"Object or domain name."}},"required":["action"],"examples":[{"action":"wiki","target":"Customer"},{"action":"health"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
22
- {"name":"genexus_search_source","description":"Regex/semantic search across Procedure/DataProvider/WebPanel/Transaction source.","inputSchema":{"type":"object","properties":{"callee":{"type":"string","description":"Method/function name (qualified or unqualified)."},"argMatches":{"type":"object","description":"Positional arg index to expected literal text."},"pattern":{"type":"string"},"typeFilter":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"fields":{"type":"array","items":{"type":"string","enum":["source","caption","description","parmNames","webForm"]},"description":"Fields to search. Default [source]. Add webForm to scan WebPanel/Transaction WebForm XML (layout-form examples)."},"maxResults":{"type":"integer"},"caseSensitive":{"type":"boolean"},"includeComments":{"type":"boolean"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N distinct objects in response."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"pattern":"ControlType=\"Radio\""},{"pattern":"for each","typeFilter":"Procedure","maxResults":20}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
22
+ {"name":"genexus_search_source","description":"Regex/semantic search across Procedure/DataProvider/WebPanel/Transaction source. Requires the KB index to be Ready — check genexus_lifecycle action=status if results look empty.","inputSchema":{"type":"object","properties":{"callee":{"type":"string","description":"Method/function name (qualified or unqualified)."},"argMatches":{"type":"object","description":"Positional arg index to expected literal text."},"pattern":{"type":"string"},"typeFilter":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"fields":{"type":"array","items":{"type":"string","enum":["source","caption","description","parmNames","webForm"]},"description":"Fields to search. Default [source]. Add webForm to scan WebPanel/Transaction WebForm XML (layout-form examples)."},"maxResults":{"type":"integer"},"caseSensitive":{"type":"boolean"},"includeComments":{"type":"boolean"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N distinct objects in response."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"pattern":"ControlType=\"Radio\""},{"pattern":"for each","typeFilter":"Procedure","maxResults":20}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
23
23
  {"name":"genexus_kb","description":"Manage open KBs and startup config. list/open/close/set_default operate on WorkerPool; set_startup/get_startup mirror IDE 'Set As Startup Object'.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["list","open","close","set_default","set_startup","get_startup"]},"alias":{"type":"string","description":"KB alias. open: auto from path basename if omitted."},"path":{"type":"string","description":"Absolute KB path (required for open if alias not in config)."},"name":{"type":"string","description":"Object name (required for set_startup)."}},"required":["action"],"examples":[{"action":"open","path":"C:\\KBs\\MyKb"},{"action":"list"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
24
24
  {"name":"genexus_navigation","description":"View navigation report (IDE Right-click → View Navigation). latest=true returns cached report from .gx/navigation-cache; else runs fresh.","inputSchema":{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","enum":["view"]},"name":{"type":"string"},"latest":{"type":"boolean","default":false,"description":"Return the most recent cached navigation if any; otherwise run fresh."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"view","name":"Customer"},{"action":"view","name":"Customer","latest":true}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
25
25
  {"name":"genexus_api","description":"Introspect REST endpoints exposed by HTTP procedures. action=list|describe|snapshot|diff_baseline. Returns endpoints + detects breaking changes vs a saved baseline.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","describe","snapshot","diff_baseline"]},"target":{"type":"string","description":"Procedure name (action=describe)."},"name":{"type":"string","description":"Baseline name (action=snapshot)."},"baseline":{"type":"string","description":"Baseline name under .gx/api-baselines/ or absolute path (action=diff_baseline)."},"pathPrefix":{"type":"string","description":"Folder prefix filter (action=list), e.g. 'Root Module/API/'."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list"},{"action":"describe","target":"ApiCustomerGet"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
@@ -28,17 +28,12 @@
28
28
  {"name":"genexus_security","description":"Audit KB security. action=audit_gam scans GAM/env props; action=scan_secrets greps Source for credential-shaped literals. Returns findings with severity.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["audit_gam","scan_secrets"]},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"audit_gam"},{"action":"scan_secrets"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
29
29
  {"name":"genexus_doctor","description":"Health check: GX install, KB state, worker, cache age, recent telemetry. Paste output for triage when something feels off.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"examples":[{}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
30
30
  {"name":"genexus_edit_form","description":"Semantic WebForm edits. Actions: add_textblock, add_button, set_visibility, remove_control, wrap_in_fieldset.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["add_textblock","add_button","set_visibility","remove_control","wrap_in_fieldset"]},"name":{"type":"string"},"parent":{"type":"string"},"position":{"type":"string","description":"first|last|after:<id>"},"caption":{"type":"string"},"format":{"type":"string","enum":["Text","HTML"]},"event":{"type":"string"},"controlId":{"type":"string"},"controlIds":{"type":"array","items":{"type":"string"}},"legend":{"type":"string"},"visible":{"type":"boolean"},"dryRun":{"type":"boolean"},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"add_button","name":"WPMain","caption":"Confirmar","event":"OnConfirm"},{"action":"set_visibility","name":"WPMain","controlId":"GrpDetail","visible":false}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
31
- {"name":"genexus_worker_pool","description":"Pre-spawn N warm workers bound to declared KBs to skip cold-start. Returns {status,spareCount,configured}. spareCount<=0 disables; capped at 5.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["warm_spares"]},"spareCount":{"type":"integer","description":"Number of spares to pre-spawn (0 disables; capped at 5)."}},"examples":[{"action":"warm_spares","spareCount":2}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
32
31
  {"name":"genexus_gxserver","description":"Surface GxServer sync state (status/pending/conflicts/history). Read-only v1. Returns {connected:false} when KB is not linked.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["status","pending","conflicts","history"]},"limit":{"type":"integer","description":"history only; default 10, max 200."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"status"},{"action":"history","limit":20}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
33
- {"name":"genexus_github","description":"Open a PR after pushing a branch. Shells `gh pr create` from KB path (or workingDir). Returns {status,url} or {code:'GhCliNotInstalled'}. dryRun=true returns the resolved command args without shelling out.","inputSchema":{"type":"object","required":["action","title"],"properties":{"action":{"type":"string","enum":["create_pr"]},"title":{"type":"string"},"body":{"type":"string"},"base":{"type":"string","description":"Base branch."},"workingDir":{"type":"string"},"dryRun":{"type":"boolean","default":false,"description":"When true, returns the resolved gh command arguments without executing them."}},"examples":[{"action":"create_pr","title":"Fix customer validation"},{"action":"create_pr","title":"Add new feature","body":"## Summary\nAdds new capability","base":"main"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
34
- {"name":"genexus_ai_complete","description":"Forward prompt to OpenAI-compatible endpoint (env GXMCP_AI_COMPLETE_URL/_KEY/_MODEL). Errors: AiEndpointNotConfigured, AiEndpointError.","inputSchema":{"type":"object","required":["context"],"properties":{"name":{"type":"string"},"part":{"type":"string"},"context":{"type":"string","description":"Prompt sent to the LLM."},"maxTokens":{"type":"integer","description":"Default 200, max 4000."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"context":"What does this Procedure do?"},{"name":"Customer","part":"Source","context":"Summarize the business logic in this source code."}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
35
- {"name":"genexus_multi_agent_lock","description":"Advisory file lock per (kbPath,target,part) under .gx/locks. Auto-expires after ttlSec. Returns {status,held,holder,path}. dryRun=true previews acquire/release without writing the lock file.","inputSchema":{"type":"object","required":["action","target"],"properties":{"action":{"type":"string","enum":["acquire","release","status"]},"target":{"type":"string"},"part":{"type":"string"},"ownerId":{"type":"string","description":"Required for acquire/release."},"ttlSec":{"type":"integer","description":"Default 300, max 86400."},"dryRun":{"type":"boolean","default":false,"description":"When true, returns what would happen without writing or deleting the lock file."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"acquire","target":"Customer","ownerId":"claude-A"},{"action":"release","target":"Customer","ownerId":"claude-A"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
36
- {"name":"genexus_rename_across_kb","description":"Rename object/attribute and patch every call-site via CalledBy edges. Routes through RefactorService Rename{Object|Attribute}. Returns standard refactor envelope with patched-site count. dryRun=true previews sites without persisting.","inputSchema":{"type":"object","required":["from","to"],"properties":{"from":{"type":"string","description":"Current name."},"to":{"type":"string","description":"New name."},"type":{"type":"string","description":"Object type; pass 'Attribute' for attribute renames."},"dryRun":{"type":"boolean","default":false,"description":"When true, returns the list of would-be renamed sites without persisting."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"from":"OldName","to":"NewName"},{"from":"CustomerId","to":"ClientId","type":"Attribute"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
37
- {"name":"genexus_browser","description":"Headless-browser verification umbrella. action=smoke (HTTP 200 + clean console), a11y (axe), wcag (caption/tooltip lint), capture (console/network/exceptions), cross (multi-engine), preview (render WebPanel + capture HTML/a11y/screenshot, optionally diff baseline). preview uses mode=render|run (default render; run auto-resolves the KB launcher, IDE F5 parity).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["smoke","a11y","wcag","capture","cross","preview"]},"target":{"type":"string","description":"WebPanel name. Alias of 'name'."},"name":{"type":"string","description":"Alias of 'target'."},"mode":{"type":"string","enum":["render","run"],"description":"preview only."},"capture":{"type":"array","items":{"type":"string"},"description":"capture|cross|preview channels: console|network|exceptions|html|a11y|screenshot."},"browsers":{"type":"array","items":{"type":"string","enum":["chrome","firefox","safari","webkit"]},"description":"cross only."},"parms":{"type":"object","description":"preview only."},"launcher":{"type":"string","description":"preview only."},"buildFirst":{"type":"boolean","description":"preview only."},"waitMs":{"type":"integer","description":"preview only."},"diffBaseline":{"type":"boolean","description":"preview only."},"updateBaseline":{"type":"boolean","description":"preview only."},"fill":{"type":"object","description":"preview only."},"click":{"type":"string","description":"preview only."},"auth":{"type":"object","description":"preview only."},"emulate":{"type":"string","enum":["iPhone12","iPhone15Pro","iPadPro","Pixel7","desktop1920","desktop1280"],"description":"preview only."},"network":{"type":"string","enum":["fast","slow3g","fast3g","offline"],"description":"preview only."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"preview","name":"WPMain"},{"action":"cross","name":"WPMain","browsers":["chrome","firefox"]}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
38
- {"name":"genexus_db","description":"Database umbrella. action: drift_check|drift_report (Transaction↔DB schema drift) | optimize_analyze|optimize_suggest|optimize_report (static index advisor) | sql_ddl|sql_navigation (SQL for Transaction/Procedure) | sample_data (fake INSERTs) | types_list|types_describe|types_validate (Domains/SDT constraints) | translations_import.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["drift_check","drift_report","optimize_analyze","optimize_suggest","optimize_report","sql_ddl","sql_navigation","sample_data","types_list","types_describe","types_validate","translations_import"]},"target":{"type":"string","description":"Object/transaction/type name. Alias of name/trn."},"name":{"type":"string","description":"Alias of target."},"trn":{"type":"string","description":"sample_data: Transaction name."},"rows":{"type":"integer","description":"sample_data: 1-1000; default 5."},"includeSubordinated":{"type":"boolean","description":"sql_ddl only."},"levelNumber":{"type":"integer","description":"sql_navigation only."},"includeExecutionPlan":{"type":"boolean","description":"sql_navigation."},"includeIndexAdvisor":{"type":"boolean","description":"sql_navigation."},"format":{"type":"string","enum":["json","markdown"],"description":"optimize_report only."},"kind":{"type":"string","enum":["domain","sdt","all"],"description":"types_list filter."},"value":{"type":"string","description":"types_validate."},"type":{"type":"string","description":"types_validate / disambiguator."},"inputPath":{"type":"string","description":"translations_import: CSV path."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"drift_check"},{"action":"sql_ddl","target":"Customer"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
39
- {"name":"genexus_versioning","description":"Versioning umbrella. action: history_list|history_get|history_save|history_restore (snapshot store; restore+discard=true is IDE 'Discard changes' parity) | undo (revert last N edits) | time_travel (recover bytes from a past git commit) | blame (git blame an object part) | diff (text: mode=textVsText|currentVsText) | diff_generated (against=last-build|git-head).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["history_list","history_get","history_save","history_restore","undo","time_travel","blame","diff","diff_generated"]},"name":{"type":"string"},"part":{"type":"string"},"versionId":{"type":"integer"},"snapshot":{"type":"string"},"discard":{"type":"boolean"},"dryRun":{"type":"boolean"},"last":{"type":"integer","description":"undo: default 1, max 20."},"at":{"type":"string","description":"time_travel: ISO-8601 or commit sha."},"line":{"type":"integer","description":"blame."},"filePath":{"type":"string","description":"blame."},"context":{"type":"integer","description":"blame."},"mode":{"type":"string","enum":["textVsText","currentVsText"],"description":"diff."},"left":{"type":"string","description":"diff."},"right":{"type":"string","description":"diff."},"against":{"type":"string","enum":["last-build","git-head"],"description":"diff_generated."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"history_list","name":"Customer"},{"action":"time_travel","name":"Customer","at":"2026-05-20T10:00:00Z"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
40
- {"name":"genexus_io","description":"IO umbrella for assets, part text exchange, screenshots, OCR. action: asset_find|asset_read|asset_write (binary asset CRUD) | export_part|import_part (object part to/from a text file) | export_unified (full object envelope JSON) | screenshot_publish (copy PNG to .gx/published-screenshots) | ocr (Tesseract stub).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["asset_find","asset_read","asset_write","export_part","import_part","export_unified","screenshot_publish","ocr"]},"path":{"type":"string","description":"asset/screenshot_publish/ocr."},"name":{"type":"string","description":"export/import/export_unified."},"outputPath":{"type":"string","description":"export_part."},"inputPath":{"type":"string","description":"import_part."},"part":{"type":"string","description":"export/import_part."},"type":{"type":"string","description":"export/import/export_unified disambiguator."},"overwrite":{"type":"boolean","description":"export_part."},"pattern":{"type":"string","description":"asset_find."},"relativeRoot":{"type":"string","description":"asset_find."},"limit":{"type":"integer","description":"asset_find."},"includeContent":{"type":"boolean","description":"asset_find."},"maxBytes":{"type":"integer","description":"asset_read."},"contentBase64":{"type":"string","description":"asset_write."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"asset_read","path":"C:\\KBs\\MyKb\\custom.xml"},{"action":"export_part","name":"Customer","part":"Source","outputPath":"C:\\tmp\\Customer.gxp"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
32
+ {"name":"genexus_browser","description":"Headless-browser verification umbrella. action=smoke (HTTP 200 + clean console), a11y (axe), wcag (caption/tooltip lint), capture (console/network/exceptions), cross (multi-engine), preview (render WebPanel + capture HTML/a11y/screenshot, optionally diff baseline). preview uses mode=render|run (default render; run auto-resolves the KB launcher, IDE F5 parity).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["smoke","a11y","wcag","capture","cross","preview"]},"name":{"type":"string","description":"WebPanel name."},"mode":{"type":"string","enum":["render","run"],"description":"preview only."},"capture":{"type":"array","items":{"type":"string"},"description":"capture|cross|preview channels: console|network|exceptions|html|a11y|screenshot."},"browsers":{"type":"array","items":{"type":"string","enum":["chrome","firefox","safari","webkit"]},"description":"cross only."},"parms":{"type":"object","description":"preview only."},"launcher":{"type":"string","description":"preview only."},"buildFirst":{"type":"boolean","description":"preview only."},"waitMs":{"type":"integer","description":"preview only."},"diffBaseline":{"type":"boolean","description":"preview only."},"updateBaseline":{"type":"boolean","description":"preview only."},"fill":{"type":"object","description":"preview only."},"click":{"type":"string","description":"preview only."},"auth":{"type":"object","description":"preview only."},"emulate":{"type":"string","enum":["iPhone12","iPhone15Pro","iPadPro","Pixel7","desktop1920","desktop1280"],"description":"preview only."},"network":{"type":"string","enum":["fast","slow3g","fast3g","offline"],"description":"preview only."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"preview","name":"WPMain"},{"action":"cross","name":"WPMain","browsers":["chrome","firefox"]}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
33
+ {"name":"genexus_db","description":"Database umbrella. action: drift_check|drift_report (Transaction↔DB schema drift) | optimize_analyze|optimize_suggest|optimize_report (static index advisor) | sql_ddl|sql_navigation (SQL for Transaction/Procedure) | sample_data (fake INSERTs) | types_list|types_describe|types_validate (Domains/SDT constraints) | translations_import.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["drift_check","drift_report","optimize_analyze","optimize_suggest","optimize_report","sql_ddl","sql_navigation","sample_data","types_list","types_describe","types_validate","translations_import"]},"name":{"type":"string","description":"Object/transaction/type name."},"trn":{"type":"string","description":"sample_data: Transaction name."},"rows":{"type":"integer","description":"sample_data: 1-1000; default 5."},"includeSubordinated":{"type":"boolean","description":"sql_ddl only."},"levelNumber":{"type":"integer","description":"sql_navigation only."},"includeExecutionPlan":{"type":"boolean","description":"sql_navigation."},"includeIndexAdvisor":{"type":"boolean","description":"sql_navigation."},"format":{"type":"string","enum":["json","markdown"],"description":"optimize_report only."},"kind":{"type":"string","enum":["domain","sdt","all"],"description":"types_list filter."},"value":{"type":"string","description":"types_validate."},"type":{"type":"string","description":"types_validate / disambiguator."},"inputPath":{"type":"string","description":"translations_import: CSV path."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"drift_check"},{"action":"sql_ddl","name":"Customer"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
34
+ {"name":"genexus_versioning","description":"Versioning umbrella. action: history_list|history_get|history_save|history_restore (snapshot store; restore+discard=true is IDE 'Discard changes' parity) | undo (revert last N edits) | time_travel (recover bytes from a past git commit) | blame (git blame an object part) | diff (text: mode=textVsText|currentVsText) | diff_generated (against=last-build|git-head).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["history_list","history_get","history_save","history_restore","undo","time_travel","blame","diff","diff_generated"]},"name":{"type":"string"},"part":{"type":"string"},"versionId":{"type":"integer"},"snapshot":{"type":"string"},"discard":{"type":"boolean"},"dryRun":{"type":"boolean"},"last":{"type":"integer","description":"undo: default 1, max 20."},"at":{"type":"string","description":"time_travel: ISO-8601 or commit sha."},"line":{"type":"integer","description":"blame: 1-based line number to annotate."},"filePath":{"type":"string","description":"blame: absolute or KB-relative file path."},"context":{"type":"integer","description":"blame: surrounding lines of context."},"mode":{"type":"string","enum":["textVsText","currentVsText"],"description":"diff."},"left":{"type":"string","description":"diff: left-side text or snapshot label."},"right":{"type":"string","description":"diff: right-side text or snapshot label."},"against":{"type":"string","enum":["last-build","git-head"],"description":"diff_generated."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"history_list","name":"Customer"},{"action":"time_travel","name":"Customer","at":"2026-05-20T10:00:00Z"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
35
+ {"name":"genexus_io","description":"IO umbrella for assets, part text exchange, screenshots, OCR. action: asset_find|asset_read|asset_write (binary asset CRUD) | export_part|import_part (object part to/from a text file) | export_unified (full object envelope JSON) | screenshot_publish (copy PNG to .gx/published-screenshots) | ocr (Tesseract stub).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["asset_find","asset_read","asset_write","export_part","import_part","export_unified","screenshot_publish","ocr"]},"path":{"type":"string","description":"asset/screenshot_publish/ocr: file path."},"name":{"type":"string","description":"export/import/export_unified: object name."},"outputPath":{"type":"string","description":"export_part: destination file path."},"inputPath":{"type":"string","description":"import_part: source file path."},"part":{"type":"string","description":"export/import_part: part name (e.g. Source)."},"type":{"type":"string","description":"export/import/export_unified disambiguator."},"overwrite":{"type":"boolean","description":"export_part: overwrite if exists."},"pattern":{"type":"string","description":"asset_find: glob pattern."},"relativeRoot":{"type":"string","description":"asset_find: root for relative paths."},"limit":{"type":"integer","description":"asset_find: max results."},"includeContent":{"type":"boolean","description":"asset_find: inline file content."},"maxBytes":{"type":"integer","description":"asset_read: max bytes to return."},"contentBase64":{"type":"string","description":"asset_write: base64-encoded file content."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"asset_read","path":"C:\\KBs\\MyKb\\custom.xml"},{"action":"export_part","name":"Customer","part":"Source","outputPath":"C:\\tmp\\Customer.gxp"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
41
36
  {"name":"genexus_variable","description":"Variables part CRUD. action: add | delete (idempotent; refuses GAM/WWP+ framework-managed vars) | modify (atomically change type; preserves name+description). async=true returns an operationId for lifecycle polling. dryRun=true previews the change without persisting. varName required for all; typeName required for add+modify.","inputSchema":{"type":"object","required":["action","name","varName"],"properties":{"action":{"type":"string","enum":["add","delete","modify"]},"name":{"type":"string"},"varName":{"type":"string"},"typeName":{"type":"string"},"basedOn":{"type":"string","description":"modify optional: Domain."},"dryRun":{"type":"boolean","default":false,"description":"When true, returns what would change without persisting."},"async":{"type":"boolean","description":"Run as a background job. Result returns operationId/job_id for genexus_lifecycle polling."},"estimated_seconds":{"type":"integer","description":"When async=true, expected runtime used for progress/job metadata (default 30)."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"add","name":"MyPanel","varName":"&Choice","typeName":"Numeric"},{"action":"delete","name":"MyPanel","varName":"&OldVar"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
42
- {"name":"genexus_telemetry","description":"Observability umbrella. action: executions (recent invocations) | watch_event (ops mentioning an event) | friction_append|friction_tail (.gx/friction.jsonl) | learning_report (aggregate friction) | logs (worker_debug.log tail) | profile_analyze|profile_hotspots|profile_correlate (GeneXus profiler XML).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["executions","watch_event","friction_append","friction_tail","learning_report","logs","profile_analyze","profile_hotspots","profile_correlate"]},"target":{"type":"string"},"event":{"type":"string","description":"watch_event."},"last":{"type":"integer","description":"executions/watch_event."},"tool":{"type":"string","description":"friction_append."},"message":{"type":"string","description":"friction_append."},"severity":{"type":"string","enum":["info","warn","error","critical"],"description":"friction_append."},"n":{"type":"integer","description":"friction_tail."},"since":{"type":"string","description":"learning_report/logs."},"until":{"type":"string","description":"learning_report."},"tail":{"type":"integer","description":"logs."},"filterCorrelation":{"type":"string","description":"logs."},"grep":{"type":"string","description":"logs."},"path":{"type":"string","description":"profile_*."},"top":{"type":"integer","description":"profile_hotspots."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"executions"},{"action":"friction_tail","n":20}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
37
+ {"name":"genexus_telemetry","description":"Observability umbrella. action: executions (recent invocations) | watch_event (ops mentioning an event) | friction_append|friction_tail (.gx/friction.jsonl) | learning_report (aggregate friction) | logs (worker_debug.log tail) | profile_analyze|profile_hotspots|profile_correlate (GeneXus profiler XML).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["executions","watch_event","friction_append","friction_tail","learning_report","logs","profile_analyze","profile_hotspots","profile_correlate"]},"target":{"type":"string","description":"executions/watch_event: object name to filter."},"event":{"type":"string","description":"watch_event: event name to match in operation payload."},"last":{"type":"integer","description":"executions/watch_event: max results."},"tool":{"type":"string","description":"friction_append: tool name that produced the friction entry."},"message":{"type":"string","description":"friction_append: description of the friction encountered."},"severity":{"type":"string","enum":["info","warn","error","critical"],"description":"friction_append: severity level."},"n":{"type":"integer","description":"friction_tail: number of recent lines to return."},"since":{"type":"string","description":"learning_report/logs: ISO-8601 start time filter."},"until":{"type":"string","description":"learning_report: ISO-8601 end time filter."},"tail":{"type":"integer","description":"logs: number of tail lines from worker_debug.log."},"filterCorrelation":{"type":"string","description":"logs: filter by correlation/operation ID."},"grep":{"type":"string","description":"logs: substring filter on log lines."},"path":{"type":"string","description":"profile_*: path to the GeneXus profiler XML file."},"top":{"type":"integer","description":"profile_hotspots: top-N hottest procedures to return."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"executions"},{"action":"friction_tail","n":20}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
43
38
  {"name":"genexus_create","description":"Creation umbrella. action: object (Transaction/Procedure/WebPanel/SDT/Domain/Dashboard; Domain takes dataType+length or enumValues; NOT WWP — use genexus_apply_pattern) | popup (popup WebPanel with Form type='layout' body) | sd_panel_create|sd_panel_inspect|sd_panel_edit | save_as (clone parts) | scaffold|translate|sample (forge) | template (kpi_header|empty_state|confirm_dialog).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["object","popup","sd_panel_create","sd_panel_inspect","sd_panel_edit","save_as","scaffold","translate","sample","template"]},"type":{"type":"string"},"name":{"type":"string"},"newName":{"type":"string","description":"save_as."},"description":{"type":"string"},"dataType":{"type":"string","description":"object Domain."},"length":{"type":"integer","description":"object Domain."},"decimals":{"type":"integer","description":"object Domain."},"signed":{"type":"boolean","description":"object Domain."},"basedOn":{"type":"string","description":"object Domain."},"enumValues":{"type":"array","items":{"type":"object"},"description":"object Domain enum."},"spec":{"type":"object","description":"popup."},"part":{"type":"string","description":"sd_panel_edit/template."},"content":{"type":"string","description":"sd_panel_edit/scaffold/translate."},"includePatternInstance":{"type":"boolean","description":"save_as."},"overwrite":{"type":"boolean","description":"save_as."},"dryRun":{"type":"boolean","description":"popup/save_as/template/object."},"template":{"type":"string","enum":["kpi_header","empty_state","confirm_dialog"],"description":"template."},"args":{"type":"object","description":"template."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"object","name":"NewPanel","type":"WebPanel"},{"action":"popup","name":"MyPopup","spec":{"host":"Customer"}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}}
44
39
  ]
Binary file