InsightWorker Logo
  • contact@verticalserve.com
Docs / Tools / Tools overview

Tools Reference

The agent calls these tools during conversation. They're auto-registered at startup; you don't import or invoke them directly.

Tools have one of three permission levels:

  • auto — runs without asking
  • prompt — asks [y/N] (or auto-approves when AUTO_APPROVE_TOOLS=true, the default)
  • deny — never runs (reserved for future use)

Read-only tools are always auto. Side-effectful tools (write, bash, send_email) are prompt by default but auto-approve in the default install.

Filesystem

ToolPermissionInputsReturns
read_fileautofile_path, offset?, limit?File contents with line numbers
write_filepromptfile_path, contentConfirmation
edit_filepromptfile_path, old_string, new_stringConfirmation
list_filesautopattern, directory?Glob match list (default-ignores node_modules, .git, dist, build, .venv, __pycache__, etc.)
search_filesautopattern, file_pattern?, directory?Grep results with file:line:text

Caps: list_files returns ≤500 entries. search_files scans ≤500 files, returns ≤200 matches. Output truncated to per-model context budget.

Shell

ToolPermissionInputsReturns
bashpromptcommand, cwd?stdout + stderr (capped)

Runs in WORKSPACE_DIR by default. The agent prompts before running; AUTO_APPROVE_TOOLS=true skips that.

Git

ToolPermissionInputsReturns
git_statusautononeWorking tree status
git_diffautofile?, staged?Unified diff
git_logautocount?, file?Recent commits
git_commitpromptmessageCommit hash
git_pushpromptremote?, branch?Push result

Web

ToolPermissionInputsReturns
web_fetchautourl, headers?, method?, body?Response body (capped)
perplexity_searchautoquery, recency?, domain_filter?Synthesized answer + source URLs

perplexity_search requires PERPLEXITY_API_KEY. recency is one of hour, day, week, month, year. domain_filter accepts ["reuters.com", "-twitter.com"] style allowlist/exclusion.

Memory

ToolPermissionInputsReturns
memory_readautokey?Stored memory entries
memory_writeautokey, valueConfirmation

Memory persists in <workspace>/memory/. Read on every turn into the agent's context if the playbook references it.

Documents

ToolPermissionInputsReturns
read_pdfautofile_path, pages?Extracted text
ocr_documentautofile_pathOCR'd text (Textract)
create_docxpromptfile_path, content (markdown)Path to saved .docx
create_excelpromptfile_path, sheets[]Path to saved .xlsx
create_pptxpromptfile_path, slides[]Path to saved .pptx

ocr_document requires AWS Textract — set TEXTRACT_REGION (defaults to AWS_REGION).

Email (Microsoft 365 / Outlook)

ToolPermissionInputsReturns
read_emailsautouser_id?, folder?, count?, filter?, include_body?List of emails
search_emailsautoquery, user_id?, count?Matching emails
download_attachmentautouser_id, message_id, attachment_id, save_to?Local file path
send_emailpromptto[], subject, body, body_type? (HTML or Text), user_id?Confirmation

All require MS_GRAPH_* env vars. send_email auto-previews to a temp HTML file when run inside schedule run --dry-run.

SharePoint (Microsoft 365)

ToolPermissionInputsReturns
sharepoint_listautosite?, folder_path?, top?Folder/file listing with metadata
sharepoint_searchautosite?, query, top?Full-text search across the site
sharepoint_readautosite?, file_path, save_to?Text content (txt/csv/json/md/etc.) or local path (binary)

Requires MS_GRAPH_* plus Sites.Read.All (or Sites.Selected) granted to the app registration. SHAREPOINT_DEFAULT_SITE makes the site arg optional.

Site path format: tenant.sharepoint.com:/sites/SiteName.

JIRA Cloud

ToolPermissionInputsReturns
jira_searchautojql, max_results?, fields?Issue list — key, status, assignee, priority, summary, updated
jira_issueautokey, include_comments?Single issue detail with description and recent comments

Requires JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN.

Airflow

ToolPermissionInputsReturns
airflow_list_dagsautononeAll DAGs
airflow_dag_detailsautodag_idDAG config + recent run summary
airflow_dag_runsautodag_id, limit?Recent runs with status
airflow_task_instancesautodag_id, run_idTask-level state for one run
airflow_task_logsautodag_id, run_id, task_id, try_number?Worker log
airflow_run_statusautodag_id, run_idPass/fail summary
airflow_trigger_dagpromptdag_id, conf?, run_id?Run id

Requires AIRFLOW_BASE_URL, AIRFLOW_USERNAME, AIRFLOW_PASSWORD.

Database — PostgreSQL

ToolPermissionInputsReturns
db_querypromptsql, params?Result rows (capped)
db_list_tablesautoschema?Tables + row counts
db_describe_tableautotableColumns, indexes, constraints

Database — Oracle / ADW

ToolPermissionInputsReturns
oracle_querypromptsql, binds?Result rows (capped)
oracle_get_sp_sourceautoname, owner?Stored procedure source
oracle_sp_errorsautoname, owner?Compiler errors for an invalid SP

Tool catalog at runtime

Inside the REPL: /tools lists everything currently registered with descriptions. Useful when remembering which tools are available in a particular install.

Adding your own tools

Tools are TypeScript modules under src/tools/ in the main project. Each calls registerTool({ name, description, input_schema, permission, execute }). The pattern is straightforward but requires forking the package — for now, tool authoring is a "talk to us" feature for enterprise customers.


Source: docs/tools/overview.md in the public repo. Open a PR with corrections.