Skip to content

Tool exposure

Set options.toolExposure in your capabilities file to control what MCP clients see after capa install. The mode changes both tools/list and whether capa writes project-local MCP config files.

options:
toolExposure: expose-all # expose-all | on-demand | none
ModeWhat tools/list returnsMCP config filesHow the agent calls tools
expose-all (default)Every tool required by any active skill (full schemas)Written (main capa entry + sub-agent entries as needed)Direct MCP tools/call
on-demandOnly meta-tools setup_tools and call_toolWritten (same as expose-all)Call setup_tools(['<skill>']), then call_tool(name, data)
noneEmpty listNot written — capa skips .mcp.json / .cursor/mcp.json / Codex MCP entries and removes previously written onesInvoke via capa sh <group> <tool>

Use expose-all when you want the simplest setup: the client discovers every required tool up front. Best for smaller toolsets and interactive IDE agents.

Use on-demand when context windows get crowded. The agent activates skills when needed; setup_tools returns compact signatures, and invalid call_tool errors can include the full schema so the agent can retry without re-running setup.

Use none when policy forbids per-project MCP config edits, or you prefer shell-driven invocation. The capa HTTP server still runs; tools/list stays empty so MCP clients do not harvest the full tool list, while capa sh continues to execute tools.