# `vllm_mlx.tool_parsers.minimax_tool_parser`

MiniMax tool call parser for vllm-mlx.

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

## 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.minimax_tool_parser
    options:
      members:
        - generate_tool_id
        - MiniMaxToolParser
      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.minimax_tool_parser.generate_tool_id" markdown="1">
<summary><code>vllm_mlx.tool_parsers.minimax_tool_parser.generate_tool_id</code> · function</summary>

```python
vllm_mlx.tool_parsers.minimax_tool_parser.generate_tool_id() -> str
```

Return a short OpenAI-compatible identifier for a parsed tool call.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `str`
- Direct return expressions: `f'call_{uuid.uuid4().hex[:8]}'`

**Exceptions and behavior**

Function `generate_tool_id` calls `uuid.uuid4`; returns `f'call_{uuid.uuid4().hex[:8]}'`.
No direct `raise` statement appears in this definition.

[View source #L26-L29](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L26-L29).

</details>

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

```python
vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser()
```

Parser for MiniMax-M2 tool call format.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Constructs: `vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser`

**Exceptions and behavior**

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

[View source #L33-L178](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L33-L178).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._extract_invokes" markdown="1">
<summary><code>vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._extract_invokes</code> · method</summary>

```python
vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._extract_invokes(text: str) -> list[dict[str, Any]]
```

Extract tool calls from invoke elements, with or without wrapper.

**Parameters**

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

**Returns**

- Type: `list[dict[str, Any]]`
- Direct return expressions: `tool_calls`

**Exceptions and behavior**

Method `MiniMaxToolParser._extract_invokes` calls `self.INVOKE_PATTERN.findall`, `self.PARAM_PATTERN.findall`, `p_value.strip`, `json.loads`; returns `tool_calls`.
No direct `raise` statement appears in this definition.

[View source #L54-L78](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L54-L78).

</details>

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

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

Extract wrapped or bare MiniMax invoke elements from complete output.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `model_output` | `str` | `yes` | `none` | Required positional or keyword input. |
| `request` | `dict[str, Any] \| None` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |

**Returns**

- Type: `ExtractedToolCallInformation`
- Direct return expressions: `ExtractedToolCallInformation(tools_called=bool(tool_calls), tool_calls=tool_calls, content=cleaned if cleaned else None)`; `ExtractedToolCallInformation(tools_called=True, tool_calls=tool_calls, content=cleaned if cleaned else None)`; `ExtractedToolCallInformation(tools_called=False, tool_calls=[], content=model_output)`

**Exceptions and behavior**

Method `MiniMaxToolParser.extract_tool_calls` calls `self.TOOL_CALL_BLOCK.findall`, `tool_calls.extend`, `self._extract_invokes`, `self.TOOL_CALL_BLOCK.sub('', model_output).strip`; has 3 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L80-L121](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L80-L121).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_start" markdown="1">
<summary><code>vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_start</code> · method</summary>

```python
vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_start(text: str) -> bool
```

Check if text contains the start of a tool call block.

**Parameters**

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

**Returns**

- Type: `bool`
- Direct return expressions: `'<minimax:tool_call>' in text or ('<invoke name="' in text and self.INVOKE_PATTERN.search(text) is not None)`

**Exceptions and behavior**

Method `MiniMaxToolParser._has_tool_start` calls `self.INVOKE_PATTERN.search`; returns `'<minimax:tool_call>' in text or ('<invoke name="' in text and self.INVOKE_PATTERN.search(text) is not None)`.
No direct `raise` statement appears in this definition.

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

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_end" markdown="1">
<summary><code>vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_end</code> · method</summary>

```python
vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_end(current: str, previous: str) -> bool
```

Check if a tool call block just completed.

**Parameters**

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

**Returns**

- Type: `bool`
- Direct return expressions: `'</minimax:tool_call>' in current and '</minimax:tool_call>' not in previous`; `True`; `False`

**Exceptions and behavior**

Method `MiniMaxToolParser._has_tool_end` has 3 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L129-L140](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L129-L140).

</details>

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

```python
vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser.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
```

Emit content deltas or a completed MiniMax tool-call delta.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `previous_text` | `str` | `yes` | `none` | Required positional or keyword input. |
| `current_text` | `str` | `yes` | `none` | Required positional or keyword input. |
| `delta_text` | `str` | `yes` | `none` | Required positional or keyword input. |
| `previous_token_ids` | `Sequence[int] \| None` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |
| `current_token_ids` | `Sequence[int] \| None` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |
| `delta_token_ids` | `Sequence[int] \| None` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |
| `request` | `dict[str, Any] \| None` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |

**Returns**

- Type: `dict[str, Any] | None`
- Direct return expressions: `{'content': delta_text}`; `{'tool_calls': [{'index': i, 'id': tc['id'], 'type': 'function', 'function': {'name': tc['name'], 'arguments': tc['argu…`; `None`

**Exceptions and behavior**

Method `MiniMaxToolParser.extract_tool_calls_streaming` calls `self._has_tool_start`, `self._has_tool_end`, `self.extract_tool_calls`, `enumerate`; has 3 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L142-L178](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L142-L178).

</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 |
| --- | --- | --- | --- | --- |
| [`generate_tool_id`](#contract-vllm_mlx.tool_parsers.minimax_tool_parser.generate_tool_id) | function | `generate_tool_id() -> str` | Return a short OpenAI-compatible identifier for a parsed tool call. | [#L26-L29](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L26-L29) |
| [`MiniMaxToolParser`](#contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser) | class | `MiniMaxToolParser()` | Parser for MiniMax-M2 tool call format. | [#L33-L178](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L33-L178) |
| [`MiniMaxToolParser._extract_invokes`](#contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._extract_invokes) | method | `MiniMaxToolParser._extract_invokes(text: str) -> list[dict[str, Any]]` | Extract tool calls from invoke elements, with or without wrapper. | [#L54-L78](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L54-L78) |
| [`MiniMaxToolParser.extract_tool_calls`](#contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser.extract_tool_calls) | method | `MiniMaxToolParser.extract_tool_calls(model_output: str, request: dict[str, Any] \| None = None) -> ExtractedToolCallInformation` | Extract wrapped or bare MiniMax invoke elements from complete output. | [#L80-L121](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L80-L121) |
| [`MiniMaxToolParser._has_tool_start`](#contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_start) | method | `MiniMaxToolParser._has_tool_start(text: str) -> bool` | Check if text contains the start of a tool call block. | [#L123-L127](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L123-L127) |
| [`MiniMaxToolParser._has_tool_end`](#contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser._has_tool_end) | method | `MiniMaxToolParser._has_tool_end(current: str, previous: str) -> bool` | Check if a tool call block just completed. | [#L129-L140](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L129-L140) |
| [`MiniMaxToolParser.extract_tool_calls_streaming`](#contract-vllm_mlx.tool_parsers.minimax_tool_parser.MiniMaxToolParser.extract_tool_calls_streaming) | method | `MiniMaxToolParser.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` | Emit content deltas or a completed MiniMax tool-call delta. | [#L142-L178](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/minimax_tool_parser.py#L142-L178) |
