diff --git a/fern/docs.yml b/fern/docs.yml
index 7878c1300..fcb229a3a 100644
--- a/fern/docs.yml
+++ b/fern/docs.yml
@@ -201,6 +201,7 @@ navigation:
path: advanced/sip/sip-zadarma.mdx
- page: Plivo
path: advanced/sip/sip-plivo.mdx
+
- section: Tools
path: tools/introduction.mdx
contents:
@@ -208,10 +209,16 @@ navigation:
path: tools/default-tools.mdx
- page: Custom Tools
path: tools/custom-tools.mdx
+ - page: MCP Tool
+ path: tools/mcp.mdx
- page: Make & GHL Tools
path: GHL.mdx
- page: Google Calendar
path: tools/google-calendar.mdx
+ - page: Google Sheets
+ path: tools/google-sheets.mdx
+ - page: Slack
+ path: tools/slack.mdx
- section: Knowledge Base
path: knowledge-base/knowledge-base.mdx
diff --git a/fern/static/images/tools/create-tool-menu.png b/fern/static/images/tools/create-tool-menu.png
deleted file mode 100644
index 92b274074..000000000
Binary files a/fern/static/images/tools/create-tool-menu.png and /dev/null differ
diff --git a/fern/static/images/tools/google-calendar-create.png b/fern/static/images/tools/google-calendar-create.png
new file mode 100644
index 000000000..8da981491
Binary files /dev/null and b/fern/static/images/tools/google-calendar-create.png differ
diff --git a/fern/static/images/tools/google-calendar-example.png b/fern/static/images/tools/google-calendar-example.png
deleted file mode 100644
index 89accfd04..000000000
Binary files a/fern/static/images/tools/google-calendar-example.png and /dev/null differ
diff --git a/fern/tools/google-calendar.mdx b/fern/tools/google-calendar.mdx
index 6f69caf49..9fe23379a 100644
--- a/fern/tools/google-calendar.mdx
+++ b/fern/tools/google-calendar.mdx
@@ -1,10 +1,14 @@
---
title: Google Calendar Integration
-subtitle: 'Connect your assistant to Google Calendar for seamless appointment scheduling.'
+subtitle: 'Connect your assistant to Google Calendar for seamless appointment scheduling and availability checking.'
slug: tools/google-calendar
---
-The Google Calendar integration allows your Vapi assistant to create calendar events through voice commands. This enables your assistant to schedule appointments, meetings, and other calendar events directly during phone calls.
+The Google Calendar integration allows your Vapi assistant to interact with Google Calendar in two ways:
+1. Create calendar events through voice commands
+2. Check calendar availability for scheduling
+
+This enables your assistant to schedule appointments, meetings, and other calendar events directly during phone calls, as well as check when you're available for meetings.
## Prerequisites
@@ -26,7 +30,7 @@ First, you need to connect your Google Calendar account to Vapi:
5. Follow the prompts to authorize Vapi to access your Google Calendar
- The authorization process will request access to your Google Calendar to create and manage events.
+ The authorization process will request access to your Google Calendar to create events and check availability.
@@ -36,64 +40,72 @@ First, you need to connect your Google Calendar account to Vapi:
/>
-### 2. Create Calendar Tool
+### 2. Create Calendar Tools
-After connecting your Google Calendar account, create a new tool:
+After connecting your Google Calendar account, create the tools:
1. Go to **Dashboard** > **Tools** page
2. Click the **Create Tool** button
3. Select **Google Calendar** from the available options
-4. Provide a name for your tool
-5. Add a description explaining when this tool should be invoked (e.g., "Use this tool when the user wants to schedule an appointment or create a calendar event")
+4. Choose which tool(s) you want to create:
+ - Google Calendar Create Event Tool
+ - Google Calendar Check Availability Tool
+5. For each tool, provide a name and description explaining when it should be invoked
- The description field is crucial as it helps the AI model understand when and how to use the tool. Be specific about the scenarios and conditions when the tool should be invoked.
+ The description field is crucial as it helps the AI model understand when and how to use each tool. Be specific about the scenarios and conditions when each tool should be invoked.
-
-
+
-### 3. Add Tool to Assistant
+### 3. Add Tools to Assistant
-Now, add the calendar tool to your assistant:
+Now, add your chosen calendar tool(s) to your assistant:
1. Navigate to **Dashboard** > **Assistants** page
2. Select your assistant
-3. Go to the **Functions** tab
-4. In the tools dropdown, select your newly created calendar tool
+3. Go to the **Tools** tab
+4. In the tools dropdown, select the calendar tool(s) you want to use
5. Click **Publish** to save your changes
-
+
-## Tool Configuration
+## Tool Configurations
+
+### Google Calendar Create Event Tool
-The Google Calendar tool uses the following fields to create events:
+This tool uses the following fields to create events:
- `summary`: The title or description of the calendar event
- `startDateTime`: The start date and time of the event
- `endDateTime`: The end date and time of the event
- `timeZone`: The timezone for the event
+### Google Calendar Check Availability Tool
+
+This tool uses the following fields to check availability:
+
+- `startDateTime`: The start of the time range to check
+- `endDateTime`: The end of the time range to check
+- `timeZone`: The timezone for the availability check
+
All datetime fields should be provided in ISO 8601 format.
## Example Usage
-Here's how the tool can be used in your assistant's configuration:
+Here's how the tools can be used in your assistant's configuration:
```json
{
@@ -103,14 +115,19 @@ Here's how the tool can be used in your assistant's configuration:
"messages": [
{
"role": "system",
- "content": "You are a scheduling assistant. When users want to schedule an appointment, use the Google Calendar tool to create the event."
+ "content": "You are a scheduling assistant. When users want to schedule an appointment, first check their availability using the Check Availability tool, then use the Create Event tool to schedule the event if they're available.\n\n- Gather date and time range to check availability.\n- To book an appointment, gather the purpose of the appointment, ex: general checkup, dental cleaning and etc.\n\nNotes\n- Use the purpose as summary for booking appointment.\n- Current date: {{date}}\n- Current time: {{time}}"
}
],
"tools": [
+ {
+ "type": "google.calendar.availability.check",
+ "name": "checkAvailability",
+ "description": "Use this tool to check calendar availability and use the America/Los_Angeles as default timezone."
+ },
{
"type": "google.calendar.event.create",
"name": "scheduleAppointment",
- "description": "Use this tool to schedule appointments and create calendar events"
+ "description": "Use this tool to schedule appointments and create calendar events. Notes: - Use America/Los_Angeles as default timezone - All appointments are 30 mins."
}
]
}
@@ -119,10 +136,11 @@ Here's how the tool can be used in your assistant's configuration:
## Best Practices
-1. **Clear Instructions**: Provide clear instructions in your assistant's system message about when to use the calendar tool
-2. **Error Handling**: Include fallback responses for cases where the calendar tool fails
-3. **Time Zone Awareness**: Always specify the correct timezone for events
+1. **Clear Instructions**: Provide clear instructions in your assistant's system message about when to use each calendar tool
+2. **Error Handling**: Include fallback responses for cases where either calendar tool fails
+3. **Time Zone Awareness**: Always specify the correct timezone for events and availability checks
4. **Event Details**: Ensure all required fields are properly filled when creating events
+5. **Availability Flow**: Check availability before attempting to schedule events to avoid conflicts
+ The Google Sheets integration currently only supports adding new rows to spreadsheets. It does not support reading from or modifying existing data in the spreadsheet.
+
+
+## Prerequisites
+
+Before you can use the Google Sheets integration, you need to:
+1. Have a Google Sheets account
+2. Have access to the Vapi Dashboard
+3. Have an assistant created in Vapi
+4. Have a Google Sheet created and ready to receive data
+
+## Setup Steps
+
+### 1. Connect Google Sheets Account
+
+First, you need to connect your Google Sheets account to Vapi:
+
+1. Navigate to the Vapi Dashboard
+2. Go to **Providers Keys** > **Tools Provider** > **Google Sheets**
+3. Click the **Connect** button
+4. A Google authorization popup will appear
+5. Follow the prompts to authorize Vapi to access your Google Sheets
+
+
+ The authorization process will request access to your Google Sheets.
+
+
+### 2. Create and Configure Sheets Tool
+
+After connecting your Google Sheets account, create and configure the tool:
+
+1. Go to **Dashboard** > **Tools** page
+2. Click the **Create Tool** button
+3. Select **Google Sheets** from the available options
+4. Choose the Google Sheets Add Row Tool
+5. Provide a name and description explaining when it should be invoked
+6. Configure the tool with the following required fields:
+ - `spreadsheetId`: The ID of your Google Sheet
+ - `range`: The sheet name or range (e.g., "Sheet1" or "Sheet1!A:Z")
+
+
+ To find your spreadsheet ID:
+ 1. Open your Google Sheet in a browser
+ 2. Look at the URL: `https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit`
+ 3. Copy the SPREADSHEET_ID portion (it's a long string of letters, numbers, and special characters)
+
+
+
+ The description field is crucial as it helps the AI model understand when and how to use the tool. Be specific about the scenarios and conditions when the tool should be invoked.
+
+
+### 3. Add Tool to Assistant
+
+Now, add the Google Sheets tool to your assistant:
+
+1. Navigate to **Dashboard** > **Assistants** page
+2. Select your assistant
+3. Go to the **Tools** tab
+4. In the tools dropdown, select the Google Sheets tool
+5. Click **Publish** to save your changes
+
+## Tool Configuration
+
+### Google Sheets Add Row Tool
+
+This tool uses the following fields to add data to your spreadsheet:
+
+- `spreadsheetId`: The ID of your Google Sheet (found in the sheet's URL)
+- `range`: The range where the data should be added (e.g., "Sheet1" or "Sheet1!A:Z")
+- `values`: An array of values to be added as a new row
+
+
+ The range field can be specified in two ways:
+ 1. Just the sheet name (e.g., "Sheet1") - This will append to the next empty row
+ 2. Sheet name with range (e.g., "Sheet1!A:Z") - This will append to the specified range
+
+
+## Example Usage
+
+Here's how the tool can be used in your assistant's configuration:
+
+```json
+{
+ "model": {
+ "provider": "openai",
+ "model": "gpt-4",
+ "messages": [
+ {
+ "role": "system",
+ "content": "You are a customer feedback assistant. After each customer service call, collect feedback using the following process:\n\n1. Ask the customer if they would like to provide feedback\n2. If yes, ask for their rating (1-5 stars)\n3. Ask for specific comments about their experience\n4. Ask for any suggestions for improvement\n5. Confirm the feedback before adding it to the spreadsheet\n\nUse the Add Row tool to record the feedback with the following columns:\n- Timestamp\n- Rating (1-5)\n- Comments\n- Suggestions\n\nAlways be polite and thank the customer for their feedback."
+ }
+ ],
+ "tools": [
+ {
+ "type": "google.sheets.row.append",
+ "name": "addFeedback",
+ "description": "Use this tool to add customer feedback to the feedback spreadsheet. Collect all required information (rating, comments, suggestions) before adding the row."
+ }
+ ]
+ }
+}
+```
+
+## Best Practices
+
+1. **Data Validation**: Ensure all data is properly formatted before adding to the spreadsheet
+2. **Error Handling**: Include fallback responses for cases where the tool fails
+3. **User Confirmation**: Always confirm with the user before adding data to the spreadsheet
+4. **Sheet Structure**: Be aware of the spreadsheet's structure and column requirements
+
+
+
+ Join our Discord community for support with Google Sheets integration
+
+
+ View the complete API documentation for tools
+
+
\ No newline at end of file
diff --git a/fern/tools/mcp.mdx b/fern/tools/mcp.mdx
new file mode 100644
index 000000000..108c7f37c
--- /dev/null
+++ b/fern/tools/mcp.mdx
@@ -0,0 +1,163 @@
+---
+title: Model Context Protocol (MCP) Integration
+subtitle: 'Connect your assistant to dynamic tools through MCP servers for enhanced capabilities.'
+slug: tools/mcp
+---
+
+The Model Context Protocol (MCP) integration allows your Vapi assistant to dynamically access tools from MCP servers during calls. This enables your assistant to:
+
+1. Connect to any MCP-compatible server
+2. Access tools dynamically at runtime
+3. Execute actions through the MCP server
+
+This powerful integration allows your assistant to leverage a wide range of tools without requiring individual integrations for each service.
+
+## Prerequisites
+
+Before you can use the MCP integration, you need to:
+1. Have access to the Vapi Dashboard
+2. Have an assistant created in Vapi
+3. Have access to an MCP server URL (e.g., from Zapier, Composio, or other MCP providers)
+
+## Setup Steps
+
+### 1. Obtain MCP Server URL
+
+First, you need to obtain an MCP server URL from your chosen provider:
+
+1. Sign up for an MCP-compatible service (e.g., Zapier, Composio)
+2. Navigate to the MCP configuration section of your provider
+3. Generate or copy your MCP server URL
+
+
+ For Zapier MCP, visit https://actions.zapier.com/settings/mcp/ to generate your MCP server URL. This URL should be treated as a credential and kept secure.
+
+
+### 2. Create and Configure MCP Tool
+
+After obtaining your MCP server URL, create and configure the tool:
+
+1. Go to **Dashboard** > **Tools** page
+2. Click the **Create Tool** button
+3. Select **MCP** from the available options
+4. Provide a name and description explaining when it should be invoked
+5. Configure the tool with the following required field:
+ - `serverUrl`: The URL of your MCP server
+
+
+ The MCP server URL should be treated as a credential and kept secure. It will be used to authenticate requests to the MCP server.
+
+
+### 3. Add Tool to Assistant
+
+Now, add the MCP tool to your assistant:
+
+1. Navigate to **Dashboard** > **Assistants** page
+2. Select your assistant
+3. Go to the **Tools** tab
+4. In the tools dropdown, select your MCP tool
+5. Click **Publish** to save your changes
+
+## How MCP Works
+
+The MCP integration follows these steps during a call:
+
+1. When a call starts, Vapi connects to your configured MCP server
+2. The MCP server returns a list of available tools and their capabilities
+3. These tools are dynamically added to your assistant's available tools
+4. The assistant can then use these tools during the call
+5. When a tool is invoked, Vapi sends the request to the MCP server
+6. The MCP server executes the action and returns the result
+
+
+ The MCP tool itself is not meant to be invoked by the model. It serves as a configuration mechanism for Vapi to fetch and inject the specific tool definitions from the MCP server into the model's context.
+
+
+
+ The tools available through MCP are determined by your MCP server provider. Different providers may offer different sets of tools.
+
+
+## Tool Configuration
+
+### MCP Tool
+
+This tool uses the following field to connect to your MCP server:
+
+- `serverUrl`: The URL of your MCP server (e.g., https://actions.zapier.com/mcp/actions/)
+
+
+ The server URL should be treated as a credential and kept secure. It will be used to authenticate requests to the MCP server.
+
+
+## Example Usage
+
+Here's how the MCP tool can be used in your assistant's configuration:
+
+```json
+{
+ "model": {
+ "provider": "openai",
+ "model": "gpt-4",
+ "messages": [
+ {
+ "role": "system",
+ "content": "You are a helpful personal assistant named Alex. You can help users with various tasks through voice commands. You have access to tools that allow you to perform actions on the user's behalf.\n\nWhen a user requests an action, check if any of the available tools can help accomplish that task.\n\nCommon tasks you can help with include:\n- Scheduling appointments and meetings\n- Sending messages or emails\n- Creating or updating documents\n- Managing to-do lists and reminders\n- Searching for information\n- Making reservations\n- Ordering food or services\n- Checking account balances or transaction history\n- Controlling smart home devices\n\nAlways be polite, professional, and helpful. If a tool fails or isn't available, explain the situation to the user and suggest alternatives if possible."
+ }
+ ],
+ "tools": [
+ {
+ "type": "mcp",
+ "name": "mcpTools",
+ "server": {
+ "url": "https://actions.zapier.com/mcp/actions/"
+ }
+ }
+ ]
+ }
+}
+```
+
+## Best Practices
+
+1. **Dynamic Tool Awareness**: Be aware that the available tools may change between calls
+2. **Clear Instructions**: Provide clear instructions in your assistant's system message about how to handle dynamic tools
+3. **Error Handling**: Include fallback responses for cases where tools fail or are unavailable
+4. **User Communication**: Explain to users what tools you're using and what actions you're taking
+5. **Security**: Treat the MCP server URL as a credential and keep it secure
+
+## Example MCP Providers
+
+### Zapier MCP
+
+Zapier offers an MCP server that provides access to thousands of app integrations:
+
+1. Go to https://actions.zapier.com/settings/mcp/
+2. Generate your MCP server URL
+3. Add the URL to your MCP tool configuration
+4. Your assistant will now have access to Zapier's extensive integration network
+
+
+ Zapier MCP provides access to over 7,000+ apps and 30,000+ actions without requiring complex API integrations.
+
+
+## References
+
+- [Model Context Protocol Introduction](https://modelcontextprotocol.io/introduction)
+- [Zapier MCP](https://zapier.com/mcp)
+
+
+
+ Join our Discord community for support with MCP integration
+
+
+ View the complete API documentation for tools
+
+
\ No newline at end of file
diff --git a/fern/tools/slack.mdx b/fern/tools/slack.mdx
new file mode 100644
index 000000000..ecc6e2e89
--- /dev/null
+++ b/fern/tools/slack.mdx
@@ -0,0 +1,121 @@
+---
+title: Slack Integration
+subtitle: 'Connect your assistant to Slack for seamless message sending.'
+slug: tools/slack
+---
+
+The Slack integration allows your Vapi assistant to send messages to a pre-configured Slack channel during phone calls. This enables your assistant to notify team members, send updates, or share information directly through Slack.
+
+## Prerequisites
+
+Before you can use the Slack integration, you need to:
+1. Have a Slack workspace
+2. Have access to the Vapi Dashboard
+3. Have an assistant created in Vapi
+4. Have a Slack channel created where messages will be sent
+
+## Setup Steps
+
+### 1. Connect Slack Account
+
+First, you need to connect your Slack workspace to Vapi:
+
+1. Navigate to the Vapi Dashboard
+2. Go to **Providers Keys** > **Tools Provider** > **Slack**
+3. Click the **Connect** button
+4. A Slack authorization popup will appear
+5. Follow the prompts to authorize Vapi to access your Slack workspace
+
+
+ The authorization process will request access to send messages to your Slack workspace.
+
+
+### 2. Create Slack Tool
+
+After connecting your Slack workspace, create the tool:
+
+1. Go to **Dashboard** > **Tools** page
+2. Click the **Create Tool** button
+3. Select **Slack** from the available options
+4. Choose the Slack Send Message Tool
+5. Provide a name and description explaining when it should be invoked
+6. Configure the tool with the following required fields:
+ - `channel`: The name of the Slack channel where messages will be sent (e.g., "#general" or "#notifications")
+
+
+ The description field is crucial as it helps the AI model understand when and how to use the tool. Be specific about the scenarios and conditions when the tool should be invoked.
+
+
+### 3. Add Tool to Assistant
+
+Now, add the Slack tool to your assistant:
+
+1. Navigate to **Dashboard** > **Assistants** page
+2. Select your assistant
+3. Go to the **Functions** tab
+4. In the tools dropdown, select the Slack tool
+5. Click **Publish** to save your changes
+
+## Tool Configuration
+
+### Slack Send Message Tool
+
+This tool uses the following fields to send messages to Slack:
+
+- `channel`: The name of the Slack channel where the message will be sent
+- `text`: The message content to be sent to the channel
+
+
+ The channel name should be specified in the format "#channel-name". Make sure the bot has been added to the channel before sending messages.
+
+
+## Example Usage
+
+Here's how the tool can be used in your assistant's configuration:
+
+```json
+{
+ "model": {
+ "provider": "openai",
+ "model": "gpt-4",
+ "messages": [
+ {
+ "role": "system",
+ "content": "You are a customer service assistant. When a customer requests a callback or needs urgent attention, use the Slack tool to notify the support team in the #customer-support channel. Include the following information in your message:\n\n- Customer name\n- Phone number\n- Reason for callback/urgent attention\n- Any specific time constraints\n\nAlways be professional and concise in your Slack messages."
+ }
+ ],
+ "tools": [
+ {
+ "type": "slack.message.send",
+ "name": "notifySupport",
+ "description": "Use this tool to send urgent notifications to the support team in the #customer-support channel. Only use this when a customer needs immediate attention or requests a callback."
+ }
+ ]
+ }
+}
+```
+
+## Best Practices
+
+1. **Channel Selection**: Always verify the correct channel name before sending messages
+2. **Message Formatting**: Use clear and concise language in your Slack messages
+3. **Error Handling**: Include fallback responses for cases where the tool fails
+4. **User Confirmation**: Always confirm with the user before sending notifications to Slack
+5. **Channel Access**: Ensure the Slack bot has been added to the target channel
+
+
+
+ Join our Discord community for support with Slack integration
+
+
+ View the complete API documentation for tools
+
+
\ No newline at end of file