# `vllm_mlx.tool_parsers.poolside_v1_tool_parser`

Tool parser for the Poolside v1 Laguna chat-template format.

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

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

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser._consume_stream_state(parser, pending: dict[int, dict[str, Any]], valid_names: set[str], request: dict[str, Any] | None) -> tuple[bool, str]
```

Function `_consume_stream_state` calls `parser._consume_text_before_tool`, `parser._consume_tool_name`, `parser._consume_string_value`, `parser._consume_pending_key`; has 5 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `parser` | `not annotated` | `yes` | `none` | Required positional or keyword input. |
| `pending` | `dict[int, dict[str, Any]]` | `yes` | `none` | Required positional or keyword input. |
| `valid_names` | `set[str]` | `yes` | `none` | Required positional or keyword input. |
| `request` | `dict[str, Any] \| None` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `tuple[bool, str]`
- Direct return expressions: `parser._consume_text_before_tool()`; `(parser._consume_tool_name(pending, valid_names), '')`; `(parser._consume_string_value(pending), '')`; `(parser._consume_pending_key(pending, request), '')`; `(parser._consume_tool_body(pending), '')`

**Exceptions and behavior**

Function `_consume_stream_state` calls `parser._consume_text_before_tool`, `parser._consume_tool_name`, `parser._consume_string_value`, `parser._consume_pending_key`; has 5 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L16-L30](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L16-L30).

</details>

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

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser(tokenizer = None)
```

Parse Laguna tool calls and stream schema-declared strings incrementally.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `tokenizer` | `not annotated` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |

**Returns**

- Constructs: `vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser`

**Exceptions and behavior**

Class `PoolsideV1ToolParser` derives from `Glm47ToolParser` and declares 18 direct member(s).
No direct `raise` statement appears in this definition.

[View source #L34-L362](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L34-L362).

</details>

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

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser.__init__(tokenizer = None) -> not annotated
```

Method `PoolsideV1ToolParser.__init__` calls `super().__init__`, `super`, `self.reset`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `tokenizer` | `not annotated` | `no` | `None` | Optional positional or keyword input; defaults to `None`. |

**Returns**

- Type: `not annotated`

**Exceptions and behavior**

Method `PoolsideV1ToolParser.__init__` calls `super().__init__`, `super`, `self.reset`.
No direct `raise` statement appears in this definition.

[View source #L45-L47](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L45-L47).

</details>

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

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser.reset() -> None
```

Reset Laguna parser buffers and per-call argument state.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `None`

**Exceptions and behavior**

Method `PoolsideV1ToolParser.reset` updates `self._buffer`, `self._in_tool_call`, `self._current_tool_name`, `self._pending_key`; calls `super().reset`, `super`.
No direct `raise` statement appears in this definition.

[View source #L49-L62](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L49-L62).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._string_argument_names" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._string_argument_names</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._string_argument_names(request: dict[str, Any] | None, tool_name: str) -> set[str]
```

Method `PoolsideV1ToolParser._string_argument_names` calls `set`, `request.get`, `isinstance`, `tool.get`; has 2 explicit return paths.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `request` | `dict[str, Any] \| None` | `yes` | `none` | Required positional or keyword input. |
| `tool_name` | `str` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `set[str]`
- Direct return expressions: `set()`; `{name for name, schema in properties.items() if isinstance(schema, dict) and schema.get('type') == 'string'}`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._string_argument_names` calls `set`, `request.get`, `isinstance`, `tool.get`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L65-L85](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L65-L85).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._escape_string_content" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._escape_string_content</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._escape_string_content(value: str) -> str
```

Method `PoolsideV1ToolParser._escape_string_content` calls `json.dumps`; returns `json.dumps(value, ensure_ascii=False)[1:-1]`.

**Parameters**

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

**Returns**

- Type: `str`
- Direct return expressions: `json.dumps(value, ensure_ascii=False)[1:-1]`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._escape_string_content` calls `json.dumps`; returns `json.dumps(value, ensure_ascii=False)[1:-1]`.
No direct `raise` statement appears in this definition.

[View source #L88-L89](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L88-L89).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._hold_partial_suffix" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._hold_partial_suffix</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._hold_partial_suffix(buffer: str, marker: str) -> tuple[str, str]
```

Method `PoolsideV1ToolParser._hold_partial_suffix` calls `range`, `min`, `len`, `buffer.endswith`; has 2 explicit return paths.

**Parameters**

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

**Returns**

- Type: `tuple[str, str]`
- Direct return expressions: `(buffer[:-size], buffer[-size:])`; `(buffer, '')`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._hold_partial_suffix` calls `range`, `min`, `len`, `buffer.endswith`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L92-L96](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L92-L96).

</details>

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

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

Extract complete Laguna tool blocks and preserve remaining content.

**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(True, tool_calls, content)`; `ExtractedToolCallInformation(False, [], content)`

**Exceptions and behavior**

Method `PoolsideV1ToolParser.extract_tool_calls` calls `self.strip_think_tags`, `self._get_tool_names`, `self.FUNC_DETAIL_PATTERN.finditer`, `match.group(1).strip`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

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

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._begin_tool_call" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._begin_tool_call</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._begin_tool_call() -> None
```

Method `PoolsideV1ToolParser._begin_tool_call` updates `self.current_tool_id`, `self._in_tool_call`, `self._current_tool_name`, `self._pending_key`; calls `self._tool_ids.append`, `generate_tool_id`, `self._args_started.append`, `self._args_closed.append`.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `None`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._begin_tool_call` updates `self.current_tool_id`, `self._in_tool_call`, `self._current_tool_name`, `self._pending_key`; calls `self._tool_ids.append`, `generate_tool_id`, `self._args_started.append`, `self._args_closed.append`.
No direct `raise` statement appears in this definition.

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

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._finish_tool_call" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._finish_tool_call</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._finish_tool_call() -> None
```

Method `PoolsideV1ToolParser._finish_tool_call` updates `self._in_tool_call`, `self._current_tool_name`, `self._pending_key`, `self._streaming_string_value`.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `None`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._finish_tool_call` updates `self._in_tool_call`, `self._current_tool_name`, `self._pending_key`, `self._streaming_string_value`.
No direct `raise` statement appears in this definition.

[View source #L152-L157](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L152-L157).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._delta" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._delta</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._delta(pending: dict[int, dict[str, Any]], *, name: str | None = None, arguments: str = '') -> None
```

Method `PoolsideV1ToolParser._delta` calls `pending.setdefault`; returns `None`.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `pending` | `dict[int, dict[str, Any]]` | `yes` | `none` | Required positional or keyword input. |
| `name` | `str \| None` | `no` | `None` | Optional keyword-only input; defaults to `None`. |
| `arguments` | `str` | `no` | `''` | Optional keyword-only input; defaults to `''`. |

**Returns**

- Type: `None`
- Direct return expressions: `None`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._delta` calls `pending.setdefault`; returns `None`.
No direct `raise` statement appears in this definition.

[View source #L159-L179](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L159-L179).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._argument_prefix" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._argument_prefix</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._argument_prefix(key: str) -> str | None
```

Method `PoolsideV1ToolParser._argument_prefix` calls `seen.add`, `json.dumps`; has 2 explicit return paths.

**Parameters**

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

**Returns**

- Type: `str | None`
- Direct return expressions: `None`; `separator + json.dumps(key, ensure_ascii=False) + ': '`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._argument_prefix` calls `seen.add`, `json.dumps`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L181-L188](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L181-L188).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._close_arguments" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._close_arguments</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._close_arguments() -> str
```

Method `PoolsideV1ToolParser._close_arguments` has 2 explicit return paths.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `str`
- Direct return expressions: `''`; `'}' if self._args_started[self.current_tool_id] else '{}'`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._close_arguments` has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L190-L194](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L190-L194).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._discard_through_tool_end" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._discard_through_tool_end</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._discard_through_tool_end() -> bool
```

Method `PoolsideV1ToolParser._discard_through_tool_end` updates `self._buffer`; calls `self._buffer.find`, `len`, `self._finish_tool_call`; has 2 explicit return paths.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `bool`
- Direct return expressions: `False`; `True`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._discard_through_tool_end` updates `self._buffer`; calls `self._buffer.find`, `len`, `self._finish_tool_call`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L196-L202](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L196-L202).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_text_before_tool" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_text_before_tool</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_text_before_tool() -> tuple[bool, str]
```

Consume plain text or enter the next ``<tool_call>`` state.

**Parameters**

This callable has no explicit inputs.

**Returns**

- Type: `tuple[bool, str]`
- Direct return expressions: `(False, emitted)`; `(True, content)`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._consume_text_before_tool` updates `self._buffer`; calls `self._buffer.find`, `self._hold_partial_suffix`, `len`, `self._begin_tool_call`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L204-L214](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L204-L214).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_name" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_name</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_name(pending: dict[int, dict[str, Any]], valid_names: set[str]) -> bool
```

Consume a tool name, or wait for enough input to identify it.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `pending` | `dict[int, dict[str, Any]]` | `yes` | `none` | Required positional or keyword input. |
| `valid_names` | `set[str]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `bool`
- Direct return expressions: `False`; `self._discard_through_tool_end()`; `True`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._consume_tool_name` updates `self._buffer`, `self._reject_current`, `self._current_tool_name`; calls `self._buffer.find`, `min`, `self._buffer[:cut].strip`, `self._buffer.startswith`; has 3 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L216-L247](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L216-L247).

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_string_value" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_string_value</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_string_value(pending: dict[int, dict[str, Any]]) -> bool
```

Consume a string argument value, retaining incomplete suffixes.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `pending` | `dict[int, dict[str, Any]]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `bool`
- Direct return expressions: `True`; `self._discard_through_tool_end()`; `False`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._consume_string_value` updates `self._buffer`, `self._streaming_string_value`, `self._pending_key`, `self._reject_current`; calls `self._buffer.find`, `self._escape_string_content`, `len`, `self._delta`; has 3 explicit return paths.
No direct `raise` statement appears in this definition.

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

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_pending_key" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_pending_key</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_pending_key(pending: dict[int, dict[str, Any]], request: dict[str, Any] | None) -> bool
```

Consume the value for the currently buffered argument key.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `pending` | `dict[int, dict[str, Any]]` | `yes` | `none` | Required positional or keyword input. |
| `request` | `dict[str, Any] \| None` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `bool`
- Direct return expressions: `self._discard_through_tool_end()`; `False`; `True`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._consume_pending_key` updates `self._reject_current`, `self._buffer`, `self._pending_key`, `self._streaming_string_value`; calls `self._buffer.find`, `self._discard_through_tool_end`, `len`, `self._pending_key.strip`; has 3 explicit return paths.
No direct `raise` statement appears in this definition.

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

</details>

<details class="api-contract" id="contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_body" markdown="1">
<summary><code>vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_body</code> · method</summary>

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_body(pending: dict[int, dict[str, Any]]) -> bool
```

Consume an argument key or close the current tool call.

**Parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `pending` | `dict[int, dict[str, Any]]` | `yes` | `none` | Required positional or keyword input. |

**Returns**

- Type: `bool`
- Direct return expressions: `True`; `False`

**Exceptions and behavior**

Method `PoolsideV1ToolParser._consume_tool_body` updates `self._buffer`, `self._pending_key`; calls `self._buffer.find`, `len`, `self._delta`, `self._close_arguments`; has 2 explicit return paths.
No direct `raise` statement appears in this definition.

[View source #L307-L328](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L307-L328).

</details>

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

```python
vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser.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
```

Incrementally emit Laguna content and schema-aware tool arguments.

**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: `payload or None`

**Exceptions and behavior**

Method `PoolsideV1ToolParser.extract_tool_calls_streaming` updates `self._buffer`; calls `self._get_tool_names`, `_consume_stream_state`, `list`, `pending.values`; returns `payload or None`.
No direct `raise` statement appears in this definition.

[View source #L330-L362](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L330-L362).

</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 |
| --- | --- | --- | --- | --- |
| [`_consume_stream_state`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser._consume_stream_state) | function | `_consume_stream_state(parser, pending: dict[int, dict[str, Any]], valid_names: set[str], request: dict[str, Any] \| None) -> tuple[bool, str]` | Function `_consume_stream_state` calls `parser._consume_text_before_tool`, `parser._consume_tool_name`, `parser._consume_string_value`, `parser._consume_pending_key`; has 5 explicit return paths. | [#L16-L30](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L16-L30) |
| [`PoolsideV1ToolParser`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser) | class | `PoolsideV1ToolParser(tokenizer = None)` | Parse Laguna tool calls and stream schema-declared strings incrementally. | [#L34-L362](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L34-L362) |
| [`PoolsideV1ToolParser.__init__`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser.__init__) | method | `PoolsideV1ToolParser.__init__(tokenizer = None) -> not annotated` | Method `PoolsideV1ToolParser.__init__` calls `super().__init__`, `super`, `self.reset`. | [#L45-L47](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L45-L47) |
| [`PoolsideV1ToolParser.reset`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser.reset) | method | `PoolsideV1ToolParser.reset() -> None` | Reset Laguna parser buffers and per-call argument state. | [#L49-L62](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L49-L62) |
| [`PoolsideV1ToolParser._string_argument_names`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._string_argument_names) | method | `PoolsideV1ToolParser._string_argument_names(request: dict[str, Any] \| None, tool_name: str) -> set[str]` | Method `PoolsideV1ToolParser._string_argument_names` calls `set`, `request.get`, `isinstance`, `tool.get`; has 2 explicit return paths. | [#L65-L85](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L65-L85) |
| [`PoolsideV1ToolParser._escape_string_content`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._escape_string_content) | method | `PoolsideV1ToolParser._escape_string_content(value: str) -> str` | Method `PoolsideV1ToolParser._escape_string_content` calls `json.dumps`; returns `json.dumps(value, ensure_ascii=False)[1:-1]`. | [#L88-L89](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L88-L89) |
| [`PoolsideV1ToolParser._hold_partial_suffix`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._hold_partial_suffix) | method | `PoolsideV1ToolParser._hold_partial_suffix(buffer: str, marker: str) -> tuple[str, str]` | Method `PoolsideV1ToolParser._hold_partial_suffix` calls `range`, `min`, `len`, `buffer.endswith`; has 2 explicit return paths. | [#L92-L96](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L92-L96) |
| [`PoolsideV1ToolParser.extract_tool_calls`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser.extract_tool_calls) | method | `PoolsideV1ToolParser.extract_tool_calls(model_output: str, request: dict[str, Any] \| None = None) -> ExtractedToolCallInformation` | Extract complete Laguna tool blocks and preserve remaining content. | [#L98-L138](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L98-L138) |
| [`PoolsideV1ToolParser._begin_tool_call`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._begin_tool_call) | method | `PoolsideV1ToolParser._begin_tool_call() -> None` | Method `PoolsideV1ToolParser._begin_tool_call` updates `self.current_tool_id`, `self._in_tool_call`, `self._current_tool_name`, `self._pending_key`; calls `self._tool_ids.append`, `generate_tool_id`, `self._args_started.append`, `self._args_closed.append`. | [#L140-L150](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L140-L150) |
| [`PoolsideV1ToolParser._finish_tool_call`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._finish_tool_call) | method | `PoolsideV1ToolParser._finish_tool_call() -> None` | Method `PoolsideV1ToolParser._finish_tool_call` updates `self._in_tool_call`, `self._current_tool_name`, `self._pending_key`, `self._streaming_string_value`. | [#L152-L157](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L152-L157) |
| [`PoolsideV1ToolParser._delta`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._delta) | method | `PoolsideV1ToolParser._delta(pending: dict[int, dict[str, Any]], *, name: str \| None = None, arguments: str = '') -> None` | Method `PoolsideV1ToolParser._delta` calls `pending.setdefault`; returns `None`. | [#L159-L179](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L159-L179) |
| [`PoolsideV1ToolParser._argument_prefix`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._argument_prefix) | method | `PoolsideV1ToolParser._argument_prefix(key: str) -> str \| None` | Method `PoolsideV1ToolParser._argument_prefix` calls `seen.add`, `json.dumps`; has 2 explicit return paths. | [#L181-L188](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L181-L188) |
| [`PoolsideV1ToolParser._close_arguments`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._close_arguments) | method | `PoolsideV1ToolParser._close_arguments() -> str` | Method `PoolsideV1ToolParser._close_arguments` has 2 explicit return paths. | [#L190-L194](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L190-L194) |
| [`PoolsideV1ToolParser._discard_through_tool_end`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._discard_through_tool_end) | method | `PoolsideV1ToolParser._discard_through_tool_end() -> bool` | Method `PoolsideV1ToolParser._discard_through_tool_end` updates `self._buffer`; calls `self._buffer.find`, `len`, `self._finish_tool_call`; has 2 explicit return paths. | [#L196-L202](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L196-L202) |
| [`PoolsideV1ToolParser._consume_text_before_tool`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_text_before_tool) | method | `PoolsideV1ToolParser._consume_text_before_tool() -> tuple[bool, str]` | Consume plain text or enter the next ``<tool_call>`` state. | [#L204-L214](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L204-L214) |
| [`PoolsideV1ToolParser._consume_tool_name`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_name) | method | `PoolsideV1ToolParser._consume_tool_name(pending: dict[int, dict[str, Any]], valid_names: set[str]) -> bool` | Consume a tool name, or wait for enough input to identify it. | [#L216-L247](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L216-L247) |
| [`PoolsideV1ToolParser._consume_string_value`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_string_value) | method | `PoolsideV1ToolParser._consume_string_value(pending: dict[int, dict[str, Any]]) -> bool` | Consume a string argument value, retaining incomplete suffixes. | [#L249-L267](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L249-L267) |
| [`PoolsideV1ToolParser._consume_pending_key`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_pending_key) | method | `PoolsideV1ToolParser._consume_pending_key(pending: dict[int, dict[str, Any]], request: dict[str, Any] \| None) -> bool` | Consume the value for the currently buffered argument key. | [#L269-L305](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L269-L305) |
| [`PoolsideV1ToolParser._consume_tool_body`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser._consume_tool_body) | method | `PoolsideV1ToolParser._consume_tool_body(pending: dict[int, dict[str, Any]]) -> bool` | Consume an argument key or close the current tool call. | [#L307-L328](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L307-L328) |
| [`PoolsideV1ToolParser.extract_tool_calls_streaming`](#contract-vllm_mlx.tool_parsers.poolside_v1_tool_parser.PoolsideV1ToolParser.extract_tool_calls_streaming) | method | `PoolsideV1ToolParser.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` | Incrementally emit Laguna content and schema-aware tool arguments. | [#L330-L362](https://github.com/waybarrios/vllm-mlx/blob/a69d47912bcb21d8fe04d48f75fa896b620ffcfa/vllm_mlx/tool_parsers/poolside_v1_tool_parser.py#L330-L362) |
