Tools are what make Agents capable of real-world action. While using LLMs directly you can only generate text, Agents equipped with tools can interact with external systems and perform practical actions. They are used to enable Agents to interact with external systems, and perform actions like searching the web, running SQL, sending an email or calling APIs. Agno comes with 120+ pre-built toolkits, which you can use to give your Agents all kind of abilities. You can also write your own tools, to give your Agents even more capabilities. The general syntax is:Documentation Index
Fetch the complete documentation index at: https://spacesail.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Using the Toolkit Class
TheToolkit class provides a way to manage multiple tools with additional control over their execution.
You can specify which tools should stop the agent after execution and which should have their results shown.
GoogleSearchTools toolkit is added to the agent. This ToolKit comes pre-configured with the google_search function.
Tool Built-in Parameters
Agno automatically provides special parameters to your tools that give access to the agent’s state. These parameters are injected automatically - you don’t pass them when calling the tool.Using the Run Context
You can access values from the current run via therun_context parameter: run_context.session_state, run_context.dependencies, run_context.knowledge_filters, run_context.metadata. See the RunContext schema for more information.
This allows tools to access and modify persistent data across conversations.
This is useful in cases where a tool result is relevant for the next steps of the conversation.
Add run_context as a parameter in your tool function to access the agent’s persistent state:
Media Parameters
The built-in parameterimages, videos, audio, and files allows tools to access and modify the input media to an agent.
Using the
send_media_to_model parameter, you can control whether the media is sent to the model or not and using store_media parameter, you can control whether the
media is stored in the RunOutput or not.Tool Results
Tools can return different types of results depending on their complexity and what they need to communicate back to the agent.Simple Return Types
Most tools can return simple Python types directly likestr, int, float, dict, and list:
ToolResult for Media Content
When your tool needs to return media artifacts (images, videos, audio), you must use ToolResult:
| Parameter | Type | Default | Description |
|---|---|---|---|
content | str | Required | Main text content/output from the tool |
images | Optional[List[Image]] | None | Generated image artifacts |
videos | Optional[List[Video]] | None | Generated video artifacts |
audios | Optional[List[Audio]] | None | Generated audio artifacts |
Guides
Available Toolkits
See the full list of available toolkits
MCP Tools
Learn how to use MCP tools with Agno
Reasoning Tools
Learn how to use reasoning tools with Agno
Creating your own tools
Learn how to create your own tools