Eelco
06/04/2025, 3:16 PMname field, however when add name to the MCP tool, the vapi server side validation fails:
{
type: 'mcp',
name: 'Calendly',
description: 'When scheduling bookings use this tool',
server: {
url: 'https://mcp.zapier.com/api/mcp/s/.....'
}
}
]
Error: Status code: 400
Body: {
"message": [
"model.each value in tools.property name should not exist"
],
"error": "Bad Request",
"statusCode": 400
}
We're using openai as the model and follow the documentation.
https://docs.vapi.ai/tools/mcp
Not adding name to the tool config fails as well, then we get error name is required for mcp tool...Vapi Support Bot
06/04/2025, 3:18 PMname and description fields from your MCP tool config, as the documentation specifies they should not be present for MCP tools. Your config should look like this:
json
{
"type": "mcp",
"server": {
"url": "https://mcp.zapier.com/api/mcp/s/....."
}
}
If you still receive a "name is required" error after this change, it may indicate a bug or a version mismatch—consider reaching out to Vapi support or their Discord for clarification.
[See official MCP tool config example](https://docs.vapi.ai/tools/mcp)
Source:
- [Vapi Documentation: MCP Tool](https://docs.vapi.ai/tools/mcp)Eelco
06/04/2025, 3:30 PMtools.push({
type: 'mcp',
function: {
name: 'Calendly',
description: 'When scheduling bookings use this tool'
},
server: {
url: action.serverUrl,
},
}
However this fails to execute individual tools on the mcp server
15:23:44:025
[ERROR]
Tool `mcp:Calendly` failed (reason: MCP error -32602: MCP error -32602: Tool Calendly not found)Vapi
06/05/2025, 1:01 AMEelco
06/05/2025, 8:29 AMEelco
06/05/2025, 8:31 AMEelco
06/05/2025, 8:31 AMVapi
06/06/2025, 12:42 AMEelco
06/06/2025, 1:43 PMVapi
06/09/2025, 7:21 PMVapi
06/12/2025, 12:13 AMMarcos
06/13/2025, 10:22 AMMarcos
06/13/2025, 10:22 AMMarcos
06/13/2025, 10:22 AMVapi
06/14/2025, 1:32 AMEelco
06/17/2025, 10:34 AMtools object in the model config does not work.
Just to be clear this example is broken.
ts
{
"model": {
"provider": "openai",
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "... removed for brievety"
}
],
"tools": [
{
"type": "mcp",
"name": "mcpTools", // this field does not exist in the api, however a name is required
"server": {
"url": "https://actions.zapier.com/mcp/actions/"
}
}
]
}
}
It will result in this error:
ts
Body: {
"message": [
"model.each value in tools.property name should not exist"
],
"error": "Bad Request",
"statusCode": 400
}
Adding the name in the function.name parameter allow us to save the configuration, however then the assistant fails to add and execute the mcp tools, it results in the same issue i described before, where it will literally try to call that function name on the mcp server. So it seems like the MCP tool in the model.tools config are interpreted as regular tools, instead of being used to fetch the mcp tools and dynamically add them to the assistants tools.Vapi
06/17/2025, 8:49 PMRyGuy
10/31/2025, 1:26 AM