Skip to main content
A tool is a Python function an agent may call. The core ships a portfolio of 31 tool modules; an agent is given the subset it needs, and each tool that talks to an external service reads its settings from a tool configuration attached to that agent.

The portfolio

Ask a running instance rather than trusting this table to stay exhaustive:

Tool configurations

A tool module is generic; a tool configuration binds it to something concrete — this database, that Drive folder, this API key. Configurations belong to an agent, so two agents can use database against two different servers. Credentials inside a configuration are encrypted at rest with ENCRYPT_KEY.
Tools that act on Google or Microsoft data do not hold their own credentials: they use the OAuth integration the user connected, so revoking the integration revokes the agent’s access with it. See Integrations.

Tools backed by MCP

Two modules are not plain functions but MCP toolsets: database_mcp and web_search_mcp. They are discovered by naming convention — a factory called mcp_tool_set_* is invoked at build time so the toolset is created fresh, with the current key, rather than captured once at import. See MCP.

Adding a tool

A module in the portfolio exposes plain functions with type hints and a docstring — that docstring is what the model reads to decide whether to call it, so it is interface, not commentary. Reload the agent (POST /api/agents/{agent_id}/reload) to pick up a change without restarting the server.