Tools Reference
63 always-registered built-in tools plus up to 5 CDP browser tools, up to 6 computer tools, and LSP language server integration (up to 75 tools total) available across coding harnesses, AST repo-mapping, git worktrees, web, memory, browser, security, and swarm coordination. Each implements the Tool trait and auto-registers in the registry; MCP servers and plugins extend the catalog.
Overview
Fathom agents have access to a comprehensive toolkit spanning web search, file operations, browser automation, OSINT pipelines, Git integration, and more. Tools are classified by parallelism safety for optimal concurrent execution.
Web
web_search
parallel-safeSearch the internet via the configured backend (Linkup/Exa/Tavily/Serper/Brave/Parallel/DuckDuckGo).
| Parameter | Type | Description |
|---|---|---|
query | string | Search query |
limit | u32 | Max results (default 10) |
Returns: List of results (title, URL, snippet).
web_fetch
parallel-safeDownload a page and convert HTML to readable text.
| Parameter | Type | Description |
|---|---|---|
url | string | Page URL |
extract_text | bool | Extract text only (default true) |
Returns: Page text (truncated to 50K chars).
web_crawl
parallel-safeCrawl a website breadth-first from a seed URL.
| Parameter | Type | Description |
|---|---|---|
url | string | Seed URL |
max_depth | u32 | Max crawl depth (cap 3) |
max_pages | u32 | Max pages to crawl (cap 50) |
same_domain | bool | Restrict to same domain |
delay_ms | u64 | Delay between requests (ms) |
selector | string? | CSS selector |
chars_per_page | u32 | Max chars to extract per page |
Returns: Per-page title + extracted text.
web_feed
parallel-safeParse an RSS 2.0, Atom, or sitemap.xml feed into a clean item list.
| Parameter | Type | Description |
|---|---|---|
url | string | Feed URL |
limit | u32? | Max items (default 50) |
Returns: Feed items (title, link, description, pub_date).
Files
file_read
parallel-safeRead a file with optional partial reading support.
| Parameter | Type | Description |
|---|---|---|
path | string | File path |
offset | u32? | Start line |
limit | u32? | Number of lines |
Note: Tracks read files for read-before-write validation.
file_write
SequentialWrite a file (creates directories automatically).
| Parameter | Type | Description |
|---|---|---|
path | string | File path |
content | string | Content to write |
Note: Per-path locking, updates file history.
file_edit
SequentialFind/replace edit (surgical replacement).
| Parameter | Type | Description |
|---|---|---|
path | string | File path |
old_string | string | What to replace |
new_string | string | Replacement text |
Validation: read-before-write, staleness check, size guard.
glob
parallel-safeSearch files by glob pattern.
| Parameter | Type | Description |
|---|---|---|
pattern | string | Glob pattern (e.g. **/*.rs) |
grep
parallel-safeSearch file contents with regex. Uses ripgrep when available.
| Parameter | Type | Description |
|---|---|---|
pattern | string | Regex pattern |
path | string? | Search directory |
file_pattern | string? | File filter |
Shell
shell
SequentialExecute a bash command.
| Parameter | Type | Description |
|---|---|---|
command | string | Command to execute |
timeout | u64 | Timeout in seconds (default 120) |
Protection: Blocks destructive commands (rm -rf /, mkfs, fork bombs).
Code
code_symbols
parallel-safeFind code definitions (functions, classes, structs, traits, methods) in a file or directory. Supports Rust, Python, JS/TS, Go, Ruby, Java/Kotlin, C/C++/C#, PHP.
| Parameter | Type | Description |
|---|---|---|
path | string | File path |
symbol_type | string? | Filter: function, class, struct, trait, method |
Returns: List of definitions with name, kind, file, line.
repo_map
parallel-safeBuild a compact map of a codebase: files by language plus their top symbols.
| Parameter | Type | Description |
|---|---|---|
path | string? | Root path (default: cwd) |
include_hidden | bool? | Include hidden files |
Returns: File tree with language tags and top-level symbols per file.
python_exec
SequentialExecute Python code and return stdout/stderr. Uses system python3.
| Parameter | Type | Description |
|---|---|---|
code | string | Python code |
timeout | u64? | Timeout in seconds (default 30, max 600) |
Returns: stdout, stderr, exit_code.
node_exec
SequentialExecute Node.js code and return stdout/stderr. Uses system node.
| Parameter | Type | Description |
|---|---|---|
code | string | JavaScript code |
timeout | u64? | Timeout in seconds (default 30) |
Returns: stdout, stderr, exit_code.
LSP
lsp
parallel-safeQuery the Language Server Protocol for code intelligence: document symbols, go-to-definition, find references, hover info, and workspace symbol search. Auto-detects LSP server from project files.
| Parameter | Type | Description |
|---|---|---|
action | string | document_symbols | goto_definition | find_references | hover | workspace_symbols |
file | string? | File path |
line | u32? | Line number |
character | u32? | Character offset |
query | string? | Search query (for workspace_symbols) |
Returns: LSP response (symbols, locations, hover info depending on action).
Browser (CDP)
Requires Chrome running with –remote-debugging-port=9222. CDP availability is detected automatically.
browser_navigate
parallel-safeOpen a URL in the browser.
| Parameter | Type | Description |
|---|---|---|
url | string | URL to open |
browser_screenshot
parallel-safeTake a screenshot of the current page.
Returns: base64 image in metadata.base64.
browser_click
SequentialClick an element by CSS selector.
| Parameter | Type | Description |
|---|---|---|
selector | string | CSS selector |
browser_type
SequentialType text into an element.
| Parameter | Type | Description |
|---|---|---|
selector | string | CSS selector |
text | string | Text to enter |
browser_extract
parallel-safeExtract text content from page (with JS rendering).
Returns: Page text (truncated to 50K).
Vision
analyze_image
parallel-safeAnalyze an image via vision model (qwen-vl-max).
| Parameter | Type | Description |
|---|---|---|
image | string | File path or image URL |
prompt | string? | What to analyze |
Config: PARALLEL_VISION_API_BASE, PARALLEL_VISION_API_KEY, PARALLEL_VISION_MODEL.
Git
git_status
parallel-safeShow working tree status.
git_diff
parallel-safeShow changes.
| Parameter | Type | Description |
|---|---|---|
staged | bool? | Staged changes only |
path | string? | Specific file |
git_log
parallel-safeCommit history.
| Parameter | Type | Description |
|---|---|---|
limit | u32? | Max commits |
git_add
SequentialAdd files to staging.
| Parameter | Type | Description |
|---|---|---|
paths | string[] | Files to add |
git_commit
SequentialCreate a commit.
| Parameter | Type | Description |
|---|---|---|
message | string | Commit message |
git_push
SequentialPush to remote.
| Parameter | Type | Description |
|---|---|---|
remote | string? | Remote (default: origin) |
branch | string? | Branch name |
pdf_extract
parallel-safeExtract text from a PDF file.
| Parameter | Type | Description |
|---|---|---|
path | string | PDF file path |
Returns: Text + page count. Supports ToUnicode CMaps, encryption (empty password).
Parsing
parse_html
parallel-safeExtract structured data from an HTML page or file using CSS selectors. Modes: texts, html, attr, links, tables.
| Parameter | Type | Description |
|---|---|---|
url | string? | URL to fetch |
path | string? | File path |
selector | string | CSS selector |
mode | string? | texts | html | attr | links | tables |
base_url | string? | Base URL for resolving links |
max_chars | u32? | Max output characters |
Returns: Extracted elements matching the selector.
extract_json
parallel-safeQuery a JSON document (API response, file, or inline value) with a dot path and return selected values.
| Parameter | Type | Description |
|---|---|---|
source | string | URL, file path, or inline JSON |
path | string | Dot-notation query path |
Returns: Matching values at the specified path.
OSINT / Lead Generation
find_leads
parallel-safeHigh-level lead search. Orchestrates business directories → corporate sites → social networks → contact extraction → deduplication.
| Parameter | Type | Description |
|---|---|---|
industry | string? | Industry |
location | string? | Location |
company_size | string? | Company size |
role_titles | string[]? | Roles (CEO, CTO…) |
limit | u32? | Max leads |
search_business_directory
parallel-safeSearch business directories (2GIS, Google Maps, Yandex Maps, Yellow Pages).
| Parameter | Type | Description |
|---|---|---|
query | string | What to search for |
city | string? | City |
Returns: Name, category, address, phone, website, email, rating.
search_social
parallel-safeSearch people/companies on social networks (Twitter, Telegram, LinkedIn).
| Parameter | Type | Description |
|---|---|---|
query | string | Search query |
platform | string? | Specific platform |
parse_corporate_site
parallel-safeParse corporate website: company info, team, contacts.
| Parameter | Type | Description |
|---|---|---|
url | string | Website URL |
Returns: Company name, description, industry, size, contacts, team page URL, social profiles.
search_news
parallel-safeSearch news/mentions (Serper News or Google News RSS).
| Parameter | Type | Description |
|---|---|---|
query | string | Who/what to search |
limit | u32? | Max articles (default 10) |
Returns: Title, URL, source, date, snippet + extracted persons/companies.
Verification
verify_email
parallel-safeVerify email: syntax, MX records, disposable, role-based checks.
| Parameter | Type | Description |
|---|---|---|
email | string | Email to verify |
Returns: is_valid_syntax, domain_exists, mx_records, is_disposable, is_role_based, confidence.
suggest_emails
parallel-safeGenerate likely corporate email addresses for a person from standard name permutations at a domain. Infers the company’s email pattern from known addresses. Every candidate is verified.
| Parameter | Type | Description |
|---|---|---|
name | string | Person name |
domain | string | Email domain |
known_emails | string[]? | Known email addresses |
smtp_check | bool? | Verify via SMTP |
Returns: List of candidate emails with verification status and confidence scores.
verify_phone
parallel-safeValidate and normalize phone number (E.164).
| Parameter | Type | Description |
|---|---|---|
phone | string | Phone number |
Returns: Normalized (E.164), country_code, country_name, is_valid, is_mobile.
verify_social_profile
parallel-safeCheck if a social media profile exists.
| Parameter | Type | Description |
|---|---|---|
url | string | Profile URL |
Returns: exists, platform, username, name, followers.
Enrichment
enrich_company
parallel-safeEnrich company data.
| Parameter | Type | Description |
|---|---|---|
company_name | string | Company name |
website | string? | Website |
Returns: Industry, size, revenue, founded, headquarters, description, technologies.
enrich_person
parallel-safeEnrich person data.
| Parameter | Type | Description |
|---|---|---|
name | string | Person name |
company | string? | Company |
Returns: Title, company, linkedin, twitter, email, phone, location, bio.
Contacts
extract_contacts
parallel-safeExtract structured contact information (emails, phone numbers, social profiles, people, companies) from text, HTML, or a URL. Built for OSINT and lead-generation research.
| Parameter | Type | Description |
|---|---|---|
input | string | Text, URL, or file path |
enrich_entities | bool? | Enrich extracted entities |
max_results | u32? | Max results to return |
Returns: Emails, phones (E.164), social profiles, persons, companies — each with confidence and source.
save_contacts
SequentialSave harvested contacts into the persistent contact database (contacts.db), and optionally push to CRM (amoCRM/Bitrix24/HubSpot) when configured.
| Parameter | Type | Description |
|---|---|---|
contacts | array | Array of contact objects |
push_to_crm | bool? | Also push to connected CRM |
Returns: saved count, merged count, skipped count.
Coordination
spawn_agent
SequentialSpawn a sub-agent to handle a specific research task. Available roles: researcher, analyst, verifier, writer. Sub-agent runs autonomously with its own context.
| Parameter | Type | Description |
|---|---|---|
task | string | Task for the sub-agent |
role | string? | Role (default: researcher) |
context | string? | Additional context for the sub-agent |
background | bool? | Run in background |
Limit: Nesting depth (max_depth).
question
parallel-safeAsk the human operator a question and wait for the answer. Use ONLY when genuinely blocked. Max 500 chars.
| Parameter | Type | Description |
|---|---|---|
question | string | Question to ask |
Returns: The operator’s answer text.
skill
parallel-safeLoad the full instructions of a skill by name. Skills are reusable playbooks from ~/.fathom/skills.
| Parameter | Type | Description |
|---|---|---|
name | string | Skill name |
Returns: Skill instructions as text.
scratchpad
Context-dependentShared session ledger for coordination between agents. Actions: read (return current content), append (add one line). Prevents duplicate work across parallel agents.
| Parameter | Type | Description |
|---|---|---|
action | string | read | append |
text | string? | Text to append (required for append) |
Returns: Current scratchpad content (for read) or confirmation (for append).
Undo recent file edits made during this session by rewinding to an earlier file-history checkpoint.
↩ Confirmation of the undo operation with list of reverted files
Semantic Memory
memory
Context-dependentManage persistent memory entries stored in MEMORY.md and USER.md under ~/.fathom/memory/. Actions: add, replace, remove, or batch.
| Parameter | Type | Description |
|---|---|---|
action | string | add | replace | remove | batch |
target | string? | memory or user (default: memory) |
content | string? | Content for add or replace |
old_text | string? | Existing text for replace or remove |
operations | array? | Batch of add, replace, or remove operations when action is batch |
Returns: Memory entries or operation result.
memory_absorb
SequentialStore one or more facts into long-term semantic memory. Facts are deduplicated, reconciled, and near-duplicates consolidated. Secrets are rejected automatically.
| Parameter | Type | Description |
|---|---|---|
facts | array | Array of fact objects |
source | string? | Source attribution |
Returns: Absorb report (created, duplicates, superseded counts).
memory_search
parallel-safeSearch long-term semantic memory. Combines vector similarity with keyword (BM25) matching and recency decay.
| Parameter | Type | Description |
|---|---|---|
query | string | Search query |
limit | u32? | Max results (default 5) |
min_score | f32? | Min similarity score (default 0.25) |
Returns: Ranked memories with scores.
memory_digest
parallel-safeLoad a deterministic context digest from long-term memory for a topic: most relevant memories, open TODOs, recently added facts.
| Parameter | Type | Description |
|---|---|---|
topic | string | Topic to get digest for |
Returns: Formatted digest text for system prompt injection.
memory_boost
SequentialRaise (or lower) the importance of a stored memory. Importance influences ranking under tight score margins and future digests.
| Parameter | Type | Description |
|---|---|---|
id | string | Memory entry ID |
delta | f32? | Importance delta (default 0.1, range -1.0 to 1.0) |
Returns: Updated memory with new importance.
memory_link
SequentialAdd a typed edge between two stored memories. Edge types: related_to, supersedes, contradicts, implements, extends, references.
| Parameter | Type | Description |
|---|---|---|
from | string | Source memory ID |
to | string | Target memory ID |
edge_type | string? | Edge type (default: related_to) |
reason | string? | Reason for the link |
Returns: Created edge confirmation.
memory_graph
Context-dependentEntity knowledge graph for persons, companies, and locations. Stores entities and typed relations; answers multi-hop queries.
| Parameter | Type | Description |
|---|---|---|
action | string | add | query | list |
entities | array? | Entities to add/query |
relations | array? | Relations to add |
name | string? | Entity name to query |
entity_type | string? | person | company | location |
depth | u32? | Query depth for multi-hop |
Returns: Entities and relations matching the query.
Parallelism Safety
Tools are classified for smart parallelism:
| Class | Tools | Behavior |
|---|---|---|
| parallel-safe | web_search, web_fetch, web_crawl, web_feed, file_read, glob, grep, code_symbols, repo_map, parse_html, extract_json, pdf_extract, analyze_image, verify_email, suggest_emails, verify_phone, verify_social_profile, enrich_company, enrich_person, extract_contacts, search_business_directory, search_social, search_news, parse_corporate_site, find_leads, git_status, git_diff, git_log, browser_navigate, browser_screenshot, browser_extract, memory_search, memory_digest, lsp, question, skill | Can execute in parallel |
| Sequential | file_write, file_edit, shell, python_exec, node_exec, browser_click, browser_type, git_add, git_commit, git_push, spawn_agent, save_contacts, memory_absorb, memory_boost, memory_link, undo | Execute sequentially (exclusive access) |
| Context-dependent | memory (file-backed), memory_graph, scratchpad | Context-dependent; file-memory writes are sequential |
Path-overlap detection: Two file tools targeting the same path are automatically serialized.
Search Backends
Seven search backends are supported. Each is configured via [search.*] sub-sections in config.toml.
| Backend | API Format | Key Required |
|---|---|---|
linkup | Linkup Search API | Yes |
exa | Exa Neural Search API | Yes |
tavily | Tavily Search API | Yes |
serper | Serper (Google) API | Yes |
brave | Brave Search API | Yes |
parallel | Parallel.ai Search API | Yes |
duckduckgo | DuckDuckGo Instant Answer | No |
Hybrid & Smart Modes
hybrid
Tries configured backends in order (linkup → exa → tavily → serper → brave → parallel → duckduckgo). Returns results from the first backend that responds.
smart
Queries all configured backends in parallel, then ranks combined results using reciprocal rank fusion.