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

## Module Contents

### Classes

| Name                                                                                              | Description                         |
| ------------------------------------------------------------------------------------------------- | ----------------------------------- |
| [`EndConversationTool`](#nemo_voice_agent-evaluation-tools-basic_tools-EndConversationTool)       | End the conversation with the user. |
| [`GetCityWeatherTool`](#nemo_voice_agent-evaluation-tools-basic_tools-GetCityWeatherTool)         | Get the weather of a city.          |
| [`PlaceOrderTool`](#nemo_voice_agent-evaluation-tools-basic_tools-PlaceOrderTool)                 | Place order tool.                   |
| [`ReadFileTool`](#nemo_voice_agent-evaluation-tools-basic_tools-ReadFileTool)                     | Read a file.                        |
| [`SaveQuestionAnswerTool`](#nemo_voice_agent-evaluation-tools-basic_tools-SaveQuestionAnswerTool) | Send an answer to the user.         |

### API

```python
class nemo_voice_agent.evaluation.tools.basic_tools.EndConversationTool(
    rtvi: typing.Optional[pipecat.processors.frameworks.rtvi.RTVIProcessor] = None,
    description: typing.Optional[str] = None
)
```

**Bases:** [SendExitMessageTool](/nemo/labs-voice-agent/nemo-voice-agent/nemo_voice_agent/evaluation/tools/rtvi_control#nemo_voice_agent-evaluation-tools-rtvi_control-SendExitMessageTool)

End the conversation with the user.

```python
class nemo_voice_agent.evaluation.tools.basic_tools.GetCityWeatherTool(
    description: typing.Optional[str] = None
)
```

**Bases:** [StandardSchemaTool](/nemo/labs-voice-agent/nemo-voice-agent/nemo_voice_agent/utils/tool_calling/base#nemo_voice_agent-utils-tool_calling-base-StandardSchemaTool)

Get the weather of a city.

**`DESCRIPTION`**

---

**`properties`**

Return the properties for the tool.

---

**`required_properties`**

Return the required properties for the tool.

---

```python
nemo_voice_agent.evaluation.tools.basic_tools.GetCityWeatherTool._execute(
    city_name: typing.Optional[str] = None
) -> typing.Dict[str, typing.Any]
```

async

Get the weather of a city and return it.

```python
class nemo_voice_agent.evaluation.tools.basic_tools.PlaceOrderTool(
    rtvi: typing.Optional[pipecat.processors.frameworks.rtvi.RTVIProcessor] = None,
    auto_validate: bool = False,
    valid_item_names: typing.List[str] = None
)
```

**Bases:** [SendScenarioSummaryTool](/nemo/labs-voice-agent/nemo-voice-agent/nemo_voice_agent/evaluation/tools/rtvi_control#nemo_voice_agent-evaluation-tools-rtvi_control-SendScenarioSummaryTool)

Place order tool.

**`properties`**

---

**`required_item_keys`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.basic_tools.PlaceOrderTool._execute(
    items: typing.Optional[typing.List[typing.Dict[str, typing.Any]]] = None,
    customer_name: typing.Optional[str] = None,
    customer_phone: typing.Optional[str] = None,
    total_price: typing.Optional[float] = None
) -> typing.Dict[str, typing.Any]
```

async

Validate the order, emit the scenario summary, and return the placed-order result.

```python
nemo_voice_agent.evaluation.tools.basic_tools.PlaceOrderTool._validate_item(
    item: typing.Dict[str, typing.Any]
) -> None
```

Validate an item in the order.

**Parameters:**

**`item`**

The item to be validated.

---

```python
class nemo_voice_agent.evaluation.tools.basic_tools.ReadFileTool()
```

**Bases:** [StandardSchemaTool](/nemo/labs-voice-agent/nemo-voice-agent/nemo_voice_agent/utils/tool_calling/base#nemo_voice_agent-utils-tool_calling-base-StandardSchemaTool)

Read a file.

**`DESCRIPTION`**

---

**`properties`**

Return the properties for the tool.

---

**`required_properties`**

Return the required properties for the tool.

---

```python
nemo_voice_agent.evaluation.tools.basic_tools.ReadFileTool._execute(
    file_path: typing.Optional[str] = None
) -> typing.Dict[str, typing.Any]
```

async

Read a file from the file system and return its content.

```python
class nemo_voice_agent.evaluation.tools.basic_tools.SaveQuestionAnswerTool(
    rtvi: typing.Optional[pipecat.processors.frameworks.rtvi.RTVIProcessor] = None,
    description: typing.Optional[str] = None
)
```

**Bases:** [SendScenarioSummaryTool](/nemo/labs-voice-agent/nemo-voice-agent/nemo_voice_agent/evaluation/tools/rtvi_control#nemo_voice_agent-evaluation-tools-rtvi_control-SendScenarioSummaryTool)

Send an answer to the user.

**`properties`**

---

**`required_properties`**

---

```python
nemo_voice_agent.evaluation.tools.basic_tools.SaveQuestionAnswerTool._execute(
    question: typing.Optional[str] = None,
    answer: typing.Optional[str] = None
) -> typing.Dict[str, typing.Any]
```

async

Send the question/answer pair as a scenario summary and return the ack.