Extending

Tools: what an agent can actually do.

Tools are the hands: file access, shell, project management, task execution. Unlike skills (loaded on demand) and reference docs (read when relevant), tools attached to an agent are always visible in its prompt — a deliberate contract, because an agent should always know what it's capable of.

The built-in catalog

Agents working on a project get a practical core set, granted per agent:

  • Files — list, read, write, and create files in the active project folder, with path safety enforced at the tool boundary.
  • Shell — run commands from the project root (PowerShell on Windows, bash elsewhere), with timeouts.
  • Skill scriptsrun_skill_script resolves and executes a script from an available skill. See Skills.
  • Memoryupdate_memory writes the shared project or profile MEMORY.md back whole. There's no read tool: memory is always injected into the prompt, so the agent already sees it. See Projects & Memory.
  • Tasksrun_task lets a conversational agent invoke a structured task and use its JSON result. See Tasks.
  • Collaboration — consult another agent, switch agents, switch activities.
  • Git (optional) — status, diff, log, commit for project folders under version control.

Workspace tool definitions

Beyond the built-ins, workspaces can define custom tools — name, description, parameters, implementation — managed in the workspace and attached to agents by name. An agent can only use tools from its own workspace's scope chain, which keeps the isolation story intact.

Tools from elsewhere

MCP servers contribute tools the same way — attached at global or workspace scope, surfaced to agents alongside the built-ins. And a tool doesn't even need an implementation to be attachable: see Exposures & AIR for capabilities that route to the caller instead of executing locally.

Where it lives

  • core/project_file_tools.py — the built-in catalog and its factory.
  • core/tool_manager.py / core/ws_tool_manager.py — workspace tool definitions and attachment.
  • core/runtime_tool_registry.py — what a session actually gets.
  • core/langchain_tool_manager.py — LangChain-backed tool integrations.