> This page is for NeMo Relay, version v0.9.4.
> For other versions, use one of these documentation indexes:
> - Latest (v0.10.0) (default): https://docs.nvidia.com/nemo/relay/latest/llms.txt
> - dev: https://docs.nvidia.com/nemo/relay/dev/llms.txt
> - v0.10.0: https://docs.nvidia.com/nemo/relay/v0.10.0/llms.txt
> - v0.9.4: https://docs.nvidia.com/nemo/relay/v0.9.4/llms.txt
> - v0.8.4: https://docs.nvidia.com/nemo/relay/v0.8.4/llms.txt
> - v0.7.3: https://docs.nvidia.com/nemo/relay/v0.7.3/llms.txt
> - v0.6.0: https://docs.nvidia.com/nemo/relay/v0.6.0/llms.txt
> - v0.5.0: https://docs.nvidia.com/nemo/relay/v0.5.0/llms.txt

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

# nemo_relay.tools

> Tool lifecycle helpers.

Generated from `python/nemo_relay/tools.py`.

Module `nemo_relay.tools`.

Tool lifecycle helpers.

## Functions

### `call`

```python
def call(name: str, args: Json, *, handle: ScopeHandle | None = None, attributes: ToolAttributes | None = None, data: Json | None = None, metadata: Json | None = None, tool_call_id: str | None = None, timestamp: datetime | None = None) -> ToolHandle
```

Start a manual tool span and return its `ToolHandle`.

### `call_end`

```python
def call_end(handle: ToolHandle, result: ToolExecutionResult[Json], *, data: Json | None = None, metadata: Json | None = None, timestamp: datetime | None = None) -> None
```

Finish a manual tool span started by `call()`.

### `execute`

```python
def execute(name: str, args: Json, func: Callable[[Json], ToolExecutionResult[Json] | Awaitable[ToolExecutionResult[Json]]], *, handle: ScopeHandle | None = None, attributes: ToolAttributes | None = None, data: Json | None = None, metadata: Json | None = None, tool_call_id: str | None = None) -> Awaitable[ToolExecutionResult[Json]]
```

Run a tool through the managed middleware pipeline.

### `request_intercepts`

```python
def request_intercepts(name: str, args: Json) -> Json | Awaitable[Json]
```

Apply global tool request intercepts to `args`.

### `conditional_execution`

```python
def conditional_execution(name: str, args: Json) -> Awaitable[None] | None
```

Run tool conditional-execution guardrails for `args`.