announce_catalog_changes, tells the model about it.
Fields
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
announce_catalog_changes | Optional[bool] | ➖ | Universal profile only. When true, a catalog whose deferred tools changed between two of the model’s own turns (a client that connects MCP servers while the model works) is re-announced before the next model turn, with the sources added, changed and removed since the previous index, or that no deferred tools remain. Applies when the router lists the catalog itself; a client whose own tool search was adopted lists its deferred tools itself and is not re-announced. The announcement shares the result budget of the turn and is skipped when it does not fit. Absent or false: the catalog index is announced on a user turn only. | |
cascade_mode | Optional[components.CascadeMode] | ➖ | How a universal tool_search query reaches the client’s own tool search. Absent or keywords: a select: query becomes the words of the selected names and the limit is always filled. native: a select: query passes through verbatim when the client search documents select:, and the limit field is sent only when the model gave one, unless the client search requires it, in which case its documented default is sent. Experimental. | |
hint | Optional[str] | ➖ | Universal profile only. Caller text announced to the model with the deferred catalog before its first turn, for example which sources the task needs. Repeated only when it changes. Trimmed before the length bounds apply. Recorded in the catalog_index discovery record of the response, so it is replayed with the conversation. | |
interface | Optional[components.Interface] | ➖ | How the universal profile exposes the hidden catalog to the provider. Absent or wrappers: the tool_search and tool_exec tools. code_mode: one tool_code tool that runs a short JavaScript program in which search() and call() reach the catalog, so several searches and calls complete in one tool result. Experimental. | |
profile | components.Profile | ✔️ | Loading profile. portable serves the defer_loading tools with router-built search and call wrappers on any model and keeps the catalog fixed. universal defers every wrappable tool behind the same wrappers so the provider-facing tool list never changes, and rebuilds the catalog from each request so tools can be added or removed mid-conversation. | |
protocol | components.Protocol | ✔️ | N/A | |
scope | Optional[components.DeferredToolsControlScope] | ➖ | Which tools the universal profile defers. Absent or all: every wrappable tool outside the coding-harness core set. mcp: only MCP server tools (mcp__* names and Responses namespaces outside functions); the harness keeps its own built-in tools direct. client: only the tools the client itself marked defer_loading, so a harness with its own tool search keeps its other direct tools direct; an adopted client tool search is still replaced by the router wrappers, and a client-deferred tool the router cannot wrap stays direct. Experimental. | |
search | components.DeferredToolsSearchStrategy | ✔️ | Router-local regex/BM25 or caller-owned custom search. | { “max_results”: 5, “type”: “bm25” } |
validation | components.Validation | ✔️ | Where tool-call arguments are checked against the original schema. Only runtime (in OpenRouter) is available in this release. |