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

# Tools

> What the agent can do, and what it can read: built-in actions, your own APIs, Cal.com, and knowledge bases.

The **Tools** tab holds everything the agent can *do*, then everything it can *read*. It is one
continuous panel with three parts, in this order:

1. **During the call** - every action the AI can choose to take.
2. **Before the call** - API calls that run automatically to fetch context.
3. **Knowledge Base** - the content the agent answers from.

<Warning>
  **Adding a tool does not tell the agent when to use it.** In the [agent editor
  pane](/building-agents/agent-core), say when it should use the tool, what it must collect first,
  and what to say if the action fails.
</Warning>

## During the call

Everything the agent can choose to do during a call, in one list. Vocily's own tools carry a
**Built-in** badge; the rest are ones you added.

The AI decides when to use each tool by reading its **description**, so the description is the
setting that matters most. Expand a row to edit it, and to reach any other settings that tool has.

### Built-in tools

| Tool                      | Channels        | On by default | What it does                                                                                   |
| ------------------------- | --------------- | ------------- | ---------------------------------------------------------------------------------------------- |
| **Hold Call**             | Phone, Web Talk | Yes           | Waits quietly when the caller asks for a moment. The call resumes as soon as they speak again. |
| **End Call**              | Phone, Web Talk | Yes           | Ends the call cleanly when the caller is clearly done.                                         |
| **Transfer Call**         | Phone           | No            | Hands the caller to a human.                                                                   |
| **Send WhatsApp Message** | Phone           | No            | Sends an approved WhatsApp template to the caller mid-call.                                    |

<Note>
  **If you used Vocily before:** transfer and the closing message used to live on the Runtime tab.
  They are tools now, with the same behavior.
</Note>

#### Hold Call

Set **Max hold** (up to 600 seconds) and **Check in after**. The check-in must be shorter than the
maximum; changing the maximum below it moves the check-in with it. The row summarizes the result -
*"Up to 90s on hold · check-in at 45s"*.

#### End Call

Configure the closing line the caller hears. Leave it on the platform/AI-generated default, or write
your own.

#### Transfer Call

Add one or more **Transfer Numbers**. Vocily tries them in priority order until a person is
available. Each number can be always available or limited to working hours with a start hour, end
hour, and timezone, and can be reordered or removed.

Before the first transfer number can be added, configure both caller messages - the line spoken
before connecting, and the line spoken when every number is unavailable. Callers should always know
what is happening before a handoff, and what to expect when nobody is there.

<Note>
  **A connected transfer costs more.** While a caller is speaking to your teammate, the phone
  network is running two calls at once and bills both, so the telephony line on that call is charged
  at **2×**. If nobody answers, it is charged normally. See [Voice call
  pricing](/account-workspace/voice-pricing).
</Note>

#### Send WhatsApp Message

Choose which approved templates the agent may send. The message goes to the number the caller is
calling from unless they give a different one. Only the templates you allow can be sent - if the
caller asks for something else, the agent says it cannot send that rather than picking the closest
match. See [Templates](/whatsapp/templates).

### Add a tool

Use **New tool** at the top of *During the call*:

<CardGroup cols={2}>
  <Card title="Custom API" icon="plug">
    Call your own endpoint mid-conversation. The agent decides when, based on the description and
    on your prompt referencing it.
  </Card>

  <Card title="Cal.com actions" icon="calendar">
    **Calendar Availability** - check open future meeting slots. **Book Appointment** - book a slot,
    and optionally list upcoming meetings, reschedule, or cancel.
  </Card>
</CardGroup>

Cal.com entries are greyed out until Cal.com is connected for the workspace. Connect it first in
[Integrations](/integrations/cal-com), then come back.

Each Cal.com tool is pre-filled with a name, display title, description, trigger policy, and the
short message the agent says before the action runs - all editable. Book Appointment can separately
enable rescheduling and cancellation. The runtime adds its own safeguards around collecting a
timezone, confirming by email, choosing between existing meetings, and never claiming success until
Cal.com returns success.

## Before the call

API calls that run **automatically**, before the live conversation begins, to fetch context into
variables. The AI never chooses these - they always run.

Use them to look up the caller before the agent speaks: account details, order status, entitlements.
Each row shows its method and URL; **New** opens the same builder used for custom API tools with the
phase set to *before the call*.

<CardGroup cols={1}>
  <Card title="Custom API tools: full reference" icon="webhook" href="/building-agents/api-workflows">
    Reference variables by phase, activate an on-call tool from your prompt, authenticate with a
    credential, map a response for later use, and see what happens when a call fails.
  </Card>
</CardGroup>

<Note>
  To send data to your system *after* a call ends, use **webhooks**
  ([Settings → Webhooks](/building-agents/settings#webhooks)) rather than an API tool - they are
  signed, retried, and logged.
</Note>

## Knowledge Base

Attach one or more workspace knowledge bases so the agent can retrieve the right context during a
call or chat. Knowledge bases are reusable workspace resources - the same one can be attached to
several agents.

Pick one from the selector and choose **Attach**. Attached bases are listed below with their type
and document count, and can be detached from the same list. If the workspace has none yet, create
one in **Knowledge Bases** in the sidebar first.

### Choose the right knowledge-base type

When a knowledge base is created, it has a language and an answer mode:

| Type                  | Behavior                                                                                                          | Good fit                                            |
| --------------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| **Deterministic**     | Stricter match threshold; retrieved text is injected verbatim and the agent is instructed to preserve exact facts | Prices, policies, plan names, eligibility rules     |
| **Non-deterministic** | Standard retrieval; the model may rephrase the source material                                                    | FAQs, product explanations, general support content |

The knowledge-base language can be **English** or **Multilingual**. Add source files or URLs in the
workspace knowledge-base area, wait for each document to reach **Processed**, then attach the base
to the agent.

Supported text-oriented sources include plain text, Markdown, HTML, CSV, XML, RTF, and web URLs. PDF
and JSON uploads are not supported. Sources marked **Pending**, **Processing**, or **Failed** are not
ready to use.

During a conversation, Vocily first decides whether the turn needs factual retrieval. Greetings,
backchannels, audibility checks, and call-control phrases can skip a search. An information request
is routed to the relevant attached knowledge base, and the retrieved source context is added to the
model prompt. The Chat test can show the source snippets used for a response.

<Note>
  Keep knowledge bases focused by topic or trust level and attach several to one agent, rather than
  building one large mixed base. For exact business facts prefer a small deterministic base; for
  broad explanatory content, non-deterministic retrieval is usually more natural.
</Note>

## Save and verify

Tools and knowledge-base attachments belong to the **version you are editing**, like every other
setting - save the draft, then publish and make it live when you are ready. After any change, run the
relevant path in [Test](/test/overview) and confirm the result in [Conversation
History](/conversations/history).

## What's next

* Reference a tool from the prompt in the [agent editor pane](/building-agents/agent-core#reference-tools-and-api-data).
* Configure live-call behavior and post-call analysis in [Settings](/building-agents/settings).
* Connect the agent to a channel in [Deploy](/building-agents/deploy).
