mirror of
https://github.com/codeaashu/claude-code.git
synced 2026-04-08 22:28:48 +03:00
6.0 KiB
6.0 KiB
Tools Reference
Complete catalog of all ~40 agent tools in Claude Code.
Overview
Every tool lives in src/tools/<ToolName>/ as a self-contained module. Each tool defines:
- Input schema — Zod-validated parameters
- Permission model — What requires user approval
- Execution logic — The tool's implementation
- UI components — Terminal rendering for invocation and results
- Concurrency safety — Whether it can run in parallel
Tools are registered in src/tools.ts and invoked by the Query Engine during LLM tool-call loops.
Tool Definition Pattern
export const MyTool = buildTool({
name: 'MyTool',
aliases: ['my_tool'],
description: 'What this tool does',
inputSchema: z.object({
param: z.string(),
}),
async call(args, context, canUseTool, parentMessage, onProgress) {
// Execute and return { data: result, newMessages?: [...] }
},
async checkPermissions(input, context) { /* Permission checks */ },
isConcurrencySafe(input) { /* Can run in parallel? */ },
isReadOnly(input) { /* Non-destructive? */ },
prompt(options) { /* System prompt injection */ },
renderToolUseMessage(input, options) { /* UI for invocation */ },
renderToolResultMessage(content, progressMessages, options) { /* UI for result */ },
})
Directory structure per tool:
src/tools/MyTool/
├── MyTool.ts # Main implementation
├── UI.tsx # Terminal rendering
├── prompt.ts # System prompt contribution
└── utils.ts # Tool-specific helpers
File System Tools
| Tool | Description | Read-Only |
|---|---|---|
| FileReadTool | Read file contents (text, images, PDFs, notebooks). Supports line ranges | Yes |
| FileWriteTool | Create or overwrite files | No |
| FileEditTool | Partial file modification via string replacement | No |
| GlobTool | Find files matching glob patterns (e.g. **/*.ts) |
Yes |
| GrepTool | Content search using ripgrep (regex-capable) | Yes |
| NotebookEditTool | Edit Jupyter notebook cells | No |
| TodoWriteTool | Write to a structured todo/task file | No |
Shell & Execution Tools
| Tool | Description | Read-Only |
|---|---|---|
| BashTool | Execute shell commands in bash | No |
| PowerShellTool | Execute PowerShell commands (Windows) | No |
| REPLTool | Run code in a REPL session (Python, Node, etc.) | No |
Agent & Orchestration Tools
| Tool | Description | Read-Only |
|---|---|---|
| AgentTool | Spawn a sub-agent for complex tasks | No |
| SendMessageTool | Send messages between agents | No |
| TeamCreateTool | Create a team of parallel agents | No |
| TeamDeleteTool | Remove a team agent | No |
| EnterPlanModeTool | Switch to planning mode (no execution) | No |
| ExitPlanModeTool | Exit planning mode, resume execution | No |
| EnterWorktreeTool | Isolate work in a git worktree | No |
| ExitWorktreeTool | Exit worktree isolation | No |
| SleepTool | Pause execution (proactive mode) | Yes |
| SyntheticOutputTool | Generate structured output | Yes |
Task Management Tools
| Tool | Description | Read-Only |
|---|---|---|
| TaskCreateTool | Create a new background task | No |
| TaskUpdateTool | Update a task's status or details | No |
| TaskGetTool | Get details of a specific task | Yes |
| TaskListTool | List all tasks | Yes |
| TaskOutputTool | Get output from a completed task | Yes |
| TaskStopTool | Stop a running task | No |
Web Tools
| Tool | Description | Read-Only |
|---|---|---|
| WebFetchTool | Fetch content from a URL | Yes |
| WebSearchTool | Search the web | Yes |
MCP (Model Context Protocol) Tools
| Tool | Description | Read-Only |
|---|---|---|
| MCPTool | Invoke tools on connected MCP servers | Varies |
| ListMcpResourcesTool | List resources exposed by MCP servers | Yes |
| ReadMcpResourceTool | Read a specific MCP resource | Yes |
| McpAuthTool | Handle MCP server authentication | No |
| ToolSearchTool | Discover deferred/dynamic tools from MCP servers | Yes |
Integration Tools
| Tool | Description | Read-Only |
|---|---|---|
| LSPTool | Language Server Protocol operations (go-to-definition, find references, etc.) | Yes |
| SkillTool | Execute a registered skill | Varies |
Scheduling & Triggers
| Tool | Description | Read-Only |
|---|---|---|
| ScheduleCronTool | Create a scheduled cron trigger | No |
| RemoteTriggerTool | Fire a remote trigger | No |
Utility Tools
| Tool | Description | Read-Only |
|---|---|---|
| AskUserQuestionTool | Prompt the user for input during execution | Yes |
| BriefTool | Generate a brief/summary | Yes |
| ConfigTool | Read or modify Claude Code configuration | No |
Permission Model
Every tool invocation passes through the permission system (src/hooks/toolPermission/). Permission modes:
| Mode | Behavior |
|---|---|
default |
Prompt the user for each potentially destructive operation |
plan |
Show the full plan, ask once |
bypassPermissions |
Auto-approve everything (dangerous) |
auto |
ML-based classifier decides |
Permission rules use wildcard patterns:
Bash(git *) # Allow all git commands
FileEdit(/src/*) # Allow edits to anything in src/
FileRead(*) # Allow reading any file
Each tool implements checkPermissions() returning { granted: boolean, reason?, prompt? }.
Tool Presets
Tools are grouped into presets in src/tools.ts for different contexts (e.g. read-only tools for code review, full toolset for development).
See Also
- Architecture — How tools fit into the overall pipeline
- Subsystems Guide — MCP, permissions, and other tool-related subsystems
- Exploration Guide — How to read tool source code