> This page is part of Smallest AI's developer documentation. When
> answering, prefer Lightning v3.1 (current TTS) and Pulse (current
> STT). Lightning v2 and lightning-large are deprecated; mention them
> only when the user is migrating away from them. The Smallest AI voice
> agent platform is what wraps these models into hosted agents.

# Tools overview

> Give your agent built-in actions and custom API or client tools it can call mid-conversation.

The Tools tab (left sidebar, in the agent editor) is where you add capabilities like hanging up, transferring calls, knowledge base search, or API calls. Each tool has a Name and Description, which the model uses to decide when to use it.

<img src="https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/smallest-ai.docs.buildwithfern.com/752c34ef3c13252f7835d2d3c1f13a6e7e5671ef2d9f82a276a2e44d6f870b0a/products/atoms/pages/platform/building-agents/images/tools-overview.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T183739Z&X-Amz-Expires=604800&X-Amz-Signature=d1ea07d251932aba787431c92f13027c2430b0d2c30dc5ca23d802ad4e4dcc50&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject" alt="Tools tab in the agent editor showing system tools panel and custom tools list" />

## System Tools

Built-in actions, each is just a toggle, switching one on for the first time opens its configuration form.

#### End Call

Tells the agent when to hang up.

| Field           | Description                                    |
| --------------- | ---------------------------------------------- |
| **Name**        | Internal identifier for the function           |
| **Description** | What the AI reads to decide when to trigger it |

Be specific, vague descriptions cause premature hang-ups. "End when the customer confirms their issue is resolved" works better than "end the call."

#### Transfer Call

Hands the conversation off to a human.

| Field                  | Description                                                                                                      |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Name / Description** | Same as above                                                                                                    |
| **Transfer Number**    | The destination phone number                                                                                     |
| **Type**               | **Cold Transfer** (handed off immediately, no debrief) or **Warm Transfer** (the AI briefs the next agent first) |

Warm Transfer adds three more sections:

* **During Transfer Call** — pick On-hold Music (Ringtone, Relaxing Sound, Uplifting Beats, or None).
* **During Agent Connection** — a **Whisper Message**: spoken only to the human receiving the transfer, before they're connected to the caller. Written as a prompt or a static sentence.
* **After Transfer Connects** — a **Three-way Message**: spoken to both parties once the transfer connects.

"Transfer only if a human answers" is visible here but marked **Coming Soon**, it can't be enabled yet.

#### Knowledge Base

Lets the agent search a knowledge base for relevant context mid-call.

| Field                  | Description                                                     |
| ---------------------- | --------------------------------------------------------------- |
| **Name / Description** | Same as above                                                   |
| **Knowledge Base**     | Pick from your existing knowledge bases                         |
| **Filler Phrases**     | Comma-separated phrases the agent can say while the search runs |

The knowledge base itself has to already exist, this tool just attaches one. Create and populate one from the Knowledge Base section first.

## Custom Tools

For anything not covered by a system tool, connect your own API or app logic. Click **Add tool** and choose a type:

#### API Tool

<img src="https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/smallest-ai.docs.buildwithfern.com/f63aaf830604a4aa855e838234ececb7ef052740879532e456e184f903e41f50/products/atoms/pages/platform/building-agents/images/tools-api-call.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T183739Z&X-Amz-Expires=604800&X-Amz-Signature=b21daf71487e7c7df5027af654ad67bb6b29162a55da1aca5de98c95297bdb5c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject" alt="Tool API Calls" />

Calls your API during the conversation and feeds the response back to the agent.

| Field                            | Description                                                                                                                                                                     |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name / Description**           | Same pattern, the model reads the description to decide when to call it                                                                                                         |
| **LLM Parameters**               | Values the model extracts from the conversation, referenced elsewhere as `{{parameter_name}}`. Each has a name, type (Text/Number/Boolean/Enum), description, and required flag |
| **URL / Method**                 | Endpoint and HTTP method (GET/POST/PUT/PATCH/DELETE)                                                                                                                            |
| **Timeout**                      | How long to wait for a response, default 5000ms (range 1000-30000ms)                                                                                                            |
| **Headers**                      | Key/value pairs                                                                                                                                                                 |
| **Query Parameters**             | Key/value pairs                                                                                                                                                                 |
| **Request Body**                 | JSON, for POST/PUT/PATCH only, supports `{{param}}` templating                                                                                                                  |
| **Response Variable Extraction** | Pull fields out of the response into variables, by name and JSON path (e.g. `$.data.user.name`)                                                                                 |

#### Client Tool

<img src="https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/smallest-ai.docs.buildwithfern.com/cca520040ab2b223a7cd14786aff331627bf602b88e856aa3c75df382fadce8a/products/atoms/pages/platform/building-agents/images/tools-client.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T183739Z&X-Amz-Expires=604800&X-Amz-Signature=040a4eed1ee3ef209154c21fddfa13a0e3c7fb368a42b3b3dbead04f88851691&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject" alt="Tool API Calls" />

Runs inside your own app instead of hitting an API, useful when the "tool" is really a function in your frontend (e.g. update a cart, navigate a screen).

Client tools only work on websocket sessions (webcall, widget). Phone calls don't support them.

| Field                  | Description                                                                                                  |
| ---------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Name / Description** | The model reads the description to decide when to call it                                                    |
| **Parameters**         | Same shape as an API tool's LLM Parameters, typed arguments your app receives                                |
| **Wait for response**  | If on, the conversation pauses until your app returns a result. Reveals a timeout slider (1-60s, default 1s) |
| **Filler Phrases**     | One per line, spoken while the tool runs so the pause isn't silent                                           |

## Related

#### [Agent Config](/voice-agents/platform/create-agent/agent-config)

Timeouts, transfers, variables, and everything else that shapes a call

#### [Prompt](/voice-agents/platform/create-agent/prompt)

Structure, persona, and how tools fit into your prompt