OptionalDefaultCatalog layers only. Whether prompts run against this model default to native tool calling when they express no preference of their own. POLICY flag — subordinate to LLMConfigurationSettings.SupportsNativeToolCalling.
OptionalNativeCatalog layers only. How control flow is expressed when a request resolves to native tool
calling. 'envelope' (the default when absent) is the hybrid: Actions are tools, everything
else — completion, chat, delegation, payload changes — is the JSON envelope. 'implicit' is the
implicit protocol: sub-agents, payload_change_request and ask_user are tools too, a tool call
continues the loop, and plain text with no call ends the turn as task completion. Consulted only
when the gate resolves native; subordinate to LLMConfigurationSettings.SupportsNativeToolCalling.
OptionalNativeCatalog layers only. Whether action results are returned to the model as native tool-result
turns instead of a markdown "Action results" user message. Absent means false. Consulted
only when the gate resolves native.
OptionalSupportsCatalog layers only. Whether this model — or this vendor's serving of it — supports native tool/function calling. CAPABILITY flag, and a hard gate: no policy or preference at any layer can force tools onto a (model, vendor) whose resolved value is not true.
Set false only for a model or serving path verified NOT to support tools; leave absent when
support is unknown, because absent is the honest value and it inherits.
OptionalUsePrompt layers only. Whether THIS prompt asks for native tool calling. PREFERENCE — it
outranks the catalog's DefaultToNativeToolCalling and is still subordinate to the capability
gate. Absent means "no preference; fall through to the model's default".
The
LLMsection — knobs the LLM drivers and the prompt runner consume at call time.Every flag here is TRI-STATE (
boolean | null | absent), and the three differ. The cascade REPLACES on any explicit value (includingnull) and only skips a layer that OMITS the property. So absent means "inherit", while an explicit value at a higher layer overrides a lower one even when that value isfalse.Properties are marked with the layers that HONOR them. Setting one at a layer that does not honor it is inert rather than an error — deliberate tolerance, so a knob can move between layers without a schema change.
Deliberately NO index signature: this interface must stay structurally identical to the JSONType source, because CodeGen emits per-entity copies of that source and runtime code assigns those generated types straight into this one. An index signature here (and not there) makes the two incompatible. Unknown keys in stored JSON still round-trip fine at runtime — the parse is tolerant; what is lost is only a compile-time affordance nothing needs.