Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions fern/assistants/examples/appointment-scheduling.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Use sample CSVs for customers, services, and appointments during development.

## 2. Create calendar tools

Use the Google Calendar integration for availability and booking, or your own API via a custom tool.
Use the Google Calendar integration for availability and booking, or your own API via a Function tool.

<Tabs>
<Tab title="Use Google Calendar (recommended)">
Expand All @@ -109,10 +109,10 @@ Use the Google Calendar integration for availability and booking, or your own AP
- `reschedule_appointment(appointmentId, time)`
- `cancel_appointment(appointmentId)`
</Tab>
<Tab title="Custom tools (HTTP)">
<Tab title="Function tools (HTTP)">
See: [Function tools](/tools/custom-tools)

Define function tools that call your scheduling backend. Attach CSV knowledge bases (customers/services) if using the sample data above.
Define Function tools that call your scheduling backend. Attach CSV knowledge bases (customers/services) if using the sample data above.
</Tab>
</Tabs>

Expand Down
3 changes: 1 addition & 2 deletions fern/assistants/examples/lead-qualification.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Create an outbound sales assistant that calls prospects, qualifies them using BA

## 2. Create sales tools

Configure function tools or your CRM API for:
Configure Function tools or your CRM API for:
- `lookup_lead(leadId)`
- `score_lead(budget, authority, need, timeline)`
- `update_crm(leadId, callOutcome, nextSteps)`
Expand Down Expand Up @@ -169,4 +169,3 @@ Create a phone number or trigger an outbound call. See [Phone calls](/quickstart
- **CRM integration**: Connect your CRM via [Function tools](/tools/custom-tools)
- **Calendar**: [Google Calendar](/tools/google-calendar)
- **Escalation**: Use a [Squad](/squads) to hand off to a specialized closer

16 changes: 8 additions & 8 deletions fern/calls/call-dynamic-transfers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ For a lookup that chooses among predefined branch or department phone numbers, f
Dynamic transfers with live call control use a server-controlled pattern that gives you maximum flexibility:

1. **User initiates transfer**: The user requests a transfer in natural language during the conversation
2. **Vapi triggers custom tool**: Vapi fires your custom tool to your HTTP server
2. **Vapi triggers a Function tool**: Vapi sends the Function tool request to your HTTP server
3. **Server receives control URL**: The tool payload includes `message.call.monitor.controlUrl` for live call control
4. **Execute business logic**: Your server performs any necessary operations:
- Update CRM records with call summaries
Expand All @@ -45,7 +45,7 @@ Dynamic transfers with live call control use a server-controlled pattern that gi
Available context: Your server receives the full conversation transcript, custom parameters, call metadata, and the control URL, allowing you to make informed routing decisions and execute the transfer programmatically.

<Tip>
Parameters for custom tools are fully customizable. You can name and structure them however you like to guide routing (for example `department`, `reason`, `urgency`, `customerId`, etc.).
Function tool parameters are fully customizable. Name and structure them to guide routing (for example, `department`, `reason`, `urgency`, or `customerId`).
</Tip>

Sequence diagram
Expand Down Expand Up @@ -78,14 +78,14 @@ sequenceDiagram
## Quick Implementation Guide

<Steps>
<Step title="Create a custom tool for dynamic transfers">
Create a custom tool that will receive the transfer request and provide you with the control URL to execute the transfer.
<Step title="Create a Function tool for dynamic transfers">
Create a Function tool that will receive the transfer request and provide you with the control URL to execute the transfer.

<Tabs>
<Tab title="Dashboard">
- Navigate to **Tools** in your dashboard
- Click **Create Tool**
- Select **Custom** as the tool type
- Select **Function tool** as the tool type
- Set function name: `transfer_call`
- Add a description: "Transfer the call to the appropriate department or agent"
- Define custom parameters based on your routing needs (e.g., `department`, `reason`, `urgency`, `customerId`)
Expand Down Expand Up @@ -226,7 +226,7 @@ sequenceDiagram
<Tab title="Dashboard">
- Navigate to **Assistants**
- Create a new assistant or edit an existing one
- Add your custom transfer tool to the assistant
- Add your `transfer_call` Function tool to the assistant
- Configure the system prompt to guide when transfers should occur
</Tab>
<Tab title="TypeScript (Server SDK)">
Expand Down Expand Up @@ -564,7 +564,7 @@ sequenceDiagram

## Troubleshooting

- **Tool call not received**: Verify your server URL is correctly configured in the custom tool and is publicly accessible. Check your server logs for incoming requests.
- **Tool call not received**: Verify your server URL is correctly configured in the Function tool and is publicly accessible. Check your server logs for incoming requests.
- **Transfer not executing**: Make sure that you are sending a valid destination object (type number or sip). See API reference [here](https://docs.vapi.ai/api-reference/tools/create#request.body.TransferCallTool.destinations).
- **Invalid destination format**: For phone numbers, use `"type": "number"` with E.164 format. For SIP, use `"type": "sip"` with a valid SIP URI.
- **Transfer fails silently**: Check your server logs for errors in the axios/httpx request.
Expand All @@ -573,4 +573,4 @@ sequenceDiagram

* **[Transfer Call tool](/tools/transfer-call)** - Static transfer options and transfer plans
* **[Webhooks](/server-url)** - Webhook security and event handling patterns
* **[Function tools](/tools/custom-tools)** - Build function tools for advanced routing logic
* **[Function tools](/tools/custom-tools)** - Build Function tools for advanced routing logic
2 changes: 1 addition & 1 deletion fern/calls/call-handling-with-vapi-and-twilio.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ app.listen(3000, () => {

## Note on Replacing "Connect" with Vapi Tools

Vapi offers built-in functions or custom tool calls for placing a second call or transferring, you can replace the manual `/connect` call with that Vapi functionality. The flow remains the same: user is put in a Twilio conference, the specialist is dialed, and any no-answer events are handled.
Vapi offers built-in functions or Function tool calls for placing a second call or transferring, you can replace the manual `/connect` call with that Vapi functionality. The flow remains the same: user is put in a Twilio conference, the specialist is dialed, and any no-answer events are handled.

## Notes & Limitations

Expand Down
2 changes: 1 addition & 1 deletion fern/cli/mcp-integration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ The Vapi MCP server provides these tools to your IDE:
<Card title="Implementation Guides" icon="map">
Step-by-step guides for complex features

**Example:** "Custom tool implementation guide"
**Example:** "Function tool implementation guide"
</Card>
</CardGroup>

Expand Down
2 changes: 1 addition & 1 deletion fern/cli/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Everything you can do in the dashboard, now in your terminal:
- **Phone numbers**: Purchase, configure, and manage phone numbers
- **Calls**: Make outbound calls and view call history
- **Campaigns**: Create and manage AI phone campaigns at scale
- **Tools**: Configure custom functions and integrations
- **Tools**: Configure Function tools and integrations
- **Webhooks**: Set up and test event delivery
- **Logs**: View system logs, call logs, and debug issues

Expand Down
12 changes: 6 additions & 6 deletions fern/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -873,20 +873,14 @@ navigation:
path: providers/voice/inworld.mdx
- page: LMNT
path: providers/voice/imnt.mdx
- page: Microsoft
path: providers/voice/microsoft.mdx
- page: MiniMax
path: providers/voice/minimax.mdx
- page: Neuphonic
path: providers/voice/neuphonic.mdx
- page: OpenAI
path: providers/voice/openai.mdx
- page: PlayHT
path: providers/voice/playht.mdx
- page: RimeAI
path: providers/voice/rimeai.mdx
- page: Sesame
path: providers/voice/sesame.mdx
- page: Smallest AI
path: providers/voice/smallest-ai.mdx
- page: WellSaid
Expand Down Expand Up @@ -1109,6 +1103,12 @@ navigation:
- tab: changelog

redirects:
- source: /providers/voice/microsoft
destination: /providers/voice/overview
- source: /providers/voice/playht
destination: /providers/voice/overview
- source: /providers/voice/sesame
destination: /providers/voice/overview
- source: /providers/gpt-live
destination: /gpt-live/overview
- source: /gpt-live/quickstart
Expand Down
4 changes: 2 additions & 2 deletions fern/gpt-live/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Call endCall when the caller asks to finish.
```
</Step>
<Step title="Add the tools">
Create a function tool named `lookupAvailability` with the description “Check available appointment slots. Does not reserve or book a slot.” Add these required arguments:
Create a Function tool named `lookupAvailability` with the description “Check available appointment slots. Does not reserve or book a slot.” Add these required arguments:

| Argument | Type | Description |
| --- | --- | --- |
Expand All @@ -62,7 +62,7 @@ Create a function tool named `lookupAvailability` with the description “Check

Set the tool's Server URL to your HTTPS handler.

Attach the function tool and an `endCall` tool to the assistant. You can also create a saved tool through [Create Tool](/api-reference/tools/create) and select it in the dashboard.
Attach the Function tool and an `endCall` tool to the assistant. You can also create a saved tool through [Create Tool](/api-reference/tools/create) and select it in the dashboard.
</Step>
<Step title="Set the greeting and publish">
Set the first message to “Hello. I can check appointment availability. What date and time zone should I check?” and configure the assistant to speak first.
Expand Down
4 changes: 2 additions & 2 deletions fern/issue-reporting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,10 @@ For problems with the Vapi dashboard interface, configuration screens, or any vi
URL: https://dashboard.vapi.ai/assistants/create
Browser: Chrome 120.0.6099.109
OS: macOS 14.1
Issue: Save button becomes unresponsive after adding custom tools
Issue: Save button becomes unresponsive after adding Function tools
Steps to reproduce:
1. Navigate to assistant creation page
2. Add 3+ custom tools
2. Add 3+ Function tools
3. Click Save - button grays out but doesn't save
Console errors: TypeError: Cannot read property 'id' of undefined
Screen recording: [link to recording]
Expand Down
2 changes: 1 addition & 1 deletion fern/observability/evals-advanced.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1045,7 +1045,7 @@ Use a non-empty-response check only to diagnose basic setup. Then restore the ch
{" "}

<Card title="Tools documentation" icon="wrench" href="/tools/custom-tools">
Build custom tools and test their behavior
Build Function tools and test their behavior
</Card>

<Card
Expand Down
2 changes: 1 addition & 1 deletion fern/observability/evals-quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1362,7 +1362,7 @@ for guidance on turning real failures into regression coverage.
{" "}

<Card title="Tools documentation" icon="wrench" href="/tools/custom-tools">
Build custom tools and validate their behavior
Build Function tools and validate their behavior
</Card>

<Card
Expand Down
2 changes: 1 addition & 1 deletion fern/observability/simulations-advanced.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ During a simulation, the [**assistant**](/assistants) or [**squad**](/squads) un

On the review step, open **Tool mocks & webhooks**. Under **Tool mocks**, select **Add**, then configure each mock with three fields:

- **Tool**: Select one of the [**tools**](/tools) configured on the assistant or squad. Only its configured tools, including [**function tools**](/tools/custom-tools), can be mocked.
- **Tool**: Select one of the [**tools**](/tools) configured on the assistant or squad. Only its configured tools, including [**Function tools**](/tools/custom-tools), can be mocked.
- **Mock result**: Enter the string returned in place of the tool's live output.
- **Enabled**: Toggle the mock on or off. A disabled mock is ignored, and the tool runs live.

Expand Down
41 changes: 0 additions & 41 deletions fern/providers/voice/microsoft.mdx

This file was deleted.

3 changes: 0 additions & 3 deletions fern/providers/voice/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,10 @@ The provider string is the exact value you pass in `voice.provider`.
| [Hume](/providers/voice/hume#text-to-speech) | `hume` |
| [Inworld](/providers/voice/inworld#text-to-speech) | `inworld` |
| [LMNT](/providers/voice/imnt#text-to-speech) | `lmnt` |
| [Microsoft](/providers/voice/microsoft#text-to-speech) | `microsoft` |
| [MiniMax](/providers/voice/minimax#text-to-speech) | `minimax` |
| [Neuphonic](/providers/voice/neuphonic#text-to-speech) | `neuphonic` |
| [OpenAI](/providers/voice/openai#text-to-speech) | `openai` |
| [PlayHT](/providers/voice/playht#text-to-speech) | `playht` |
| [Rime AI](/providers/voice/rimeai#text-to-speech) | `rime-ai` |
| [Sesame](/providers/voice/sesame#text-to-speech) | `sesame` |
| [Smallest AI](/providers/voice/smallest-ai#text-to-speech) | `smallest-ai` |
| [WellSaid](/providers/voice/wellsaid#text-to-speech) | `wellsaid` |
| [xAI](/providers/voice/xai#text-to-speech) | `xai` |
Expand Down
Loading
Loading