OpenClaude Built-in Tools: Complete Reference for 2024
OpenClaude ships with 40+ built-in tools that LLMs can invoke for web search, file operations, task management, code analysis, and more — organized under src/tools/ and registered via the central Tool framework in src/Tool.js.
This guide catalogs every available tool in the Gitlawb/openclaude repository, with source file paths, implementation status, and runnable code examples for the most commonly used capabilities.
What Are OpenClaude Built-in Tools?
OpenClaude's built-in tools are TypeScript modules that extend the LLM's capabilities beyond text generation. Each tool is a buildTool export located in its own subdirectory under src/tools/. The core Tool framework (src/Tool.js) provides the abstraction layer that registers these tools with the execution engine.
Tools follow a consistent pattern: they accept a parameter object, a ToolUseContext, permission flags, and a progress callback. This standardization makes it straightforward to add custom tools or invoke existing ones programmatically.
Complete List of OpenClaude Built-in Tools
The table below enumerates all tools found in the main branch, grouped by functional category.
Web and External Data Tools
| Tool | Purpose | Source File |
|---|---|---|
| WebSearchTool | Performs web search via DuckDuckGo, Bing, Brave, or other backends | src/tools/WebSearchTool/WebSearchTool.ts |
| WebFetchTool | Retrieves URL contents with permission model enforcement | src/tools/WebFetchTool/WebFetchTool.ts |
File System Tools
| Tool | Purpose | Source File |
|---|---|---|
| FileReadTool | Reads file contents with size limits and image processing | src/tools/FileReadTool/FileReadTool.ts |
| FileWriteTool | Writes raw text to files, creating them if needed | src/tools/FileWriteTool/FileWriteTool.ts |
| FileEditTool | In-place file editing (insert, replace, delete lines) | src/tools/FileEditTool/FileEditTool.ts |
| GlobTool | Expands file globs like **/*.ts and returns matching paths |
src/tools/GlobTool/GlobTool.ts |
| GrepTool | Runs regex search across repository files | src/tools/GrepTool/GrepTool.ts |
| SnipTool | Extracts code snippets by line numbers or markers | src/tools/SnipTool/SnipTool.ts |
Repository and Code Intelligence Tools
| Tool | Purpose | Source File |
|---|---|---|
| RepoMapTool | Generates symbol/file maps to help locate relevant code | src/tools/RepoMapTool/RepoMapTool.ts |
| LSPTool | Language Server Protocol queries (definitions, references) | src/tools/LSPTool/LSPTool.ts |
| EnterWorktreeTool | Enters a Git work-tree context | src/tools/EnterWorktreeTool/EnterWorktreeTool.ts |
| ExitWorktreeTool | Exits a Git work-tree context | src/tools/ExitWorktreeTool/ExitWorktreeTool.ts |
Task and Project Management Tools
| Tool | Purpose | Source File |
|---|---|---|
| TaskCreateTool | Creates new tasks with metadata | src/tools/TaskCreateTool/TaskCreateTool.ts |
| TaskGetTool | Retrieves details of a single task | src/tools/TaskGetTool/TaskGetTool.ts |
| TaskListTool | Lists tasks matching a filter | src/tools/TaskListTool/TaskListTool.ts |
| TaskUpdateTool | Updates task fields (status, description, etc.) | src/tools/TaskUpdateTool/TaskUpdateTool.ts |
| TaskStopTool | Stops a running task | src/tools/TaskStopTool/TaskStopTool.ts |
| TodoWriteTool | Adds TODO items to designated files or lists | src/tools/TodoWriteTool/TodoWriteTool.ts |
| MonitorTool | Monitors long-running tasks and reports progress | src/tools/MonitorTool/MonitorTool.ts |
Team and MCP Tools
| Tool | Purpose | Source File |
|---|---|---|
| TeamCreateTool | Creates teams in the MCP environment | src/tools/TeamCreateTool/TeamCreateTool.ts |
| TeamDeleteTool | Deletes teams from the MCP | src/tools/TeamDeleteTool/TeamDeleteTool.ts |
| MCPTool | General-purpose Model-Control-Plane API interface | src/tools/MCPTool/MCPTool.ts |
| ReadMcpResourceTool | Reads resources from the MCP store | src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts |
Shell and Command Execution Tools
| Tool | Purpose | Source File |
|---|---|---|
| BashTool | Executes Bash commands in sandboxed environment | src/tools/BashTool/BashTool.ts |
| PowerShellTool | Executes PowerShell commands safely | src/tools/PowerShellTool/PowerShellTool.ts |
Scheduling and Automation Tools
| Tool | Purpose | Source File |
|---|---|---|
| CronCreateTool | Creates scheduled cron jobs | src/tools/ScheduleCronTool/CronCreateTool.ts |
| CronDeleteTool | Deletes scheduled cron jobs | src/tools/ScheduleCronTool/CronDeleteTool.tsc |
| CronListTool | Lists scheduled cron jobs | src/tools/ScheduleCronTool/CronListTool.ts |
Content Processing and Review Tools
| Tool | Purpose | Source File |
|---|---|---|
| BriefTool | Generates short summaries of longer documents | src/tools/BriefTool/BriefTool.ts |
| ReviewArtifactTool | Reviews artifacts (code diffs) and surfaces comments | src/tools/ReviewArtifactTool/ReviewArtifactTool.ts |
| NotebookEditTool | Programmatically edits notebook cells (Jupyter, etc.) | src/tools/NotebookEditTool/NotebookEditTool.ts |
Workflow and Planning Tools
| Tool | Purpose | Source File |
|---|---|---|
| WorkflowTool | Executes user-defined workflows of chained tool calls | src/tools/WorkflowTool/WorkflowTool.ts |
| EnterPlanModeTool | Starts a planning phase for action sequences | src/tools/EnterPlanModeTool/EnterPlanModeTool.ts |
| ExitPlanModeV2Tool | Exits plan mode after planning phase | src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts |
Utility and Meta Tools
| Tool | Purpose | Source File |
|---|---|---|
| ToolSearchTool | Finds tools matching a user query | src/tools/ToolSearchTool/ToolSearchTool.ts |
| CtxInspectTool | Inspects current LLM context (messages, tool uses) | src/tools/CtxInspectTool/CtxInspectTool.ts |
| SendMessageTool | Sends messages to channels or conversations | src/tools/SendMessageTool/SendMessageTool.ts |
| RemoteTriggerTool | Triggers remote actions like webhooks | src/tools/RemoteTriggerTool/RemoteTriggerTool.ts |
| SkillTool | Framework for "skill" extensions (custom LLM capabilities) | src/tools/SkillTool/SkillTool.ts |
| SyntheticOutputTool | Generates synthetic output for testing/demos | src/tools/SyntheticOutputTool/SyntheticOutputTool.ts |
| OverflowTestTool | Stress-tests handling of very large inputs/outputs | src/tools/OverflowTestTool/OverflowTestTool.ts |
Placeholder Tools (Not Yet Implemented)
The following tools are defined as null stubs in the source code and reserved for future releases:
- VerifyPlanExecutionTool — intended to verify plan execution
- TungstenTool — reserved for Tungsten service integration
- SuggestBackgroundPRTool — planned for PR suggestions
- REPLTool — intended for interactive REPL sessions
How to Invoke OpenClaude Built-in Tools
All tools share a common call signature defined in src/Tool.js. The pattern requires five arguments:
- Parameters object — tool-specific arguments
ToolUseContext— runtime context supplied by OpenClaude- Permission flag — boolean for permission checks
- Parent message — usually
nullfor top-level calls - Progress callback — function receiving progress updates
Web Search Example
import { WebSearchTool } from './src/tools/WebSearchTool/WebSearchTool.js';
const result = await WebSearchTool.call(
{ query: 'latest TypeScript 5.5 features', maxResults: 3 },
toolUseContext,
true, // permission check enabled
null, // no parent message
(progress) => console.log('Search progress:', progress)
);
console.log(result);
The WebSearchTool in src/tools/WebSearchTool/WebSearchTool.ts supports multiple backends (DuckDuckGo, Bing, Brave) and returns concise, structured results suitable for LLM consumption.
File Operations Example
import { FileReadTool } from './src/tools/FileReadTool/FileReadTool.js';
import { FileWriteTool } from './src/tools/FileWriteTool/FileWriteTool.js';
// Read with size limit
const contents = await FileReadTool.call(
{ path: 'README.md', maxBytes: 10_000 },
ctx,
true,
null,
() => {}
);
console.log('File contents:', contents);
// Write new file
await FileWriteTool.call(
{ path: 'notes/todo.txt', content: '🔧 Fix bug #42\n' },
ctx,
true,
null,
() => {}
);
Both tools respect OpenClaude's permission model. FileReadTool handles image processing when detecting binary formats, while FileWriteTool creates parent directories automatically.
Task Management Example
import { TaskCreateTool } from './src/tools/TaskCreateTool/TaskCreateTool.js';
import { TaskListTool } from './src/tools/TaskListTool/TaskListTool.js';
// Create task
await TaskCreateTool.call(
{
title: 'Update dependencies',
description: 'Run `bun upgrade`',
assignee: 'devops'
},
ctx,
true,
null,
() => {}
);
// List open tasks
const tasks = await TaskListTool.call(
{ status: 'open' },
ctx,
true,
null,
() => {}
);
console.table(tasks);
The task tools (TaskCreateTool, TaskGetTool, TaskListTool, TaskUpdateTool, TaskStopTool) form a complete CRUD interface for project management within OpenClaude's MCP environment.
Repository Search Example
import { GrepTool } from './src/tools/GrepTool/GrepTool.js';
const matches = await GrepTool.call(
{ pattern: 'TODO', include: '**/*.ts' },
ctx,
true,
null,
() => {}
);
console.log('Found TODOs in:', matches);
GrepTool in src/tools/GrepTool/GrepTool.ts runs regex searches efficiently across the repository, while GlobTool handles file pattern expansion.
Tool Architecture and Key Files
Understanding the file structure helps when extending or debugging tools:
| Path | Purpose |
|---|---|
src/Tool.js |
Core abstraction with ToolDef interface and ToolUseContext |
src/utils/toolResultStorage.ts |
Persists tool results for later reference |
src/tools/**/index.ts |
Barrel exports for convenient imports |
src/tools/**/*Tool.ts |
Individual tool implementations |
src/tools/**/prompt.ts |
LLM-facing prompt templates |
src/tools/**/constants.ts |
Permission scopes and default settings |
src/tools/**/test.ts |
Unit tests in the CI validation suite |
Each tool directory is self-contained. For example, src/tools/BashTool/ contains BashTool.ts, prompt.ts, constants.ts, and test.ts.
Summary
- OpenClaude provides 40+ built-in tools across web search, file operations, task management, code intelligence, shell execution, and more
- All tools live under
src/tools/and export viabuildToolfor registration with theToolframework - Tools share a consistent API with five parameters: arguments, context, permission flag, parent message, and progress callback
- Four tools are currently placeholders (
null) and reserved for future releases:VerifyPlanExecutionTool,TungstenTool,SuggestBackgroundPRTool, andREPLTool - The modular design enables extending the toolset while maintaining reliability through isolated implementations and comprehensive test coverage
Frequently Asked Questions
How do I add a custom tool to OpenClaude?
Create a new directory under src/tools/YourToolName/ with YourToolName.ts implementing the buildTool export, plus prompt.ts, constants.ts, and test.ts following existing patterns. Register it in the tool registry by importing and exporting from the appropriate barrel file.
What permission model do OpenClaude tools use?
Each tool checks a boolean permission flag passed to call(). The constants.ts in each tool directory defines permission scopes. WebFetchTool and shell tools (BashTool, PowerShellTool) have stricter default permissions than file or search tools.
Can I use OpenClaude tools outside the LLM runtime?
Yes — instantiate a ToolUseContext manually. Most CLI or UI scenarios receive this from the framework, but programmatic usage requires constructing the context with appropriate message history and environment state.
Which search backends does WebSearchTool support?
According to src/tools/WebSearchTool/WebSearchTool.ts, the tool supports DuckDuckGo, Bing, and Brave as configurable backends, with DuckDuckGo as the default for privacy-focused searches.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →