Skip to content

Sync ako/mxcli: agent documents keep Agent Editor's settings, published MCP services in MDL, catalog mapping refs - #1781

Merged
ako merged 24 commits into
mendixlabs:mainfrom
ako:main
Nov 9, 2026
Merged

ako merged 24 commits into
mendixlabs:mainfrom
ako:main

Conversation

@ako

@ako ako commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

Syncs ako/mxcli:main into upstream: 8 commits since #1777 — agent documents round-trip byte for byte, new MDL for Agent Editor settings and published MCP services, and catalog refs for mappings.

Agents: a rewrite keeps what Agent Editor stored

alter agent, alter knowledge base and create or modify of an agent, AI model or knowledge base rebuilt the document's Contents from mxcli's typed fields, so everything else Agent Editor stores was lost: per-tool approval and display text, the agent's streaming switches and selected model, a knowledge base tool's minimum similarity. The knowledge base's Portal name was written as "", and on create or modify so were the model's type and name. create or modify agent also ignored a tool block's Document (the tool ran no microflow), dropped MCP service tools' service (it compared "mcp" with the stored "MCP"), wrote every tool with an empty id, and blanked the entity reference's documentId.

A rewrite now writes onto the stored Contents: unmodelled keys keep their value and position, tool entries pair by id, and the stored layout (Agent Editor 2.6's two-space indent, or compact) is kept. Measured on Studio Pro 11.16 projects: describe → exec of 34 agent documents writes nothing, byte for byte, and alter changes only the property it sets.

Agents: approval, display text and streaming in MDL

Agent Editor 2.2+ stores human-in-the-loop and streaming settings in the agent document (measured on 11.12–11.16):

  • tool / mcp service block: UserAccessApproval (HiddenForUser | VisibleForUser | UserConfirmationRequired), DisplayTitle, DisplayDescription
  • knowledge base block: MinSimilarity, IsVisible
  • agent: EnableBackendStreaming, EnableUIStreaming

describe prints them, alter agent … set takes the streaming switches and alter … add the block keys. A create or modify that leaves one out keeps its stored value, so older scripts don't reset them.

Agents: publish the app's microflows as an MCP server

New: create [or modify] / alter (set, add tool, drop tool) / describe / list / drop published mcp service — MCP Server 5.x's model configuration (Agent Editor 2.6's publishedMCPService document), with tool blocks (Microflow, Description, Title, Schema) and authentication (AuthenticationEnabled, AuthenticationMicroflow, AuthorizationServerUrl, Scopes). A rewrite writes onto the stored Contents as above, and check reports what CreateMCPServer would refuse (MDL-MCPSERVER01). Measured on Studio Pro 11.16, Agent Editor 2.6.0, MCP Server 5.4.0: describe → exec of stored services writes nothing; a new authenticated service re-execs unchanged and adds no mx check errors.

A new mcp-server skill covers both routes: the startup-microflow route of MCP Server 3.x–4.x (CreateMCPServer / AddTool / AddPrompt with the parameters read from 3.0.0, 4.0.0 and 4.2.2) and 5.x's model configuration, mapping each runtime parameter to its document key. Its example handles its Java action errors (CreateMCPServer throws when the application root URL is unset) and passes check, exec, lint and mx check against an untouched copy.

Catalog: refs for mappings and JSON structures

A flow applying an import or export mapping (import/export action, REST or web service call), and a mapping built on a JSON structure, made no refs row, so refs, show callers and orphan checks reported them as unreferenced — on one real 11.16 app, 54 of 55 import mappings, 42 of 44 export mappings and 65 of 66 JSON structures. refs gains mapping_call (flow → mapping) and structure (mapping → JSON structure) edges. Schema version 35 rebuilds cached catalogs. Fixes #1703

ako and others added 24 commits November 8, 2026 09:34
…SON structure (#1861)

A flow that applies an import or export mapping (import/export action,
REST or web service call) and a mapping built on a JSON structure made
no refs row, so refs, show callers and orphan checks reported mappings
and structures in use as unreferenced. On FactoryManagement (11.16) 54
of 55 import mappings, 42 of 44 export mappings and 65 of 66 JSON
structures had no inbound edge.

refs gains mapping_call (flow -> IMPORT_MAPPING / EXPORT_MAPPING, a
caller kind) and structure (mapping -> JSON_STRUCTURE) edges, and an
import/export activity's ActionRef names its mapping. Schema 35.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
alter agent, alter knowledge base and create or modify of an agent, AI
model or knowledge base rebuilt Contents from mxcli's typed fields, so
everything else Agent Editor stores was lost: per tool userAccessApproval,
displayTitle and displayDescription; the agent's enableBackendStreaming,
enableUIStreaming and selectedModel; a knowledge base tool's minSimilarity.
The knowledge base's Portal name was written as "", and on create or modify
so were the model's type and name.

create or modify agent also ignored a tool block's Document (the tool ran
no microflow), compared ToolType to "mcp" where the visitor sets "MCP" (MCP
service tools lost their service), wrote every tool with an empty id, and
blanked the entity reference's documentId.

- Backend: a rewrite writes onto the stored Contents. Unmodelled keys keep
  their value and position; tool entries pair by id; a cleared modelled key
  stays cleared; a zero value the stored document never held is not added.
  The output keeps the stored layout (Agent Editor 2.6 indents by two
  spaces, older documents are compact) and the creating extension.
- Executor: create and alter share one tool builder, which resolves a
  microflow tool's Document and gives a new tool a fresh id. create or
  modify carries the stored tool ids, the entity documentId and the
  Portal-picked model and knowledge base names.

Measured on Studio Pro 11.16 projects (mx-test-projects/ICXGraphPilot and
FactoryManagement): describe -> exec of all 34 agent documents now writes
nothing, byte for byte; alter changes only the property it sets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
…#2022)

Agent Editor 2.2+ stores human-in-the-loop and streaming settings in the
agent document; measured on Studio Pro 11.12-11.16 projects:

- tool / mcp service block: UserAccessApproval (HiddenForUser |
  VisibleForUser | UserConfirmationRequired), DisplayTitle,
  DisplayDescription
- knowledge base block: MinSimilarity, IsVisible
- agent: EnableBackendStreaming, EnableUIStreaming (on the agent, not on
  the model, which #2022 assumed)

Keys are the document property names. describe prints them, alter agent
... set takes the streaming switches, and alter ... add takes the block
keys. On create or modify a setting the statement leaves out keeps its
stored value, so a script from before these keys does not reset them.

describe also prints an MCP tool as an mcp service block again: it
compared the tool type to "mcp" where Studio Pro stores "MCP".

PROPOSAL_agent_document_support.md said approval was runtime-only; that
section is marked superseded with the measurement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
…ion (#2020)

The MCP Server module 3.x-4.x publishes through a startup microflow that
calls CreateMCPServer, AddTool and AddPrompt; MDL already writes these as
call java action, but no skill said how. The new mcp-server skill gives
the authentication, tool, prompt and initialize microflows with the
parameters and return types read from module 3.0.0, 4.0.0 and 4.2.2.

Measured: the example, run against a FactoryManagement copy (MCP Server
4.0.0, Mendix 11.16), passes check --references and exec, and mx check
reports the same four pre-existing CE1613 errors as the untouched copy.
Model configuration (MCP Server 5.x) still needs a Studio Pro sample.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
The embedded-skills test caps a description at 600 characters, and the
conformance gate refuses the deprecated show spelling (MDL-DEPR002).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
# Conflicts:
#	.claude/skills/mendix/agents/SKILL.md
#	CHANGELOG.md
…configuration

Measured on Agent Builder Starter App 2.2.0 (MCP Server 5.4.0, Agent
Editor 2.6.0): CreateMCPServer gains AuthorizationServerUrl and Scopes,
AddTool gains Title, and AgentEditorCommons' initPublishedMCPService
calls those same actions for every Published MCP service document. The
skill now maps each runtime parameter onto the document key. Its example
also runs on the 5.4 copy: check --references and exec pass, mx check
reports the control's three CE0642 errors and nothing new.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
# Conflicts:
#	.claude/skills/mendix/agents/SKILL.md
#	CHANGELOG.md
fix(agents): a rewrite keeps what Agent Editor stored in the document
… user

From a live run on ako/ChatV2 (MCP Server 5.4.0): tools run as the
authenticated user, and CreateMCPServer throws when the application root
URL is unset, which mxcli run --local leaves for the stock localhost URL
and which then stops the runtime. The example now gives each Java action
call a custom error handler (log, return false / return empty), which
also clears the four CONV013 warnings it raised.

Verified on a fresh Agent Builder Starter App copy: check --references,
exec, lint with no warnings on the example, mx check 0 errors as the
untouched copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
…nt-settings

# Conflicts:
#	.claude/skills/mendix/agents/SKILL.md
#	CHANGELOG.md
MCP Server 5.x adds model configuration: an Agent Editor 2.6 document,
agenteditor.publishedMCPService, that AgentEditorCommons starts at
startup through MCPServer.CreateMCPServer and AddTool. MDL had no way to
write or read it.

create [or modify] / alter (set, add tool, drop tool) / describe /
list / drop published mcp service, with tool blocks (Microflow,
Description, Title, Schema) and the authentication settings
(AuthenticationEnabled, AuthenticationMicroflow, AuthorizationServerUrl,
Scopes). ServerName is optional: Studio Pro stores it without showing
it, a new document gets its own name and a duplicate keeps the
original's, so create defaults it and create or modify keeps it.

A rewrite writes onto the stored Contents: tools pair by uuid, keys
mxcli does not model stay, Agent Editor's indented layout and key
order are kept (authenticationMicroflow last, documentId first).
check reports what CreateMCPServer would refuse (MDL-MCPSERVER01).

Measured on Studio Pro 11.16, Agent Editor 2.6.0, MCP Server 5.4.0
(mx-test-projects/AgentBuilderStarterApp): describe -> exec of both
stored services writes nothing; alter changes only the key it sets; a
new authenticated service re-execs unchanged and mx check reports no
new errors against an untouched copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011oK82ttaGzay5CwiC2V7cf
docs(skills): publish an app as an MCP server with runtime configuration (#2020)
feat(agents): tool approval, display text and streaming in MDL (#2021, #2022)
…d-mcp-service

# Conflicts:
#	.claude/skills/mendix/agents/SKILL.md
#	CHANGELOG.md
feat(agents): publish the app's microflows as an MCP server (#2020)
fix(catalog): reference the mappings a flow applies and a mapping's JSON structure (#1861)
@ako
ako merged commit f99080e into mendixlabs:main Nov 9, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CATALOG.REFS has no edges to import/export mappings or from mappings to JSON structures, and none from layouts

1 participant