> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/labs-voice-agent/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/labs-voice-agent/_mcp/server.

# nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools

Tau2-telecom user-side LLM tool ports.

The user simulator's LLM has these tools available to control the mock
phone state during a conversation. Same architecture as the retail tool
port: dict-form DB in `self.state["db"]`, `_Tau2InvokeMixin` for
sync/async dual-routing, `WriteScenarioTool` subclass auto-records each
mutation.

## Module Contents

### Classes

| Name                                                                                                                          | Description                                                            |
| ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [`CanSendMmsTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CanSendMmsTool)                                 | -                                                                      |
| [`CheckApnSettingsTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckApnSettingsTool)                     | -                                                                      |
| [`CheckAppPermissionsTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckAppPermissionsTool)               | -                                                                      |
| [`CheckAppStatusTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckAppStatusTool)                         | -                                                                      |
| [`CheckDataRestrictionStatusTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckDataRestrictionStatusTool) | -                                                                      |
| [`CheckInstalledAppsTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckInstalledAppsTool)                 | -                                                                      |
| [`CheckNetworkModePreferenceTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckNetworkModePreferenceTool) | -                                                                      |
| [`CheckNetworkStatusTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckNetworkStatusTool)                 | -                                                                      |
| [`CheckPaymentRequestTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckPaymentRequestTool)               | -                                                                      |
| [`CheckSimStatusTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckSimStatusTool)                         | -                                                                      |
| [`CheckStatusBarTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckStatusBarTool)                         | -                                                                      |
| [`CheckVpnStatusTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckVpnStatusTool)                         | -                                                                      |
| [`CheckWifiCallingStatusTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckWifiCallingStatusTool)         | -                                                                      |
| [`CheckWifiStatusTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-CheckWifiStatusTool)                       | -                                                                      |
| [`ConnectVpnTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ConnectVpnTool)                                 | -                                                                      |
| [`DisconnectVpnTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-DisconnectVpnTool)                           | -                                                                      |
| [`GrantAppPermissionTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-GrantAppPermissionTool)                 | -                                                                      |
| [`MakePaymentTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-MakePaymentTool)                               | -                                                                      |
| [`RebootDeviceTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-RebootDeviceTool)                             | -                                                                      |
| [`ReseatSimCardTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ReseatSimCardTool)                           | -                                                                      |
| [`ResetApnSettingsTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ResetApnSettingsTool)                     | -                                                                      |
| [`RunSpeedTestTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-RunSpeedTestTool)                             | -                                                                      |
| [`SetApnSettingsTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-SetApnSettingsTool)                         | -                                                                      |
| [`SetNetworkModePreferenceTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-SetNetworkModePreferenceTool)     | -                                                                      |
| [`ToggleAirplaneModeTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ToggleAirplaneModeTool)                 | -                                                                      |
| [`ToggleDataSaverModeTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ToggleDataSaverModeTool)               | -                                                                      |
| [`ToggleDataTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ToggleDataTool)                                 | -                                                                      |
| [`ToggleRoamingTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ToggleRoamingTool)                           | -                                                                      |
| [`ToggleWifiCallingTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ToggleWifiCallingTool)                   | -                                                                      |
| [`ToggleWifiTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-ToggleWifiTool)                                 | -                                                                      |
| [`_Tau2InvokeMixin`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2InvokeMixin)                             | Provides sync `invoke(**kwargs)` + async `_execute(**kwargs)` routing. |
| [`_Tau2TelecomReadTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)                     | Base for telecom user-side read-only tools.                            |
| [`_Tau2TelecomWriteTool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)                   | Base for telecom user-side write tools.                                |

### Functions

| Name                                                                                                                      | Description                                                                     |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [`_can_send_mms`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_can_send_mms)                               | Mirror of upstream's `TelecomUserTools._can_send_mms`.                          |
| [`_check_status_bar`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_check_status_bar)                       | Build a human-readable status-bar indicator string.                             |
| [`_connect_vpn_tool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_connect_vpn_tool)                       | Connect VPN with default details. Returns None if already connected,            |
| [`_db_not_initialized`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_db_not_initialized)                   | -                                                                               |
| [`_disconnect_vpn_tool`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_disconnect_vpn_tool)                 | Disconnect VPN. Returns True on disconnect, False if no active VPN.             |
| [`_get_mobile_data_working`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_get_mobile_data_working)         | Mirror of upstream's `_get_mobile_data_working`.                                |
| [`_grant_app_permission`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_grant_app_permission)               | Grant `permission` to `app_name`. Returns (success, message).                   |
| [`_reboot_device`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_reboot_device)                             | Reboot: apply any pending APN reset, then re-derive network state.              |
| [`_reseat_sim_card`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_reseat_sim_card)                         | Re-insert the SIM card, then re-derive network state.                           |
| [`_reset_apn_settings`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_reset_apn_settings)                   | Defer APN reset to the next reboot — mirror of upstream's behavior.             |
| [`_set_apn_settings`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_set_apn_settings)                       | Set the device's active APN settings to the supplied dict + trigger search.     |
| [`_set_network_mode_preference`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_set_network_mode_preference) | Set preferred network mode; trigger search. Returns canonical value             |
| [`_toggle_airplane_mode`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_toggle_airplane_mode)               | Toggle airplane mode; clear wifi connection, disconnect VPN if turning ON.      |
| [`_toggle_data`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_toggle_data)                                 | Toggle `device.data_enabled`; trigger network re-derivation. Returns new state. |
| [`_toggle_data_saver_mode`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_toggle_data_saver_mode)           | -                                                                               |
| [`_toggle_roaming`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_toggle_roaming)                           | -                                                                               |
| [`_toggle_wifi`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_toggle_wifi)                                 | Toggle Wi-Fi radio; returns None when airplane mode is on (can't change).       |
| [`_toggle_wifi_calling`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_toggle_wifi_calling)                 | -                                                                               |

### Data

[`TAU2_TELECOM_USER_ACTION_TYPES`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-TAU2_TELECOM_USER_ACTION_TYPES)

[`TAU2_TELECOM_USER_TOOL_NAME_TO_CLASS`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-TAU2_TELECOM_USER_TOOL_NAME_TO_CLASS)

[`_SIGNAL_DISPLAY`](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_SIGNAL_DISPLAY)

### API

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CanSendMmsTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CanSendMmsTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckApnSettingsTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckApnSettingsTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckAppPermissionsTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckAppPermissionsTool._do_work(
    p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckAppStatusTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckAppStatusTool._do_work(
    p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckDataRestrictionStatusTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckDataRestrictionStatusTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckInstalledAppsTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckInstalledAppsTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckNetworkModePreferenceTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckNetworkModePreferenceTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckNetworkStatusTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckNetworkStatusTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckPaymentRequestTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckPaymentRequestTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckSimStatusTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckSimStatusTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckStatusBarTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckStatusBarTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckVpnStatusTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckVpnStatusTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckWifiCallingStatusTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckWifiCallingStatusTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckWifiStatusTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.CheckWifiStatusTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ConnectVpnTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ConnectVpnTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.DisconnectVpnTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.DisconnectVpnTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.GrantAppPermissionTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.GrantAppPermissionTool._do_work(
    p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.MakePaymentTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.MakePaymentTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.RebootDeviceTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.RebootDeviceTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ReseatSimCardTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ReseatSimCardTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ResetApnSettingsTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ResetApnSettingsTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.RunSpeedTestTool()
```

**Bases:** [\_Tau2TelecomReadTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomReadTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.RunSpeedTestTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.SetApnSettingsTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.SetApnSettingsTool._do_work(
    p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.SetNetworkModePreferenceTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.SetNetworkModePreferenceTool._do_work(
    p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleAirplaneModeTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleAirplaneModeTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleDataSaverModeTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleDataSaverModeTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleDataTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleDataTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleRoamingTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleRoamingTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleWifiCallingTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleWifiCallingTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleWifiTool()
```

**Bases:** [\_Tau2TelecomWriteTool](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2TelecomWriteTool)

**`DESCRIPTION`**

---

**`name`**

---

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.ToggleWifiTool._do_work(
    _p
) -> str
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._Tau2InvokeMixin()
```

Provides sync `invoke(**kwargs)` + async `_execute(**kwargs)` routing.

**`PARAMS_MODEL`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._Tau2InvokeMixin._do_work(
    p
) -> typing.Any
```

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._Tau2InvokeMixin._execute(
    kwargs = {}
) -> typing.Any
```

async

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._Tau2InvokeMixin.invoke(
    kwargs = {}
) -> typing.Any
```

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._Tau2TelecomReadTool(
    shared_state: typing.Optional[dict] = None,
    description: typing.Optional[str] = None
)
```

**Bases:** [\_Tau2InvokeMixin](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2InvokeMixin), [StandardSchemaTool](/nemo/labs-voice-agent/nemo-voice-agent/nemo_voice_agent/utils/tool_calling/base#nemo_voice_agent-utils-tool_calling-base-StandardSchemaTool)

Base for telecom user-side read-only tools.

**`DESCRIPTION`**

---

**`state`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._Tau2TelecomWriteTool(
    shared_state: typing.Optional[dict] = None,
    description: typing.Optional[str] = None
)
```

**Bases:** [\_Tau2InvokeMixin](#nemo_voice_agent-evaluation-tools-tau2_telecom_user_tools-_Tau2InvokeMixin), [WriteScenarioTool](./_write_tool_base.mdx#nemo_voice_agent-evaluation-tools-_write_tool_base-WriteScenarioTool)

Base for telecom user-side write tools.

**`DESCRIPTION`**

---

**`state`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._can_send_mms(
    db: dict
) -> bool
```

Mirror of upstream's `TelecomUserTools._can_send_mms`.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._check_status_bar(
    db: dict
) -> str
```

Build a human-readable status-bar indicator string.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._connect_vpn_tool(
    db: dict
) -> typing.Optional[bool]
```

Connect VPN with default details. Returns None if already connected,
True on connect, False if upstream considered it a no-op (matches the
upstream tristate semantics).

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._db_not_initialized() -> dict
```

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._disconnect_vpn_tool(
    db: dict
) -> bool
```

Disconnect VPN. Returns True on disconnect, False if no active VPN.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._get_mobile_data_working(
    db: dict
) -> bool
```

Mirror of upstream's `_get_mobile_data_working`.

True only when every prerequisite for mobile data is satisfied:
airplane mode off, signal not NONE, connection status not
NO\_SERVICE, roaming-allowed when abroad, data enabled, usage not
exceeded.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._grant_app_permission(
    db: dict,
    app_name: str,
    permission: str
) -> tuple[bool, str]
```

Grant `permission` to `app_name`. Returns (success, message).

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._reboot_device(
    db: dict
) -> str
```

Reboot: apply any pending APN reset, then re-derive network state.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._reseat_sim_card(
    db: dict
) -> str
```

Re-insert the SIM card, then re-derive network state.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._reset_apn_settings(
    db: dict
) -> str
```

Defer APN reset to the next reboot — mirror of upstream's behavior.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._set_apn_settings(
    db: dict,
    apn_settings: dict
) -> str
```

Set the device's active APN settings to the supplied dict + trigger search.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._set_network_mode_preference(
    db: dict,
    mode: str
) -> typing.Optional[str]
```

Set preferred network mode; trigger search. Returns canonical value
or `None` on invalid mode (upstream returns None instead of raising).

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._toggle_airplane_mode(
    db: dict
) -> bool
```

Toggle airplane mode; clear wifi connection, disconnect VPN if turning ON.

Returns the new airplane\_mode state.

Mirrors upstream's `_toggle_airplane_mode`: when turning ON, also
disconnects VPN (mode physically can't keep it alive); when turning
OFF, drops the connection status to SEARCHING so the network search
re-derives it. Wifi connection is cleared in both directions.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._toggle_data(
    db: dict
) -> bool
```

Toggle `device.data_enabled`; trigger network re-derivation. Returns new state.

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._toggle_data_saver_mode(
    db: dict
) -> bool
```

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._toggle_roaming(
    db: dict
) -> bool
```

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._toggle_wifi(
    db: dict
) -> typing.Optional[bool]
```

Toggle Wi-Fi radio; returns None when airplane mode is on (can't change).

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._toggle_wifi_calling(
    db: dict
) -> bool
```

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.TAU2_TELECOM_USER_ACTION_TYPES: List[str] = ['toggle_airplane_mode', 'toggle_data', 'toggle_roaming', 'toggle_data_saver_mod...
```

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools.TAU2_TELECOM_USER_TOOL_NAME_TO_CLASS: Dict[str, Type[StandardSchemaTool]] = {(cls.name): cls for cls in (CheckStatusBarTool, CheckNetworkStatusTool, CheckNe...
```

```python
nemo_voice_agent.evaluation.tools.tau2_telecom_user_tools._SIGNAL_DISPLAY = {SignalStrength.NONE.value: '📵 No Signal', SignalStrength.POOR.value: '📶¹ Poor...
```