Agent Tools
Built-in tools available to the Foxl desktop agent
The Foxl desktop agent comes with a set of built-in tools organized into profiles, plus a few capability-gated tools (like generate_image) that register automatically when their credentials are available. The agent selects which tools to load based on the task complexity.
Browser
| Tool | Description |
|---|---|
| browser | Playwright-based web automation - navigate, click, type, screenshot, extract content |
| browser_extension | Control your real Chrome tabs via the Chrome extension |
Code & Files
| Tool | Description |
|---|---|
| file_read | Read files from your filesystem |
| code_search | Search across your codebase with ripgrep (regex, file type filters) |
| view_image | View and analyze images |
Shell & System
| Tool | Description |
|---|---|
| exec | Run shell commands (bash, zsh, etc.) - covers git, npm, curl, and arbitrary shell pipelines |
| process | List, monitor, and kill running processes |
| terminal | Persistent terminal session for stateful shell workflows |
Web
| Tool | Description |
|---|---|
| web_fetch | Fetch web pages and API endpoints |
Memory
| Tool | Description |
|---|---|
| memory_save | Save key-value pairs to the SQLite memory database |
| memory_recall | Search and retrieve from the memory database |
| workspace_memory_save | Save content to workspace markdown files (USER.md, MEMORY.md) |
| workspace_memory_search | Search across all workspace markdown files |
| workspace_memory_read | Read a specific workspace file |
| workspace_memory_edit | Edit sections within workspace files |
Scheduling
| Tool | Description |
|---|---|
| schedule | Create, list, update, delete, and trigger schedules (cron, heartbeat, webhook) |
Agent
| Tool | Description |
|---|---|
| session_status | Get current date/time, timezone, and session info |
| sessions_spawn | Spawn an autonomous sub-agent for a parallel task (max 5 concurrent) |
| sessions_status | Check sub-agent progress |
| sessions_stop | Stop a running sub-agent |
Integrations
Integration tools are only available after you connect the corresponding account in Settings - Integrations.
| Tool | Actions | Description |
|---|---|---|
| outlook | 21 actions | Email (inbox, read, send, reply, forward, search, folders, drafts, attachments, contacts, move, categories, update), Calendar (view, meeting, availability, room booking, search, shared list), To-Do (lists, tasks, checklist) via Microsoft Graph API |
| slack | 16 actions | search_messages, whoami, get_recent_messages, channels_list, conversations_history/replies/add_message/open/members, check_replies_batch, users_lookup/profile_get, attachment_get_data, reactions_add/remove, file_upload |
These tools use OAuth user tokens - they act as you, not as a bot. Connect via Settings - Integrations - Connect.
Channels
| Tool | Description |
|---|---|
| channel_send | Send messages to connected channels (Discord, Slack, Telegram, etc.) |
Media
| Tool | Description |
|---|---|
| generate_image | Generate or edit PNG images with gpt-image-2 through your ChatGPT Plus/Pro subscription. Pass inputImages paths to edit or compose from existing images; omit for pure text-to-image. Auto-saved under data/workspace/generated/generated-<YYYY-MM-DD>-<slug>.png. |
generate_image uses your ChatGPT subscription, not an OpenAI API key. The tool only registers when an OAuth credential file is found at ~/.codex/auth.json, ~/.chatgpt-local/auth.json, or the path set by CODEX_HOME / CHATGPT_LOCAL_HOME. No additional billing outside your existing $20/month plan.
Image editing and composition
Pass one or more existing image paths as inputImages to switch from text-to-image into edit / compose mode. When you drag images into the chat, Foxl auto-persists them to data/workspace/attachments/ and injects the absolute paths into your message, so the agent can reference them without base64 round-tripping through the model's tool-call args.
Examples the agent can drive end-to-end:
| Prompt | What the agent does |
|---|---|
| "이 사진 만화풍으로 바꿔줘" (attach a photo) | Calls generate_image({ prompt: "convert to watercolor anime style", inputImages: ["<path>"] }) |
| "이 두 이미지 합쳐서 하나로" (attach 2+ photos) | Calls generate_image({ prompt: "compose both subjects into one scene", inputImages: ["<a>", "<b>"] }) |
| "blog hero: a cozy cafe at dusk, 1536x1024" | Calls generate_image({ prompt: "...", size: "1536x1024" }) |
Up to 10 input images per call. Output PNG lives at a date-stamped filename with a slug derived from the prompt, in a generated/ subfolder to keep your workspace root clean.
Tool Profiles
Foxl uses tool profiles to control how many tools are loaded, saving tokens in the system prompt:
| Profile | Tools | Token Cost |
|---|---|---|
| Minimal | ~8 tools (memory + workspace) | ~1,600 tokens |
| Default | ~10 tools (+ file read, exec, process, channels, media) | ~2,000 tokens |
| Standard | ~13 tools (+ web, code search, terminal) | ~2,600 tokens |
| Full | ~19 tools (all including browser, schedule, agents) | ~3,800 tokens |
The agent runs in Full profile by default. You can switch profiles in Settings to save tokens on simpler tasks. generate_image lives in the media category and is included in Default, Standard, and Full profiles; Minimal omits it to preserve its token budget.
Git operations route through exec (e.g. exec git status, exec git push). There is no dedicated git tool - piping and custom flags work better from exec anyway, and the exec approval path still gates destructive operations.
Skills
Beyond built-in tools, Foxl supports skills - installable capability packages that extend what the agent can do. See Skills for the full catalog.