Skip to main content
Assigning a tool set normally makes every available tool definition callable when an objective starts. That is useful for a small set. With dozens or hundreds of operations, those schemas consume context before the agent does any work. Progressive discovery keeps the schemas out of the initial callable set. The objective starts with a catalog of exact tool names and Cadenya’s built-in tool_search. The agent loads only the named tools it needs.

Filter first, discover second

The two controls solve different problems: An omitted tool cannot be discovered. An available tool can be discovered only when its tool set or the individual tool is assigned to the variation. Start with Filter tools and require approval when the source exposes operations the agent should never reach.

Assign the tool set

Open the agent, stay on Variations, select the target variation, and click Add under Assignments. Choose Tool Set, search for the filtered tool set, and select it.
Inline variation assignment picker set to Tool Set with the Faker MCP tool set already attached

The variation assignment area lists every attached tool set

Assigning the set establishes reachability. The next setting changes when its definitions load.

Enable progressive discovery

Edit the variation and turn on Enable progressive tool discovery. Configure:
Progressive tool discovery settings with the switch enabled, Max tools per search, and Search hints

Progressive discovery is configured on the variation

Hints guide the model’s choice. They do not filter, search, or rank the catalog. tool_search accepts exact names copied from the catalog.
Leaving Max tools per search empty means no configured batch cap. A nonzero cap returns an error when one call requests too many names, so the model can retry with smaller batches.

Configure the same behavior with the SDK

The presence of progressiveDiscovery, even with no fields, enables the behavior.

Run an objective and inspect the timeline

Publish the agent and dispatch a request that needs an assigned tool:
The timeline should show:
  1. Tool Called for the built-in tool_search, with one or more exact toolNames.
  2. Tool Result reporting which definitions were loaded.
  3. Tool Called for a newly loaded assigned tool.
Objective timeline showing tool_search, GenerateFake, GetFakerOptions, and their results in execution order

The objective timeline records discovery before the loaded tool is called

The TypeScript event payload uses a callable-tool union. Built-ins have type: 'cadenyaProvidedTool':

What compaction changes

Discovered definitions belong to the objective’s current context window. When compaction creates a new window, the objective starts that window without those previously loaded tool definitions and can call tool_search again. Sub-agents are different. A sub-agent assignment remains directly callable and is not gated by progressive discovery.

Filter and approve tools

Set the reachable boundary before a variation searches it.

Assign capabilities

Choose between an individual tool, complete tool set, or sub-agent.