What are Tools?
Tools give your Agents and Flows access to capabilities such as web search, API calls, custom code, and external services. Add a Tool when your workflow needs to do more than generate text.
Runtype organizes Tools by how you define and run them.
Built-in tools
Runtype provides built-in Tools for common capabilities. Add them to an Agent, to a Flow prompt step, or invoke one directly from a Flow tool-call step by setting its toolId to the built-in or platform catalog ID. The tool picker shows only Tools that are compatible with the selected model.
Common built-in Tools include:
- GPT Image 2: Generate images from text descriptions.
- Exa: Search the web with neural or keyword search.
- Firecrawl: Scrape web pages and extract structured content.
- OpenAI Web Search: Search the web for current information with OpenAI models.
- Anthropic Web Search: Search the web for current information with Claude models.
- Anthropic Web Fetch: Fetch and extract content from specific URLs with Claude models.
- Semantic Search: Search knowledge bases by semantic similarity.
To use Exa or Firecrawl, add the relevant API key in Settings > Integrations. To use GPT Image 2 or provider Tools, configure the relevant provider in Settings > Models. Semantic Search uses a knowledge base and its configured vector provider.
For example, Dana can add Exa to a research Agent. When Dana asks for information about a topic, the model calls Exa, receives search results, and uses them in the response.
Custom tools
Custom Tools run JavaScript, TypeScript, or Python code in an isolated environment. Use them for data transformations, calculations, input validation, formatting, and business logic.
Custom Tools receive input through a parameters object. They also provide helper functions through the helpers namespace, including helpers.parseHTML(), helpers.extractEmails(), and helpers.formatDate().
External tools
External Tools call HTTP API endpoints. Configure authentication with bearer tokens, API keys, or custom headers.
Use External Tools to connect third-party APIs, internal services, databases, webhooks, and legacy systems.
Flow tools
Flow Tools turn a Flow into a reusable Tool that other Agents and Flows can call. Use a Flow Tool when you want to reuse a multi-step workflow across projects.
If you repeat the same logic in multiple Flows, move that logic into a separate Flow and use it as a Flow Tool.
Runtime tools
Define Runtime Tools inline in an API request, such as a dispatch request, without saving them to the platform. They support five types: external HTTP, custom code, Flow, subagent, and local.
The calling SDK client runs local Tools. Use Runtime Tools for dynamic or temporary configurations, SDK-driven Flows, and testing.
MCP servers
MCP (Model Context Protocol) servers expose Tools from external services. Connect an MCP server by URL. Runtype discovers its Tools automatically.
Use MCP servers to connect Agents and Flows to standardized integrations and internal Tools. To expose a Product through an MCP Surface, see Setting up an MCP Surface.
How Agents use tools
When you add Tools to an Agent, the model selects Tools based on their descriptions and the incoming message. The sequence is:
- The model reads each Tool description.
- The model selects a Tool when its description matches the task.
- The model generates the required parameters and sends the call.
- Runtype runs the Tool and returns its result.
- The model uses the result to continue the response.
Write each Tool description to state what the Tool does and when to call it. For Agent setup, see Creating and configuring Agents.
Managing tools
You manage saved custom, external, and Flow Tools in Tools in the sidebar. To create or edit a saved Tool:
- In the sidebar, click Tools.
- Click Create Tool.
- Select the Tool type and configure its name, description, parameters, and settings.
- Open a saved Tool to edit its description, settings, or parameters.
The saved Tools list excludes built-in Tools. Configure them in Settings > Models or Settings > Integrations, depending on the Tool, and then add them to an Agent or Flow prompt step, or invoke one directly from a Flow tool-call step by setting its toolId to the built-in or platform catalog ID.
To manage Tools from a codebase, use defineTool and Runtype.tools.ensure(). For instructions, see Manage tools as code.
Next steps
Choose a guide based on the Tool type or workflow that you want to build:
- Built-in tools: configure provider and platform Tools
- Manage tools as code: define and converge saved Tools from your repository
- Creating custom tools: write code that Agents can run
- Creating external tools: connect an HTTP API
- Runtime tools: define Tools inline in a dispatch request
- What are Agents?: review how Agents use Tools
- Creating and configuring Agents: add Tools to an Agent
- Setting up an MCP Surface: expose Product Capabilities through MCP