A Qor without tools is a chat bot. A Qor with tools can read files, browse the web, send emails, open PRs, query databases, generate images, automate browsers, and delegate to other Qors. Tools are the difference.
The taxonomy
Research & web
research, scrape, crawl, web_fetch, weather, flight_search.Filesystem & code
filesystem, exec, apply_patch, lsp_bridge, codebase_digest, project_registry, glob, grep.Browser automation
Selector primitives +
browse_and_act + computer_use for canvas-heavy UIs.Media
TTS, STT, image generation, image understanding, screen share.
Data
sql_query, read_document, storage, email, memory, sessions.Delegation
delegate_to_agent, manage_agents — coordinate your agent team.Safety
safety, ssrf, outbound_gate, policy, sandbox_mode.Custom + MCP
Write your own in Go, or plug in any MCP server.
Anatomy of a tool call
Runs
Tool’s
Execute method runs. For some tools this shells out (browser, code exec). Others are in-process.Returns
Result (ForLLM + ForUser halves — widget emission →).
Allowlists — the security knob
Each Qor has atools_allowed list. By default: all tools except destructive ones. Recommended for specialised Qors:
exec can’t be tricked into running rm -rf. Security model →
Approvals
Tools markeddestructive=true require human approval at each call unless the Qor is in approval_required: false mode. Destructive defaults:
exec— runs arbitrary commandsapply_patch— modifies source filessend_email— outbound communicationsend_message— outbound IMdelete_file,drop_table, etc.
Writing your own tool
Two paths:Go tool in-repo
Fastest, most powerful. Implement the
Tool interface, register in the tool registry. Ships with the next build.MCP server
Language-agnostic. Expose tools via the Model Context Protocol; Qorven discovers and wires them automatically.
Where next
How tools work
Deep-dive on the execution model.
Approvals
Gating destructive operations.
Deny lists
Per-Qor allowlists + install-wide bans.
Custom tools
Adding a tool to Qorven.