The tool list got too expensive
← All posts

The tool list got too expensive


The February post was about context. Every MCP server ships a pile of tools, and every tool’s schema was being sent to the model whether the task needed it or not. On-demand mode was the escape hatch: two meta-tools until the agent activated a skill.

CAPA 2.2, on September 17, makes a stricter version of that the default.

Search, not the whole catalog

capa init now writes:

options:
  toolExposure: search

In this mode the client is offered search and call_tool. The agent looks up a tool when it has a task, then calls it. It does not receive a schema for every tool in the project up front. Skill requires lists, which matter in expose-all and on-demand, do nothing here, and the console hides them so you do not think they are taking effect.

The project switch:

Tool exposure set to search in the CAPA console

Expose-all is still there when the catalog is small and you want the model to see every tool. On-demand is still there when you want skill activation to load schemas. none still leaves the MCP list empty and keeps capa sh as the way to run tools. Search is the one I want on a new repo.

CAPA measured 19–40% lower inference cost, at the same quality, when tools load on demand instead of up front: 150 trials on claude-opus-4-8. The number is in the CAPA README. Search is the newer default aimed at the same cost.

Hide tools on the server, not only in the prompt

Exposure is also per server now. A server’s expose is all, except, exactly, or none. The first time you add a tools list, that server switches to a curated set, and the console asks you to confirm, because you just hid everything you did not name.

The public AWS documentation server has more tools than this demo needs. The file allows one:

servers:
  - id: aws-docs
    type: mcp
    expose: exactly
    tools:
      - aws___search_documentation
    def:
      url: https://knowledge-mcp.global.api.aws
    description: AWS documentation

The console shows the count and marks each tool exposed or hidden:

aws-docs with one tool exposed and the rest hidden

That is a different cut from search mode. Search decides how schemas are delivered. expose: exactly decides which tools exist for this project at all. A hidden tool is not something the agent can search its way into.

Sub-agents still get their own list, from the April post. A research agent does not inherit the curated server just because the project has it. You name the tools on the sub-agent.

What I run on a new repo

capa init
capa install

Search is already set. I add servers with expose: exactly and the few tools the work needs. I leave expose-all for a server whose whole surface is the point. Then I read an activity run, from the August post, the first time the agent calls something I did not expect.

The February problem was a tool list the model had to carry. The default is now a list it has to ask for.


Search mode and per-server exposure shipped in CAPA 2.2.0. Upgrade with capa upgrade.