OptionalClientApp-scoped static client tools, by tool-definition reference. Surfaced to every agent acting in this app and resolved by the unified client-tool resolver.
OptionalClientToolDefinitionID?: stringReferences MJ: AI Client Tool Definitions by ID (preferred) or Name.
OptionalName?: stringOptionalPriority?: numberOptional app-level priority for first-match-wins resolution.
OptionalDefaultThe app's default/lead agent (conversational default AND realtime lead identity). Agent ID.
OptionalRealtimeRealtime co-agent overrides that layer into the config cascade above the agent's own TypeConfiguration (and below runtime overrides). Only keys set here override; unset keys fall through to the agent / type defaults.
OptionalChannels?: {Which interactive realtime channels (Whiteboard, Remote Browser, an Open App's own widget, …)
this app's sessions get. Layers into the same per-channel scoping cascade as the agent's own
realtime.channels configuration (see @memberjunction/ai-core-plus ResolveRealtimeChannelScope):
a layer's Include turns a channel on (the only way to get an opt-in channel), its Exclude
turns one off, and the MOST SPECIFIC layer to mention a channel wins; within one layer Exclude
beats Include. A channel's registry row IsActive = false remains a master kill switch that
nothing here can override. Channel keys match the channel's name, case-insensitively.
OptionalConfig?: { [channelKey: string]: { [key: string]: unknown } }Per-channel opaque configuration, keyed by channel key; delivered to the channel at session start.
OptionalDisplayPolicy?: { [channelKey: string]: "open-on-start" | "on-demand" | "headless" }Per-channel display override, keyed by channel key.
OptionalExclude?: string[]Channel keys to turn OFF. Beats Include within the same layer.
OptionalInclude?: string[]Channel keys to turn ON (required for opt-in channels; a no-op for all-sessions ones).
OptionalRequireZeroDataRetentionFor?: ("state" | "pixels")[]Exposure levels that need a zero-data-retention model. When the session model's configuration
does not declare Privacy.ZeroDataRetention: true, exposure is lowered to below the lowest level
listed, and the agent is told why. Applies to every channel in the session.
OptionalDisclosure?: "silent" | "mention" | "hand-voice"Default delegation disclosure for this app's co-agent.
OptionalModelPreference?: stringModel preference override (AI Models Name or ID).
OptionalPersona?: { SpeakingStyle?: string; Tone?: string }Persona override folded into the session system prompt at mint.
OptionalRelevantAgents relevant to this app — the static allowed-target set for the co-agent. Union-accumulated at runtime with agent-type defaults and dynamic (channel) registrations.
OptionalAdvertised?: booleanIf true, surfaced in pickers / proactively offered; if false, available but not advertised.
Agent ID (loop or flow — transparent to the co-agent).
OptionalDisclosure?: "silent" | "mention" | "hand-voice"Per-target disclosure override; falls back to the effective default disclosure.
OptionalLabel?: stringOptional friendly label for the capability manifest / disclosure ("Skip", "Query Builder").
App-scoped agent configuration, stored as JSON in the
AgentSettingscolumn ofMJ: Applications. Every field is optional — an app opts into exactly what it needs.