Optional ReadonlyContractOptional structural contract fingerprint emitted by CodeGen (or set by a hand-authored
operation). Automatically forwarded on Execute when the caller didn't override
options.contractFingerprint, allowing the server resolver to detect stale client bundles.
ReadonlyExecutionWhether this operation is a plain Sync request/response or a LongRunning run.
Optional ReadonlyExposeWhen true, exposes this operation for automatic discovery by MJ AI Agent tool adapters.
Optional ReadonlyExposeWhen true, exposes this operation for automatic discovery by MJ MCP server tool adapters.
ReadonlyOperationStable registry key and wire token for this operation (e.g. RecordProcess.RunNow).
ReadonlyRequiredAPI-key scope required to invoke this operation.
entity:update is the ceiling applied at the resolver; per-record Create vs Update
permissions are enforced inside each node's own Save().
Optional ReadonlyRequiresWhen true, the server only permits the system user to invoke this operation.
Optional ReadonlyToolHuman/LLM-readable description when exposed as an Agent or MCP tool.
Optional ReadonlyToolOptional JSON-Schema object describing TInput when exposed as an Agent or MCP tool.
ProtectedAuthorizeValidates the shape of the incoming payload.
Deliberately not where entity permissions are checked. Two other layers already own that, and duplicating it here would need a provider this hook is not given:
TransactionGroupResolver was patched for.BaseEntity.Save() calls CheckPermissions() for Create or Update as
appropriate, per record, against the acting user — including children the caller never
named explicitly.The graph payload.
The acting user.
True when the payload is well-formed enough to attempt.
The universal entry point — identical on client and server. Routes the operation through the active (or explicitly supplied) provider's IRemoteOperationProvider.RouteOperation.
The typed input payload.
Optional invocation options (mode, progress callback, explicit provider/user).
The result; never throws for logical failures — inspect Success / ErrorMessage.
Server-side execution entry point, invoked in-process by a server provider / resolver after it has resolved this operation by key and applied the framework authorization gates (scope / system-user / entity permissions). It runs the per-operation Authorize hook and then InternalExecute, wrapping the outcome in a RemoteOpResult.
The typed input payload.
The server execution context (provider, acting user, progress emitter, HTTP metadata).
The wrapped result; logical failures are returned, not thrown.
ProtectedInternalRebuilds the graph server-side and saves it.
The graph payload.
The provider to build entity objects from.
The acting user.
The server execution context.
The post-save root fields and re-serialised companions.
StaticGetDiscovers all ClassFactory-registered BaseRemotableOperation subclasses that opt into
AI Agent (ExposeAsAgentTool) and/or MCP (ExposeAsMCPTool) tool exposure.
Optionalfilter: { agentOnly?: boolean; mcpOnly?: boolean }
Saves a parent record and its companion-contributed children atomically, server-side.
Invoked automatically by
BaseEntity.Save()when the entity has companion work to do and the active provider cannot open a local transaction. Application code does not normally call this directly — the point of the design is thatorder.Save()is the whole API on both tiers.