What
- Message normalization gained an
inlineToolDefinitionsoption: when enabled and tool metadata is available, newly-added tools are announced to the model as fulltool_definitionblocks (including schema) instead of baretool_referencenames, with a fallback path (inlineToolsFallback) that strips this back to name-only announcements when needed. - Internal bookkeeping now tracks which tool additions were defined inline "by value" versus just named on the wire (
definedByValue, abyValueNamesset), used to decide how each tool addition is announced. - The behavior is controlled by a new
inline_toolsgate that layers on top of the existingmid_conv_tool_changegate, adding a second capability tag to the announced feature list and controlling whether inline tool declarations are surfaced or refused mid-conversation, with new state tracking refusals (inlineToolsRefusal.rejectedHeader,inlineToolsRefusal.announcementsByName).
Why Previously, tools added partway through a conversation were only referenced by name, which could leave the model without enough information (such as the tool's schema) to use them correctly. This lets the model see a tool's full definition when it's added later, when the feature is enabled.
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
The finding doesn't state what practical difference this distinction makes to users.