Custom Tools
Tool Visibility
As you build more tools, you don't want all of them loaded into every conversation. Tool visibility controls which tools appear in your AI's tool manifest and which stay callable but hidden.
Two Visibility Modes
| Mode | In tools/list? | Callable by name? | Best for |
|---|---|---|---|
exposed | Yes | Yes | Daily drivers — tools you use frequently |
unlisted | No | Yes | Utility tools, one-off scripts, seasonal tools |
Default: New tools are exposed.
Why It Matters
Every tool in tools/list consumes tokens in your AI's context window. With 5 tools, this is negligible. With 30+, it adds up. Unlisting tools you don't use daily keeps your AI fast and focused without losing access to anything.
Unlisted tools are still:
- Callable by name if you or your AI know the name
- Discoverable via
system(action="search", query="...") - Usable in scheduled runs and email triggers
- Visible in
tool(action="list")
Set Visibility on Create
tool(action="create",
name="quarterly_report",
description="Generate quarterly financial report",
tool_type="code",
visibility="unlisted",
...)
Change Visibility Later
tool(action="update", tool_id="tool_abc123", visibility="unlisted")
tool(action="update", tool_id="tool_abc123", visibility="exposed")
Check Current Visibility
tool(action="list")
Each tool in the list shows its visibility field.
Recommendations
- Expose tools you use daily: your main API proxies, dashboards, frequently-called utilities
- Unlist tools that are seasonal, experimental, or only triggered by schedules/email
- Unlist one-off migration tools or debugging helpers after you're done with them
- Use
system(action="search")to find unlisted tools when you need them