> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voxworks.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool Steps

> Tool Steps execute external integrations during your conversation — booking appointments, sending SMS messages, performing warm handoffs, and more.

## What is a Tool Step?

A Tool Step calls an external service and uses the result to guide the conversation:

1. **Execute tool** — Call the external service with configured inputs
2. **Receive result** — Get success/failure and any output data
3. **Map outputs** — Store results in variables for later use
4. **Evaluate conditions** — Navigate based on tool success or failure

***

## Tool Step Structure

| Property     | Description                        |
| ------------ | ---------------------------------- |
| `tool_id`    | Which tool to execute              |
| `script`     | "thinking" message while tool runs |
| `conditions` | Navigation based on tool result    |

***

## Input Mapping

Input mapping passes values to the tool. Values can be:

* **Static text** — Fixed values
* **Variables** — Contact and live variables from the conversation (type `/` to see available variables)

***

## Tool Results

Tools return results that can be used in conditions and subsequent steps. The assistant has access to tool outputs and can incorporate them naturally into the conversation:

```text theme={null}
Tool Step: Book calendar appointment
   Success → "Your booking is confirmed! I'll send you the meeting link."
   Failure → "That slot isn't available. Let me suggest alternatives."
```

***

## Conditions

Tool steps use boolean conditions based on success or failure:

```text theme={null}
Tool Step: Send SMS confirmation
   Condition: true (success)
   → Next: confirmation_step
   → Script: "I've sent you a text with the details."

   Condition: false (failure)
   → Next: fallback_step
   → Script: "I wasn't able to send the text. Let me give you the details verbally."
```

***

## Interrupts

Tool steps cannot be interrupted. While a tool is executing, this ensures tool operations complete reliably without being disrupted mid-execution.

Use the Script to provide a "thinking" message like "Let me check that for you..." which will happen whilst the tool executes, so it is OK to keep it brief.

***

## Best Practices

1. **Handle failures gracefully** — Always have a fallback condition
2. **Validate inputs first** — Use a [Code Step](/tools/code-step/overview) to validate data before tool calls
3. **Inform the user** — Use the script property to set expectations ("Let me check that for you...", "Let me see..." or "Ok...")
4. **Use tool outputs** — The assistant can reference tool results in responses
5. **Test integrations** — Verify tools work with your specific configuration

***

## Next Steps

* [Code Step](/tools/code-step/overview) — Add validation logic before tool calls
* [Variables](/flows/variables) — Learn about global variables
* [Steps Overview](/flows/steps) — See all step types
