# `vllm_mlx.tool_parsers.abstract_tool_parser`

Abstract tool parser base class and manager for vllm-mlx.

[View the complete module source at #L1-L286](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L1-L286).

## API details

Each callable below includes its exact signature, type annotations, inputs, defaults, return contract, documented exceptions, implementation source, and parsed docstring sections when the source provides them.

::: vllm_mlx.tool_parsers.abstract_tool_parser
    options:
      members:
        - THINK_TAG_PATTERN
        - IMPLICIT_THINK_PATTERN
        - ExtractedToolCallInformation
        - ToolParser
        - ToolParserManager
      filters: []
      show_if_no_docstring: true

## Complete contract reference

Expand any definition for its exact inputs, annotations, defaults, return contract, directly raised exceptions, source-grounded behavior, and immutable line link. This section includes private and nested definitions that ordinary API generators omit.

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ExtractedToolCallInformation" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ExtractedToolCallInformation</code> · class</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ExtractedToolCallInformation(tools_called: bool, tool_calls: list[dict[str, Any]], content: str | None = None)
```

Information extracted from model output about tool calls.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `tools_called` | `bool` | `yes` | `none` | Required constructor field. |
| `tool_calls` | `list[dict[str, Any]]` | `yes` | `none` | Required constructor field. |
| `content` | `str \| None` | `no` | `None` | Optional constructor field; defaults to `None`. |

**Returns**

- Constructs: `vllm_mlx.tool_parsers.abstract_tool_parser.ExtractedToolCallInformation`

**Exceptions and behavior**

Class `ExtractedToolCallInformation` declares 0 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L27-L37](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L27-L37).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser</code> · class</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser(tokenizer: PreTrainedTokenizerBase | None = None)
```

Abstract base class for tool call parsers.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `tokenizer` | `PreTrainedTokenizerBase \| None` | `no` | `None` | The tokenizer for the model (optional, some parsers need it) |

**Returns**

- Constructs: `vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser`

**Exceptions and behavior**

Class `ToolParser` derives from `ABC` and declares 7 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L40-L171](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L40-L171).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.supports_native_format" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.supports_native_format</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.supports_native_format() -> bool
```

Check if this parser supports native tool message format.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `bool`
- Direct return expressions: `cls.SUPPORTS_NATIVE_TOOL_FORMAT`

**Exceptions and behavior**

Method `ToolParser.supports_native_format` returns `cls.SUPPORTS_NATIVE_TOOL_FORMAT`.
No direct `raise` statement appears in this definition.

[View source #L60-L72](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L60-L72).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.strip_think_tags" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.strip_think_tags</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.strip_think_tags(text: str) -> str
```

Strip think tags from text.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `text` | `str` | `yes` | `none` | Model output that may contain think tags |

**Returns**

- Type: `str`
- Direct return expressions: `result.strip()`

**Exceptions and behavior**

Method `ToolParser.strip_think_tags` calls `THINK_TAG_PATTERN.sub`, `IMPLICIT_THINK_PATTERN.sub`, `result.strip`; returns `result.strip()`.
No direct `raise` statement appears in this definition.

[View source #L75-L101](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L75-L101).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.__init__" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.__init__</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.__init__(tokenizer: PreTrainedTokenizerBase | None = None) -> not annotated
```

Initialize the tool parser.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `tokenizer` | `PreTrainedTokenizerBase \| None` | `no` | `None` | The tokenizer for the model (optional, some parsers need it) |

**Returns**

- Type: `not annotated`

**Exceptions and behavior**

Method `ToolParser.__init__` updates `self.model_tokenizer`, `self.current_tool_id`, `self.prev_tool_call_arr`.
No direct `raise` statement appears in this definition.

[View source #L103-L113](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L103-L113).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.vocab" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.vocab</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.vocab() -> dict[str, int]
```

Get the tokenizer vocabulary.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `dict[str, int]`
- Direct return expressions: `{}`; `self.model_tokenizer.get_vocab()`

**Exceptions and behavior**

Method `ToolParser.vocab` calls `self.model_tokenizer.get_vocab`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L116-L120](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L116-L120).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls(model_output: str, request: dict[str, Any] | None = None) -> ExtractedToolCallInformation
```

Extract tool calls from a complete model response.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model_output` | `str` | `yes` | `none` | The complete model output string |
| `request` | `dict[str, Any] \| None` | `no` | `None` | Optional request context (for tool definitions, etc.) |

**Returns**

- Type: `ExtractedToolCallInformation`

**Exceptions and behavior**

Method `ToolParser.extract_tool_calls` can raise `NotImplementedError`.
Directly raised exceptions: `NotImplementedError`.

[View source #L123-L136](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L123-L136).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls_streaming" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls_streaming</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls_streaming(previous_text: str, current_text: str, delta_text: str, previous_token_ids: Sequence[int] | None = None, current_token_ids: Sequence[int] | None = None, delta_token_ids: Sequence[int] | None = None, request: dict[str, Any] | None = None) -> dict[str, Any] | None
```

Extract tool calls from streaming model output.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `previous_text` | `str` | `yes` | `none` | Text before this delta |
| `current_text` | `str` | `yes` | `none` | Complete text so far |
| `delta_text` | `str` | `yes` | `none` | New text in this chunk |
| `previous_token_ids` | `Sequence[int] \| None` | `no` | `None` | Token IDs before this delta |
| `current_token_ids` | `Sequence[int] \| None` | `no` | `None` | All token IDs so far |
| `delta_token_ids` | `Sequence[int] \| None` | `no` | `None` | New token IDs in this chunk |
| `request` | `dict[str, Any] \| None` | `no` | `None` | Optional request context |

**Returns**

- Type: `dict[str, Any] | None`
- Direct return expressions: `None`

**Exceptions and behavior**

Method `ToolParser.extract_tool_calls_streaming` returns `None`.
No direct `raise` statement appears in this definition.

[View source #L138-L166](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L138-L166).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.reset" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.reset</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.reset() -> None
```

Reset parser state for a new request.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `None`

**Exceptions and behavior**

Method `ToolParser.reset` updates `self.current_tool_id`, `self.prev_tool_call_arr`.
No direct `raise` statement appears in this definition.

[View source #L168-L171](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L168-L171).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager</code> · class</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager()
```

Central registry for ToolParser implementations.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Constructs: `vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager`

**Exceptions and behavior**

Class `ToolParserManager` declares 5 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L174-L286](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L174-L286).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.get_tool_parser" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.get_tool_parser</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.get_tool_parser(name: str) -> type[ToolParser]
```

Retrieve a registered ToolParser class by name.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `name` | `str` | `yes` | `none` | Parser name (e.g., 'mistral', 'qwen', 'llama') |

**Returns**

- Type: `type[ToolParser]`
- Direct return expressions: `cls.tool_parsers[name]`; `cls._load_lazy_parser(name)`

**Exceptions and behavior**

Method `ToolParserManager.get_tool_parser` calls `cls._load_lazy_parser`, `KeyError`, `cls.list_registered`; can raise `KeyError`; has 2 explicit return paths.
Directly raised exceptions: `KeyError`.

[View source #L185-L207](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L185-L207).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager._load_lazy_parser" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager._load_lazy_parser</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager._load_lazy_parser(name: str) -> type[ToolParser]
```

Import and register a lazily loaded parser.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `name` | `str` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `type[ToolParser]`
- Direct return expressions: `parser_cls`

**Exceptions and behavior**

Method `ToolParserManager._load_lazy_parser` calls `importlib.import_module`, `getattr`, `issubclass`, `TypeError`; can raise `TypeError`, `ImportError`; returns `parser_cls`.
Directly raised exceptions: `TypeError`, `ImportError`.

[View source #L210-L225](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L210-L225).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module(name: str | list[str], module: type[ToolParser] | None = None, force: bool = True) -> type[ToolParser] | None
```

Register a ToolParser class.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `name` | `str \| list[str]` | `yes` | `none` | Required positional or keyword input. |
| `module` | `type[ToolParser] \| None` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |
| `force` | `bool` | `no` | `True` | Optional positional or keyword input; defaults to `True`. |

**Returns**

- Type: `type[ToolParser] | None`
- Direct return expressions: `module`; `decorator`

**Exceptions and behavior**

Method `ToolParserManager.register_module` calls `isinstance`, `issubclass`, `TypeError`, `type`; can raise `TypeError`, `KeyError`; has 2 explicit return paths.
Directly raised exceptions: `TypeError`, `KeyError`.

[View source #L228-L269](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L228-L269).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module.decorator" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module.decorator</code> · nested function</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module.decorator(parser_cls: type[ToolParser]) -> type[ToolParser]
```

Nested Function `ToolParserManager.register_module.decorator` calls `KeyError`; can raise `KeyError`; returns `parser_cls`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `parser_cls` | `type[ToolParser]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `type[ToolParser]`
- Direct return expressions: `parser_cls`

**Exceptions and behavior**

Nested Function `ToolParserManager.register_module.decorator` calls `KeyError`; can raise `KeyError`; returns `parser_cls`.
Directly raised exceptions: `KeyError`.

[View source #L262-L267](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L262-L267).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_lazy_module" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_lazy_module</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_lazy_module(name: str, module_path: str, class_name: str) -> None
```

Register a lazy module mapping for deferred loading.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `name` | `str` | `yes` | `none` | Parser name to register |
| `module_path` | `str` | `yes` | `none` | Full module path (e.g., 'vllm_mlx.tool_parsers.mistral') |
| `class_name` | `str` | `yes` | `none` | Class name within the module |

**Returns**

- Type: `None`

**Exceptions and behavior**

Method `ToolParserManager.register_lazy_module` contains no state mutation, call, raise, return, await, or yield.
No direct `raise` statement appears in this definition.

[View source #L272-L281](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L272-L281).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.list_registered" markdown="1">
<summary><code>vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.list_registered</code> · method</summary>

```python
vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.list_registered() -> list[str]
```

Return names of all registered tool parsers.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `list[str]`
- Direct return expressions: `sorted(set(cls.tool_parsers.keys()) | set(cls.lazy_parsers.keys()))`

**Exceptions and behavior**

Method `ToolParserManager.list_registered` calls `sorted`, `set`, `cls.tool_parsers.keys`, `cls.lazy_parsers.keys`; returns `sorted(set(cls.tool_parsers.keys()) | set(cls.lazy_parsers.keys()))`.
No direct `raise` statement appears in this definition.

[View source #L284-L286](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L284-L286).

</details>

## Complete symbol map

This map also includes private definitions and nested helpers. The signature column exposes every explicit input even when an internal helper has no dedicated parameter prose.

| Symbol | Kind | Signature and inputs | What it does | Source |
| --- | --- | --- | --- | --- |
| [`ExtractedToolCallInformation`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ExtractedToolCallInformation) | class | `ExtractedToolCallInformation(tools_called: bool, tool_calls: list[dict[str, Any]], content: str \| None = None)` | Information extracted from model output about tool calls. | [#L27-L37](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L27-L37) |
| [`ToolParser`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser) | class | `ToolParser(tokenizer: PreTrainedTokenizerBase \| None = None)` | Abstract base class for tool call parsers. | [#L40-L171](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L40-L171) |
| [`ToolParser.supports_native_format`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.supports_native_format) | method | `ToolParser.supports_native_format() -> bool` | Check if this parser supports native tool message format. | [#L60-L72](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L60-L72) |
| [`ToolParser.strip_think_tags`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.strip_think_tags) | method | `ToolParser.strip_think_tags(text: str) -> str` | Strip think tags from text. | [#L75-L101](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L75-L101) |
| [`ToolParser.__init__`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.__init__) | method | `ToolParser.__init__(tokenizer: PreTrainedTokenizerBase \| None = None) -> not annotated` | Initialize the tool parser. | [#L103-L113](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L103-L113) |
| [`ToolParser.vocab`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.vocab) | method | `ToolParser.vocab() -> dict[str, int]` | Get the tokenizer vocabulary. | [#L116-L120](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L116-L120) |
| [`ToolParser.extract_tool_calls`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls) | method | `ToolParser.extract_tool_calls(model_output: str, request: dict[str, Any] \| None = None) -> ExtractedToolCallInformation` | Extract tool calls from a complete model response. | [#L123-L136](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L123-L136) |
| [`ToolParser.extract_tool_calls_streaming`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.extract_tool_calls_streaming) | method | `ToolParser.extract_tool_calls_streaming(previous_text: str, current_text: str, delta_text: str, previous_token_ids: Sequence[int] \| None = None, current_token_ids: Sequence[int] \| None = None, delta_token_ids: Sequence[int] \| None = None, request: dict[str, Any] \| None = None) -> dict[str, Any] \| None` | Extract tool calls from streaming model output. | [#L138-L166](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L138-L166) |
| [`ToolParser.reset`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParser.reset) | method | `ToolParser.reset() -> None` | Reset parser state for a new request. | [#L168-L171](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L168-L171) |
| [`ToolParserManager`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager) | class | `ToolParserManager()` | Central registry for ToolParser implementations. | [#L174-L286](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L174-L286) |
| [`ToolParserManager.get_tool_parser`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.get_tool_parser) | method | `ToolParserManager.get_tool_parser(name: str) -> type[ToolParser]` | Retrieve a registered ToolParser class by name. | [#L185-L207](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L185-L207) |
| [`ToolParserManager._load_lazy_parser`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager._load_lazy_parser) | method | `ToolParserManager._load_lazy_parser(name: str) -> type[ToolParser]` | Import and register a lazily loaded parser. | [#L210-L225](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L210-L225) |
| [`ToolParserManager.register_module`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module) | method | `ToolParserManager.register_module(name: str \| list[str], module: type[ToolParser] \| None = None, force: bool = True) -> type[ToolParser] \| None` | Register a ToolParser class. | [#L228-L269](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L228-L269) |
| [`ToolParserManager.register_module.decorator`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_module.decorator) | nested function | `ToolParserManager.register_module.decorator(parser_cls: type[ToolParser]) -> type[ToolParser]` | Nested Function `ToolParserManager.register_module.decorator` calls `KeyError`; can raise `KeyError`; returns `parser_cls`. | [#L262-L267](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L262-L267) |
| [`ToolParserManager.register_lazy_module`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.register_lazy_module) | method | `ToolParserManager.register_lazy_module(name: str, module_path: str, class_name: str) -> None` | Register a lazy module mapping for deferred loading. | [#L272-L281](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L272-L281) |
| [`ToolParserManager.list_registered`](#contract-vllm_mlx.tool_parsers.abstract_tool_parser.ToolParserManager.list_registered) | method | `ToolParserManager.list_registered() -> list[str]` | Return names of all registered tool parsers. | [#L284-L286](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/abstract_tool_parser.py#L284-L286) |
