> ## Documentation Index
> Fetch the complete documentation index at: https://phidatainc-studio-tools-doc.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`                             | `List[Callable]` | List of callable functions to include in the toolkit.                                              |
| `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.                                 |
| `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
```
