docs blog library
github

Tools

Tools let an agent read files, run commands, search the web, and perform other actions. Your agent’s tool settings and approval policy control which calls can run.

Use tools in a conversation

Describe the result you want. The agent selects available tools and shows its calls as it works:

Read the current git diff, run the relevant tests, and explain any failures.

Built-in tools cover files, commands, search, and task state. Use jazz agent edit <agent> to add capabilities such as compositions or configured MCP servers. To forbid a tool, set deniedTools in the agent configuration.

Tool permissions

Every tool declares risk (can this change something), disclosure (what class of information its answer carries), and egress (does this send data off the machine). They are independent. The approval policy checks risk; see the security model for disclosure and egress controls:

TierCovers
read-onlyReads, searches, web requests, todos, work state, scratchpad, subagents
low-riskMemory writes, reminders, and wake triggers
high-riskFile writes, deletes, and moves
unknownexecute_command, classified per command and then judged against the tier

Email, calendar and Obsidian are skills that shell out through execute_command, so they sit at unknown. A low-risk run declines anything the classifier does not judge inspect-only or minor. The tool inventory has the exact classification of every tool.

Reviewing changes

Before a high-risk tool acts, Jazz shows the proposed operation. File edits include a preview diff. Approve to apply the change or reject to leave it unapplied.

When a tier is too coarse

To allow a specific tool or command, use these controls:

ControlWhereScope
Per-tool allowlist“Always approve this tool” in an approval promptthis session
Per-command allowlistautoApprovedCommands in ~/.jazz/config.jsonpersisted, execute_command only
Toolset trimmingthe agent’s deniedToolspermanent, and the strongest
{ "autoApprovedCommands": ["git status", "git log"] }

Command matching uses a parsed key, the binary plus its first subcommand, never a raw string prefix. Approving git status therefore does not also approve git status && rm -rf /.

Finding tools

Some tool schemas load only when needed. The agent uses search_tools to discover tools and load their arguments.

Adding your own

Add capabilities through your agent configuration or an MCP server:

  • Custom tools, declared in the agent’s own JSON. A name, a schema, and either a fixed response or a command to shell out to. No code, no plugin, no restart.
  • MCP servers, which bring an existing ecosystem’s tools in. Jazz tracks whether you have trusted a server before exposing its tools broadly.

machine-readable: /docs/concepts/tools.md · /llms.txt · /llms-full.txt