OpenClaw Tools & Capabilities
OpenClaw agents have access to five built-in tools that let them interact with the web, manage files, perform calculations, and remember information. All tools work out of the box on Hatcher — no setup required unless you want to bring your own API keys.
All built-in tools are available on every Hatcher plan including Free. BYOK key configuration never affects tool availability. See pricing
Tool Overview
| Tool | What it does | Requires API key? | Available on |
|---|---|---|---|
| Web Search | Search the web in real time | Yes (Tavily, Brave, etc.) | All plans |
| Memory | Store and recall information | No | All plans |
| File Operations | Read, write, list workspace files | No | All plans |
| Calculator | Evaluate math expressions | No | All plans |
| Web Fetch | Fetch and read any URL | No | All plans |
Web Search
The web search tool lets your agent query the internet in real time for up-to-date information. On Hatcher, Tavily is the default search provider — your agent can search without any extra setup.
Default Provider: Tavily
Hatcher preconfigures Tavily search for all OpenClaw agents. No API key required on your end.
// openclaw.json — Hatcher default (auto-configured)
{
"tools": {
"web": {
"search": {
"enabled": true,
"provider": "tavily"
}
}
}
}BYOK: Other Providers
With BYOK, you can swap in any supported search provider:
Tavily
{
"tools": {
"web": {
"search": {
"enabled": true,
"provider": "tavily",
"apiKey": "tvly-your-key-here"
}
}
}
}Get a key at app.tavily.com
How the Agent Uses Web Search
When a user asks a question that benefits from current information, the agent automatically invokes the search tool:
User: What's the latest news about AI agents?
Agent thinks: I need current info → calls web_search("latest AI agent news 2024")
Result: [
{ title: "...", url: "...", snippet: "..." },
{ title: "...", url: "...", snippet: "..." },
...
]
Agent synthesizes results and responds with sources.Query Tips
The agent controls query generation automatically, but you can guide it in your SOUL.md:
<!-- SOUL.md excerpt -->
When searching the web:
- Always cite your sources with URLs
- Prefer results from the last 30 days for news topics
- Search in the user's language when possibleLimitations
- Search results are text snippets, not full page content. For full page content, use Web Fetch.
- Result count varies by provider (typically 5–10 results per query).
- Rate limits apply based on your search provider’s plan.
Memory
OpenClaw’s memory system lets agents remember information across conversations. Memory is stored as plain Markdown files in the agent’s workspace volume — no database required.
How Memory Works
┌─────────────────────────────────┐
│ Agent Workspace │
│ /home/node/.openclaw/agents/ │
│ └── agent-main/ │
│ ├── SOUL.md ← identity │
│ ├── memory/ │
│ │ ├── user-prefs.md │
│ │ ├── facts.md │
│ │ └── context.md │
│ └── vector-index/ │
│ └── (semantic search) │
└─────────────────────────────────┘The agent has two memory operations:
| Operation | Description |
|---|---|
memory_write | Save a note or fact to a memory file |
memory_search | Semantically search across all memory files |
Writing Memories
The agent automatically writes memories when instructed or when it determines information is worth saving:
User: Remember that I prefer short, bullet-point answers.
Agent: I'll remember that!
→ memory_write({ file: "user-prefs.md", content: "User prefers short, bullet-point answers." })You can also instruct memory behavior in SOUL.md:
<!-- SOUL.md -->
Always remember:
- The user's name when they tell you
- Any preferences they express about format or tone
- Important decisions made in past conversationsSearching Memories
When a user asks something that might relate to past context, the agent uses semantic search:
User: What did we decide about the project name?
Agent: Let me check my memory...
→ memory_search("project name decision")
Result: Found in context.md:
"User decided to name the project 'Atlas' on 2024-03-15."
Agent: Based on our past conversation, you decided to name the project "Atlas".Memory Persistence
Memories survive container restarts. On Hatcher:
- Memory files are stored in a Docker volume bound to your agent
- Files persist across auto-sleep/wake cycles
- Memories are not shared between different agents
- You can browse memory files via the File Manager on every tier
SOUL.md — Agent Identity
SOUL.md is a special memory file that defines your agent’s personality and system prompt. It is loaded at startup and cannot be overwritten by the memory tool at runtime.
# My Agent
You are a helpful assistant specializing in software development.
## Personality
- Concise and direct
- Uses code examples when relevant
- Asks clarifying questions before diving in
## Capabilities
You have access to web search, file operations, and memory.
Always cite sources when using web search.File Operations
The file operations tool gives your agent access to a persistent workspace directory where it can read, write, and manage files. This is useful for agents that process documents, generate reports, or maintain structured data.
Workspace Location
Each agent gets an isolated workspace at:
/workspace/ (inside the container)On Hatcher, this is mounted from a Docker volume scoped to your agent.
Available Operations
| Operation | Description | Example use case |
|---|---|---|
file_read | Read the contents of a file | Load a config, read a document |
file_write | Write or overwrite a file | Save a report, update a config |
file_append | Append content to a file | Log entries, grow a dataset |
file_list | List files in a directory | Browse workspace contents |
file_delete | Delete a file | Clean up temp files |
file_search | Search file contents by keyword | Find specific data in files |
Examples
Reading a file:
User: Summarize the contents of report.txt
Agent: → file_read("/workspace/report.txt")
Result: "Q1 Revenue: $1.2M, Q2 Revenue: $1.5M..."
Agent: Here's a summary of report.txt: ...Writing a file:
User: Save our conversation summary to summary.md
Agent: → file_write("/workspace/summary.md", "# Summary\n\n...")
Agent: Saved to summary.md in your workspace.Listing files:
User: What files are in my workspace?
Agent: → file_list("/workspace/")
Result: ["report.txt", "config.json", "notes.md"]
Agent: Your workspace contains: report.txt, config.json, notes.mdFile Size Limits
| Plan | Workspace size |
|---|---|
| Free | 2 GB |
| Starter | 10 GB |
| Pro | 25 GB |
| Business | 50 GB |
| Founding Member | 40 GB |
File Manager UI and file operations are included on every Hatcher tier. Workspace values are quotas, not preallocated disk reservations.
Security
- File operations are sandboxed to the workspace directory. The agent cannot access the host filesystem or other agents’ workspaces.
- No Docker socket access — containers cannot spawn new processes outside the agent’s PID namespace.
Calculator
The calculator tool evaluates mathematical expressions and returns precise numeric results. It handles everything from basic arithmetic to complex expressions.
Supported Operations
| Category | Examples |
|---|---|
| Arithmetic | 2 + 2, 100 / 4, 7 * 8 - 3 |
| Exponents | 2^10, sqrt(144), 9^0.5 |
| Trigonometry | sin(PI/2), cos(0), tan(PI/4) |
| Logarithms | log(100), ln(e), log2(1024) |
| Constants | PI, E, Infinity |
| Bitwise | 255 & 15, 1 << 8 |
| Parentheses | (3 + 4) * (2 - 1) |
Examples
User: What's 15% of $847.50?
Agent: → calculator("847.50 * 0.15")
Result: 127.125
Agent: 15% of $847.50 is $127.13.User: How many seconds in a year?
Agent: → calculator("60 * 60 * 24 * 365")
Result: 31536000
Agent: There are 31,536,000 seconds in a year.User: What's the compound interest on $10,000 at 5% for 3 years?
Agent: → calculator("10000 * (1 + 0.05)^3")
Result: 11576.25
Agent: $10,000 at 5% annual compound interest for 3 years = $11,576.25.Limitations
- The calculator evaluates numeric expressions only — it does not execute arbitrary code.
- Results are returned as floating-point numbers; precision is limited to JavaScript’s
Numbertype (~15–17 significant digits). - For symbolic math or algebraic manipulation, use a ClawHub skill.
Web Fetch
The web fetch tool retrieves the full text content of any URL. Unlike web search (which returns snippets), web fetch returns the complete readable content of a page — ideal for reading articles, documentation, or extracting structured data.
How It Works
User: Summarize the article at https://example.com/article
Agent: → web_fetch("https://example.com/article")
Result: Full text content of the page (HTML stripped, markdown-formatted)
Agent: Here's a summary: ...What Gets Returned
The tool strips HTML tags, ads, and navigation elements and returns clean readable text. JavaScript-rendered content may not be captured (the tool uses server-side rendering, not a browser).
Supported Content Types
| Content type | Support |
|---|---|
| HTML pages | Full text extraction |
Plain text (.txt) | Full content |
Markdown (.md) | Full content |
| JSON/XML APIs | Raw response body |
| PDFs | Limited (text-layer PDFs only) |
| Images/video | Not supported |
Examples
Read documentation:
User: What does the Hatcher API /agents endpoint return?
Check https://docs.hatcher.host/api-reference
Agent: → web_fetch("https://docs.hatcher.host/api-reference")
Agent: According to the docs, the /agents endpoint returns...Extract data from a webpage:
User: What are the current SOL staking yields at staking.solana.org?
Agent: → web_fetch("https://staking.solana.org")
Agent: Current staking APY is approximately X% based on the page.Read a GitHub file:
User: Read the README of github.com/my-org/my-repo
Agent: → web_fetch("https://raw.githubusercontent.com/my-org/my-repo/main/README.md")
Agent: Here's what the README says: ...Limitations
- Pages requiring login or authentication cannot be fetched.
- JavaScript-heavy SPAs may return incomplete content (the agent sees the raw HTML, not the rendered DOM).
- Very large pages (>500KB) may be truncated.
- Rate limiting: excessive fetches to the same domain may be blocked by the target server.
For structured data extraction or browser-rendered pages, consider a ClawHub skill that uses a headless browser.
Enabling / Disabling Tools
All tools are enabled by default on Hatcher. You can disable specific tools via the dashboard or by editing the config directly:
{
"tools": {
"web": {
"search": { "enabled": false }, // disable web search
"fetch": { "enabled": true }
},
"memory": { "enabled": true },
"files": { "enabled": true },
"calculator": { "enabled": true }
}
}Disabling tools via the Hatcher dashboard overrides any manual config edits made through the File Manager.
ClawHub Skills
Beyond built-in tools, your agent can install skills from ClawHub — OpenClaw’s community skill registry with 13,700+ extensions. Skills are loaded from the skills/ directory in your workspace.
Popular skill categories:
| Category | Examples |
|---|---|
| APIs | GitHub, Notion, Airtable, Google Sheets |
| Automation | Email sender, Webhook caller, Cron jobs |
| Data | CSV parser, JSON transformer, PDF reader |
| AI | Image generation, speech synthesis, translation |
| Finance | Price feeds, portfolio tracker, DeFi queries |
Skills are installed via the dashboard (Skills tab) — browse, install, and configure without touching config files.