From 527249280851cc4bee4121a9e7e85990479b35aa Mon Sep 17 00:00:00 2001 From: Stephen Smith Date: Fri, 25 Sep 2026 10:05:18 -0700 Subject: [PATCH] Updated the naming of the function tool. --- .../transient-vs-permanent-configurations.mdx | 4 +- .../examples/appointment-scheduling.mdx | 6 +- fern/assistants/examples/inbound-support.mdx | 2 +- .../examples/lead-qualification.mdx | 3 +- fern/calls/call-dynamic-transfers.mdx | 16 +- .../call-handling-with-vapi-and-twilio.mdx | 2 +- fern/cli/mcp-integration.mdx | 2 +- fern/cli/overview.mdx | 4 +- fern/docs.yml | 12 +- fern/gpt-live/configuration.mdx | 8 +- fern/gpt-live/limitations.mdx | 4 +- fern/issue-reporting.mdx | 4 +- fern/observability/evals-advanced.mdx | 2 +- fern/observability/evals-quickstart.mdx | 2 +- fern/observability/simulations-advanced.mdx | 2 +- fern/providers/voice/microsoft.mdx | 41 ----- fern/providers/voice/overview.mdx | 3 - fern/providers/voice/playht.mdx | 141 ------------------ fern/providers/voice/sesame.mdx | 54 ------- fern/quickstart/web.mdx | 2 +- fern/server-url/server-authentication.mdx | 2 +- fern/server-url/setting-server-urls.mdx | 20 +-- .../clinic-triage-scheduling-handoff-tool.mdx | 2 +- .../examples/ecommerce-order-management.mdx | 3 +- fern/static/workflow-migration-guide.md | 6 +- fern/tools/api-request-vs-function.mdx | 2 +- fern/tools/arguments-encryption.mdx | 4 +- fern/tools/client-side-websdk.mdx | 6 +- fern/tools/custom-tools-troubleshooting.mdx | 4 +- fern/tools/custom-tools.mdx | 20 +-- fern/tools/mcp.mdx | 4 +- fern/workflows/legacy-migration.mdx | 2 +- 32 files changed, 75 insertions(+), 314 deletions(-) delete mode 100644 fern/providers/voice/microsoft.mdx delete mode 100644 fern/providers/voice/playht.mdx delete mode 100644 fern/providers/voice/sesame.mdx diff --git a/fern/assistants/concepts/transient-vs-permanent-configurations.mdx b/fern/assistants/concepts/transient-vs-permanent-configurations.mdx index 89ae902bf..ba46fc57d 100644 --- a/fern/assistants/concepts/transient-vs-permanent-configurations.mdx +++ b/fern/assistants/concepts/transient-vs-permanent-configurations.mdx @@ -194,10 +194,10 @@ curl -X POST "https://api.vapi.ai/call" \ ### Transient tools -Create custom tools for specific integrations or workflows: +Create Function tools for specific integrations or workflows: -```json title="Customer-specific function tool" +```json title="Customer-specific Function tool" { "tools": [ { diff --git a/fern/assistants/examples/appointment-scheduling.mdx b/fern/assistants/examples/appointment-scheduling.mdx index 21560719a..612f21c1f 100644 --- a/fern/assistants/examples/appointment-scheduling.mdx +++ b/fern/assistants/examples/appointment-scheduling.mdx @@ -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. @@ -109,10 +109,10 @@ Use the Google Calendar integration for availability and booking, or your own AP - `reschedule_appointment(appointmentId, time)` - `cancel_appointment(appointmentId)` - + 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. diff --git a/fern/assistants/examples/inbound-support.mdx b/fern/assistants/examples/inbound-support.mdx index fd97222a1..f772518bf 100644 --- a/fern/assistants/examples/inbound-support.mdx +++ b/fern/assistants/examples/inbound-support.mdx @@ -7,7 +7,7 @@ description: Build a voice AI banking support agent with tools for account looku ## Overview -Build a banking support agent with function tools and CSV knowledge bases. The agent handles account verification, balance inquiries, and transaction history via phone calls. +Build a banking support agent with Function tools and CSV knowledge bases. The agent handles account verification, balance inquiries, and transaction history via phone calls. **Agent Capabilities:** * Account lookup and verification via phone number diff --git a/fern/assistants/examples/lead-qualification.mdx b/fern/assistants/examples/lead-qualification.mdx index 42f45330c..27b6dffc6 100644 --- a/fern/assistants/examples/lead-qualification.mdx +++ b/fern/assistants/examples/lead-qualification.mdx @@ -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)` @@ -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 - diff --git a/fern/calls/call-dynamic-transfers.mdx b/fern/calls/call-dynamic-transfers.mdx index 7024bc51a..c68737929 100644 --- a/fern/calls/call-dynamic-transfers.mdx +++ b/fern/calls/call-dynamic-transfers.mdx @@ -28,7 +28,7 @@ Dynamic call transfers enable intelligent routing by determining transfer destin 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 @@ -41,7 +41,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. -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`). Sequence diagram @@ -74,14 +74,14 @@ sequenceDiagram ## Quick Implementation Guide - - Create a custom tool that will receive the transfer request and provide you with the control URL to execute the transfer. + + Create a Function tool that will receive the transfer request and provide you with the control URL to execute the transfer. - 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`) @@ -222,7 +222,7 @@ sequenceDiagram - 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 @@ -560,7 +560,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. @@ -569,4 +569,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 diff --git a/fern/calls/call-handling-with-vapi-and-twilio.mdx b/fern/calls/call-handling-with-vapi-and-twilio.mdx index eb48f40a9..420248ba5 100644 --- a/fern/calls/call-handling-with-vapi-and-twilio.mdx +++ b/fern/calls/call-handling-with-vapi-and-twilio.mdx @@ -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 diff --git a/fern/cli/mcp-integration.mdx b/fern/cli/mcp-integration.mdx index 7d767647f..bb0ac74f5 100644 --- a/fern/cli/mcp-integration.mdx +++ b/fern/cli/mcp-integration.mdx @@ -287,7 +287,7 @@ The Vapi MCP server provides these tools to your IDE: Step-by-step guides for complex features - **Example:** "Custom tool implementation guide" + **Example:** "Function tool implementation guide" diff --git a/fern/cli/overview.mdx b/fern/cli/overview.mdx index f5dd16929..7919b0913 100644 --- a/fern/cli/overview.mdx +++ b/fern/cli/overview.mdx @@ -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 @@ -250,4 +250,4 @@ Now that you have the Vapi CLI installed: **Resources:** - [GitHub Repository](https://github.com/VapiAI/cli) - [Report Issues](https://github.com/VapiAI/cli/issues) -- [Discord Community](https://discord.gg/v5Ee6FhAZt) \ No newline at end of file +- [Discord Community](https://discord.gg/v5Ee6FhAZt) diff --git a/fern/docs.yml b/fern/docs.yml index 3ac5d83c4..1d7fcaa00 100644 --- a/fern/docs.yml +++ b/fern/docs.yml @@ -844,20 +844,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 @@ -1080,6 +1074,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 diff --git a/fern/gpt-live/configuration.mdx b/fern/gpt-live/configuration.mdx index 71e72f90e..c3ccec934 100644 --- a/fern/gpt-live/configuration.mdx +++ b/fern/gpt-live/configuration.mdx @@ -53,7 +53,7 @@ Call endCall when the caller asks to finish. ``` -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 | | --- | --- | --- | @@ -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. 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. @@ -287,11 +287,11 @@ Replace the sample result with your service's data. If the lookup fails, return Supported tool types are `function`, `apiRequest`, `endCall`, `dtmf`, and `transferCall`. Give tools unique resolved function names. Save reusable tools and attach them through `model.toolIds`, or include definitions in `model.tools`. -Use function or API request tools to connect external data sources. For phone actions, check [transfer and keypad support](/gpt-live/limitations#transfers-and-keypad-input). +Use Function tools or API Request tools to connect external data sources. For phone actions, check [transfer and keypad support](/gpt-live/limitations#transfers-and-keypad-input). ### Slow and asynchronous requests -A synchronous function waits for your handler's result. Set `async: true` on a function tool to let the conversation continue while that request completes. Return the final result through the original request, using the matching `toolCallId`. +A synchronous function waits for your handler's result. Set `async: true` on a Function tool to let the conversation continue while that request completes. Return the final result through the original request, using the matching `toolCallId`. If your handler returns “queued” before the work finishes, add a status lookup tool. Tell the reasoner when to check it. A later callback doesn't automatically update the conversation. diff --git a/fern/gpt-live/limitations.mdx b/fern/gpt-live/limitations.mdx index c9b77f0fd..29cfaa7bd 100644 --- a/fern/gpt-live/limitations.mdx +++ b/fern/gpt-live/limitations.mdx @@ -28,7 +28,7 @@ See [Connect a call](/gpt-live/configuration#connect-a-call) for working connect ## Transfers and keypad input -Function tools, API request tools, and `endCall` are supported. The other supported tool types, `transferCall` and `dtmf`, depend on the call connection: +Function tools, API Request tools, and `endCall` are supported. The other supported tool types, `transferCall` and `dtmf`, depend on the call connection: | Feature | Support | | --- | --- | @@ -42,7 +42,7 @@ Function tools, API request tools, and `endCall` are supported. The other suppor | SIP INFO DTMF | Unsupported | | Incoming keypad collection | Unsupported. Leave `keypadInputPlan.enabled` disabled | -Other tool types are unsupported. Expose external lookups through a function or API request tool. Carrier acceptance of a transfer doesn't establish that the destination answered. +Other tool types are unsupported. Expose external lookups through a Function tool or API Request tool. Carrier acceptance of a transfer doesn't establish that the destination answered. ## Can I use an existing squad? diff --git a/fern/issue-reporting.mdx b/fern/issue-reporting.mdx index 8ee6be94f..1d4cc16d7 100644 --- a/fern/issue-reporting.mdx +++ b/fern/issue-reporting.mdx @@ -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] diff --git a/fern/observability/evals-advanced.mdx b/fern/observability/evals-advanced.mdx index 85884f860..87b9c84f7 100644 --- a/fern/observability/evals-advanced.mdx +++ b/fern/observability/evals-advanced.mdx @@ -1045,7 +1045,7 @@ Use a non-empty-response check only to diagnose basic setup. Then restore the ch {" "} - Build custom tools and test their behavior + Build Function tools and test their behavior - Build custom tools and validate their behavior + Build Function tools and validate their behavior - - Compare every text-to-speech provider Vapi supports. - - diff --git a/fern/providers/voice/overview.mdx b/fern/providers/voice/overview.mdx index f4f39d1f0..0d4ea7c5b 100644 --- a/fern/providers/voice/overview.mdx +++ b/fern/providers/voice/overview.mdx @@ -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` | diff --git a/fern/providers/voice/playht.mdx b/fern/providers/voice/playht.mdx deleted file mode 100644 index 6f042f41a..000000000 --- a/fern/providers/voice/playht.mdx +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: PlayHT -subtitle: Use PlayHT text-to-speech voices with your Vapi voice agent -description: Configure a PlayHT voice for a Vapi assistant and find its voice ID in the Vapi Voice Library. -slug: providers/voice/playht ---- - -{/* Legacy marketing copy retained temporarily during provider-page standardization. - -**What is PlayHT?** - -In the dynamic world of artificial intelligence, PlayHT emerges as a leading provider of voice AI solutions. Specializing in text-to-speech (TTS) and voice cloning technologies, PlayHT delivers highly realistic and versatile AI-generated voices that cater to a wide array of applications. From enhancing marketing videos to making content more accessible, PlayHT’s innovative tools empower users to create engaging and professional-grade audio content effortlessly. - -**The Evolution of AI Voice Technology:** - -AI voice technology has significantly evolved over the past decade. Initially limited to robotic and monotone outputs, advancements in machine learning and neural networks have paved the way for natural and expressive voice synthesis. PlayHT has harnessed these advancements to offer superior AI voices that are nearly indistinguishable from human speech, setting a new standard in the industry. - -**Overview of PlayHT’s Offerings:** - -PlayHT provides a robust suite of voice AI tools designed to meet diverse needs: - -**Text to Speech:** - -- PlayHT’s TTS technology converts written text into highly realistic speech, making it ideal for creating voiceovers, audiobooks, and other spoken content. This technology supports over 142 languages and accents, allowing users to generate audio content that is not only clear and engaging but also linguistically diverse. - -**Voice Cloning:** - -- PlayHT’s voice cloning feature enables users to create digital replicas of voices with high accuracy. This is particularly useful for preserving voices, personalizing digital assistants, and generating unique character voices for media and entertainment. The cloned voices maintain the nuances and emotional expressiveness of the original, ensuring a lifelike audio experience. - -**Voice Generation API:** - -- PlayHT offers a Voice Generation API that allows developers to integrate AI voice capabilities into their applications. This API supports real-time voice synthesis and cloning, providing a flexible and powerful solution for various interactive applications, including chatbots, virtual assistants, and gaming. - -**Use Cases for PlayHT:** - -- The applications of PlayHT’s technology are extensive and impactful: - -**Marketing:** - -- In the marketing sector, PlayHT’s realistic AI voices enhance the quality of promotional videos, explainer videos, and advertisements. Brands can create consistent and professional voiceovers that captivate audiences and convey messages effectively. - -**E-Learning:** - -- For educational content, PlayHT provides voices capable of pronouncing complex terminologies and acronyms, making e-learning materials more engaging and easier to understand. This helps in creating comprehensive and interactive training modules. - -**Accessibility:** - -- PlayHT’s TTS technology is a boon for accessibility, converting text into speech to assist individuals with visual impairments or reading difficulties. This promotes inclusivity and ensures that information is accessible to all. - -**Gaming:** - -- In the gaming industry, PlayHT’s voice cloning and TTS capabilities bring characters to life, enhancing the overall gaming experience. Developers can quickly generate high-quality voiceovers for dialogues, narration, and character interactions. - -**Impact on Content Creation:** - -- PlayHT is revolutionizing content creation by offering tools that are both powerful and user-friendly. By enabling creators to produce high-quality audio content quickly and efficiently, PlayHT reduces the time and costs associated with traditional recording methods. This democratizes access to professional-grade audio production, fostering innovation and creativity across various domains. - -**Innovation and Research:** - -Committed to pushing the boundaries of voice AI, PlayHT invests in continuous research and development. Their team of experts focuses on enhancing the quality, expressiveness, and versatility of AI-generated voices, exploring new applications, and refining existing technologies. - -**AI Safety and Ethics:** - -PlayHT prioritizes the ethical use of AI technology. They have implemented stringent safeguards to prevent misuse and are actively engaged in discussions about the responsible development and deployment of AI. Ensuring the privacy and security of users’ data is a core aspect of their operations. - -**Integrations and Compatibility:** - -PlayHT’s Voice Generation API enables seamless integration with various platforms and applications. This flexibility ensures that users can incorporate PlayHT’s voice AI capabilities into their existing systems without any hassle, streamlining workflows and enhancing functionality. - -*/} - -PlayHT provides text-to-speech and voice-cloning options that you can use as a Vapi assistant's voice. - -You can use PlayHT through Vapi's default integration, or use your own PlayHT account by connecting it in [Integrations](/providers/integrations). - -## Text-to-speech - -Set `voice.provider` to `playht` and `voice.voiceId` to a voice. PlayHT offers many voices, you can browse and copy a voice's ID from the [Voice Library](/providers/voice/overview). - -```bash -curl -X PATCH "https://api.vapi.ai/assistant/ASSISTANT_ID" \ - -H "Authorization: Bearer $VAPI_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "voice": { "provider": "playht", "voiceId": "VOICE_ID" } - }' -``` - -For additional API configuration options, review the [`PlayHTVoice` fields](/api-reference/assistants/create#request.body.voice.PlayHTVoice) in the Create Assistant API reference. - -### Supported languages - -The following language values are currently accepted by Vapi for this provider. - -| Language | Language value | -| --- | --- | -| afrikaans | `afrikaans` | -| albanian | `albanian` | -| amharic | `amharic` | -| arabic | `arabic` | -| bengali | `bengali` | -| bulgarian | `bulgarian` | -| catalan | `catalan` | -| croatian | `croatian` | -| czech | `czech` | -| danish | `danish` | -| dutch | `dutch` | -| english | `english` | -| french | `french` | -| galician | `galician` | -| german | `german` | -| greek | `greek` | -| hebrew | `hebrew` | -| hindi | `hindi` | -| hungarian | `hungarian` | -| indonesian | `indonesian` | -| italian | `italian` | -| japanese | `japanese` | -| korean | `korean` | -| malay | `malay` | -| mandarin | `mandarin` | -| polish | `polish` | -| portuguese | `portuguese` | -| russian | `russian` | -| serbian | `serbian` | -| spanish | `spanish` | -| swedish | `swedish` | -| tagalog | `tagalog` | -| thai | `thai` | -| turkish | `turkish` | -| ukrainian | `ukrainian` | -| urdu | `urdu` | -| xhosa | `xhosa` | - -## Related - - - - Compare every text-to-speech provider Vapi supports. - - diff --git a/fern/providers/voice/sesame.mdx b/fern/providers/voice/sesame.mdx deleted file mode 100644 index 84d117557..000000000 --- a/fern/providers/voice/sesame.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Sesame -subtitle: Use Sesame's text-to-speech voices for your Vapi voice agent -description: Connect Sesame to Vapi to use its conversational text-to-speech voices for your voice agent. Covers the model, the available voices, and how to select one in the API. -slug: providers/voice/sesame ---- - -Sesame is a text-to-speech provider you can use for your voice agent's voice. This page covers what Sesame is and how to select a voice. - -## What is Sesame - -Sesame is a text-to-speech provider whose conversational speech model generates natural voice output. On Vapi, you select a Sesame voice for an assistant. - -Sesame is available through Vapi's default integration. There is no separate Sesame account to connect. - -## Text-to-speech - -Set `voice.provider` to `sesame`, `voice.model` to `csm-1b`, and `voice.voiceId` to a voice. - -```bash -curl -X PATCH "https://api.vapi.ai/assistant/ASSISTANT_ID" \ - -H "Authorization: Bearer $VAPI_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "voice": { "provider": "sesame", "model": "csm-1b", "voiceId": "Elliot" } - }' -``` - -For additional API configuration options, review the [`SesameVoice` fields](/api-reference/assistants/create#request.body.voice.SesameVoice) in the Create Assistant API reference. - -| Voice | Voice ID | -| -- | -- | -| Elliot (default) | `Elliot` | -| Cole | `Cole` | -| Hana | `Hana` | -| Harry | `Harry` | -| Lily | `Lily` | -| Neha | `Neha` | -| Paige | `Paige` | -| Rohan | `Rohan` | -| Savannah | `Savannah` | -| Spencer | `Spencer` | - -## Supported languages - -Sesame text-to-speech has no separate language setting. The `csm-1b` model is English. - -## Related - - - - Compare every text-to-speech provider Vapi supports. - - diff --git a/fern/quickstart/web.mdx b/fern/quickstart/web.mdx index 9e51af5fa..d3ed524d2 100644 --- a/fern/quickstart/web.mdx +++ b/fern/quickstart/web.mdx @@ -1304,7 +1304,7 @@ Handle real-time events for both client and server applications: Now that you understand both client and server SDK capabilities: - **Explore use cases:** Check out our [examples section](/assistants/examples/inbound-support) for complete implementations -- **Add tools:** Connect your voice agents to external APIs and databases with [function tools](/tools/custom-tools) +- **Add tools:** Connect your voice agents to external APIs and databases with [Function tools](/tools/custom-tools) - **Configure models:** Try different [speech and language models](/assistants/speech-configuration) for better performance - **Use a preset:** [Model Intelligence presets](/assistants/model-intelligence/presets) bundle a transcriber, model, and voice tuned for common use cases, so you can configure your assistant in one click. - **Scale with squads:** Use [Squads](/squads) for multi-assistant setups and complex processes diff --git a/fern/server-url/server-authentication.mdx b/fern/server-url/server-authentication.mdx index 1b21996aa..fe69f094f 100644 --- a/fern/server-url/server-authentication.mdx +++ b/fern/server-url/server-authentication.mdx @@ -340,7 +340,7 @@ const phoneNumber = await client.phoneNumbers.create({ ### In Tool Configuration -Secure your function tool endpoints with credentials: +Secure your Function tool endpoints with credentials: ```json title="API Request" diff --git a/fern/server-url/setting-server-urls.mdx b/fern/server-url/setting-server-urls.mdx index afcd19332..0c789e7ba 100644 --- a/fern/server-url/setting-server-urls.mdx +++ b/fern/server-url/setting-server-urls.mdx @@ -19,7 +19,7 @@ Server URLs can be set at **4 levels** in Vapi: - **Account-wide:** you can set a server URL for your broader account - **Phone Number:** server URLs can be attached to phone numbers themselves - **Assistant:** assistants can be configured with a server URL -- **Custom Tool:** custom tools can have their own server URL +- **Function tool:** Function tools can have their own server URL ## Setting Server URLs @@ -148,16 +148,16 @@ Here's a breakdown of where you can set server URLs in Vapi: - - The most granular server URL can be set on a custom tool. This can be done either in the Dashboard or via code. + + The most granular server URL can be set on a Function tool. This can be done either in the Dashboard or via code. If your server requires authentication, create a [custom credential](/server-url/server-authentication) before configuring the server URL. - - Open the [Dashboard](https://dashboard.vapi.ai/tools). Select **Tools**, select **Create Tool**, then select **Custom Tool**. + + Open the [Dashboard](https://dashboard.vapi.ai/tools). Select **Tools**, select **Create Tool**, then select **Function tool**. Under **Server Settings**, enter your endpoint in **Server URL**, then set the request **Timeout**. @@ -168,23 +168,23 @@ Here's a breakdown of where you can set server URLs in Vapi: If your server requires additional headers, select **Add Header** under **HTTP Headers**, then enter the required header. - + Select the **Saved** control at the top of the tool editor to save the configuration. - + Function tools can be configured with server endpoints via the [tools API](/api-reference/tools) or within assistant configurations. - The server configuration for function tools includes: + The server configuration for Function tools includes: - `tool.server.url`: The function endpoint URL - `tool.server.credentialId`: Authentication credential ID (optional) - You can configure function tool servers at [tool creation](/api-reference/tools/create), [assistant creation](/api-reference/assistants/create-assistant), or in updates. + You can configure server settings for Function tools during [tool creation](/api-reference/tools/create), [assistant creation](/api-reference/assistants/create-assistant), or updates. Use [Custom Credentials](./server-authentication) to secure your function endpoints with `credentialId`. @@ -199,7 +199,7 @@ Here's a breakdown of where you can set server URLs in Vapi: Events are only sent/assigned to 1 server URL in the priority stack. Here's the order of priority: -1. **Custom Tool:** if a custom tool has a server URL, the tool request will be sent to that URL +1. **Function tool:** if a Function tool has a server URL, the tool request will be sent to that URL 2. **Assistant:** assistant server URLs are the next highest priority 3. **Phone Number:** if a phone number has a server URL, it will be used over the account-wide URL 4. **Account-wide:** Default / "lowest" importance. It will be used if no other server URL is set. diff --git a/fern/squads/examples/clinic-triage-scheduling-handoff-tool.mdx b/fern/squads/examples/clinic-triage-scheduling-handoff-tool.mdx index 35d7a2158..d32c7e050 100644 --- a/fern/squads/examples/clinic-triage-scheduling-handoff-tool.mdx +++ b/fern/squads/examples/clinic-triage-scheduling-handoff-tool.mdx @@ -203,6 +203,6 @@ Test the handoff system with different patient scenarios: Now that you have a working handoff-based clinic system: - **Advanced Handoffs**: [Handoff Tools](/squads/handoff) -- **Custom Tools**: [Scheduling Tools](/tools/custom-tools) +- **Function tools**: [Scheduling Tools](/tools/custom-tools) - **Calendar Integration**: [Google Calendar](/tools/google-calendar) - **Emergency Protocols**: [Transfer Call tool](/tools/transfer-call) diff --git a/fern/squads/examples/ecommerce-order-management.mdx b/fern/squads/examples/ecommerce-order-management.mdx index eff0f659b..0edec2653 100644 --- a/fern/squads/examples/ecommerce-order-management.mdx +++ b/fern/squads/examples/ecommerce-order-management.mdx @@ -99,5 +99,4 @@ Attach a phone number to the Squad and simulate order, return, and VIP scenarios ## Next steps -- **Custom Tools**: [Build tools](/tools/custom-tools) - +- **Function tools**: [Build tools](/tools/custom-tools) diff --git a/fern/static/workflow-migration-guide.md b/fern/static/workflow-migration-guide.md index 2480c0fd3..8b21454af 100644 --- a/fern/static/workflow-migration-guide.md +++ b/fern/static/workflow-migration-guide.md @@ -65,7 +65,7 @@ Assistant shape (each member). The node's `systemPrompt` becomes `model.messages "provider": "openai", "model": "gpt-4o", "messages": [ { "role": "system", "content": "the assistant's instructions" } ], - "tools": [ /* handoff tools, transferCall tools, apiRequest/custom tools */ ] + "tools": [ /* handoff tools, transferCall tools, apiRequest tools, or Function tools */ ] } } ``` @@ -111,7 +111,7 @@ Run these in order. - A variable used only to *choose a branch* doesn't need extraction — that decision is encoded in which destination the model picks. 6. **Map the remaining node types:** - - `apiRequest` → an apiRequest/custom tool on the assistant that owns that stage. + - `apiRequest` → an `apiRequest` tool or a Function tool on the assistant that owns that stage. - `transferCall` → a transferCall tool on the relevant assistant (`destination` = phone number, `transferPlan.message` carried over). - `endCall` / `hangup` → fold "end the call" into the terminal assistant's prompt (no separate member needed). - **Global node** (`isGlobal: true`) → give the relevant assistant(s) a handoff/transfer whose `description` is the node's `condition` (e.g. "caller asks to speak to a human"). It applies from anywhere that assistant is active. @@ -129,7 +129,7 @@ Run these in order. | Edge with no condition (crossing a boundary) | Handoff with a "when done with X" description | | `extractVariables` used downstream in another assistant | `variableExtractionPlan.schema` on the crossing handoff | | `extractVariables` used only locally | Just `{{name}}` in the same assistant's prompt — no plan needed | -| `apiRequest` node | apiRequest/custom tool on the owning assistant | +| `apiRequest` node | `apiRequest` tool or Function tool on the owning assistant | | `transferCall` node | transferCall tool on the relevant assistant | | `endCall` / `hangup` node | "end the call" instruction in the terminal assistant's prompt | | Global node (`isGlobal`) | A broad-condition handoff/transfer on the relevant assistant(s) | diff --git a/fern/tools/api-request-vs-function.mdx b/fern/tools/api-request-vs-function.mdx index 4f390a966..3d199e865 100644 --- a/fern/tools/api-request-vs-function.mdx +++ b/fern/tools/api-request-vs-function.mdx @@ -17,7 +17,7 @@ If you are unsure, start with an API Request tool. | Needs a configurable URL, method, headers, or JSON body | **API Request tool** | These are available fields on the tool. | | Returns JSON that the assistant should use immediately | **API Request tool** | The successful JSON response becomes the tool result. | | Receives Vapi call, assistant, artifact, and tool-call context | **Function tool** | Vapi sends a `tool-calls` webhook envelope to your server. | -| Routes several custom tools through one webhook | **Function tool** | Your server can dispatch calls by tool name and correlate results with `toolCallId`. | +| Routes several Function tools through one webhook | **Function tool** | Your server can dispatch calls by tool name and correlate results with `toolCallId`. | | Runs without waiting for a result | **Function tool** | Function tools support top-level `async: true`. | | Triggers a browser-side action through the Web SDK | **Function tool** | A Function tool without a server URL can emit a client-side `tool-calls` event. | | Must translate Vapi tool calls into XML, multipart data, or another custom protocol | **Function tool with an adapter** | Your webhook can transform the Vapi request before calling the downstream service. | diff --git a/fern/tools/arguments-encryption.mdx b/fern/tools/arguments-encryption.mdx index 9fe0beb32..102a8a867 100644 --- a/fern/tools/arguments-encryption.mdx +++ b/fern/tools/arguments-encryption.mdx @@ -75,7 +75,7 @@ openssl rsa -in private-key.pem -pubout -out public-key.pem Navigate to your tools and choose which tool should use encryption. 1. Go to the [Tools page](https://dashboard.vapi.ai/tools) - 2. Select an existing **Custom Tool** or **API Request Tool** + 2. Select an existing **Function tool** or **API Request tool** 3. Alternatively, create a new tool if needed @@ -214,6 +214,6 @@ Follow these guidelines to maintain secure encryption: Now that you have tool argument encryption configured: -- **[Function tools](/tools/custom-tools):** Learn more about creating function tools +- **[Function tools](/tools/custom-tools):** Learn more about creating Function tools - **[API request tools](/tools/default-tools#api-request):** Configure API request tools with encrypted arguments - **[Server URLs](/server-url):** Set up secure server endpoints for receiving encrypted data diff --git a/fern/tools/client-side-websdk.mdx b/fern/tools/client-side-websdk.mdx index 72faf7681..354de9a12 100644 --- a/fern/tools/client-side-websdk.mdx +++ b/fern/tools/client-side-websdk.mdx @@ -15,7 +15,7 @@ Use the Web SDK to handle tool-calls entirely on the client. This lets your assi - Inject extra context during a call with `addMessage` -Client-side tools cannot send a tool "result" back to the model. If the model must use the output of a tool to continue reasoning, implement a server-based tool instead. See: Server-based Custom Tools. +Client-side tools cannot send a tool "result" back to the model. If the model must use the output of a tool to continue reasoning, implement a server-based tool instead. See: Server-based Function tools. @@ -281,7 +281,7 @@ vapi.addMessage({ ``` -If you need the model to consume tool outputs (e.g., fetch data and continue reasoning with it), implement a server-based tool. See Custom Tools. +If you need the model to consume tool outputs (e.g., fetch data and continue reasoning with it), implement a server-based tool. See Function tools. ## Key points @@ -293,5 +293,5 @@ If you need the model to consume tool outputs (e.g., fetch data and conti ## Next steps -- **Server-based tools**: Learn how to return results back to the model with Custom Tools. +- **Server-based tools**: Learn how to return results back to the model with Function tools. - **API reference**: See Tools API for full configuration options. diff --git a/fern/tools/custom-tools-troubleshooting.mdx b/fern/tools/custom-tools-troubleshooting.mdx index 367139eef..176a54f7b 100644 --- a/fern/tools/custom-tools-troubleshooting.mdx +++ b/fern/tools/custom-tools-troubleshooting.mdx @@ -1,12 +1,12 @@ --- title: Troubleshoot tools -description: "Resolve common issues with custom tool integrations" +description: "Troubleshoot Function tool integrations in Vapi, including trigger failures, response errors, token truncation, multiple tool responses, and async behavior." slug: tools/custom-tools-troubleshooting --- ## Overview -Troubleshoot and fix common issues with custom tool integrations in your Vapi assistants. +Troubleshoot and fix common issues with Function tool integrations in your Vapi assistants. **In this guide, you'll learn to:** diff --git a/fern/tools/custom-tools.mdx b/fern/tools/custom-tools.mdx index acd4c3583..a10a44cec 100644 --- a/fern/tools/custom-tools.mdx +++ b/fern/tools/custom-tools.mdx @@ -2,10 +2,12 @@ title: Function tools subtitle: Connect an assistant to your own server logic with a Function tool slug: tools/custom-tools -description: Create custom tools, including Function tools, for Vapi assistants using the dashboard's visual Tools section or the API to connect to your server-side logic. +description: Create and manage Function tools through the Vapi dashboard or API, connect them to server-side logic, test webhooks locally, and reuse them across assistants. --- -This guide shows you how to create Function tools for your Vapi assistants. The dashboard picker labels this tool type **Custom Tool**, but the created tool and the API both identify it as `function`. We recommend using the Vapi dashboard's dedicated Tools section, which provides a visual interface for creating and managing tools that can be reused across multiple assistants. For advanced users, API configuration is also available. +This guide shows you how to create Function tools for your Vapi assistants. The dashboard labels this tool type **Function tool**, and the API identifies it as `type: "function"`. + +We recommend using the Vapi dashboard's dedicated Tools section, which provides a visual interface for creating and managing tools that can be reused across multiple assistants. For advanced users, API configuration is also available. Not sure which tool type to use? See [When to use API Request or Function tools](/tools/api-request-vs-function) before configuring your integration. @@ -17,13 +19,13 @@ This guide shows you how to create Function tools for your Vapi assistants. The 1. Open your [Vapi Dashboard](https://dashboard.vapi.ai) 2. Click **Tools** in the left sidebar -3. Click **Create Tool** to start building your custom tool +3. Click **Create Tool** to start building your Function tool ### Step 2: Configure Your Tool The dashboard provides a user-friendly interface to configure your tool: -1. **Tool Type**: Select **Custom Tool** for custom API integrations +1. **Tool Type**: Select **Function tool** for custom API integrations 2. **Tool Name**: Give your tool a descriptive name (e.g., "Weather Lookup") 3. **Description**: Explain what your tool does 4. **Tool Configuration**: @@ -78,12 +80,12 @@ Once created, your tools can be easily added to any assistant: 1. Go to **Assistants** → Select your assistant 2. Navigate to the **Tools** tab -3. Click **Add Tool** and select your custom tool from the dropdown +3. Click **Add Tool** and select your Function tool from the dropdown 4. Save your assistant configuration ### Using the Vapi CLI -Manage your custom tools directly from the terminal: +Manage your Function tools directly from the terminal: ```bash # List all tools @@ -116,13 +118,13 @@ vapi listen --forward-to localhost:3000/tools/webhook `vapi listen` is a local forwarder that requires a separate tunneling service. Configure your tool's server URL to use the tunnel's public URL for testing. [Learn more →](/cli/webhook) -## Other tool types that accept custom function parameters +## Other tool types that accept `function.parameters` -Custom function tools are not the only tool type where you can define an LLM-facing JSON schema. Several other tool types accept the same `function.parameters` customization, so the dashboard's **Parameters** editor (or the `function` field in the API) works the same way across them. +Function tools are not the only tool type where you can define an LLM-facing JSON schema. Several other tool types accept the same `function.parameters` customization, so the dashboard's **Parameters** editor (or the `function` field in the API) works the same way across them. | Tool type | Customer-defined `function.parameters`? | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `function` (custom) | Yes — the entire purpose of this tool type. | +| `function` (Function tool) | Yes — the entire purpose of this tool type. | | `apiRequest` | Yes — drives both the LLM-supplied arguments and the request body construction. | | `handoff` | Yes — fills handoff-time arguments inline. See [Approach 1 in the squads guide](/squads/passing-data-between-assistants#approach-1-handoff-arguments). | | `transferCall`, `endCall`, `dtmf`, `voicemail`, `sms`, `slack-send-message`, GHL/Google integrations, `mcp`, `make`, Anthropic-native (`bash`, `computer`, `textEditor`) | No — the schema is Vapi-controlled or auto-derived from the underlying integration; you do not define it directly. | diff --git a/fern/tools/mcp.mdx b/fern/tools/mcp.mdx index b770bfd42..910bfef4a 100644 --- a/fern/tools/mcp.mdx +++ b/fern/tools/mcp.mdx @@ -197,7 +197,7 @@ If you need to use Server-Sent Events protocol instead: ### Make MCP -The Make MCP Server provides access to the Make scenarios you select, allowing you to provision them as Custom Tools through MCP. +The Make MCP Server provides access to the Make scenarios you select, allowing you to expose them as MCP tools. 1. Define your Make scenarios, configuring scenario [inputs and outputs](https://help.make.com/scenario-inputs-and-outputs) and setting them to be [scheduled on demand](https://help.make.com/schedule-a-scenario#30pY_) 2. Get your [Make MCP Token](https://developers.make.com/mcp-server/make-cloud-mcp-server/obtaining-mcp-token) @@ -206,7 +206,7 @@ The Make MCP Server provides access to the Make scenarios you select, allowing y 5. Your assistant will now have access to your chosen Make scenarios - Make Cloud MCP allows you to build simple or complex Custom Tools using business logic to access the most important apps in your business tech stack. Check the full list in the Make app gallery. + Make Cloud MCP allows you to build simple or complex MCP tools using business logic to access the most important apps in your business tech stack. Check the full list in the Make app gallery. ### Zapier MCP diff --git a/fern/workflows/legacy-migration.mdx b/fern/workflows/legacy-migration.mdx index cfb2d1957..93d0a51c4 100644 --- a/fern/workflows/legacy-migration.mdx +++ b/fern/workflows/legacy-migration.mdx @@ -46,7 +46,7 @@ Here's how Workflows concepts map to Squads: | Edge condition | Handoff tool with a description of when to transfer | | Global Node | Assistant with a broad handoff condition (e.g. "user wants to speak to a human" or "user says hotword") | | Extract Variables | Variable extraction in the Handoff tool, passed across the full Squad | -| API Request Node | Custom or API Request tool attached to a Squad member | +| API Request Node | Function tool or API Request tool attached to a Squad member | | Transfer Call Node | Transfer call tool attached to a Squad member | | Start Node | First member in the Squad members array |