Tools
Tools are the atomic capabilities the Node exposes to the local Qwen model. They are invoked only when the user's intent matches; OCC never calls a web tool on its own initiative, and it never reaches outside the workspace folder for file operations.
For composite multi-step capabilities that orchestrate several tools together, see Skills.
Web tools (gated)
Web tools are stripped from the tool list unless the user explicitly invokes the web — OCC's design rule is that knowledge should come from community-approved packs, not from arbitrary web pages. The web is reachable, but only on demand.
web_search
Search the web (DuckDuckGo backend) for current information. Triggered when the user explicitly says "search the web", "look online", "browse the web", "latest news", or similar phrases.
fetch_url
Fetch and read a specific web page. Triggered by a URL in the message or phrases like "open this page", "read this URL". Two-stage extraction: high-quality main-content extraction first, with a crude HTML-strip fallback when the page returns nothing usable (paywalls, JS-heavy SPAs).
Asking "what is the Inca road system?" runs deliberation against the knowledge packs — no web. Asking "search the web
for recent news on the Inca road system" enables web_search. The trigger is in the phrasing, not in the topic.
File workspace tools
OCC has a workspace/ folder inside the OCC directory. The local model can read and write files there, sandboxed —
file operations cannot escape the directory. Useful for letting OCC produce files on your behalf or operate on files
you placed there manually.
list_files
List files and directories in the workspace.
read_file
Read a file from the workspace.
write_file
Write or create a file in the workspace.
run_code
Execute a Python snippet with the workspace as working directory. 30-second timeout. Output (stdout + stderr) is returned to the model.
Document and audio readers (upload folder)
Files attached via the paperclip icon land in the upload/ folder. The model reads them with these tools:
read_pdf
Extract text from a PDF file. Uses PyMuPDF. For scanned pages with no extractable text, returns a clear "possibly scanned" message rather than empty output.
read_docx
Extract text from a Microsoft Word .docx file (paragraphs and tables).
read_xlsx
Extract cells from a Microsoft Excel .xlsx file. All sheets, rows returned as tab-separated values.
transcribe_audio
Transcribe an audio file (mp3, wav, m4a, ogg, flac) using OpenAI Whisper running locally. Returns the
detected language, the duration, and the transcript.
When you attach a binary file, OCC automatically stays in chat mode for the rest of the conversation so these atomic tools remain reachable for follow-up questions. The matching tool is called as soon as you reference the file.
Pack catalog tools
These let the user browse and download knowledge packs from chat, without leaving the conversation.
list_packs
Browse the broker's catalog tree at a given path. Returns one level of children, with manifest summaries when the children are packs, and a count of packs reachable underneath when they are categories. Empty prefix lists the top level.
Trigger phrases: "what packs do you have", "browse the catalog", "show me what's under marketing".
download_pack
Download a pack from the broker into the local expert-packs/ folder.
A downloaded pack is saved DISABLED so it does not interfere with current retrieval. The user activates it from Settings → Knowledge Source. Activation triggers the local search index build automatically.
If a pack of the same path already exists locally, the tool first returns a conflict message and waits for the user to confirm before overwriting — a two-step safety to prevent silently wiping a pack the user may have edited with Forge.
Tool indicators in the UI
When a tool runs as part of an answer, a small monospace tag appears next to the routing badge — WEB, URL, PDF,
VERIFY, CATALOG, and so on — so you can see at a glance which tools the model actually used.
How tools combine with deliberation
Tools live in chat mode: the classifier routes single-action requests (read a file, fetch a URL, run code) to a direct tool call, with no retrieval and no multi-agent pipeline. Deliberate mode runs the Expert / Critic / Synthesizer pipeline against the curated knowledge packs and does not use web tools — that is what gives OCC its provenance guarantee.
When a request spans multiple tools or several reasoning steps (e.g. "do deep research on X", "fact-check this claim", "summarize all my uploaded files"), the classifier routes it to a Skill instead — a higher level orchestration over the atomic tools described here.
See also:
- Skills — composite multi-step capabilities built on these tools.
- The Node — how the chat UI exposes tool indicators, the web gate, and the upload paperclip.
- How OCC works — where tools sit in the overall pipeline.
Something missing or incorrect? Open an issue on GitHub