> ## 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.

# CompressionManager

> CompressionManager attributes and methods for compressing tool call results.

The `CompressionManager` is responsible for compressing tool call results to save context space while preserving critical information.

## CompressionManager Attributes

| Parameter | Type | Default | Description |
| - | - | - | - |
| `model` | `Optional[Model]` | `None` | Model used for compression |
| `compress_tool_results` | `bool` | `True` | Flag to enable tool result compression |
| `compress_tool_results_limit` | `Optional[int]` | `None` | Number of uncompressed tool results before compression triggers. Set to `3` at init when neither this nor `compress_token_limit` is provided. |
| `compress_token_limit` | `Optional[int]` | `None` | Number of tokens before compression triggers. |
| `compress_tool_call_instructions` | `Optional[str]` | `None` | Custom prompt for compression. If not provided, uses the default compression prompt |
| `stats` | `Dict[str, Any]` | `{}` | Tracks compression statistics |

## CompressionManager Methods

### `should_compress(messages, tools, model, response_format) -> bool`

Checks whether compression should be triggered based on configured thresholds.

**Parameters:**

* `messages`: List of messages to check
* `tools`: Optional list of tools for token counting
* `model`: The Agent/Team model
* `response_format`: Optional output schema, used for accurate token counting

**Returns:**

* `bool`: True if either threshold is met

### `ashould_compress(messages, tools, model, response_format) -> bool`

Checks whether compression should be triggered based on configured thresholds asynchronously.

**Parameters:**

* `messages`: List of messages to check
* `tools`: Optional list of tools for token counting
* `model`: The Agent/Team model
* `response_format`: Optional output schema, used for accurate token counting

**Returns:**

* `bool`: True if either threshold is met

### `compress(messages, run_metrics) -> None`

Compresses all uncompressed tool results.

**Parameters:**

* `messages`: List of messages containing tool results to compress
* `run_metrics`: Optional `RunMetrics` object; the compression model's usage is accumulated onto it

**Returns:**

* `None`: Modifies messages in place, setting `compressed_content` on each tool message

### `acompress(messages, run_metrics) -> None`

Compresses all uncompressed tool results asynchronously.

**Parameters:**

* `messages`: List of messages containing tool results to compress
* `run_metrics`: Optional `RunMetrics` object; the compression model's usage is accumulated onto it

**Returns:**

* `None`: Modifies messages in place, setting `compressed_content` on each tool message


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