> ## Documentation Index
> Fetch the complete documentation index at: https://agno-v2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Toolkit

> Reference for the Toolkit class.

The `Toolkit` class provides a way to group and manage multiple tools (functions) together. It handles tool registration, filtering, caching, and execution control.

## Import

```python theme={null}
from agno.tools.toolkit import Toolkit
```

## Constructor

### Parameters

| Parameter | Type | Description |
| - | - | - |
| `name` | `str` | A descriptive name for the toolkit. |
| `tools` | `Sequence[Union[Callable, Function]]` | List of callables or `Function` objects (from the `@tool` decorator) to include in the toolkit. |
| `async_tools` | `Sequence[tuple[Callable, str]]` | List of `(async_callable, tool_name)` tuples registering async variants whose names differ from the sync methods, e.g. `[(self.ascreenshot, "screenshot")]`. |
| `instructions` | `str` | Instructions for using the toolkit. Can be added to agent context. |
| `add_instructions` | `bool` | Whether to add toolkit instructions to the agent's context. |
| `include_tools` | `list[str]` | List of tool names to include from the toolkit. If specified, only these tools will be registered. |
| `exclude_tools` | `list[str]` | List of tool names to exclude from the toolkit. These tools will not be registered. |
| `requires_confirmation_tools` | `list[str]` | List of tool names that require user confirmation before execution. |
| `external_execution_required_tools` | `list[str]` | List of tool names that will be executed outside of the agent loop. |
| `stop_after_tool_call_tools` | `List[str]` | List of tool names that should stop the agent after execution. |
| `show_result_tools` | `List[str]` | List of tool names whose results should be shown to the user. |
| `cache_results` | `bool` | Enable in-memory caching of function results. |
| `cache_ttl` | `int` | Time-to-live for cached results in seconds (default: 1 hour). |
| `cache_dir` | `str` | Directory to store cache files. Defaults to system temp directory. |
| `timeout` | `Optional[int]` | Timeout in seconds for the toolkit's primary I/O operation (HTTP request, SDK call, sandbox execution). Subclasses forward their own `timeout` via `super().__init__(timeout=...)`. |
| `auto_register` | `bool` | Whether to automatically register all tools in the toolkit upon initialization. |

## Usage Examples

### Basic Toolkit

```python theme={null}
from agno.tools.toolkit import Toolkit

class WebSearchTools(Toolkit):
    def __init__(self, **kwargs):
        tools = [
            self.search_web,
        ]
        super().__init__(name="web_search_tools", tools=tools, **kwargs)

    def search_web(self, query: str) -> str:
        """Search the web for information."""
        return f"Searching for: {query}"
```

### Toolkit with Instructions

```python theme={null}
class CalculatorTools(Toolkit):
    def __init__(self, **kwargs):
        tools = [
            self.add,
            self.subtract,
            self.multiply,
            self.divide,
        ]

        instructions = "Use these tools to perform calculations. Always validate inputs before execution."

        super().__init__(name="calculator_tools", tools=tools, instructions=instructions, **kwargs)
    
    def add(self, a: float, b: float) -> float:
        """Add two numbers and return the result."""
        return a + b
    
    def subtract(self, a: float, b: float) -> float:
        """Subtract two numbers and return the result."""
        return a - b
    
    def multiply(self, a: float, b: float) -> float:
        """Multiply two numbers and return the result."""
        return a * b
    
    def divide(self, a: float, b: float) -> float:
        """Divide two numbers and return the result."""
        return a / b
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.