A product catalog agent would need 300 capabilities. Loading all of them into every request is too heavy. Which design fits?
Why C is the answer
Progressive discovery, loading detail only when it is needed
Progressive discovery keeps the starting context small. The agent reads a short index and fetches full definitions on demand.
In detail
- Progressive discovery keeps the starting context small.
- The agent reads a short index, then fetches full definitions when needed.
- Keep the index descriptions clear, because they drive discovery.
Use case
An illustrative scenario, not a real incident.
A retailer needs hundreds of catalog actions. The agent starts with a short index and fetches a definition only when needed, so each request stays light.
See it in different ways
flowchart LR
A["Task"] --> B["Read the tool index"]
B --> C{"Which capability?"}
C --> D["Load that definition"]
D --> E["Call it"]stateDiagram-v2 [*] --> HowManyApps HowManyApps --> DirectTool: one app HowManyApps --> McpServer: many apps McpServer --> Stdio: local process McpServer --> StreamableHttp: remote, with OAuth
sequenceDiagram participant P0 as Agent participant P1 as Index participant P2 as Definition store P0->>P1: Which capability fits? P1-->>P0: Short list P0->>P2: Fetch this definition P2-->>P0: Full definition
Key point: Progressive discovery keeps the starting context small.
Why the other options are wrong
- A. Split the catalog across many agents, each one holding a random group of tools
- Random grouping makes it harder to reach the right tool.
- B. Remove most capabilities, and ask users to request the rest from a support team
- This removes capabilities that the product needs.
- D. Keep all 300 definitions in the system prompt and rely on prompt caching
- Caching lowers the cost, but 300 definitions still crowd selection.

