Tools & commands
Riverforge has 79 built-in tools — but you never call them by name. You just say what you want in plain English — “read this file”, “search the web”, “look at this screenshot”, “run the tests” — and Riverforge works out which tool to use, and in what order. This page is a reference of what it can do behind the scenes.
You just ask
There’s nothing to memorise and no syntax to learn. Describe the goal and Riverforge picks the right tools on its own:
| You say… | …and it works out to |
|---|---|
| “What does this file do?” | read the file and explain it |
| “Find where we handle login” | search the codebase for the right spot |
| “Look at this screenshot and tell me what’s broken” | read the image you attached |
| “Look up the latest API for this” | search the web and read the real pages |
| “Find reference images for a dashboard UI” | run an image search and show cards |
| “Run the tests” · “check lint” | run your project’s test or lint command |
| “Remember that I prefer pytest” | save it to memory |
| “Fix the timeout bug and show me the diff” | read, edit, show the diff and verify |
Which tools are even available depends on your mode — Ask only uses read-only tools, Agent can edit and run things — so you don’t have to think about safety either. See Chat Modes.
What it can do
Here’s everything Riverforge can reach for, grouped by purpose. You don’t invoke these — it’s simply what’s under the hood when you ask. Every call is checked before it runs, so a bad one fails safely instead of corrupting a file.
Web & research
web_search · web_fetch · web_research · image_search · research_ingest_url · research_ingest_pdf
Repo orientation
repo_tree · repo_map · fs_glob · grep_search · list_dir · detect_project · find_symbols · parse_ast · ai_comment_scan
File reads
read_file · read_file_range · read_files · read_binary_file · read_pdf · file_stat
File edits
create_file · write_file · edit_file_single_line · edit_file_substring · edit_file_line_range · edit_file_batch · replace_lines · append_file · apply_patch · revert_patch · delete_file
Filesystem
make_dir · delete_dir · copy_path · move_path · chmod_path · create_symlink · create_temp_file · compress_archive · extract_archive
Memory & recall
memory_search · memory_store · brain_search · brain_store · research_search · recall_step
Git
git_status · git_diff · git_log · git_branch · git_add · git_commit · git_raw · git_blame
Shell & verification
run_shell · run_tests · run_lint · run_build · run_install · run_format · run_typecheck · run_e2e
System & network
system_info · env_get · list_processes · kill_process · dns_lookup · tcp_check · http_request · wait_for_http · sql_query
Editor & control
vscode_open_preview · vscode_terminal_run · open_browser · get_tool_config · update_tool_config · submit_final_answer · delegate_worker_task
Curious what it has? Ask /tools in chat any time for the full live list. When it edits a file, Riverforge also chooses the right kind of edit for you — a small in-place change, a whole-file rewrite, a multi-file patch — so you never have to.
The Todo panel
For multi-step work the agent keeps its own checklist, shown as the Todo panel above the composer. It ticks items off as the run proceeds, so you can see progress at a glance and know what’s left. Simple one-step tasks show no panel at all.
Configurable project commands
Tell Riverforge how your project builds and tests once, and then “run the tests” or “check lint” just works — it doesn’t have to guess the command each time. Set these in the tray under Tool Config.
| Setting | Example |
|---|---|
| Default test command | powershell -ExecutionPolicy Bypass -File scripts/test_all.ps1 |
| Default lint command | python -m compileall -q src tests |
| Extra allowed commands | pyright, eslint, cargo, dotnet |
When a verification tool is called without a command, it uses your configured command first, then falls back to auto-detection of the project’s toolchain.
Custom HTTP tools
You can register your own HTTP-backed tool — a webhook, an internal API, a local service. Use the tray’s Register HTTP Tool button, or the POST /tools/http endpoint. Once registered, Riverforge can reach for it just like a built-in when your request calls for it, with the same approval rules. Your custom tools are saved with your Riverforge data, so they’re there next time.
Examples
Be as casual or as specific as you like — none of these name a tool. Riverforge reads the intent and does the rest.
A coding change, verified
Fix the timeout bug in the HTTP client. Look at the relevant
files first, make the smallest safe change, show me the diff,
then run the tests — don’t call it done until they pass.
A read-only audit
Have a read-only look at how auth works in this repo and tell me
the risks and the files involved. Don’t change anything.
Research with real pages
Look up the current way to do X, read the actual pages (not just
snippets), compare them and cite your sources. Keep anything
worth reusing.
Work from an image
Here’s a screenshot of the bug (attached). Look at it, find the
cause in the code, and fix it.
Show a UI mock-up
Mock up a compact dashboard header and show it to me as a live
preview in the chat.
Teach it something
Remember that this project uses pnpm, not npm.
The more you tell it about the outcome you want — “show me the diff”, “don’t finish until the tests pass”, “keep it minimal” — the better it lines up with how you work. You’re describing goals, never commands.