# OpenClaude Built-in Tools: Complete Reference for 2024

> Explore OpenClaude's 40+ built-in tools for web search, file operations, code analysis, and more. Discover how LLMs leverage this comprehensive toolset for advanced tasks.

- Repository: [Gitlawb/openclaude](https://github.com/Gitlawb/openclaude)
- Tags: api-reference
- Published: 2026-09-05

---

**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`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/WebSearchTool/WebSearchTool.ts) |
| **WebFetchTool** | Retrieves URL contents with permission model enforcement | [`src/tools/WebFetchTool/WebFetchTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/FileReadTool/FileReadTool.ts) |
| **FileWriteTool** | Writes raw text to files, creating them if needed | [`src/tools/FileWriteTool/FileWriteTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/FileWriteTool/FileWriteTool.ts) |
| **FileEditTool** | In-place file editing (insert, replace, delete lines) | [`src/tools/FileEditTool/FileEditTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/FileEditTool/FileEditTool.ts) |
| **GlobTool** | Expands file globs like `**/*.ts` and returns matching paths | [`src/tools/GlobTool/GlobTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/GlobTool/GlobTool.ts) |
| **GrepTool** | Runs regex search across repository files | [`src/tools/GrepTool/GrepTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/GrepTool/GrepTool.ts) |
| **SnipTool** | Extracts code snippets by line numbers or markers | [`src/tools/SnipTool/SnipTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/RepoMapTool/RepoMapTool.ts) |
| **LSPTool** | Language Server Protocol queries (definitions, references) | [`src/tools/LSPTool/LSPTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/LSPTool/LSPTool.ts) |
| **EnterWorktreeTool** | Enters a Git work-tree context | [`src/tools/EnterWorktreeTool/EnterWorktreeTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/EnterWorktreeTool/EnterWorktreeTool.ts) |
| **ExitWorktreeTool** | Exits a Git work-tree context | [`src/tools/ExitWorktreeTool/ExitWorktreeTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TaskCreateTool/TaskCreateTool.ts) |
| **TaskGetTool** | Retrieves details of a single task | [`src/tools/TaskGetTool/TaskGetTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TaskGetTool/TaskGetTool.ts) |
| **TaskListTool** | Lists tasks matching a filter | [`src/tools/TaskListTool/TaskListTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TaskListTool/TaskListTool.ts) |
| **TaskUpdateTool** | Updates task fields (status, description, etc.) | [`src/tools/TaskUpdateTool/TaskUpdateTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TaskUpdateTool/TaskUpdateTool.ts) |
| **TaskStopTool** | Stops a running task | [`src/tools/TaskStopTool/TaskStopTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TaskStopTool/TaskStopTool.ts) |
| **TodoWriteTool** | Adds TODO items to designated files or lists | [`src/tools/TodoWriteTool/TodoWriteTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TodoWriteTool/TodoWriteTool.ts) |
| **MonitorTool** | Monitors long-running tasks and reports progress | [`src/tools/MonitorTool/MonitorTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TeamCreateTool/TeamCreateTool.ts) |
| **TeamDeleteTool** | Deletes teams from the MCP | [`src/tools/TeamDeleteTool/TeamDeleteTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/TeamDeleteTool/TeamDeleteTool.ts) |
| **MCPTool** | General-purpose Model-Control-Plane API interface | [`src/tools/MCPTool/MCPTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/MCPTool/MCPTool.ts) |
| **ReadMcpResourceTool** | Reads resources from the MCP store | [`src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/BashTool/BashTool.ts) |
| **PowerShellTool** | Executes PowerShell commands safely | [`src/tools/PowerShellTool/PowerShellTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/PowerShellTool/PowerShellTool.ts) |

### Scheduling and Automation Tools

| Tool | Purpose | Source File |
|------|---------|-------------|
| **CronCreateTool** | Creates scheduled cron jobs | [`src/tools/ScheduleCronTool/CronCreateTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/BriefTool/BriefTool.ts) |
| **ReviewArtifactTool** | Reviews artifacts (code diffs) and surfaces comments | [`src/tools/ReviewArtifactTool/ReviewArtifactTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/ReviewArtifactTool/ReviewArtifactTool.ts) |
| **NotebookEditTool** | Programmatically edits notebook cells (Jupyter, etc.) | [`src/tools/NotebookEditTool/NotebookEditTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/WorkflowTool/WorkflowTool.ts) |
| **EnterPlanModeTool** | Starts a planning phase for action sequences | [`src/tools/EnterPlanModeTool/EnterPlanModeTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/EnterPlanModeTool/EnterPlanModeTool.ts) |
| **ExitPlanModeV2Tool** | Exits plan mode after planning phase | [`src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/ToolSearchTool/ToolSearchTool.ts) |
| **CtxInspectTool** | Inspects current LLM context (messages, tool uses) | [`src/tools/CtxInspectTool/CtxInspectTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/CtxInspectTool/CtxInspectTool.ts) |
| **SendMessageTool** | Sends messages to channels or conversations | [`src/tools/SendMessageTool/SendMessageTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/SendMessageTool/SendMessageTool.ts) |
| **RemoteTriggerTool** | Triggers remote actions like webhooks | [`src/tools/RemoteTriggerTool/RemoteTriggerTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts) |
| **SkillTool** | Framework for "skill" extensions (custom LLM capabilities) | [`src/tools/SkillTool/SkillTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/SkillTool/SkillTool.ts) |
| **SyntheticOutputTool** | Generates synthetic output for testing/demos | [`src/tools/SyntheticOutputTool/SyntheticOutputTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/SyntheticOutputTool/SyntheticOutputTool.ts) |
| **OverflowTestTool** | Stress-tests handling of very large inputs/outputs | [`src/tools/OverflowTestTool/OverflowTestTool.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/Tool.js). The pattern requires five arguments:

1. **Parameters object** — tool-specific arguments
2. **`ToolUseContext`** — runtime context supplied by OpenClaude
3. **Permission flag** — boolean for permission checks
4. **Parent message** — usually `null` for top-level calls
5. **Progress callback** — function receiving progress updates

### Web Search Example

```typescript
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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/WebSearchTool/WebSearchTool.ts) supports multiple backends (DuckDuckGo, Bing, Brave) and returns concise, structured results suitable for LLM consumption.

### File Operations Example

```typescript
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

```typescript
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

```typescript
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`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/Tool.js) | Core abstraction with `ToolDef` interface and `ToolUseContext` |
| [`src/utils/toolResultStorage.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/BashTool.ts), [`prompt.ts`](https://github.com/Gitlawb/openclaude/blob/main/prompt.ts), [`constants.ts`](https://github.com/Gitlawb/openclaude/blob/main/constants.ts), and [`test.ts`](https://github.com/Gitlawb/openclaude/blob/main/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 via `buildTool` for registration with the `Tool` framework
- **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`, and `REPLTool`
- **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`](https://github.com/Gitlawb/openclaude/blob/main/YourToolName.ts) implementing the `buildTool` export, plus [`prompt.ts`](https://github.com/Gitlawb/openclaude/blob/main/prompt.ts), [`constants.ts`](https://github.com/Gitlawb/openclaude/blob/main/constants.ts), and [`test.ts`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/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`](https://github.com/Gitlawb/openclaude/blob/main/src/tools/WebSearchTool/WebSearchTool.ts), the tool supports DuckDuckGo, Bing, and Brave as configurable backends, with DuckDuckGo as the default for privacy-focused searches.