genexus-mcp 3.12.0 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli/run.test.js CHANGED
@@ -88,7 +88,7 @@ function stopLingeringGatewayStubs(dirPath, deps = {}) {
88
88
  const escapedDir = canonicalDir.replace(/'/g, "''");
89
89
  const processPipeline = [
90
90
  `Get-CimInstance Win32_Process -Filter "Name = 'GxMcp.Gateway.exe'"`,
91
- 'Where-Object { if (-not $_.ExecutablePath -or -not $targetDirectory) { return $false }; $processDirectory = (Get-Item -LiteralPath ([System.IO.Path]::GetDirectoryName($_.ExecutablePath)) -ErrorAction SilentlyContinue).FullName; $processDirectory -and [System.StringComparer]::OrdinalIgnoreCase.Equals($processDirectory, $targetDirectory) }',
91
+ 'Where-Object { if (-not $targetDirectory) { return $false }; $imagePath = $_.ExecutablePath; if (-not $imagePath) { $imagePath = (Get-Process -Id $_.ProcessId -ErrorAction SilentlyContinue).Path }; if (-not $imagePath) { return $false }; $processDirectory = (Get-Item -LiteralPath ([System.IO.Path]::GetDirectoryName($imagePath)) -ErrorAction SilentlyContinue).FullName; $processDirectory -and [System.StringComparer]::OrdinalIgnoreCase.Equals($processDirectory, $targetDirectory) }',
92
92
  'ForEach-Object { $processId = $_.ProcessId; Stop-Process -Id $processId -Force; try { Wait-Process -Id $processId -Timeout 5 -ErrorAction SilentlyContinue } catch { } }'
93
93
  ].join(' | ');
94
94
  const script = `$ErrorActionPreference = 'SilentlyContinue'; $targetDirectory = (Get-Item -LiteralPath '${escapedDir}' -ErrorAction SilentlyContinue).FullName; ${processPipeline}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genexus-mcp",
3
- "version": "3.12.0",
3
+ "version": "3.13.0",
4
4
  "mcpName": "io.github.lennix1337/genexus",
5
5
  "description": "GeneXus 16, GeneXus 17, GeneXus 18 MCP server with native SDK support; basic legacy compatibility for GeneXus Evolution 3, GeneXus Evolution 2, GeneXus Evolution 1, GeneXus 15, GeneXus 9.0, GeneXus 8.0 via com-gxpublic and dotnet-reflection drivers — read, edit, and analyze Knowledge Base objects directly from Claude, Cursor, and other AI agents over the Model Context Protocol.",
6
6
  "keywords": [
@@ -7,7 +7,7 @@
7
7
  "targets": {
8
8
  ".NETCoreApp,Version=v10.0": {},
9
9
  ".NETCoreApp,Version=v10.0/win-x64": {
10
- "GxMcp.Gateway/3.12.0": {
10
+ "GxMcp.Gateway/3.13.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/3.12.0": {
69
+ "GxMcp.Gateway/3.13.0": {
70
70
  "type": "project",
71
71
  "serviceable": false,
72
72
  "sha512": ""
Binary file
Binary file
@@ -1,19 +1,19 @@
1
1
  {
2
- "GatewayMode": "stdio-isolated",
3
- "GeneXus": {
4
- "WorkerExecutable": "worker\\\\GxMcp.Worker.exe",
5
- "InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18"
6
- },
7
- "Environment": {
8
- "ResolutionPolicy": "strict"
9
- },
10
2
  "Server": {
3
+ "WorkerIdleTimeoutMinutes": 5,
4
+ "McpStdio": true,
11
5
  "SessionIdleTimeoutMinutes": 10,
12
- "HttpPort": 0,
13
6
  "EmitStructuredContent": false,
14
- "McpStdio": true,
15
7
  "TerseResponses": true,
16
- "WorkerIdleTimeoutMinutes": 5
8
+ "HttpPort": 0
9
+ },
10
+ "ConfigSchemaVersion": 2,
11
+ "GatewayMode": "stdio-isolated",
12
+ "Environment": {
13
+ "ResolutionPolicy": "strict"
17
14
  },
18
- "ConfigSchemaVersion": 2
15
+ "GeneXus": {
16
+ "WorkerExecutable": "worker\\\\GxMcp.Worker.exe",
17
+ "InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18"
18
+ }
19
19
  }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": "gxmcp-release-manifest/1",
3
- "version": "3.12.0",
4
- "sourceCommit": "c5b031b020339e26d61d6197380788df00d45197",
3
+ "version": "3.13.0",
4
+ "sourceCommit": "8bba8d7aad9deca27d9d88c77e762dd2244bcdc4",
5
5
  "sourceCommitPolicy": "exact-tag",
6
- "generatedAtUtc": "2026-10-06T19:14:16.5398713Z",
6
+ "generatedAtUtc": "2026-10-09T03:33:43.9652493Z",
7
7
  "runtime": {
8
8
  "gateway": "net10.0-windows",
9
9
  "worker": "net48-x86",
@@ -15,33 +15,33 @@
15
15
  "2026-07-28"
16
16
  ],
17
17
  "schema": "tool_definitions.json",
18
- "schemaSha256": "52ce980fd10aa67e97679cd0772b4451274f0dd0d850f779cb30a639a59b9465",
18
+ "schemaSha256": "31c512cdf76eff834cc18ebe4be520b8b83fb403166be18f29f60155e1008c97",
19
19
  "provenance": "gxmcp-sbom.json",
20
20
  "artifacts": [
21
21
  {
22
22
  "path": "gxmcp-sbom.json",
23
23
  "size": 591,
24
- "sha256": "8c9375eb3dc0f007ce44d5bcfb12ee0c939e8a6d54fc340e7af74f3803e64ccd"
24
+ "sha256": "a069f947d964d1b37715d94a9c0578099d5e3cd35397f8c4a241cb09c4ce6c11"
25
25
  },
26
26
  {
27
27
  "path": "GxMcp.Gateway.exe",
28
28
  "size": 162304,
29
- "sha256": "1bdb514e5b1b668efc7eca6641babf77c07eb05e76d4cd63b3a5b74280710af3"
29
+ "sha256": "ab9e22cd74d8e968126a7da384ef273196ebf4d9e55ee1c5ad0f18e574b91358"
30
30
  },
31
31
  {
32
32
  "path": "nexus-ide.vsix",
33
33
  "size": 1319958,
34
- "sha256": "f7a352625302bacc02bbda8cdb8eaea60fa18634ee47fb93e6ff8b3d01dfce63"
34
+ "sha256": "81460e8ad868007ebcf04f802f1dd6b3b625bb3813fe6dcf1c7cc3daee050bc1"
35
35
  },
36
36
  {
37
37
  "path": "tool_definitions.json",
38
- "size": 143463,
39
- "sha256": "52ce980fd10aa67e97679cd0772b4451274f0dd0d850f779cb30a639a59b9465"
38
+ "size": 147102,
39
+ "sha256": "31c512cdf76eff834cc18ebe4be520b8b83fb403166be18f29f60155e1008c97"
40
40
  },
41
41
  {
42
42
  "path": "worker/GxMcp.Worker.exe",
43
- "size": 4074496,
44
- "sha256": "2eaf21396d10dd46000bc11a6d228ddd63700efc67aa2e5aa7f52de7a512b543"
43
+ "size": 4143104,
44
+ "sha256": "bf3285f0a043276c39a5f118ffc7f1d56a736b6fdbd3413a17620bf4b92fc96e"
45
45
  }
46
46
  ]
47
47
  }
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "schemaVersion": "gxmcp-provenance/1",
3
- "version": "3.12.0",
4
- "sourceCommit": "c5b031b020339e26d61d6197380788df00d45197",
3
+ "version": "3.13.0",
4
+ "sourceCommit": "8bba8d7aad9deca27d9d88c77e762dd2244bcdc4",
5
5
  "sourceCommitPolicy": "exact-tag",
6
6
  "components": [
7
7
  {
8
8
  "name": "genexus-mcp",
9
9
  "lockfile": "package-lock.json",
10
10
  "size": 38806,
11
- "sha256": "211df51c0afef5c5613ae807fdb10032f72d9c027fb69a26908ad0f2a46760ff"
11
+ "sha256": "6e541b2627b496630c928de3856e3bbd14b8d682f05fe8acad17a31205ba0d7e"
12
12
  },
13
13
  {
14
14
  "name": "nexus-ide",
15
15
  "lockfile": "src/nexus-ide/package-lock.json",
16
16
  "size": 267538,
17
- "sha256": "a486349d82a3322c4ec34d5af433497a5ec8603ecb31caa59ea0c0f23d96b481"
17
+ "sha256": "f16469901322693f6f2fa4e4babbbfc9ef28b15a0867362731641e25fed47d81"
18
18
  }
19
19
  ]
20
20
  }
Binary file
@@ -1,4 +1,5 @@
1
1
  [
2
+ {"name":"genexus_k2b_designer","description":"Inspect and edit an already-active K2B WebPanel Designer through the open GeneXus IDE document. The IDE bridge must be installed and started with the same explicit KB and pipe. No inactive Designer activation or pattern conversion is performed. Edits require expectedVersion; preview returns a read-only change summary; saves use the native IDE path and should be independently reread.","inputSchema":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","description":"Name of an open WebPanel with an active K2B Designer."},"action":{"type":"string","enum":["inspect","tree","preview","set_property","add_node","move_node","remove_node"],"default":"inspect","description":"Inspect the active Designer, read its tree, preview a change, or apply a typed edit."},"operation":{"type":"string","enum":["set_property","add_node","move_node","remove_node"],"description":"Mutation to validate when action=preview."},"path":{"type":"string","description":"Designer node path returned by tree; root is root."},"property":{"type":"string","description":"Exact SDK property name for set_property."},"value":{"type":"string","description":"Property value in the K2B SDK string format."},"nodeType":{"type":"string","description":"SDK node type offered by the Designer for add_node."},"destination":{"type":"string","description":"Parent node path for move_node."},"index":{"type":"integer","minimum":0,"description":"Optional destination child index for move_node."},"expectedVersion":{"type":"string","description":"Version from inspect, tree, or preview; required for mutations."},"confirm":{"type":"boolean","description":"Required for remove_node."},"kb":{"type":"string","description":"Explicit KB alias."}},"examples":[{"name":"SamplePanel","action":"tree"},{"name":"SamplePanel","action":"preview","operation":"set_property","path":"root","property":"Title","value":"Orders"},{"name":"SamplePanel","action":"set_property","path":"root","property":"Title","value":"Orders","expectedVersion":"<version from preview>"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
2
3
  {"name":"genexus_data_view","description":"Native, typed, atomic Transaction + Data View authoring over an existing physical table. action=inspect|dry_run|create|update|delete. dry_run performs validation without constructing or saving SDK objects. create/update persist the root-only Transaction and Data View, then reread and verify the committed pair; commit and verification status are reported separately. action=delete is destructive and requires confirm=true when dryRun=false. No action implicitly runs Specify, Generate, Build, Rebuild, Reorg, compilation, publish, execution, or tests; the response includes a no-DDL reorg preview.","inputSchema":{"type":"object","required":["action","transaction","dataViewName"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["inspect","dry_run","create","update","delete"],"description":"Operation to inspect, preview, create, update, or delete a native Data View mapping."},"transaction":{"type":"string","description":"Root-only Transaction name."},"dataViewName":{"type":"string","description":"Data View name associated with the Transaction logical table."},"dataStore":{"type":"string","description":"Existing GeneXus data store category (default Default)."},"schema":{"type":"string","description":"Existing physical schema."},"table":{"type":"string","description":"Existing physical table and GeneXus table-metadata name."},"attributeMappings":{"type":"array","items":{"type":"object","required":["attribute","column"],"additionalProperties":false,"properties":{"attribute":{"type":"string"},"column":{"type":"string"},"key":{"type":"boolean","default":false}}}},"updatable":{"type":"boolean","default":true},"expectedVersion":{"type":"string","description":"Optimistic concurrency token returned by inspect/dry_run/create/update/delete preview."},"dryRun":{"type":"boolean","default":false,"description":"Forces every action to remain read-only; create/update validate their complete definition and delete returns a deletion preview."},"confirm":{"type":"boolean","description":"Required for action=delete when dryRun=false; explicitly authorizes removing the Transaction and Data View."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Atomic SDK rollback is always enforced; this flag records the caller's rollback intent."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"dry_run","transaction":"LedgerEntryView","dataViewName":"LedgerEntryDV","dataStore":"Default","schema":"APP","table":"LEDGERENTRY","updatable":true,"attributeMappings":[{"attribute":"LedgerEntryId","column":"LedgerEntryId","key":true},{"attribute":"LedgerEntryAmount","column":"LedgerEntryAmount"}],"rollbackOnFailure":true},{"action":"delete","transaction":"LedgerEntryView","dataViewName":"LedgerEntryDV","confirm":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
3
4
  {"name":"genexus_whoami","description":"KB context + version + health (worker/index/database) + next-step hints. Call FIRST every session. Lean by default; pass verbose=true ONCE for the inline playbooks + skills catalog of verified GeneXus reference resources (navigation, GAM, SD panel, WebPanel events). For a minimal connection+index health check use genexus_doctor.","inputSchema":{"type":"object","properties":{"verbose":{"type":"boolean","description":"Include the static playbooks + skills catalog + per-tool stats/heatmap. Default false (lean health payload)."}},"additionalProperties":false,"examples":[{},{"verbose":true}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
4
5
  {"name":"genexus_recipe","description":"Named playbooks + self-extending macros. action=list|describe|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","suggest_macro","crystallize"],"description":"list: show recipes; describe: inspect recipe; suggest_macro: detect repeated sequences; crystallize: save sequence as 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."},"steps":{"type":"array","items":{"type":"object","description":"Tool call step object or template."},"description":"crystallize: ordered array of tool call steps to include in the macro."}},"examples":[{"name":"list"},{"name":"wwp_on_transaction"},{"action":"suggest_macro"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
@@ -18,9 +19,9 @@
18
19
  {"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}},
19
20
  {"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}},
20
21
  {"name":"genexus_gam","description":"GAM / integrated-security provisioning via the SDK's IIntegratedSecurityService — distinct from genexus_security (env-scan/regex audit). action=status (default) is read-only: IsEnabledIntegratedSecurity + GAM-DB-reorganize flag. action=define_api / action=deploy are DESTRUCTIVE — they create/alter GAM security tables in the KB's datastore; no default reaches them, action must be set explicitly.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["status","define_api","deploy"],"description":"status (default, read-only) | define_api | deploy."},"force":{"type":"boolean","description":"define_api only: force flag passed to DefineAPI."},"forceTableCreation":{"type":"boolean","description":"deploy only: force GAM table creation."},"rebuild":{"type":"boolean","description":"deploy only: rebuild flag."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"status"},{"action":"deploy","forceTableCreation":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
21
- {"name":"genexus_properties","description":"Properties API. get supports ordered batches (max 100, per-item errors). move is transactional with concurrency checks and rollback; it never runs lifecycle/tests. Use genexus_layout for controls.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get","set","move"],"description":"Object-property operation to read or change metadata or move the object."},"name":{"type":"string"},"targets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name"],"additionalProperties":false},"description":"action=get: read up to 100 objects in input order."},"type":{"type":"string","description":"Optional object type disambiguator; used when a batch item omits type."},"control":{"type":"string","description":"Optional layout control, variable (&Name), or attribute."},"propertyName":{"type":"string","description":"get: property name/list/wildcard filter; set: property to change."},"propertyNames":{"type":"array","items":{"type":"string"},"description":"action=get: list of property names to return."},"query":{"type":"string","description":"get: substring or * wildcard filter for property names."},"projection":{"type":"string","enum":["minimal","standard","full"],"description":"action=get: compact property subset (minimal, standard, full). Defaults to full."},"value":{"type":"string"},"properties":{"type":"object","description":"Batch set: map of propertyName to value applied in 1 transaction."},"destination":{"type":"string","description":"move: target Folder/Module name (auto-detects kind)."},"targetModule":{"type":"string","description":"move: typed alias for a Module destination."},"folder":{"type":"string","description":"move: destination alias with Folder kind."},"module":{"type":"string","description":"move: destination alias with Module kind."},"destKind":{"type":"string","enum":["Folder","Module"],"description":"move: disambiguate when a Folder and Module share a name."},"dryRun":{"type":"boolean","description":"move: preview from/to and preserved parts without persisting."},"baseVersion":{"type":"string","description":"move: opaque optimistic concurrency token returned by a prior read."},"validationMode":{"type":"string","enum":["specify"],"description":"set: run inline Specify (Spec+Gen, no Compile); returns diagnostics and can roll back on failure."},"rollbackOnFailure":{"type":"boolean","description":"move: attempt compensating snapshot restoration if the SDK transaction rollback is insufficient (default true). set+validationMode=specify: request rollback after validation failure."},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"get","name":"MyPanel","propertyName":"Description"},{"action":"get","name":"MyDomain","query":"*Type*"},{"action":"get","name":"MyDomain","projection":"minimal"},{"action":"get","targets":[{"name":"ProcA","type":"Procedure"},{"name":"ProcB","type":"Procedure"}],"query":"*Main*"},{"action":"move","name":"InvoiceHelper","type":"Procedure","targetModule":"operacional","baseVersion":"<versionToken from genexus_read>","dryRun":true,"rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
22
- {"name":"genexus_structure","description":"Read or write the structure/data-model of GeneXus objects. update_visual now snapshots every part, checks optimistic concurrency, saves and re-reads the Transaction, and restores the complete snapshot when persistence or authored-part verification fails. Default form projections are allowed to follow Structure; user-authored forms are invariant. No structure action implicitly runs Specify, Generate, Build, Rebuild, compilation, reorganization, execution, or tests. Other actions cover indexes, attributes (set_attribute operates on global attribute definitions; use update_visual/move_attribute/remove_attribute for Transaction structure), levels, Domains (including enumValues), SubType Groups and subtype consistency (check_subtypes). For layout control trees use genexus_layout.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get_visual","update_visual","get_indexes","create_index","drop_index","set_attribute","set_level","set_domain","get_logic","update_group","move_attribute","remove_attribute","check_subtypes"],"description":"Structure operation to execute."},"name":{"type":"string","description":"Object name. update_visual/move_attribute: Transaction name; create_index/get_indexes: Transaction or Table name."},"module":{"type":"string","description":"update_visual/move_attribute optional: Transaction module."},"attribute":{"type":"string","description":"move_attribute: existing attribute to reorder by native SDK identity."},"before":{"type":"string","description":"move_attribute: place attribute before this attribute in the same level. Mutually exclusive with after/position."},"after":{"type":"string","description":"move_attribute: place attribute after this attribute in the same level. Mutually exclusive with before/position."},"position":{"type":"integer","minimum":0,"description":"move_attribute: zero-based final attribute position in the level. Mutually exclusive with before/after."},"level":{"type":"string","description":"move_attribute: root (default) or an unambiguous subordinate level name."},"levelPath":{"type":"array","items":{"type":"string"},"description":"move_attribute: nested level path, e.g. [\"Item\",\"Operation\"]."},"dryRun":{"type":"boolean","default":false,"description":"update_visual/move_attribute/create_index: validate and return the projected diff without changing any object, Attribute, hash, or version."},"baseVersion":{"type":"string","description":"Optimistic-concurrency token for update_visual/move_attribute/create_index. Stale state returns VersionConflict before mutation."},"expectedVersion":{"type":"string","description":"Alias of baseVersion for update_visual."},"payload":{"type":"object","description":"update_visual (Transaction):{children:[...]}; update_visual (SDT):{isCollection?,collectionItemName?,children:[{name,type?,length?,decimals?,basedOnDomain?,basedOnAttribute?,isCollection?,isLevel?,children?}]}. update_group:{members:[{name,subtypeOf}],remove?:[name]}. create_index:{attributes:[\"Attr\"],unique?:true,name?,order?:\"Ascending\"|\"Descending\"}. Other actions keep their existing typed payloads."},"validationMode":{"type":"string","enum":["specify"],"description":"Explicitly run the inline Specify pass after selected writes. Never runs unless requested."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"update_visual, move_attribute and create_index capture snapshots and verify rollback after any save or re-read divergence."},"kb":{"type":"string","description":"KB alias."},"type":{"type":"string","description":"Optional object type disambiguator (e.g. 'Transaction', 'Table') when multiple objects share the same name."}},"required":["action","name"],"examples":[{"action":"update_visual","name":"OrderRecord","module":"Operations","dryRun":true,"expectedVersion":"<versionToken>","payload":{"children":[{"name":"OrderId"},{"name":"OrderAverageTime"}]}},{"action":"move_attribute","name":"SampleTransaction","attribute":"SampleSubtypeId","after":"SampleReferenceId","level":"root","dryRun":true},{"action":"get_indexes","name":"Customer"},{"action":"create_index","name":"Country","dryRun":true,"baseVersion":"<get_indexes versionToken>","payload":{"name":"UCountryName","attributes":["CountryName"],"unique":true},"rollbackOnFailure":true},{"action":"set_attribute","name":"CustomerBalance","payload":{"formula":"sum(SampleTransactionAmount)"}},{"action":"set_level","name":"Customer","payload":{"descriptionAttribute":"CustomerName"}},{"action":"update_group","name":"SampleSubtypeGroup","payload":{"members":[{"name":"SampleId","subtypeOf":"BaseId"}]}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
23
- {"name":"genexus_authoring","description":"Author members of object types the structure DSL doesn't cover. add_external_method / add_external_property add a method (with parameters) or property to an External Object; add_menu_option adds an option to a Menu (target = a KB object to call); add_condition adds a filter expression to a Data Selector. name = the target object.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["add_external_method","add_external_property","add_menu_option","add_condition"],"description":"Authoring operation to add a typed member or condition to a supported object."},"name":{"type":"string","description":"ExternalObject / Menu / DataSelector name."},"payload":{"type":"object","description":"add_external_method:{name,returnType?,parameters?:[{name,type?,inout?}]}. add_external_property:{name,type?}. add_menu_option:{description,target?,optionCode?}. add_condition:{source}."},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"add_external_property","name":"MyExternalObject","payload":{"name":"apiKey","type":"Character"}},{"action":"add_menu_option","name":"MainMenu","payload":{"description":"Customers","target":"CustomerWW"}},{"action":"add_condition","name":"ActiveCustomers","payload":{"source":"CustomerActive = True"}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
22
+ {"name":"genexus_properties","description":"Properties API. get can reconcile a timed-out property write by a fresh typed read. set supports dryRun, expectedVersion, post-save verification and rollback; move is transactional. No lifecycle/tests. Use genexus_layout for controls.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get","set","move"],"description":"Object-property operation to read or change metadata or move the object."},"name":{"type":"string"},"targets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name"],"additionalProperties":false},"description":"action=get: read up to 100 objects in input order."},"type":{"type":"string","description":"Optional object type disambiguator; used when a batch item omits type."},"control":{"type":"string","description":"Optional layout control, variable (&Name), or attribute."},"propertyName":{"type":"string","description":"get: property name/list/wildcard filter; set: property to change."},"propertyNames":{"type":"array","items":{"type":"string"},"description":"action=get: list of property names to return."},"query":{"type":"string","description":"get: substring or * wildcard filter for property names."},"projection":{"type":"string","enum":["minimal","standard","full"],"description":"action=get: compact property subset (minimal, standard, full). Defaults to full."},"value":{"type":"string"},"properties":{"type":"object","description":"Batch set: map of propertyName to value applied in 1 transaction."},"destination":{"type":"string","description":"move: target Folder/Module name (auto-detects kind)."},"targetModule":{"type":"string","description":"move: typed alias for a Module destination."},"folder":{"type":"string","description":"move: destination alias with Folder kind."},"module":{"type":"string","description":"move: destination alias with Module kind."},"destKind":{"type":"string","enum":["Folder","Module"],"description":"move: disambiguate when a Folder and Module share a name."},"dryRun":{"type":"boolean","description":"set/move: preview without persisting."},"baseVersion":{"type":"string","description":"set/move: opaque optimistic concurrency token returned by a prior read."},"expectedVersion":{"type":"string","description":"set: versionToken from an authoritative properties read; rejects a concurrent change."},"reconcileTimedOutWrite":{"type":"boolean","description":"get: fresh typed read; clear timeout fence only after all affected values and versionToken."},"validationMode":{"type":"string","enum":["specify"],"description":"set: run inline Specify (Spec+Gen, no Compile); returns diagnostics and can roll back on failure."},"rollbackOnFailure":{"type":"boolean","description":"set: required true; restore and verify snapshot on failure. move: compensating restoration (default true)."},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"get","name":"MyPanel","propertyName":"Description"},{"action":"get","name":"MyDomain","query":"*Type*"},{"action":"get","name":"MyDomain","projection":"minimal"},{"action":"get","targets":[{"name":"ProcA","type":"Procedure"},{"name":"ProcB","type":"Procedure"}],"query":"*Main*"},{"action":"move","name":"InvoiceHelper","type":"Procedure","targetModule":"operacional","baseVersion":"<versionToken from genexus_read>","dryRun":true,"rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
23
+ {"name":"genexus_structure","description":"Read or write the structure/data-model of GeneXus objects. update_visual requires expectedVersion for SDT writes. SDT mode=replace previews omitted members as removals and requires allowRemoval=true to delete them; mode=add inserts members without rebuilding existing ones. Both paths verify persisted structure and attempt rollback on divergence. Transaction writes retain their complete-snapshot verification. Default form projections are allowed to follow Structure; user-authored forms are invariant. No structure action implicitly runs Specify, Generate, Build, Rebuild, compilation, reorganization, execution, or tests. Other actions cover indexes, attributes (set_attribute operates on global attribute definitions; use update_visual/move_attribute/remove_attribute for Transaction structure), levels, Domains (including enumValues), SubType Groups and subtype consistency (check_subtypes). For layout control trees use genexus_layout.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get_visual","update_visual","get_indexes","create_index","drop_index","set_attribute","set_level","set_domain","get_logic","update_group","move_attribute","remove_attribute","check_subtypes"],"description":"Structure operation to execute."},"name":{"type":"string","description":"Object name. update_visual: Transaction or SDT name; move_attribute: Transaction name; create_index/get_indexes: Transaction or Table name."},"module":{"type":"string","description":"update_visual/move_attribute optional: Transaction module."},"attribute":{"type":"string","description":"move_attribute: existing attribute to reorder by native SDK identity."},"before":{"type":"string","description":"move_attribute: place attribute before this attribute in the same level. Mutually exclusive with after/position."},"after":{"type":"string","description":"move_attribute: place attribute after this attribute in the same level. Mutually exclusive with before/position."},"position":{"type":"integer","minimum":0,"description":"move_attribute: zero-based final attribute position in the level. Mutually exclusive with before/after."},"level":{"type":"string","description":"move_attribute: root (default) or an unambiguous subordinate level name."},"levelPath":{"type":"array","items":{"type":"string"},"description":"move_attribute: nested level path, e.g. [\"Item\",\"Operation\"]."},"dryRun":{"type":"boolean","default":false,"description":"update_visual/move_attribute/create_index: validate and return the projected diff without changing any object, Attribute, hash, or version."},"baseVersion":{"type":"string","description":"Optimistic-concurrency token for update_visual/move_attribute/create_index. Stale state returns VersionConflict before mutation."},"expectedVersion":{"type":"string","description":"Alias of baseVersion for update_visual; required for SDT writes."},"payload":{"type":"object","description":"update_visual (Transaction):{children:[...]}; update_visual (SDT):{mode?:\"replace\"|\"add\",allowRemoval?:boolean,isCollection?,collectionItemName?,children:[{name,type?,length?,decimals?,basedOnDomain?,basedOnAttribute?,isCollection?,isLevel?,children?}]}. update_group:{members:[{name,subtypeOf}],remove?:[name]}. create_index:{attributes:[\"Attr\"],unique?:true,name?,order?:\"Ascending\"|\"Descending\"}. Other actions keep their existing typed payloads."},"validationMode":{"type":"string","enum":["specify"],"description":"Explicitly run the inline Specify pass after selected writes. Never runs unless requested."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"update_visual, move_attribute and create_index capture snapshots and verify rollback after any save or re-read divergence."},"kb":{"type":"string","description":"KB alias."},"type":{"type":"string","description":"Optional object type disambiguator (e.g. 'Transaction', 'Table') when multiple objects share the same name."}},"required":["action","name"],"examples":[{"action":"update_visual","name":"OrderRecord","module":"Operations","dryRun":true,"expectedVersion":"<versionToken>","payload":{"children":[{"name":"OrderId"},{"name":"OrderAverageTime"}]}},{"action":"move_attribute","name":"SampleTransaction","attribute":"SampleSubtypeId","after":"SampleReferenceId","level":"root","dryRun":true},{"action":"get_indexes","name":"Customer"},{"action":"create_index","name":"Country","dryRun":true,"baseVersion":"<get_indexes versionToken>","payload":{"name":"UCountryName","attributes":["CountryName"],"unique":true},"rollbackOnFailure":true},{"action":"set_attribute","name":"CustomerBalance","payload":{"formula":"sum(SampleTransactionAmount)"}},{"action":"set_level","name":"Customer","payload":{"descriptionAttribute":"CustomerName"}},{"action":"update_group","name":"SampleSubtypeGroup","payload":{"members":[{"name":"SampleId","subtypeOf":"BaseId"}]}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
24
+ {"name":"genexus_authoring","description":"Author members of object types the structure DSL doesn't cover. add_external_method / add_external_property add a method (with parameters) or property to an External Object; add_menu_option adds an option to a Menu (target = a KB object to call); add_condition adds a filter expression to a Data Selector. name = the target object.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["add_external_method","add_external_property","add_menu_option","add_condition"],"description":"Authoring operation to add a typed member or condition to a supported object."},"name":{"type":"string","description":"ExternalObject / Menu / DataSelector name."},"payload":{"type":"object","description":"add_external_method:{name,externalName?,returnType?,dryRun?,expectedVersion?,parameters?:[{name,type?,length?,decimals?,inout?,externalName?}]} (in|out|inout). Save verified, repeats unchanged. Other actions: {name,type?}|{description,target?,optionCode?}|{source}."},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"add_external_property","name":"MyExternalObject","payload":{"name":"apiKey","type":"Character"}},{"action":"add_menu_option","name":"MainMenu","payload":{"description":"Customers","target":"CustomerWW"}},{"action":"add_condition","name":"ActiveCustomers","payload":{"source":"CustomerActive = True"}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
24
25
  {"name":"genexus_layout","description":"Layout/WebForm: get_tree, set_property, find_controls, inspect_surface, scan_mutators. Properties: genexus_properties; structure: 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","delete_printblock","add_report_control","move_report_control","remove_report_control","list_controls","design_system"],"description":"Layout/WebForm operation to perform."},"name":{"type":"string","description":"Target object name (WebPanel, Transaction, Procedure)."},"control":{"type":"string","description":"Control name within the layout or WebForm."},"propertyName":{"type":"string","description":"Property name to modify (e.g. Caption, Visible, Enabled, Class)."},"value":{"type":"string","description":"Value to assign to the specified property."},"query":{"type":"string","description":"find_controls: search query matching control names or captions."},"changes":{"type":"array","description":"set_properties: batch array of {control, propertyName, value} objects.","items":{"type":"object","properties":{"control":{"type":"string","description":"Control name."},"propertyName":{"type":"string","description":"Property name."},"value":{"type":"string","description":"Property value."}},"required":["control","propertyName","value"]}},"limit":{"type":"integer","description":"find_controls/list_controls: maximum results to return."},"currentName":{"type":"string","description":"rename_printblock: existing printblock name."},"newName":{"type":"string","description":"rename_printblock: new printblock name."},"printBlockName":{"type":"string","description":"add_printblock/delete_printblock: name of the printblock."},"appendPrintToSource":{"type":"boolean","description":"add_printblock: also insert `print <printBlockName>` into the Procedure Source (default true). Set false to leave Source untouched."},"height":{"type":"integer","description":"add_printblock: height of the new printblock; report controls use the same field for control height."},"kind":{"type":"string","enum":["variable","attribute","label","line","box","image"],"description":"add_report_control: report control kind."},"controlName":{"type":"string","description":"add/move/remove_report_control: stable report control name."},"controlType":{"type":"string","description":"Optional native report control type override."},"binding":{"type":"string","description":"add_report_control: variable (&Name) or attribute binding for variable/attribute controls."},"caption":{"type":"string","description":"add_report_control: label text for label controls."},"left":{"type":"number","description":"Report control X/left coordinate."},"top":{"type":"number","description":"Report control Y/top coordinate."},"x":{"type":"number","description":"Alias for left."},"y":{"type":"number","description":"Alias for top."},"width":{"type":"number","description":"Report control width."},"after":{"type":"string","description":"Place/move after this report control."},"below":{"type":"string","description":"Place/move below this report control."},"font":{"type":"string","description":"Optional report font token."},"fontName":{"type":"string","description":"Optional report font family."},"fontSize":{"type":"string","description":"Optional report font size."},"alignment":{"type":"string","description":"Optional report text alignment."},"picture":{"type":"string","description":"Optional image/report picture token."},"baseVersion":{"type":"string","description":"Version token from get_tree; required for report-control actions, including dryRun."},"dryRun":{"type":"boolean","description":"Preview report-control mutation without saving."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Request rollback on verification failure. Report restore is currently unavailable without atomic ownership proof; returns recovery evidence without a second write."},"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}},
25
26
  {"name":"genexus_doc","description":"Use to generate structured docs (wiki, dependency graph, 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"],"description":"wiki: generate markdown docs; visualize: generate dependency graph; health: produce health report."},"target":{"type":"string","description":"Object or domain name (required for wiki/visualize)."},"kb":{"type":"string","description":"KB alias for health or other worker-backed document actions."}},"required":["action"],"examples":[{"action":"wiki","target":"Customer"},{"action":"health"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
26
27
  {"name":"genexus_search_source","description":"Regex/semantic search across Procedure/DataProvider/WebPanel/Transaction source. Restrict a scan by object name, persisted GUID, EntityKey, or module/folder-qualified path. 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"},"objectName":{"type":"string","description":"Restrict the scan to these exact object name(s), comma-separated. Makes a search inside one known object O(object) not O(KB), and bypasses the type whitelist."},"guid":{"type":"string","description":"Persisted object GUID from genexus_list_objects."},"entityKey":{"type":"string","description":"Typed GeneXus EntityKey from genexus_list_objects verbose output."},"path":{"type":"string","description":"Module/folder-qualified object path from genexus_list_objects."},"startIndex":{"type":"integer","description":"Legacy object-boundary resume. For a page that ended inside an object, prefer the opaque cursor returned in nextCursor."},"cursor":{"type":"string","description":"Opaque continuation token from nextCursor; preferred when a result page ended inside an object. Do not edit."},"timeoutMs":{"type":"integer","description":"Wall-clock budget (default 30000). Raise it to scan more objects per call."},"scope":{"type":"array","items":{"type":"string","enum":["source","rules","conditions","events","webForm","layout"]},"description":"Parts to scan with line-numbered context. Default [source]. webForm/layout scans the WebPanel/Transaction visual XML (control names, captions, classes, bindings)."},"fields":{"type":"array","items":{"type":"string","enum":["source","caption","description","parmNames","webForm"]},"description":"Whole-field metadata match (returns matchedValue, no line context). Default [source]. Prefer scope=[webForm] for line-context WebForm hits; use fields=[webForm] only for a coarse contains-match."},"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."}},"additionalProperties":false,"examples":[{"pattern":"ControlType=\"Radio\""},{"pattern":"for each","typeFilter":"Procedure","maxResults":20}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
@@ -39,7 +40,7 @@
39
40
  {"name":"genexus_kb_version","description":"SDK KB version tree via KBVersionHelper. list and changed_objects are read-only; changed_objects compares active Design with a frozen version and returns paged NEW/CHANGED items without SQL. Other actions mutate. createdAt may be unavailable; lastUpdate is separate.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","changed_objects","freeze","branch","set_active","revert"],"description":"Version delta or tree operation."},"name":{"type":"string","description":"New version/branch name (freeze/branch)."},"description":{"type":"string","description":"New version/branch description (freeze/branch)."},"parentVersion":{"type":"string","description":"Parent version name (freeze/branch). Defaults to the active version."},"targetVersion":{"type":"string","description":"Version to activate (set_active) or revert to (revert)."},"fromVersion":{"type":"string","description":"changed_objects frozen baseline; revert source; omit for latest frozen."},"offset":{"type":"integer","minimum":0,"description":"offset."},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"limit."},"backupModel":{"type":"boolean","description":"freeze."},"includeEnvironments":{"type":"boolean","description":"branch."},"autoUpdate":{"type":"boolean","description":"set_active."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list"},{"action":"changed_objects","fromVersion":"v1.0"},{"action":"freeze","name":"v1.0","description":"Release 1.0"},{"action":"set_active","targetVersion":"Trunk"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
40
41
  {"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"],"description":"Browser verification operation to execute."},"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}},
41
42
  {"name":"genexus_db","description":"Database umbrella. Actions: drift_check|drift_report; optimize_analyze|optimize_suggest|optimize_report; sql_ddl|sql_navigation; sample_data; records_query|records_insert|records_update (typed Transaction rows; query read-only; writes dryRun; no business rules); types_list|types_describe|types_validate; reorg_impact; reorg_preview (non-mutating; deep uses ImpactDatabase); 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","records_query","records_insert","records_update","types_list","types_describe","types_validate","translations_import","reorg_impact","reorg_preview"],"description":"Database operation. records_query is read-only; records_insert/records_update default to dryRun=true and require the matching single-use v2 preview token for persistence."},"deep":{"type":"boolean","description":"reorg_impact/reorg_preview only: run ISpecifierService.ImpactDatabase (specification, build-heavy) for the authoritative AnalysisResult. Default false (cheap timestamp heuristic)."},"name":{"type":"string","description":"Object/transaction/type name."},"trn":{"type":"string","description":"sample_data: Transaction name."},"transaction":{"type":"string","description":"records_*: root-level Transaction name."},"dataStore":{"type":"string","description":"records_*: existing active-environment datastore; defaults to the SDK default."},"dataStoreAlias":{"type":"string","description":"records_query: profile alias; no credentials."},"where":{"type":"object","description":"records_query/update: equality filters only; update requires a filter."},"values":{"type":"object","description":"records_insert/update: typed attribute values."},"fields":{"type":"array","items":{"type":"string"},"description":"records_query: optional root-attribute projection."},"databaseManagedFields":{"type":"array","items":{"type":"string"},"description":"records_*: reviewed trigger-maintained fields; excludes keys and supplied values. Included in the preview token."},"limit":{"type":"integer","description":"records_query: 1-1000; default 100."},"expectedCount":{"type":"integer","description":"records_update: defaults to exactly one matched record."},"expectedVersion":{"type":"string","description":"records_*: v2 token from the matching write dry-run; query/v1 tokens cannot authorize writes."},"versionToken":{"type":"string","description":"records_*: alias of expectedVersion."},"dryRun":{"type":"boolean","default":true,"description":"records_insert/update: validate and reread the plan without writing."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"records_*: default true; validation failures roll back before commit. Post-commit compensation is refused to preserve concurrent writers."},"timeoutSeconds":{"type":"integer","description":"records_*: command timeout, 1-60 seconds."},"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"},{"action":"records_query","dataStoreAlias":"production","transaction":"Order","where":{"OrderId":1},"limit":20,"timeoutSeconds":20}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
42
- {"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). Long version-store reads (history_get/history_list/diff/diff_generated/blame) accept async=true: the reply returns {operationId, pollTarget} before the read starts and the result stays readable via genexus_lifecycle action=status/result.","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"],"description":"History, diff, time-travel, or rollback operation to perform."},"name":{"type":"string","description":"Object name for history, diff, time_travel, or blame."},"part":{"type":"string","description":"Object part name, e.g. Source, Rules, Events."},"partName":{"type":"string","description":"Legacy alias for part on history actions."},"versionId":{"type":"integer","description":"history_get/history_restore: numerical version ID."},"snapshot":{"type":"string","description":"history_restore: snapshot label or path to restore."},"discard":{"type":"boolean","description":"history_restore: true for IDE 'Discard changes' parity."},"dryRun":{"type":"boolean","description":"history_restore/undo: preview without mutating the KB."},"async":{"type":"boolean","description":"history_get/history_list/diff/diff_generated/blame only: return {operationId, job_id, pollTarget:'op:<id>', status:'running'} before the read starts and run it in the background, so the result is still readable with genexus_lifecycle action=status/result if this call's window expires. Never applies to the mutating actions."},"estimated_seconds":{"type":"integer","description":"async=true: expected duration used as the poll cadence hint in the accepted envelope."},"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}},
43
+ {"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; versionId with part=SDTStructure restores the native SDT revision with required expectedVersion and dryRun) | 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). Long version-store reads (history_get/history_list/diff/diff_generated/blame) accept async=true: the reply returns {operationId, pollTarget} before the read starts and the result stays readable via genexus_lifecycle action=status/result.","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"],"description":"History, diff, time-travel, or rollback operation to perform."},"name":{"type":"string","description":"Object name for history, diff, time_travel, or blame."},"part":{"type":"string","description":"Object part name, e.g. Source, Rules, Events, SDTStructure."},"partName":{"type":"string","description":"Legacy alias for part on history actions."},"versionId":{"type":"integer","description":"history_get/history_restore: numerical version ID."},"expectedVersion":{"type":"string","description":"Required for history_restore of an SDTStructure revision; current SDT get_visual versionToken."},"snapshot":{"type":"string","description":"history_restore: snapshot label or path to restore."},"discard":{"type":"boolean","description":"history_restore: true for IDE 'Discard changes' parity."},"dryRun":{"type":"boolean","description":"history_restore/undo: preview without mutating the KB."},"async":{"type":"boolean","description":"history_get/history_list/diff/diff_generated/blame only: return {operationId, job_id, pollTarget:'op:<id>', status:'running'} before the read starts and run it in the background, so the result is still readable with genexus_lifecycle action=status/result if this call's window expires. Never applies to the mutating actions."},"estimated_seconds":{"type":"integer","description":"async=true: expected duration used as the poll cadence hint in the accepted envelope."},"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}},
43
44
  {"name":"genexus_io","description":"IO umbrella for assets, Object Text exchange, screenshots, OCR. action: asset_find|asset_read|asset_write | read_blob | export_part|import_part (single part) | export_kb_to_text|import_text_to_kb|validate_kb_text_files|delete_kb_objects (official GeneXus for Agents Object Text parity) | export_unified|screenshot_publish|ocr.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["asset_find","asset_read","asset_write","read_blob","export_part","import_part","export_kb_to_text","import_text_to_kb","validate_kb_text_files","validate_text_in_memory","list_text_files","text_mirror_start","text_mirror_stop","text_mirror_status","text_mirror_catchup","text_mirror_set_references","delete_kb_objects","export_unified","screenshot_publish","ocr"],"description":"Asset, single-part, SDK text-tree, batch Object Text, screenshot, or OCR operation."},"path":{"type":"string","description":"asset/screenshot_publish/ocr: file path; Object Text import/validate may use a manifest directory."},"name":{"type":"string","description":"single object name or comma-separated selector; export_unified uses one object."},"targets":{"type":"array","items":{},"description":"Object Text selector array. Items may be names or {name,type} objects. Omit for export_kb_to_text to export the full indexed KB."},"outputPath":{"type":"string","description":"path"},"inputPath":{"type":"string","description":"import_part: source file; import_text_to_kb/validate_kb_text_files: manifest or directory."},"part":{"type":"string","description":"Object Text or part-exchange part name (e.g. Source, Rules, WebForm). For native format, part=all serializes authored textual parts into one sectioned .gx document."},"parts":{"type":"array","items":{"type":"string"},"description":"native export: explicit authored parts to include in one sectioned .gx document; part=all uses the safe default part set."},"format":{"type":"string","enum":["legacy","native"],"description":"Object Text export/import format. legacy preserves .gxtext compatibility; native creates the SDK text tree under src/ and ref/ without GX4A DLLs."},"mode":{"type":"string","enum":["all","newAndModified","newOnly"],"description":"native export mode. all writes every selected object; newAndModified uses the SDK/index version token; newOnly keeps existing files."},"includeDependencies":{"type":"boolean","description":"native export/import: include Calls/Tables dependency closure under ref/."},"includeReferences":{"type":"boolean","description":"Alias of includeDependencies for native src/ref exchange."},"includeVisualParts":{"type":"boolean","description":"native export/import: include WebForm/Layout companions (.web.xml or .report.xml)."},"includeModuleMetadata":{"type":"boolean","default":true,"description":"native export: emit deterministic module.toml metadata for modules represented in src/ref; no package DLL is loaded."},"includeModulePackages":{"type":"boolean","description":"native export: copy matching official .opc reference packages from the selected GeneXus installation into ref/; defaults to includeDependencies and never copies DLLs."},"includeTableProjections":{"type":"boolean","description":"native export: emit official SDK Table structures under src/#tables for selected Transactions; opt-in because tables may be shared/derived."},"includeChildren":{"type":"boolean","default":true,"description":"filesystem parity: recurse into child directories or expand Module/Folder selectors recursively; default true."},"listOnly":{"type":"boolean","description":"filesystem parity: return the resolved plan without reading the SDK, writing files or mutating the KB."},"stopOnError":{"type":"boolean","description":"filesystem parity: stop after the first item-level error and report remaining work for a safe resume."},"skip":{"type":"integer","minimum":0,"description":"filesystem parity: skip this many deterministic planned items before processing; useful for resuming a large batch."},"indentString":{"type":"string","description":"native export: optional prefix applied to non-empty source lines inside the object body; omitted preserves source indentation."},"forceSave":{"type":"boolean","description":"text import: force the official WriteService persistence path even when the content is unchanged."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"native multi-part import: restore parts already written when a later SDK part write fails; reports reconciliationRequired if a prior snapshot cannot be read or restored."},"importMissingReferences":{"type":"boolean","description":"native import: include reference/dependency files when importing a tree."},"ignore":{"type":"array","items":{"type":"string"},"description":"list_text_files/validate_text_in_memory: relative file or directory prefixes to ignore; batch KB actions also accept object selectors."},"intervalMs":{"type":"integer","minimum":250,"description":"text_mirror_start: debounce/poll interval in milliseconds (250-600000)."},"initialSync":{"type":"boolean","description":"text_mirror_start: schedule a full catch-up immediately after start."},"full":{"type":"boolean","description":"text_mirror_catchup: reconcile the complete indexed KB instead of only queued changes."},"enabled":{"type":"boolean","description":"text_mirror_set_references: enable/disable reference export."},"type":{"type":"string","description":"Object type disambiguator/filter."},"module":{"type":"string","description":"Object Text module filter."},"pathPrefix":{"type":"string","description":"Object Text KB object-path prefix filter."},"overwrite":{"type":"boolean","description":"replace file"},"confirm":{"type":"boolean","description":"delete_kb_objects: required for a real delete; dryRun remains non-mutating."},"dryRun":{"type":"boolean","description":"Object Text import/delete preview without persisting changes."},"async":{"type":"boolean","description":"Run a batch Object Text operation as a cancellable background job when supported."},"pattern":{"type":"string","description":"asset_find: glob pattern."},"relativeRoot":{"type":"string","description":"asset_find: root for relative paths."},"limit":{"type":"integer","description":"asset_find/Object Text: max results."},"includeContent":{"type":"boolean","description":"asset_find: inline file content."},"maxBytes":{"type":"integer","description":"inline limit"},"includeBase64":{"type":"boolean","description":"include Base64 response"},"contentBase64":{"type":"string","description":"asset_write: base64-encoded file content."},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"export_kb_to_text","outputPath":"C:\\tmp\\customer-text","targets":[{"name":"Customer","type":"Transaction"}]},{"action":"validate_kb_text_files","inputPath":"C:\\tmp\\customer-text"},{"action":"delete_kb_objects","targets":["Procedure:OldProc"],"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
44
45
  {"name":"genexus_variable","description":"Variables CRUD. add accepts varName or variables[] batch; modify changes type atomically, or only the description when typeName is omitted (the type is kept). basedOn binds a Domain; basedOnAttribute (or typeName Attribute:<name>) binds an Attribute by native SDK identity preserving picture/semantics. objectType=BusinessComponent with objectName+module binds a modular BC by EntityKey/GUID and verifies it after save. length/decimals override size; collection=true declares a collection; dimensions=1|2 plus dimensionSizes declares a fixed-size vector/matrix (not a collection); untyped add inherits a same-named attribute with its binding. modify refuses to silently drop an Attribute binding (AttributeBindingWouldBeLost); reads surface basedOn. dryRun validates and previews without mutation; async returns an operationId.","inputSchema":{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","enum":["add","delete","modify"],"description":"Variable-part operation to add, delete, or modify a variable."},"name":{"type":"string"},"varName":{"type":"string","description":"Single-variable form (add/delete/modify). For batch add use variables[] instead."},"variables":{"type":"array","description":"Batch add only: one object per variable — {varName, typeName?, basedOn?, basedOnAttribute?, length?, decimals?, collection?, dimensions?, dimensionSizes?}. Added before a single save.","items":{"type":"object","required":["varName"],"properties":{"varName":{"type":"string"},"typeName":{"type":"string"},"length":{"type":"integer"},"decimals":{"type":"integer"},"collection":{"type":"boolean"},"dimensions":{"type":"integer","minimum":1,"maximum":2,"description":"Fixed-size vector/matrix rank; requires dimensionSizes and conflicts with collection."},"dimensionSizes":{"type":"array","minItems":1,"maxItems":2,"items":{"type":"integer","minimum":1},"description":"Positive sizes in row/column order; length must equal dimensions."},"basedOn":{"type":"string","description":"Domain name; native SDK reference."},"basedOnAttribute":{"type":"string","description":"Attribute name (or Attribute:<name>); preserves picture/semantics."}}}},"typeName":{"type":"string","description":"Primitive (Character/Numeric/VarChar/Date/...), SDT/BC/Domain name, Attribute:<name>, or WebSession. VarChar keeps VARCHAR semantics."},"newTypeName":{"type":"string","description":"modify alias for the replacement type; accepted alongside typeName."},"dataType":{"type":"string","description":"modify alias for the replacement type; accepted alongside typeName."},"description":{"type":"string","description":"modify: new variable Description (empty string clears it). Without typeName the type is kept and only the description changes."},"objectType":{"type":"string","enum":["BusinessComponent"],"description":"add/modify: resolve an object-backed variable natively instead of interpreting typeName as a Domain."},"objectName":{"type":"string","description":"Business Component Transaction name, without module when module is passed separately."},"module":{"type":"string","description":"Module owning objectName. Required to disambiguate modular Business Components."},"expectedVersion":{"type":"string","description":"Optimistic-concurrency token for an object-backed add/modify. Stale state returns VersionConflict before mutation."},"length":{"type":"integer","description":"add/modify optional: overrides the length parsed from typeName."},"decimals":{"type":"integer","description":"add/modify optional: overrides decimals parsed from typeName."},"collection":{"type":"boolean","description":"add/modify optional: declare the variable as a collection."},"dimensions":{"type":"integer","minimum":1,"maximum":2,"description":"add/modify optional: fixed-size vector/matrix rank; requires dimensionSizes and conflicts with collection."},"dimensionSizes":{"type":"array","minItems":1,"maxItems":2,"items":{"type":"integer","minimum":1},"description":"add/modify optional: positive sizes in row/column order; length must equal dimensions."},"basedOn":{"type":"string","description":"Domain name, or Attribute:<name> for an attribute binding (prefer basedOnAttribute)."},"basedOnAttribute":{"type":"string","description":"Attribute name (or Attribute:<name>) to bind; preserves picture/semantics."},"dryRun":{"type":"boolean","default":false,"description":"Validate and return the typed diff without changing any object, Attribute, hash, or version."},"validationMode":{"type":"string","enum":["specify"],"description":"Explicitly run the inline Specify pass after a legacy variable write. Never runs unless requested."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Object-backed variables always snapshot the complete owner and restore it on save/re-read divergence."},"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)."},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"add","name":"MyPanel","varName":"&Choice","typeName":"Numeric"},{"action":"add","name":"MyProc","varName":"&OrderRecord","objectType":"BusinessComponent","objectName":"OrderRecord","module":"Operations","dryRun":true},{"action":"add","name":"MyProc","variables":[{"varName":"&ApiKey","typeName":"VarChar","length":80},{"varName":"&CmdNro","typeName":"Numeric","length":9}]},{"action":"delete","name":"MyPanel","varName":"&OldVar"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
45
46
  {"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"],"description":"Telemetry, profiling, or friction-log operation to perform."},"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}},
@@ -48,7 +49,7 @@
48
49
  {"name":"genexus_transfer","description":"Real XPZ export/import over the SDK's IKnowledgeManagerService — dependency-aware, IDE Export/Import parity (NOT the filesystem copy genexus_io/kb_import do). action=export (targets[]+outputFile; includeDependencies=true exports transitive closure) | inspect (explore an .xpz, read-only) | import (apply into KB; dryRun defaults true=preview via ExploreExport; to actually import pass dryRun=false AND confirm=true; confirm=true alone only previews).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["export","inspect","import"],"description":"XPZ export, inspection, or import operation to perform."},"targets":{"type":"array","items":{"type":"string"},"description":"export: object names to export."},"outputFile":{"type":"string","description":"export: absolute .xpz output path."},"includeDependencies":{"type":"boolean","description":"export: compute transitive dependency closure (Calls, Tables) and export all referenced objects.","default":false},"file":{"type":"string","description":"inspect/import: absolute .xpz path."},"type":{"type":"string","description":"export: disambiguate object type."},"dryRun":{"type":"boolean","description":"import: true (default) previews and imports NOTHING; pass false (with confirm=true) to actually apply. confirm=true alone does not import."},"confirm":{"type":"boolean","description":"import with dryRun=false: required."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"export","targets":["Customer"],"outputFile":"C:\\tmp\\cust.xpz"},{"action":"export","targets":["Customer"],"outputFile":"C:\\tmp\\cust_full.xpz","includeDependencies":true},{"action":"inspect","file":"C:\\tmp\\cust.xpz"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
49
50
  {"name":"genexus_deploy","description":"Deploy application over the SDK. action=list_targets (read-only, default) enumerates deployment target types (IDeploymentTargetService); action=deploy (destructive, confirm=true) runs IDeploymentService.Deploy(model).","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["list_targets","deploy"],"description":"Deployment-target or deployment execution operation to perform."},"confirm":{"type":"boolean","description":"deploy: required (builds + ships the app)."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list_targets"},{"action":"deploy","confirm":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
50
51
  {"name":"genexus_generator_reference","description":"Native typed .NET generator references used by GxExternalReference. list and dry-run actions are read-only. add/remove validate a managed assembly when a path is supplied, require optimistic baseVersion for changes, save only the native GeneratorsPart, reread it, and restore the complete generator-property snapshot on verification failure. No lifecycle action runs implicitly.","inputSchema":{"type":"object","additionalProperties":false,"required":["action","environment","generator"],"properties":{"action":{"type":"string","enum":["list","dry_run_add","add","dry_run_remove","remove"],"description":"Typed .NET generator-reference operation to perform."},"environment":{"type":"string","description":"Active GeneXus Environment name; the tool never switches environments."},"generator":{"type":"string","description":"Generator display name, e.g. Default (.NET)."},"assembly":{"type":"string","description":"Assembly file name for add/remove, e.g. SpreadsheetLibrary.dll."},"assemblyPath":{"type":"string","description":"Absolute path or KB-relative path used to validate a managed assembly. Required for add unless found in a standard model/bin location."},"baseVersion":{"type":"string","description":"Optimistic token returned by list or a dry-run. Required for a real state change."},"dryRun":{"type":"boolean","default":false,"description":"Force add/remove to remain read-only."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Restore and verify the complete prior generator-property snapshot if save/reread diverges."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list","environment":".Net Environment","generator":"Default (.NET)"},{"action":"dry_run_add","environment":".Net Environment","generator":"Default (.NET)","assembly":"SpreadsheetLibrary.dll","assemblyPath":"C:\\KBs\\Sample\\CSharpModel\\web\\bin\\SpreadsheetLibrary.dll"},{"action":"add","environment":".Net Environment","generator":"Default (.NET)","assembly":"SpreadsheetLibrary.dll","assemblyPath":"C:\\KBs\\Sample\\CSharpModel\\web\\bin\\SpreadsheetLibrary.dll","baseVersion":"sha256:<token>","rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
51
- {"name":"genexus_wwp","description":"Typed WorkWithPlus action, form-level action, tab, grid, native table-type, and structural edits with dryRun, optimistic concurrency, exact snapshots, post-save reread, projection verification, and rollback. set_table_type mutates only an existing table type through the native PatternInstance SDK and preserves children, bindings, events, names, classes, defaultType, and childrenOrderedList. add_grid writes a grid over an SDT collection variable (typed SDT columns, optional delete action). add_user_action with callObject opens another object (popup, parameters) instead of firing a derived event. list_tabs/tab_schema read the instance tabs and the pattern tab schema. No lifecycle operation is implicit. Settings: embedded and separate WWP templates, paged reads and exact table-class dryRun; saves remain blocked.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","add_action","add_user_action","update_action","move_action","remove_action","add_tab","move_tab","remove_tab","set_table_type","add_grid_attribute","move_grid_column","add_grid_variable","add_grid","list_tabs","tab_schema","replace_web_component_with_user_action","settings_templates","settings_read","settings_edit"],"description":"WorkWithPlus action-group, tab, grid-attribute, or explicit native structural operation to perform."},"name":{"type":"string","description":"Transaction, WebPanel, or WorkWithPlus<Object> host."},"group":{"type":"string","description":"Action group name. add_action creates it when absent; update/remove use it as a filter."},"containerName":{"type":"string","description":"add_user_action: form-level action container, usually TableActions."},"actionName":{"type":"string","description":"Action name. add_user_action derives the GeneXus event Do<actionName>."},"attribute":{"type":"string","description":"add_grid_attribute/move_grid_column: GeneXus Attribute name or grid-column reference."},"variable":{"type":"string","description":"add_grid_variable: presentation variable name; pair with variableReference for identity-safe writes."},"variableReference":{"type":"string","description":"Verified SDK variable identity in GUID-Name form; required for add_grid_variable."},"gridPath":{"type":"string","description":"move_grid_column/add_grid_variable: explicit grid path when the instance has multiple grids."},"before":{"type":"string","description":"move_grid_column/add_grid_variable: place before this existing column."},"caption":{"type":"string","description":"Action caption or add_grid_variable label."},"basicType":{"type":"string","description":"add_grid_variable: Character or VarChar presentation type."},"length":{"type":"integer","minimum":1,"description":"add_grid_variable: Character/VarChar length."},"procedure":{"type":"string","description":"add/update: associated Procedure; existence is validated against the KB."},"selection":{"type":"string","enum":["single","multiple"],"description":"add/update: execution scope for grid actions."},"enabledWhen":{"type":"string","description":"Availability condition stored verbatim; expression semantics are not validated."},"icon":{"type":"string","description":"add/update: button icon."},"description":{"type":"string","description":"add/update: tooltip or description."},"confirm":{"type":"boolean","description":"Confirmation prompt; required to delete unless dryRun."},"buttonClass":{"type":"string","description":"add/update: theme button class."},"position":{"type":"integer","minimum":0,"description":"Zero-based action or tab index."},"toGroup":{"type":"string","description":"move_action: destination group (created when absent)."},"fromGroup":{"type":"string","description":"move_action: source group (optional; searched across groups when omitted)."},"dryRun":{"type":"boolean","description":"Return a typed diff and versionToken without mutation."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"On a failed write or post-save verification, restore the original PatternInstance when possible."},"controlName":{"type":"string","description":"Tab ControlName."},"title":{"type":"string","description":"add_tab: tab title."},"children":{"type":"array","description":"add_tab controls; flat children are wrapped in a responsive table. Nested table children accept the same control shape.","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["variable","userAction","table"]},"name":{"type":"string"},"caption":{"type":"string"},"description":{"type":"string"},"basicType":{"type":"string"},"length":{"type":"integer","minimum":1},"decimals":{"type":"integer","minimum":0},"controlType":{"type":"string"},"controlValues":{"type":"string"},"controlEmptyItem":{"type":"boolean"},"controlEmptyItemText":{"type":"string"},"columns":{"type":"integer","minimum":1},"themeClass":{"type":"string"},"children":{"type":"array","items":{"type":"object"}}},"additionalProperties":false}},"sourceName":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent name."},"userActionName":{"type":"string","description":"replace_web_component_with_user_action: resulting UserAction name; defaults to sourceName."},"tablePath":{"type":"string","description":"set_table_type: existing table breadcrumb by names or indexed table segments; replace_web_component_with_user_action: full breadcrumb including the source node, for example TableHeader > TableUserRole > EmpresaSelector."},"tableType":{"type":"string","enum":["Regular","Responsive"],"description":"set_table_type: requested native WWP table type. Only the existing table @type changes; defaultType and all child identity/metadata remain guarded."},"gxobject":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent Gxobject to retain; it must match the current node."},"controlType":{"type":"string","enum":["DropDownComponent"],"description":"replace_web_component_with_user_action: resulting UserAction ControlType."},"webComponentLoad":{"type":"string","enum":["On Web Panel load","On first click","On every click"],"description":"DropDownComponent load timing."},"trigger":{"type":"string","enum":["Click","Hover"],"description":"DropDownComponent trigger."},"baseVersion":{"type":"string","description":"Optimistic-concurrency token returned by dryRun/read."},"expectedVersion":{"type":"string","description":"Alias for baseVersion."},"versionToken":{"type":"string","description":"Backward-compatible alias for baseVersion."},"kb":{"type":"string","description":"KB alias."},"kind":{"type":"string","enum":["grid","tabular","webcomponent"],"description":"tab_schema: tab kind to read the pattern schema for."},"callObject":{"type":"string","description":"add_user_action: object the button opens (Name or Type:Name, e.g. WebPanel:ReceiveOrderWP); the action then has no derived event. Not with procedure."},"popup":{"type":"boolean","description":"add_user_action with callObject: open the object in a popup."},"parameters":{"type":"array","items":{"type":"string"},"description":"add_user_action with callObject: ordered parameters; an attribute is its bare name, a variable carries &, an expression is its full text."},"collection":{"type":"string","description":"add_grid: SDT collection variable, e.g. &Lines."},"sdt":{"type":"string","description":"add_grid: the SDT the collection is made of."},"columns":{"type":"array","items":{"description":"An SDT item name, or {item, description}."},"description":"add_grid: SDT items shown, in order; a string is the item name, an object {item, description} also sets its description."},"deleteAction":{"type":"boolean","description":"add_grid: add a UDelete image action to the grid."},"template":{"description":"Settings catalog path, wwp:<template-guid>, or unique template name.","type":"string"},"limit":{"type":"integer","minimum":0,"description":"Settings nodes per page; offset=0, limit=0 includes full separate-template XML."},"guid":{"type":"string","description":"Pattern Settings object GUID for settings_* actions."},"nodePath":{"description":"Settings node path returned by settings_read.","type":"string"},"entityKey":{"type":"string"},"value":{"type":"string"},"property":{"description":"Exact SDK property name.","type":"string"},"offset":{"minimum":0,"type":"integer"}},"examples":[{"action":"list","name":"SampleOrderWW"},{"action":"add_action","name":"SampleOrderWW","group":"Operations","actionName":"Retry","procedure":"RetrySampleOrder","selection":"multiple","dryRun":true},{"action":"add_tab","name":"SamplePanel","controlName":"Details","title":"Details","children":[{"type":"variable","name":"Status","basicType":"VarChar","length":40},{"type":"userAction","name":"Refresh","caption":"Refresh"}],"dryRun":true},{"action":"add_grid_attribute","name":"SampleOrderWW","attribute":"SampleOrderStatus","caption":"Status","dryRun":true},{"action":"replace_web_component_with_user_action","name":"WorkWithPlusWorkWithPlusMasterPage","sourceName":"EmpresaSelector","userActionName":"EmpresaSelector","tablePath":"TableHeader > TableUserRole > EmpresaSelector","gxobject":"WWP_MasterPageEmpresaSelectorWC","controlType":"DropDownComponent","caption":"&Context.EmpresaDescricao","webComponentLoad":"On every click","trigger":"Click","dryRun":true},{"action":"set_table_type","name":"SamplePanel","tablePath":"TableMain > TableContent > TableLogin","tableType":"Responsive","dryRun":true},{"action":"add_user_action","name":"WorkWithPlusImpressaoConfiguracao","containerName":"TableActions","actionName":"BaixarConfiguracao","caption":"Baixar Configuração","dryRun":true,"rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
52
+ {"name":"genexus_wwp","description":"Typed WorkWithPlus action, form-level action, tab, grid, native table-type, and structural edits with dryRun, optimistic concurrency, exact snapshots, post-save reread, projection verification, and rollback. set_table_type mutates only an existing table type through the native PatternInstance SDK and preserves children, bindings, events, names, classes, defaultType, and childrenOrderedList. add_grid creates SDT-collection grids or typed variable grids without a collection. add_user_action creates missing TableActions under a unique TableMain on Empty WebPanels. add_user_action with callObject opens another object (popup, parameters) instead of firing a derived event. list_tabs/tab_schema read the instance tabs and the pattern tab schema. No lifecycle operation is implicit. Settings: embedded and separate WWP templates, paged reads and exact table-class dryRun; saves remain blocked.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","add_action","add_user_action","update_action","move_action","remove_action","add_tab","move_tab","remove_tab","set_table_type","add_grid_attribute","move_grid_column","add_grid_variable","add_grid","list_tabs","tab_schema","replace_web_component_with_user_action","settings_templates","settings_read","settings_edit"],"description":"WorkWithPlus action-group, tab, grid-attribute, or explicit native structural operation to perform."},"name":{"type":"string","description":"Transaction, WebPanel, or WorkWithPlus<Object> host."},"group":{"type":"string","description":"Action group name. add_action creates it when absent; update/remove use it as a filter."},"containerName":{"type":"string","description":"add_user_action: form-level action container, usually TableActions. add_user_action creates missing TableActions under a unique TableMain."},"actionName":{"type":"string","description":"Action name. add_user_action derives the GeneXus event Do<actionName>."},"attribute":{"type":"string","description":"add_grid_attribute/move_grid_column: GeneXus Attribute name or grid-column reference."},"variable":{"type":"string","description":"add_grid_variable: presentation variable name; pair with variableReference for identity-safe writes."},"variableReference":{"type":"string","description":"Verified SDK variable identity in GUID-Name form; required for add_grid_variable."},"gridPath":{"type":"string","description":"move_grid_column/add_grid_variable: explicit grid path when the instance has multiple grids."},"before":{"type":"string","description":"move_grid_column/add_grid_variable: place before this existing column."},"caption":{"type":"string","description":"Action caption or add_grid_variable label."},"basicType":{"type":"string","description":"add_grid_variable: Character or VarChar presentation type."},"length":{"type":"integer","minimum":1,"description":"add_grid_variable: Character/VarChar length."},"procedure":{"type":"string","description":"add/update: associated Procedure; existence is validated against the KB."},"selection":{"type":"string","enum":["single","multiple"],"description":"add/update: execution scope for grid actions."},"enabledWhen":{"type":"string","description":"Availability condition stored verbatim; expression semantics are not validated."},"icon":{"type":"string","description":"add/update: button icon."},"description":{"type":"string","description":"add/update: tooltip or description."},"confirm":{"type":"boolean","description":"Confirmation prompt; required to delete unless dryRun."},"buttonClass":{"type":"string","description":"add/update: theme button class."},"position":{"type":"integer","minimum":0,"description":"Zero-based action or tab index."},"toGroup":{"type":"string","description":"move_action: destination group (created when absent)."},"fromGroup":{"type":"string","description":"move_action: source group (optional; searched across groups when omitted)."},"dryRun":{"type":"boolean","description":"Return a typed diff and versionToken without mutation."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"On a failed write or post-save verification, restore the original PatternInstance when possible."},"controlName":{"type":"string","description":"Tab ControlName."},"title":{"type":"string","description":"add_tab: tab title."},"children":{"type":"array","description":"add_tab controls; flat children are wrapped in a responsive table. Nested table children accept the same control shape.","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["variable","userAction","table"]},"name":{"type":"string"},"caption":{"type":"string"},"description":{"type":"string"},"basicType":{"type":"string"},"length":{"type":"integer","minimum":1},"decimals":{"type":"integer","minimum":0},"controlType":{"type":"string"},"controlValues":{"type":"string"},"controlEmptyItem":{"type":"boolean"},"controlEmptyItemText":{"type":"string"},"columns":{"type":"integer","minimum":1},"themeClass":{"type":"string"},"children":{"type":"array","items":{"type":"object"}}},"additionalProperties":false}},"sourceName":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent name."},"userActionName":{"type":"string","description":"replace_web_component_with_user_action: resulting UserAction name; defaults to sourceName."},"tablePath":{"type":"string","description":"set_table_type: existing table breadcrumb by names or indexed table segments; replace_web_component_with_user_action: full breadcrumb including the source node, for example TableHeader > TableUserRole > EmpresaSelector."},"tableType":{"type":"string","enum":["Regular","Responsive"],"description":"set_table_type: requested native WWP table type. Only the existing table @type changes; defaultType and all child identity/metadata remain guarded."},"gxobject":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent Gxobject to retain; it must match the current node."},"controlType":{"type":"string","enum":["DropDownComponent"],"description":"replace_web_component_with_user_action: resulting UserAction ControlType."},"webComponentLoad":{"type":"string","enum":["On Web Panel load","On first click","On every click"],"description":"DropDownComponent load timing."},"trigger":{"type":"string","enum":["Click","Hover"],"description":"DropDownComponent trigger."},"baseVersion":{"type":"string","description":"Optimistic-concurrency token returned by dryRun/read."},"expectedVersion":{"type":"string","description":"Alias for baseVersion."},"versionToken":{"type":"string","description":"Backward-compatible alias for baseVersion."},"kb":{"type":"string","description":"KB alias."},"kind":{"type":"string","enum":["grid","tabular","webcomponent"],"description":"tab_schema: tab kind to read the pattern schema for."},"callObject":{"type":"string","description":"add_user_action: object the button opens (Name or Type:Name, e.g. WebPanel:ReceiveOrderWP); the action then has no derived event. Not with procedure."},"popup":{"type":"boolean","description":"add_user_action with callObject: open the object in a popup."},"parameters":{"type":"array","items":{"type":"string"},"description":"add_user_action with callObject: ordered parameters; an attribute is its bare name, a variable carries &, an expression is its full text."},"collection":{"type":"string","description":"add_grid: SDT collection variable, e.g. &Lines."},"sdt":{"type":"string","description":"add_grid: the SDT the collection is made of."},"columns":{"type":"array","items":{"description":"SDT item or variable-column object."},"description":"add_grid: SDT items as strings or {item, description}; without collection/sdt, ordered {variable, basicType, length, decimals, description, readOnly} columns. Numeric and string types require length."},"deleteAction":{"type":"boolean","description":"add_grid: add a UDelete image action to the grid."},"template":{"description":"Settings catalog path, wwp:<template-guid>, or unique template name.","type":"string"},"limit":{"type":"integer","minimum":0,"description":"Settings nodes per page; offset=0, limit=0 includes full separate-template XML."},"guid":{"type":"string","description":"Pattern Settings object GUID for settings_* actions."},"nodePath":{"description":"Settings node path returned by settings_read.","type":"string"},"entityKey":{"type":"string"},"value":{"type":"string"},"property":{"description":"Exact SDK property name.","type":"string"},"offset":{"minimum":0,"type":"integer"},"gridName":{"type":"string","description":"add_grid without collection/sdt: variable grid control name (default Grid)."}},"examples":[{"action":"list","name":"SampleOrderWW"},{"action":"add_action","name":"SampleOrderWW","group":"Operations","actionName":"Retry","procedure":"RetrySampleOrder","selection":"multiple","dryRun":true},{"action":"add_tab","name":"SamplePanel","controlName":"Details","title":"Details","children":[{"type":"variable","name":"Status","basicType":"VarChar","length":40},{"type":"userAction","name":"Refresh","caption":"Refresh"}],"dryRun":true},{"action":"add_grid_attribute","name":"SampleOrderWW","attribute":"SampleOrderStatus","caption":"Status","dryRun":true},{"action":"replace_web_component_with_user_action","name":"WorkWithPlusWorkWithPlusMasterPage","sourceName":"EmpresaSelector","userActionName":"EmpresaSelector","tablePath":"TableHeader > TableUserRole > EmpresaSelector","gxobject":"WWP_MasterPageEmpresaSelectorWC","controlType":"DropDownComponent","caption":"&Context.EmpresaDescricao","webComponentLoad":"On every click","trigger":"Click","dryRun":true},{"action":"set_table_type","name":"SamplePanel","tablePath":"TableMain > TableContent > TableLogin","tableType":"Responsive","dryRun":true},{"action":"add_user_action","name":"WorkWithPlusImpressaoConfiguracao","containerName":"TableActions","actionName":"BaixarConfiguracao","caption":"Baixar Configuração","dryRun":true,"rollbackOnFailure":true},{"action":"add_grid","name":"SamplePanel","containerName":"TableContent","gridName":"Grid","columns":[{"variable":"Code","basicType":"Character","length":13},{"variable":"Op","basicType":"Numeric","length":2,"readOnly":false}],"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
52
53
  {"name":"genexus_kb_diff","description":"Gateway-only filesystem comparison of two KB directories. Requires kbA and kbB aliases or paths; no active KB selection is used. Modification detection compares SHA-256 content per object part, not filesystem metadata. The response reports inventory authority and completeness per side: an absent, unreadable or truncated Objects/ tree is status=Incomplete with complete=false, and only a proven empty Objects/ is reported as an empty model. identityAuthority is the on-disk Objects/<Type>/<Name> naming and is not module-qualified.","inputSchema":{"type":"object","required":["kbA","kbB"],"properties":{"kbA":{"type":"string"},"kbB":{"type":"string"},"mode":{"type":"string","enum":["content","metadata"],"default":"content","description":"content (default) compares SHA-256 over each object part file. metadata restores the cheaper timestamp/part-count heuristic, which cannot see same-metadata content changes; the response labels which one ran in contentComparison."},"maxObjects":{"type":"integer","minimum":1,"default":50000,"description":"Maximum objects enumerated per side. Exceeding it returns status=Incomplete with inventory.truncated=true."}},"examples":[{"kbA":"development","kbB":"staging"},{"kbA":"development","kbB":"staging","mode":"content","maxObjects":5000}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
53
54
  {"name":"genexus_kb_import","description":"Gateway-only filesystem copy of one object between two KB directories. Requires source and object identity; run lifecycle index afterwards.","inputSchema":{"type":"object","required":["from","name","type"],"properties":{"from":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"to":{"type":"string"}},"examples":[{"from":"C:\\KBs\\source","to":"C:\\KBs\\target","name":"Customer","type":"Transaction"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
54
55
  {"name":"genexus_sandbox","description":"Gateway-only filesystem sandbox management; clone or remove a KB directory without SDK dispatch.","inputSchema":{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","enum":["create","remove"],"description":"Sandbox operation to create or remove a KB directory."},"name":{"type":"string"},"from":{"type":"string"},"overwrite":{"type":"boolean"}},"examples":[{"action":"create","name":"probe","from":"C:\\KBs\\base"},{"action":"remove","name":"probe"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
Binary file