genexus-mcp 3.11.0 → 3.12.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/README.md +3 -0
- package/package.json +1 -1
- package/publish/GxMcp.Gateway.deps.json +2 -2
- package/publish/GxMcp.Gateway.dll +0 -0
- package/publish/GxMcp.Gateway.exe +0 -0
- package/publish/config.json +10 -10
- package/publish/gxmcp-manifest.json +12 -12
- package/publish/gxmcp-sbom.json +4 -4
- package/publish/nexus-ide.vsix +0 -0
- package/publish/tool_definitions.json +8 -5
- package/publish/worker/GxMcp.Worker.exe +0 -0
package/README.md
CHANGED
|
@@ -491,6 +491,9 @@ in GeneXus first.
|
|
|
491
491
|
|
|
492
492
|
**Analysis, docs & API**
|
|
493
493
|
- `genexus_analyze` — cross-object semantic analysis (impact, dependencies, complexity, naming, code_metrics, summary, `kb_stats` = KB activity/freshness, `table_relations` = table↔transaction relations + redundant attrs, …). `mode=explain` is compatibility-only: it preserves the legacy response envelope and returns `NotImplemented`; use `mode=summary`, `mode=context`, or `genexus_read` instead.
|
|
494
|
+
- `genexus_dfd` - read-only ER diagram of a Transaction/Table (`extends`/`subordinates` edges + Mermaid `erDiagram`) built only from the SDK table relations
|
|
495
|
+
- `genexus_impact` - read-only affected set of an object over the caller graph: counts by type, a dependencies-first rebuild `order`, cycles and the cap that truncated it (no risk score)
|
|
496
|
+
- `genexus_object_context` - read-only identity + callers/callees (with coverage) + data model of one object; a name shared by several objects is refused with their guids and paths
|
|
494
497
|
- `genexus_doc` — generate wiki / dependency graphs / health reports
|
|
495
498
|
- `genexus_api` — introspect REST endpoints exposed by HTTP procedures
|
|
496
499
|
- `genexus_security` — audit KB security: `audit_gam` (env/GAM props), `scan_secrets` (regex over Source), `scan_native` (the SDK's own Security Scanner, `ISecurityScannerService`)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genexus-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.12.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.
|
|
10
|
+
"GxMcp.Gateway/3.12.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.
|
|
69
|
+
"GxMcp.Gateway/3.12.0": {
|
|
70
70
|
"type": "project",
|
|
71
71
|
"serviceable": false,
|
|
72
72
|
"sha512": ""
|
|
Binary file
|
|
Binary file
|
package/publish/config.json
CHANGED
|
@@ -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
|
+
},
|
|
2
10
|
"Server": {
|
|
3
|
-
"HttpPort": 0,
|
|
4
11
|
"SessionIdleTimeoutMinutes": 10,
|
|
12
|
+
"HttpPort": 0,
|
|
5
13
|
"EmitStructuredContent": false,
|
|
6
|
-
"TerseResponses": true,
|
|
7
14
|
"McpStdio": true,
|
|
15
|
+
"TerseResponses": true,
|
|
8
16
|
"WorkerIdleTimeoutMinutes": 5
|
|
9
17
|
},
|
|
10
|
-
"GatewayMode": "stdio-isolated",
|
|
11
|
-
"Environment": {
|
|
12
|
-
"ResolutionPolicy": "strict"
|
|
13
|
-
},
|
|
14
|
-
"GeneXus": {
|
|
15
|
-
"WorkerExecutable": "worker\\\\GxMcp.Worker.exe",
|
|
16
|
-
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18"
|
|
17
|
-
},
|
|
18
18
|
"ConfigSchemaVersion": 2
|
|
19
19
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "gxmcp-release-manifest/1",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"sourceCommit": "
|
|
3
|
+
"version": "3.12.0",
|
|
4
|
+
"sourceCommit": "c5b031b020339e26d61d6197380788df00d45197",
|
|
5
5
|
"sourceCommitPolicy": "exact-tag",
|
|
6
|
-
"generatedAtUtc": "2026-10-
|
|
6
|
+
"generatedAtUtc": "2026-10-06T19:14:16.5398713Z",
|
|
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": "
|
|
18
|
+
"schemaSha256": "52ce980fd10aa67e97679cd0772b4451274f0dd0d850f779cb30a639a59b9465",
|
|
19
19
|
"provenance": "gxmcp-sbom.json",
|
|
20
20
|
"artifacts": [
|
|
21
21
|
{
|
|
22
22
|
"path": "gxmcp-sbom.json",
|
|
23
23
|
"size": 591,
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "8c9375eb3dc0f007ce44d5bcfb12ee0c939e8a6d54fc340e7af74f3803e64ccd"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"path": "GxMcp.Gateway.exe",
|
|
28
28
|
"size": 162304,
|
|
29
|
-
"sha256": "
|
|
29
|
+
"sha256": "1bdb514e5b1b668efc7eca6641babf77c07eb05e76d4cd63b3a5b74280710af3"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"path": "nexus-ide.vsix",
|
|
33
|
-
"size":
|
|
34
|
-
"sha256": "
|
|
33
|
+
"size": 1319958,
|
|
34
|
+
"sha256": "f7a352625302bacc02bbda8cdb8eaea60fa18634ee47fb93e6ff8b3d01dfce63"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"path": "tool_definitions.json",
|
|
38
|
-
"size":
|
|
39
|
-
"sha256": "
|
|
38
|
+
"size": 143463,
|
|
39
|
+
"sha256": "52ce980fd10aa67e97679cd0772b4451274f0dd0d850f779cb30a639a59b9465"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"path": "worker/GxMcp.Worker.exe",
|
|
43
|
-
"size":
|
|
44
|
-
"sha256": "
|
|
43
|
+
"size": 4074496,
|
|
44
|
+
"sha256": "2eaf21396d10dd46000bc11a6d228ddd63700efc67aa2e5aa7f52de7a512b543"
|
|
45
45
|
}
|
|
46
46
|
]
|
|
47
47
|
}
|
package/publish/gxmcp-sbom.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "gxmcp-provenance/1",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"sourceCommit": "
|
|
3
|
+
"version": "3.12.0",
|
|
4
|
+
"sourceCommit": "c5b031b020339e26d61d6197380788df00d45197",
|
|
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": "
|
|
11
|
+
"sha256": "211df51c0afef5c5613ae807fdb10032f72d9c027fb69a26908ad0f2a46760ff"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"name": "nexus-ide",
|
|
15
15
|
"lockfile": "src/nexus-ide/package-lock.json",
|
|
16
16
|
"size": 267538,
|
|
17
|
-
"sha256": "
|
|
17
|
+
"sha256": "a486349d82a3322c4ec34d5af433497a5ec8603ecb31caa59ea0c0f23d96b481"
|
|
18
18
|
}
|
|
19
19
|
]
|
|
20
20
|
}
|
package/publish/nexus-ide.vsix
CHANGED
|
Binary file
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{"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}},
|
|
5
5
|
{"name":"genexus_query","description":"Search objects in active KB. Prefixes: name:, type:, usedby:, parent:, parentPath:, description:. name:\"X\" (or bare quoted \"X\") demands exact-name match — use it when you know the object's name. Compact by default. Pass kbs:[...] to run the same read-only search across an explicit set of already-open KBs in one bounded, per-KB-reported call. See genexus://kb/tool-help/genexus_query. Requires the KB index to be Ready — check genexus_lifecycle action=status if results look empty.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"typeFilter":{"type":"string"},"domainFilter":{"type":"string"},"limit":{"type":"integer"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N."},"sort":{"type":"string","enum":["relevance","lastUpdate"],"description":"relevance (default) or lastUpdate (newest first; bypasses score ranking)."},"since":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate >= since."},"modifiedBefore":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate < modifiedBefore."},"cursor":{"type":"string","description":"Opaque token from prior nextCursor. Use with sort=lastUpdate for stable paging."},"kb":{"type":"string","description":"KB alias."},"kbs":{"type":"array","items":{"type":"string"},"description":"Federated read-only discovery over an explicit KB set (max 16). Uses only already-open KBs and never opens one (the Worker pool can evict a KB you are working in). Results are grouped per KB with per-KB status and complete flags plus a coverage summary; a not-open/warming/slow/failing KB is reported individually, never as zero matches. Mutually exclusive with kb."},"cursors":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-KB continuation: map each alias in kbs to that KB's nextCursor. An alias outside kbs is rejected, not dropped."},"maxConcurrency":{"type":"integer","description":"Federation only: KBs searched in parallel (default 4, max 8)."},"maxTotalResults":{"type":"integer","description":"Federation only: total results across all KBs (default 500, max 5000). Overflow marks the affected KB incomplete with its nextCursor intact."},"perKbTimeoutMs":{"type":"integer","description":"Federation only: per-KB deadline in ms (default 30000, max 120000)."},"axiCompact":{"type":"boolean","description":"Compact projection (default true).","default":true},"exactMatch":{"type":"boolean","description":"Require an exact object-name match."}},"required":["query"],"examples":[{"query":"type:Transaction parent:Customers"},{"query":"\"Customer\"","limit":5},{"query":"name:\"Customer\"","kbs":["KbAlpha","KbBeta"]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
6
6
|
{"name":"genexus_list_objects","description":"List objects with pagination. Feed nextOffset until hasMore=false. Every item exposes its persisted GUID and path; verbose=true also exposes the typed EntityKey when available.","inputSchema":{"type":"object","properties":{"filter":{"type":"string","description":"Legacy: name OR description. Prefer nameFilter/descriptionFilter."},"nameFilter":{"type":"string","description":"Substring on name."},"descriptionFilter":{"type":"string","description":"Substring on description."},"pathPrefix":{"type":"string","description":"Folder prefix, e.g. 'Root Module/X/'."},"limit":{"type":"integer"},"offset":{"type":"integer"},"parent":{"type":"string"},"parentPath":{"type":"string"},"typeFilter":{"type":"string"},"verbose":{"type":"boolean","description":"Full item shape."},"sort":{"type":"string","enum":["name","lastUpdate"],"description":"name (default, type-bucketed) or lastUpdate (newest first)."},"since":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate >= since."},"modifiedBefore":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate < modifiedBefore."},"cursor":{"type":"string","description":"Opaque token from prior nextCursor. Use with sort=lastUpdate for stable paging."},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N."},"kb":{"type":"string","description":"KB alias."},"axiCompact":{"type":"boolean","description":"Compact projection (default true).","default":true},"projection":{"type":"string","enum":["minimal","standard","verbose"],"description":"minimal=name+type+lastUpdate; standard=default compact; verbose=all fields. Overrides axiCompact when set."}},"examples":[{"limit":25},{"typeFilter":"Transaction","limit":10}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
7
|
-
{"name":"genexus_read","description":"Read object code and metadata. Omitting 'part' (RECOMMENDED) returns the COMPLETE object in 1 call (rules with parm, source/events, variables, structure, called signatures) tailored to the object type. Resolve modular objects by name/type, persisted GUID, EntityKey, or path. Pass 'part' only for targeted single-part reads. Response carries versionToken for safe writes. A single-part response also carries contentToken: echo it back as ifUnchangedSince to re-read the same representation without retransmitting an unchanged body. See genexus://kb/tool-help/genexus_read.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"targets":{"type":"array","items":{"type":"string"}},"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."},"part":{"type":"string","description":"DataSelector: parameters|conditions|orders|projection|definedBy|baseTransaction|baseTable|joins|structure."},"parts":{"type":"array","items":{"type":"string"},"description":"Selected parts; unavailable DataSelector parts appear in unsupportedParts. Mutually exclusive with part/offset/limit."},"offset":{"type":"integer"},"limit":{"type":"integer"},"ifUnchangedSince":{"type":"string","description":"Opaque contentToken from a previous single-part read of the SAME object/part/offset/limit. Provably unchanged -> notModified:true with identity and freshness metadata and no source; otherwise the full body plus a new contentToken and conditional.reason. Single-part reads only (rejected with ConditionalReadUnsupportedForm on targets[]/parts[]/full-object forms). Omit to keep the unconditional behavior."},"type":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer"},{"name":"Customer","type":"Procedure","guid":"<guid-from-list>"},{"name":"Customer","path":"Operations/Customer","type":"Procedure"},{"name":"Customer","part":"Source"},{"name":"Customer","part":"Source","limit":0,"ifUnchangedSince":"<contentToken-from-previous-read>"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
7
|
+
{"name":"genexus_read","description":"Read object code and metadata. Omitting 'part' (RECOMMENDED) returns the COMPLETE object in 1 call (rules with parm, source/events, variables, structure, called signatures) tailored to the object type. Resolve modular objects by name/type, persisted GUID, EntityKey, or path. Pass 'part' only for targeted single-part reads. Response carries versionToken for safe writes. A single-part response also carries contentToken: echo it back as ifUnchangedSince to re-read the same representation without retransmitting an unchanged body. See genexus://kb/tool-help/genexus_read.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"targets":{"type":"array","items":{"type":"string"}},"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."},"part":{"type":"string","description":"DataSelector: parameters|conditions|orders|projection|definedBy|baseTransaction|baseTable|joins|structure."},"parts":{"type":"array","items":{"type":"string"},"description":"Selected parts; unavailable DataSelector parts appear in unsupportedParts. Mutually exclusive with part/offset/limit."},"offset":{"type":"integer"},"limit":{"type":"integer"},"refresh":{"type":"boolean","default":false,"description":"Bypass response caches, invalidate the SDK object, then independently reload the same identity. Use after an IDE save. Fails with FreshReadUnavailable if freshness cannot be confirmed. readFreshness reports Worker origin/age; _meta reports Gateway cache hits."},"ifUnchangedSince":{"type":"string","description":"Opaque contentToken from a previous single-part read of the SAME object/part/offset/limit. Provably unchanged -> notModified:true with identity and freshness metadata and no source; otherwise the full body plus a new contentToken and conditional.reason. Single-part reads only (rejected with ConditionalReadUnsupportedForm on targets[]/parts[]/full-object forms). Omit to keep the unconditional behavior."},"type":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer"},{"name":"Customer","type":"Procedure","guid":"<guid-from-list>"},{"name":"Customer","path":"Operations/Customer","type":"Procedure"},{"name":"Customer","part":"Source"},{"name":"Customer","part":"Source","refresh":true},{"name":"Customer","part":"Source","limit":0,"ifUnchangedSince":"<contentToken-from-previous-read>"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
8
8
|
{"name":"genexus_edit","description":"Edit object part. name or targets (exclusive). mode: full|patch|ops. dryRun first. async=true returns an operationId for lifecycle polling. Text payloads for Source/Rules/Events/Code must contain real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence with LiteralLineBreaksDetected. For WWP edit host's PatternInstance NOT the parent WebForm (gets overwritten on reapply). Uncertain about a property/method/event? → resources/read uri=genexus://kb/skills/navigation (or gam-integrated-security / sd-panel-mobile / webpanel-events) first.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"parts":{"type":"array","description":"Multi-part edit on a single object. Each item: {part, content, mode?}. Saves the object once atomically. Text content must use real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence.","items":{"type":"object","properties":{"part":{"type":"string"},"content":{"type":"string"},"mode":{"type":"string"}},"required":["part","content"]}},"mode":{"type":"string","enum":["full","patch","ops"]},"content":{"type":"string"},"ops":{"type":"array","description":"GeneXus semantic ops (NOT RFC 6902 JSON-Patch). Each item: {op, args}. Supported ops: set_attribute, add_attribute, remove_attribute (Transaction); add_rule, remove_rule (Transaction/Procedure/WebPanel); set_property (any kind). Use mode=patch for textual find/replace.","items":{"type":"object","properties":{"op":{"type":"string","enum":["set_attribute","add_attribute","remove_attribute","add_rule","remove_rule","set_property"]},"args":{"type":"object","description":"Op-specific args. set_attribute: {name, type?, description?}. add_attribute: {name, type, ...}. add_rule: {rule}. set_property: {name, value}."}},"required":["op"]}},"patch":{"type":"object","additionalProperties":true,"description":"Shorthand for {find,replace}; implies mode=patch when mode is omitted, and is a usage_error with mode=full|ops: find is the exact existing text, replace is inserted literally (no auto-indentation). Optional opt-in protections: scope bounds the search region, indentation validates the replacement's base indent. Both apply ONLY to this shape — never with operation, mode=ops, targets[], parts[], Insert_After or Append.","properties":{"find":{"type":"string","description":"Exact existing text to find. Real line breaks; tabs/spaces must match the part."},"replace":{"type":"string","description":"Replacement text, inserted literally."},"scope":{"type":"object","required":["start"],"description":"Region delimited by complete-line anchors: editable starts after scope.start's last line and ends before scope.end's first line (EOF when end is omitted). Anchors stay outside the region, are compared with only CRLF/LF normalized, and must each be unique. Errors: ScopeStartRequired, ScopeAnchorNotFound, ScopeAnchorAmbiguous, ScopeAnchorNotComparable. The response reports editableStartLine, editableEndLineExclusive and scopeEndsAtEof.","properties":{"start":{"type":"string","description":"Required. Unique complete-line anchor ending immediately before the editable region."},"end":{"type":"string","description":"Optional. Unique complete-line anchor starting immediately after the editable region. Omitted = region runs to EOF."}}},"indentation":{"type":"object","required":["mode"],"description":"Validates the base indentation of the located match against the first line of replace before persisting; tabs and spaces are distinct and nothing is reformatted. With replaceAll=true every match is validated. Errors: IndentationMismatch, IndentationNotComparable.","properties":{"mode":{"type":"string","enum":["validate"],"description":"validate: block the write when the replacement's base indentation differs from the matched line's."}}}}},"scope":{"type":"object","description":"patch.scope may also be passed at the top level. Honored ONLY by the abbreviated patch={find,replace} form; combined with operation, mode=ops, targets[], parts[], Insert_After or Append the call is rejected with ScopeUnsupportedPatchForm and nothing is written."},"indentation":{"type":"object","description":"patch.indentation may also be passed at the top level. Honored ONLY by the abbreviated patch={find,replace} form; combined with operation, mode=ops, targets[], parts[], Insert_After or Append the call is rejected with IndentationUnsupportedPatchForm and nothing is written."},"context":{"type":"string","description":"Exact existing text to find (Replace) or anchor after (Insert_After). Required for both. For text parts, send real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence."},"operation":{"type":"string","enum":["Replace","Insert_After","Append"]},"expectedCount":{"type":"integer"},"replaceAll":{"type":"boolean","description":"patch mode only. Apply to ALL occurrences instead of requiring expectedCount to match exactly."},"dryRun":{"type":"boolean"},"async":{"type":"boolean","description":"Run as a background job. Result returns operationId/job_id for genexus_lifecycle polling."},"estimated_seconds":{"type":"integer","description":"When async=true, expected runtime used for progress/job metadata (default 30)."},"verifyRollback":{"type":"boolean"},"targets":{"type":"array","description":"Multi-target Source/Rules writes. Each target may include expectedVersion/baseVersion; all versions are checked before the first write.","items":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"content":{"type":"string"},"expectedVersion":{"type":"string"},"baseVersion":{"type":"string"}},"required":["name","content"]}},"type":{"type":"string"},"return_post_state":{"type":"boolean","description":"Omit post_state.diff (default true)."},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"verbose":{"type":"boolean","description":"Add ±15-line slices to post_state."},"validate":{"type":"string","enum":["strict","best-effort","only"],"description":"strict (default) aborts on first error and post-write-verifies visual/PatternInstance writes (re-reads + diffs the persisted XML). best-effort applies what compiles and SKIPS the post-write XML re-read/diff (faster on large WebForm/PatternInstance writes; build to confirm). only runs in-memory, no persist."},"validationMode":{"type":"string","enum":["specify"],"description":"Issue #60: run the inline Specify pass (Spec+Gen, no Compile) against the edited object right after the write, returning structured spc*/gen* diagnostics in the same call. Combines with rollbackOnFailure."},"rollbackOnFailure":{"type":"boolean","description":"Explicit rollback only. Full Source verification failure reports AtomicRollbackUnavailable without a restore write until atomic conditional restore is supported. Other paths require a valid snapshot. No rollback when false or omitted."},"requireObjectSave":{"type":"boolean","default":false,"description":"Full Source requires transactional object save. Events patch: dryRun available; real writes blocked by ObjectSaveIsolationUnverified until SDK/pattern save-event isolation is established. No override; baseVersion required."},"forceWrite":{"type":"boolean","default":false,"description":"WebForm only: persist despite SDK WebForm validation errors; response includes validationOverridden=true."},"verifyMode":{"type":"string","enum":["semantic","normalized","exact"],"default":"normalized","description":"Post-save text comparison. Full exact compares public-read text verbatim; patch exact retains logical CRLF/LF equivalence. normalized ignores EOL, BOM, trailing whitespace and blank lines; semantic also tolerates casing/spacing. Fresh reread always required. sdkSaveCompleted/saved report physical save; persistedStateKnown and postSaveVerification report read evidence. Mismatch never retries automatically."},"visualVerify":{"type":"boolean","default":false,"description":"Post-edit headless screenshot + pixel-diff vs baseline. See tool-help."},"baseVersion":{"type":"string","description":"Optimistic concurrency: pass the versionToken from the genexus_read this edit is based on. If the object changed since (e.g. edited in the IDE), the write is refused with VersionConflict instead of overwriting the newer version. Omit to skip the check."},"expectedVersion":{"type":"string","description":"Alias of baseVersion. The write is refused when the current version no longer matches."},"concurrencyPolicy":{"type":"string","enum":["warn","fail_if_open"],"default":"warn","description":"warn (default) or fail_if_open if open in GeneXus IDE."},"autoDeclareVariables":{"type":"boolean","default":false,"description":"When true, scans updated source for newly referenced &Variable tokens and auto-declares them in VariablesPart."},"kb":{"type":"string","description":"KB alias."},"changeSet":{"type":"object","required":["action","changes"],"properties":{"action":{"type":"string","enum":["preview","validate","apply"]},"changes":{"type":"array","items":{"type":"object","required":["name","content"],"properties":{"name":{"type":"string"},"part":{"type":"string","enum":["Source","Rules","Variables"]},"content":{"type":"string"},"expectedVersion":{"type":"string"}}}},"changeSetId":{"type":"string"},"baseRevision":{"type":"string"}}},"module":{"type":"string","description":"mode=ops: Transaction module for modular objects."}},"examples":[{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new"}},{"name":"Customer","mode":"patch","part":"Rules","patch":{"find":"error(","replace":"msg("},"dryRun":true},{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new","scope":{"start":"// Banco B","end":"// Proximo banco"}}}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
|
|
9
9
|
{"name":"genexus_inspect","description":"Use this for a compact object snapshot: metadata, variables, structure, signature and navigation context. Modular objects accept persisted GUID, EntityKey, or path in addition to name/type. Don't use it when you need full Source or exact part bytes; use genexus_read for that. runtimeIds needs a prior build.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"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."},"include":{"type":"array","items":{"type":"string","enum":["metadata","variables","signature","structure","parts","controls","events_repertoire","callers","runtimeIds"]}},"projection":{"type":"string","enum":["minimal","standard","verbose"],"description":"Token budget. minimal=name/type/lastUpdate; standard=default (vars≤40 name+type, source heads 1200c); verbose=full vars + 8000c heads."},"type":{"type":"string"},"kb":{"type":"string","description":"KB alias."},"verbose":{"type":"boolean","description":"Include verbose diagnostic fields."}},"examples":[{"name":"Customer"},{"name":"Customer","type":"Procedure","path":"Operations/Customer"},{"name":"Customer","include":["variables","signature"]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
10
10
|
{"name":"genexus_analyze","description":"Use this for cross-object semantic analysis. mode=context (alias deep_context) returns 360° task context in 1 call (object + called procedures' parm signatures + referenced tables' schemas/PKs + SDTs + callers). Other modes: impact, callers, hierarchy, navigation, linter, summary, explain. mode=theme_classes lists the KB's theme classes (name + objectGuid) so you can pick a class by name; objectGuid is the class object's GUID and is NOT the value a layout class attribute takes, so never invent that value. mode=explain is compatibility-only: it preserves the legacy response envelope and returns NotImplemented; use mode=summary for a concise overview, mode=context for 360° task context, or genexus_read for source. Requires Ready index for impact/callers.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"mode":{"type":"string","enum":["context","deep_context","linter","navigation","hierarchy","impact","cross_platform_impact","callers","event_flow","data_context","ui_context","pattern_metadata","summary","dependency_heatmap","code_metrics","kb_stats","table_relations","theme_classes","explain"]},"code":{"type":"string","description":"mode=explain: legacy code snippet carried through the compatibility-only envelope; the result is NotImplemented. Use mode=summary, mode=context, or genexus_read for supported analysis."},"cursor":{"type":"string","description":"Continuation cursor from a budgeted page. mode=context: scan.nextCursor. mode=callers: the integer scan.nextCursor (resume offset into the caller list)."},"maxCallers":{"type":"integer","description":"mode=callers: callers to scan in this page (default 50)."},"maxSourceBytes":{"type":"integer","description":"mode=callers: UTF-8 bytes of caller source per page (default 4194304). A caller larger than this is listed in scan.skippedCallers."},"format":{"type":"string","enum":["json","ascii"],"description":"mode=dependency_heatmap: ascii adds rendered bar chart."},"kb":{"type":"string","description":"KB alias."},"maxBytes":{"type":"integer","description":"mode=context: maximum UTF-8 bytes for the returned context bundle (bounded by the server)."},"waitForIndex":{"type":"boolean","description":"mode=impact: block up to 30s for Ready index (default true).","default":true},"dryRun":{"type":"boolean","description":"mode=linter: with fix=true, reject the unsupported combination before any SDK read; with fix=false, lint remains read-only."},"fix":{"type":"boolean","description":"mode=linter: apply automatic fixes to the KB."},"top":{"type":"integer","description":"mode=code_metrics: maximum results (default 25)."},"waitTimeoutMs":{"type":"integer","description":"mode=impact: maximum index wait in milliseconds."}},"required":["mode"],"examples":[{"name":"Customer","mode":"impact"},{"name":"Customer","mode":"summary"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
@@ -21,7 +21,7 @@
|
|
|
21
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
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
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}},
|
|
24
|
-
{"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."},"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":"
|
|
24
|
+
{"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
25
|
{"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
26
|
{"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}},
|
|
27
27
|
{"name":"genexus_kb","description":"Manage open KBs, session selection, startup config, Knowledge Base creation, and GeneXus environments. create bootstraps a brand new KB via native MSBuild tasks; list/open/close/select/set_session_default/set_persistent_default/set_default operate on WorkerPool and session context; select sets active KB for current session only without mutating config; set_persistent_default explicitly persists startup default to config.json and returns persistedTo; set_default is a legacy persistent default operation; set_startup/get_startup mirror IDE 'Set As Startup Object'; list_environments lists all configured environments; get_environment reads the active environment; set_environment selects an environment.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["list","open","close","select","set_session_default","set_persistent_default","set_default","set_startup","get_startup","list_environments","get_environment","set_environment","create"],"description":"KB pool or startup-selection operation to perform."},"alias":{"type":"string","description":"KB alias. open: auto from path basename if omitted."},"kb":{"type":"string","description":"KB alias for environment actions; required when more than one Worker is open."},"path":{"type":"string","description":"Absolute KB path (required for create and for open if alias not in config)."},"driver":{"type":"string","enum":["native-sdk","dotnet-reflection","com-gxpublic"],"description":"open only: per-KB driver override. Use com-gxpublic for classic GeneXus 8/9 KBs; otherwise omit to resolve the catalog driver."},"installationPath":{"type":"string","description":"open only: per-KB GeneXus installation/provider root. For GX8 this is typically the folder containing gxw32.exe (for example ...\\ARTech\\GeneXus\\gxw80)."},"name":{"type":"string","description":"Object name (required for set_startup) or Knowledge Base name (optional for create, defaults to directory name)."},"environment":{"type":"string","description":"Environment name/folder (required for set_environment), e.g. development."},"persist":{"type":"boolean","description":"Persist KB to config.json for create and legacy set_default (default false for create, default true for set_default)."},"dbServer":{"type":"string","description":"create only: SQL Server instance name (default (LocalDB)\\MSSQLLocalDB)."},"dbName":{"type":"string","description":"create only: target database name (default gx_kb_<name>)."},"dbUser":{"type":"string","description":"create only: database user for SQL authentication (optional)."},"dbPassword":{"type":"string","description":"create only: database password for SQL authentication (optional)."},"template":{"type":"string","description":"create only: generator template path or name, e.g. CSharp/csharp.kbtemplate (optional)."},"sdkPath":{"type":"string","description":"create only: explicit GeneXus SDK installation directory (optional)."},"major":{"type":"string","description":"open/create: target GeneXus major version, e.g. '8', '16', '17', or '18' (optional). For open, use with driver/installationPath to select a legacy SDK per KB."},"openAfterCreate":{"type":"boolean","description":"create only: automatically open the KB and start a Worker instance after creation (default true)."},"dryRun":{"type":"boolean","description":"create only: preview KB creation plan without creating directories or running MSBuild (default false)."}},"required":["action"],"examples":[{"action":"open","path":"C:\\KBs\\MyKb"},{"action":"create","path":"C:\\KBs\\NewKb","major":"18"},{"action":"select","alias":"MyKb"},{"action":"set_persistent_default","alias":"MyKb"},{"action":"list"},{"action":"list_environments"},{"action":"get_environment"},{"action":"set_environment","environment":"development"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{"name":"genexus_api","description":"Inspect HTTP procedures and native API routes. action=list|describe|routes_inspect|routes_clone|routes_update|snapshot|diff_baseline|export_openapi|import_openapi. API route writes use typed ServiceGroupSource, optimistic versioning, full snapshot, rollback and post-save reread; no lifecycle operation is implicit.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","describe","routes_inspect","routes_clone","routes_update","snapshot","diff_baseline","export_openapi","import_openapi"],"description":"API introspection, route-editing, or baseline operation to perform."},"api":{"type":"string","description":"API name (routes_inspect|routes_clone|routes_update)."},"sourcePrefix":{"type":"string","description":"Source method/path prefix, e.g. inbound."},"targetPrefix":{"type":"string","description":"Target method/path prefix, e.g. reverse."},"routes":{"type":"array","items":{"type":"object","required":["sourceMethod","method","route"],"additionalProperties":false,"properties":{"sourceMethod":{"type":"string"},"method":{"type":"string"},"route":{"type":"string","pattern":"^/"},"verb":{"type":"string"}}}},"expectedVersion":{"type":"string","description":"versionToken returned by the preceding dry run or inspection."},"versionToken":{"type":"string","description":"Backward-compatible alias for expectedVersion; pass the token returned by the preceding dry run or inspection."},"dryRun":{"type":"boolean","default":true,"description":"routes_clone/routes_update: preview first; false writes only with expectedVersion or versionToken."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Restore the complete API snapshot when post-save verification diverges."},"operation":{"type":"string","description":"Operation value carried by the reused request contract, e.g. REVERSE."},"target":{"type":"string","description":"Procedure or API name (action=describe)."},"name":{"type":"string","description":"Baseline name (action=snapshot)."},"baseline":{"type":"string","description":"Baseline name under .gx/api-baselines/ or absolute path (action=diff_baseline)."},"pathPrefix":{"type":"string","description":"Folder prefix filter (action=list/export_openapi)."},"title":{"type":"string","description":"export_openapi: OpenAPI info.title."},"version":{"type":"string","description":"export_openapi: OpenAPI info.version."},"spec":{"type":"string","description":"import_openapi: OpenAPI 3 JSON document."},"content":{"type":"string","description":"Alias of spec for import_openapi."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list"},{"action":"routes_inspect","api":"OrdersApi"},{"action":"routes_clone","api":"OrdersApi","sourcePrefix":"inbound","targetPrefix":"reverse","operation":"REVERSE","dryRun":true,"rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
30
30
|
{"name":"genexus_apply_pattern","description":"Apply a pattern (e.g. WorkWithPlus) to a parent (IDE Right-click → Apply Pattern). Transaction=family-gen; WebPanel/WebComponent/SDPanel=direct-attach (pass settings.template). mode=diagnose (or dryRun=true) returns findings without mutating. Working on Smart Devices? → resources/read uri=genexus://kb/skills/sd-panel-mobile for Main object semantics. mode=actions manages typed grid and form-level actions, persists and re-reads PatternInstance, supports dryRun diff and rollbackOnFailure, and never adds security permissions automatically.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Target KBObject name."},"pattern":{"type":"string","description":"Installed pattern name or GUID. Required for apply/diagnose; reapply can infer it from the existing instance, but that route is refused for non-WorkWithPlus patterns."},"mode":{"type":"string","enum":["apply","diagnose","actions"],"description":"apply (default) mutates; diagnose returns reasons without applying. actions exposes typed WWP grid, form-level, and action-group editing."},"action":{"type":"string","enum":["list_actions","add_grid_action","add_user_action","update_action","move_action","remove_action"],"description":"mode=actions operation."},"group":{"type":"string","description":"Action group name (e.g. TableActions)."},"containerName":{"type":"string","description":"Form-level action container name, usually TableActions."},"actionName":{"type":"string","description":"Name of the action to add, update, or remove. Form-level actions derive the GeneXus event Do<actionName>."},"caption":{"type":"string","description":"Caption for add_user_action."},"newGroup":{"type":"string","description":"move_action: destination action group."},"position":{"type":"integer","minimum":0,"description":"zero-based index among actions in group."},"procedure":{"type":"string","description":"Target Procedure to execute on action click."},"selection":{"type":"string","enum":["current","multiple"],"description":"Execution scope: current (single record) or multiple."},"enabledWhen":{"type":"string","description":"Condition expression for action enablement."},"visibleWhen":{"type":"string","description":"Condition expression for action visibility."},"icon":{"type":"string","description":"Action icon name or class."},"description":{"type":"string","description":"Action tooltip / description text."},"confirmation":{"type":"string","description":"Confirmation message prompt."},"confirmTitle":{"type":"string","description":"Confirmation dialog title."},"settings":{"type":"object","description":"Pattern-instance settings tree."},"reapply":{"type":"boolean","default":false,"description":"Re-run on an existing instance. Refused for non-WorkWithPlus patterns: headless reapply does not regenerate derived objects (PatternRouteUnsupported). Edit the instance via genexus_edit part=PatternInstance."},"validate":{"type":"boolean","default":false,"description":"apply mode only: optionally build the generated host. mode=actions never invokes Specify, Generate, Build, Rebuild, compilation, or tests."},"dryRun":{"type":"boolean","default":false,"description":"Alias for mode=diagnose. When true, returns pattern findings without mutating. With mode=actions it previews the typed action diff."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"On a failed write or post-save verification, attempt to restore the original PatternInstance and report the rollback result."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer","pattern":"WorkWithPlus"},{"name":"WorkWithPlusCustomer","pattern":"WorkWithPlus","reapply":true},{"name":"Customer","pattern":"WorkWithPlus","mode":"diagnose"},{"name":"Customer","pattern":"WorkWithPlus","mode":"actions","action":"add_grid_action","group":"Actions","actionName":"Approve","procedure":"ApproveCustomer","dryRun":true},{"name":"WorkWithPlusImpressaoConfiguracao","pattern":"WorkWithPlus","mode":"actions","action":"add_user_action","containerName":"TableActions","actionName":"BaixarConfiguracao","caption":"Baixar Configuração","dryRun":true,"rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
31
31
|
{"name":"genexus_edit_and_build","description":"Edit + rebuild callers in one call. Returns edit diff + impact + a build block that may include taskId/pollTarget for lifecycle follow-up. validate=true/validationMode=specify validates the saved object; rollbackOnFailure restores its pre-write snapshot on specification failure.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Target object name."},"part":{"type":"string","description":"Part (Source, Rules, ...)."},"content":{"type":"string","description":"New content. For mode=patch may be {find,replace} object."},"patch":{"description":"Same shape as genexus_edit.patch. Auto-sets mode=patch."},"mode":{"type":"string","enum":["full","patch"],"default":"patch"},"type":{"type":"string","description":"Disambiguates ambiguous names."},"dryRun":{"type":"boolean","default":false},"validate":{"type":"boolean","default":false},"validationMode":{"type":"string","enum":["specify"],"default":"specify"},"rollbackOnFailure":{"type":"boolean","default":true},"buildIncludeCallees":{"type":"string","enum":["none","direct","transitive"],"default":"direct"},"buildPlanCap":{"type":"integer","default":200},"waitForIndex":{"type":"boolean","default":true},"waitTimeoutMs":{"type":"integer","default":30000},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"visualVerify":{"type":"boolean","default":false,"description":"Post-edit headless screenshot + pixel-diff vs baseline. See tool-help."}},"required":["name","part"],"examples":[{"name":"Customer","part":"Source","patch":{"find":"oldValue","replace":"newValue"},"validate":true},{"name":"Customer","part":"Rules","mode":"patch","patch":{"find":"error(","replace":"msg("},"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
32
|
-
{"name":"genexus_security","description":"Audit KB security. action=audit_gam scans GAM/env props; action=scan_secrets greps Source for credential-shaped literals; action=scan_native drives the native GeneXus Security Scanner (ISecurityScannerService). Returns findings with severity.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["audit_gam","scan_secrets","scan_native"],"description":"audit_gam: scans GAM and environment properties; scan_secrets: greps Source for credentials; scan_native: drives native GeneXus Security Scanner."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"audit_gam"},{"action":"scan_secrets"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
32
|
+
{"name":"genexus_security","description":"Audit KB security. action=audit_gam scans GAM/env props; action=scan_secrets greps Source for credential-shaped literals; action=scan_native drives the native GeneXus Security Scanner (ISecurityScannerService); action=audit_object is a fast in-memory check of one object against the IDE rules it knows (name). Returns findings with severity.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["audit_gam","scan_secrets","scan_native","audit_object"],"description":"audit_gam: scans GAM and environment properties; scan_secrets: greps Source for credentials; scan_native: drives native GeneXus Security Scanner; audit_object: quick audit of one object."},"name":{"type":"string","description":"audit_object: object name."},"type":{"type":"string","description":"audit_object: object type, to disambiguate."},"guid":{"type":"string","description":"audit_object: object GUID."},"entityKey":{"type":"string","description":"audit_object: object entity key."},"path":{"type":"string","description":"audit_object: object path."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"audit_gam"},{"action":"scan_secrets"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
33
33
|
{"name":"genexus_doctor","description":"Health check: GX install, KB state, worker, cache age, recent telemetry. Paste output for triage when something feels off. When more than one KB is open, pass kb=<alias> to pick which one to diagnose.","inputSchema":{"type":"object","properties":{"kb":{"type":"string","description":"Alias of the KB to diagnose. Optional; required only when multiple KBs are open (otherwise the single open / default KB is used)."}},"additionalProperties":false,"examples":[{},{"kb":"mykb"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
34
34
|
{"name":"genexus_edit_form","description":"Semantic WebForm edits. Actions: add_textblock, add_button, set_visibility, remove_control, wrap_in_fieldset.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["add_textblock","add_button","set_visibility","remove_control","wrap_in_fieldset"],"description":"Semantic WebForm control operation to execute."},"name":{"type":"string","description":"Target WebPanel or Transaction name."},"parent":{"type":"string","description":"Parent control ID to insert the new control into."},"position":{"type":"string","description":"first|last|after:<id>"},"caption":{"type":"string","description":"add_textblock/add_button: caption text."},"format":{"type":"string","enum":["Text","HTML"],"description":"add_textblock: format (Text or HTML)."},"event":{"type":"string","description":"add_button: event name; accepts EventA or 'EventA'; the writer normalizes quoting."},"controlId":{"type":"string","description":"add_textblock/add_button: explicit control ID (recommended for stable re-reads); set_visibility/remove_control: control ID to target."},"controlIds":{"type":"array","items":{"type":"string"},"description":"wrap_in_fieldset: list of control IDs to wrap inside the fieldset."},"legend":{"type":"string","description":"wrap_in_fieldset: legend text for the fieldset container."},"visible":{"type":"boolean","description":"set_visibility: visibility state (true or false)."},"dryRun":{"type":"boolean","description":"Preview form modifications without persisting."},"baseVersion":{"type":"string","description":"Version token from the preceding WebForm read; required for persistence when supplied by the generic edit path."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Request a guarded pre-write snapshot restore when independent read-back fails."},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"add_button","name":"WPMain","caption":"Confirmar","event":"OnConfirm"},{"action":"set_visibility","name":"WPMain","controlId":"GrpDetail","visible":false}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
35
35
|
{"name":"genexus_compare","description":"Read-only SDK comparison. content adds diffs (part=read alias, partType, unified/omittedReason), preserving equal/differences. CRLF/CR to LF. Limits: input 1M UTF-16 units, diff 16K/part, JSON evidence 128KiB total; excess omitted. properties unchanged. See genexus_help.","inputSchema":{"type":"object","required":["objectA","objectB"],"properties":{"objectA":{"type":"string"},"objectB":{"type":"string"},"type":{"type":"string","description":"Object type filter applied to both lookups, e.g. 'Transaction'."},"mode":{"type":"string","enum":["content","properties"],"description":"content (default) or properties."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"objectA":"Customer","objectB":"CustomerV2"},{"objectA":"Customer","objectB":"CustomerV2","mode":"properties"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
@@ -48,9 +48,12 @@
|
|
|
48
48
|
{"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
49
|
{"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
50
|
{"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. 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","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."},"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}},
|
|
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
52
|
{"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
53
|
{"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
54
|
{"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}},
|
|
55
|
-
{"name":"genexus_worker_pool","description":"Gateway-only worker-pool warm-spare configuration. Does not require a KB selection or dispatch to the Worker.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["warm_spares"],"description":"Worker-pool operation to warm spare workers."},"spareCount":{"type":"integer"},"count":{"type":"integer"}},"examples":[{"action":"warm_spares","spareCount":1}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}
|
|
55
|
+
{"name":"genexus_worker_pool","description":"Gateway-only worker-pool warm-spare configuration. Does not require a KB selection or dispatch to the Worker.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["warm_spares"],"description":"Worker-pool operation to warm spare workers."},"spareCount":{"type":"integer"},"count":{"type":"integer"}},"examples":[{"action":"warm_spares","spareCount":1}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
56
|
+
{"name":"genexus_dfd","description":"Read-only entity-relationship diagram of a Transaction or Table, built only from the table relations the SDK reports: extends (N-1) and subordinates (1-N) edges, a Mermaid erDiagram, and the truncation cause.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Transaction or Table name."},"maxDepth":{"type":"integer","minimum":1,"maximum":6,"description":"Relation hops from the root (default 3)."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Order"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
57
|
+
{"name":"genexus_impact","description":"Read-only affected set of an object over the caller/callee graph: objects with depth, counts by type, a dependencies-first rebuild order, cycles and the cap that truncated it. No risk score.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Object name; a name shared by several objects is refused with their guids and paths."},"guid":{"type":"string","description":"Object GUID."},"entityKey":{"type":"string","description":"Object entity key."},"path":{"type":"string","description":"Object path, with or without the Root Module/ prefix; never falls back to a homonym."},"type":{"type":"string","description":"Object type, to narrow a bare name."},"kb":{"type":"string","description":"KB alias."},"direction":{"type":"string","enum":["up","down","both"],"description":"up: callers (default); down: callees."},"maxDepth":{"type":"integer","minimum":1,"maximum":6,"description":"Default 2."},"maxNodes":{"type":"integer","minimum":1,"maximum":2000,"description":"Default 200."},"typeFilter":{"type":"string","description":"Only report objects of this type; the traversal is unchanged."}},"examples":[{"name":"PostOrder","direction":"up","maxDepth":3}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
58
|
+
{"name":"genexus_object_context","description":"Read-only context of one object: identity from the index, callers/callees with coverage (fieldTrust partial means not read), and its data model (ER diagram for a Transaction/Table), with what was suppressed.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Object name; a name shared by several objects is refused with their guids and paths."},"guid":{"type":"string","description":"Object GUID."},"entityKey":{"type":"string","description":"Object entity key."},"path":{"type":"string","description":"Object path, with or without the Root Module/ prefix; never falls back to a homonym."},"type":{"type":"string","description":"Object type, to narrow a bare name."},"kb":{"type":"string","description":"KB alias."},"maxDepth":{"type":"integer","minimum":1,"maximum":6,"description":"Default 1."},"maxNodes":{"type":"integer","minimum":1,"maximum":2000,"description":"Default 100."}},"examples":[{"guid":"00000000-0000-0000-0000-000000000000"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}
|
|
56
59
|
]
|
|
Binary file
|