mute-gold
mute-gold4mo ago

Issue: Empty Arguments in Tool Call Despite Required Parameters

Issue where the assistant is making tool calls with empty arguments ({}) despite the tool having required parameters with strict validation. Interestingly, this only happens with one specific tool while another similar tool works perfectly. What's Working - appointment_timeslots_tool works correctly - the AI provides all required parameters - The tool has 5 required parameters (ZipCode, Address, City, Phone, Email) - The AI correctly fills these parameters based on the conversation What's Not Working - appointment_creation_tool consistently receives empty arguments {} - The tool has 11 required parameters (CorrelationID, FirstName, LastName, etc.) - Despite having all the information from the conversation and previous tool call, the AI sends arguments: {} Logs and Behavior - First tool call (works): "arguments": {"ZipCode": "75001", "Address": "456 Oak Street", ...} - Second tool call (fails): "arguments": {} - I've tried simplifying the parameter structure to avoid nested objects, but the issue persists - I've verified the AI has all the necessary information to fill in the parameters Any assistance would be greatly appreciated!
14 Replies
Vapi
Vapi4mo ago
Suggestion:
Double-check the parameters definition for your appointment_creation_tool in your tool configuration. Make sure each required parameter is explicitly listed and not nested, and that the tool's strict property is set to true. For example:
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" }
// ...add all required fields
},
"required": ["CorrelationID", "FirstName", "LastName" /* ... */]
}
}
}
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" }
// ...add all required fields
},
"required": ["CorrelationID", "FirstName", "LastName" /* ... */]
}
}
}
After updating, re-deploy and test. This ensures the AI knows exactly which fields to fill and avoids empty argument payloads. Sources: - Custom Tools Documentation - Prompting Guide
⤵️ Mention @Vapi Support Bot for follow-ups 🐥
Shubham Bajaj
Shubham Bajaj4mo ago
Hey! To help track down this issue, could you share: - The call ID
mute-gold
mute-goldOP4mo ago
Here's the call ID and additional context: Call ID: call_GSQbLnNxGAgB7zhaQSo8pZcx Timestamp: 2025-05-21 14:19:09.265 (Started At) - 2025-05-21 14:19:11.680 (Finished At) The Actual Issue: Looking at this specific call, the AI sent most parameters but missed 2 required parameters despite having strict: true validation: - Missing: State (required) - Missing: RepID (required) The tool definition clearly shows 11 required parameters: ["CorrelationID", "FirstName", "LastName", "Phone", "Email", "Address", "City", "State", "ZipCode", "AppointmentDateTime", "RepID"] But the AI only sent 10 parameters, omitting State and RepID. Model Behavior: Initially discovered this issue was worse with Claude 3.7 Sonnet (would send completely empty arguments {}), but after switching to OpenAI's model, I found it still occasionally misses required parameters despite strict: true validation. Critical Issue: This problem is compounded by the fact that when I send error responses back to the AI (like "ERROR: Missing required parameters: State, RepID"), the AI agent doesn't receive these messages (linked issue: https://discord.com/channels/1211482211119796234/1374830137845092455). So the AI has no way to know it made an incomplete tool call and can't self-correct. These two issues combined make the platform extremely unreliable - the strict validation isn't working, and error feedback doesn't reach the AI. Here's another call ID showing the original Claude issue: Call ID: toolu_011yxevzp3VrHYsf9BgYETQ2 This call demonstrates the Claude 3.7 Sonnet problem - completely empty arguments {} despite having 11 required parameters and strict: true validation:
"function": {
"name": "appointment_creation_tool",
"arguments": {}
}
"function": {
"name": "appointment_creation_tool",
"arguments": {}
}
Shubham Bajaj
Shubham Bajaj4mo ago
Hi @rpv, sorry for the confusion but that looks like a toolCallId for the tool and not the whole call. If you would like to find the call id for the specific call, you can locate it on the dashboard here in the call logs page. Once we get that information, we can proceed the investigation.
No description
mute-gold
mute-goldOP4mo ago
- Tool Call ID: call_4jRGUjRFivxyf75J3Uu2eoBh - Vapi Call ID: 77c764ef-deb5-481b-a8b0-646a1fc2a730 This is the call where the AI was missing the Email parameter despite strict: true validation, and where the error response wasn't reaching the AI.
Vapi
Vapi4mo ago
Suggestion:
Double-check your appointment_creation_tool configuration to ensure all required parameters are explicitly listed (not nested) and included in the required array, with "strict": true set. For example:
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" }
// ...add all required fields
},
"required": ["CorrelationID", "FirstName", "LastName" /* ... */]
}
}
}
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" }
// ...add all required fields
},
"required": ["CorrelationID", "FirstName", "LastName" /* ... */]
}
}
}
After updating, redeploy and test. Note: If error responses aren't reaching the AI for self-correction, this is a known limitation—consider raising a support ticket if this is critical for your workflow.
Sources: Custom Tools Documentation, Prompting Guide Sources: - Custom Tools Documentation - Prompting Guide
Shubham Bajaj
Shubham Bajaj4mo ago
Hey @rpv, checking if this is resolved/solved for you?
mute-gold
mute-goldOP4mo ago
No, I need help and clarification, in this call for example d08a2eb6-ee9a-4680-893b-886c16ce4362 you can see how the appointment_timeslots tool works but the appointment_creation tool is not working, even when I have strict parameters validation and I'm sending back and error message with the missing required parameters:
"result": "ERROR: Missing required parameters for appointment creation. Please provide CorrelationID, FirstName, LastName, Phone, Email, Address, City, State, ZipCode, AppointmentDateTime, and RepID.",
"toolCallId": "toolu_01PLcH3akcpcY7CDtcPjGDHD"
"result": "ERROR: Missing required parameters for appointment creation. Please provide CorrelationID, FirstName, LastName, Phone, Email, Address, City, State, ZipCode, AppointmentDateTime, and RepID.",
"toolCallId": "toolu_01PLcH3akcpcY7CDtcPjGDHD"
Vapi
Vapi4mo ago
Thank you for the detailed information. Since your configuration appears correct and the issue persists even after following all standard troubleshooting steps, have you already submitted a formal support ticket to Vapi regarding this unresolved validation and error feedback problem? If not, would you like guidance on how to do so? Sources: - Custom Tools Documentation - Prompting Guide Thank you for the detailed information. Since your configuration appears correct and the issue persists even after following all standard troubleshooting steps, have you already submitted a formal support ticket to Vapi regarding this unresolved validation and error feedback problem? If not, would you like guidance on how to do so? Sources: - Custom Tools Documentation - Prompting Guide Actionable Next Step:
Double-check that your appointment_creation_tool configuration explicitly lists all required parameters (no nesting) and that "strict": true is set. Here’s a sample structure:
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" },
"Phone": { "type": "string" },
"Email": { "type": "string" },
"Address": { "type": "string" },
"City": { "type": "string" },
"State": { "type": "string" },
"ZipCode": { "type": "string" },
"AppointmentDateTime": { "type": "string" },
"RepID": { "type": "string" }
},
"required": [
"CorrelationID", "FirstName", "LastName", "Phone", "Email",
"Address", "City", "State", "ZipCode", "AppointmentDateTime", "RepID"
]
}
}
}
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" },
"Phone": { "type": "string" },
"Email": { "type": "string" },
"Address": { "type": "string" },
"City": { "type": "string" },
"State": { "type": "string" },
"ZipCode": { "type": "string" },
"AppointmentDateTime": { "type": "string" },
"RepID": { "type": "string" }
},
"required": [
"CorrelationID", "FirstName", "LastName", "Phone", "Email",
"Address", "City", "State", "ZipCode", "AppointmentDateTime", "RepID"
]
}
}
}
After updating, redeploy and test. If the issue persists and error feedback is not reaching the AI, consider raising a support ticket, as this is a known platform limitation.
Custom Tools Documentation Sources: - Custom Tools Documentation - Prompting Guide Actionable Next Step:
Double-check that your appointment_creation_tool configuration explicitly lists all required parameters (no nesting) and that "strict": true is set. Here’s a sample structure:
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" },
"Phone": { "type": "string" },
"Email": { "type": "string" },
"Address": { "type": "string" },
"City": { "type": "string" },
"State": { "type": "string" },
"ZipCode": { "type": "string" },
"AppointmentDateTime": { "type": "string" },
"RepID": { "type": "string" }
},
"required": [
"CorrelationID", "FirstName", "LastName", "Phone", "Email",
"Address", "City", "State", "ZipCode", "AppointmentDateTime", "RepID"
]
}
}
}
{
"type": "function",
"function": {
"name": "appointment_creation_tool",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"CorrelationID": { "type": "string" },
"FirstName": { "type": "string" },
"LastName": { "type": "string" },
"Phone": { "type": "string" },
"Email": { "type": "string" },
"Address": { "type": "string" },
"City": { "type": "string" },
"State": { "type": "string" },
"ZipCode": { "type": "string" },
"AppointmentDateTime": { "type": "string" },
"RepID": { "type": "string" }
},
"required": [
"CorrelationID", "FirstName", "LastName", "Phone", "Email",
"Address", "City", "State", "ZipCode", "AppointmentDateTime", "RepID"
]
}
}
}
After updating, redeploy and test. If the issue persists and error feedback is not reaching the AI, consider raising a support ticket, as this is a known platform limitation.
Custom Tools Documentation Sources: - Custom Tools Documentation - Prompting Guide
mute-gold
mute-goldOP4mo ago
How can I open a formal support ticket?
Vapi
Vapi4mo ago
To open a formal support ticket with Vapi, simply email your issue details (including call IDs, error logs, and a description of the problem) to support@vapi.ai. This is the primary method for submitting support requests. For real-time help, you can also join the Vapi Discord community and post in the #support channel. Example:
To: support@vapi.ai
Subject: Tool Call Validation Issue - appointment_creation_tool

[Describe your issue, include call IDs, error logs, and steps to reproduce.]
To: support@vapi.ai
Subject: Tool Call Validation Issue - appointment_creation_tool

[Describe your issue, include call IDs, error logs, and steps to reproduce.]
Source: - Vapi Support Documentation To open a formal support ticket with Vapi, simply email your issue details (including call IDs, error logs, and a description of the problem) to support@vapi.ai. This is the primary method for submitting support requests. For real-time help, you can also join the Vapi Discord community and post in the #support channel. Example:
To: support@vapi.ai
Subject: Tool Call Validation Issue - appointment_creation_tool

[Describe your issue, include call IDs, error logs, and steps to reproduce.]
To: support@vapi.ai
Subject: Tool Call Validation Issue - appointment_creation_tool

[Describe your issue, include call IDs, error logs, and steps to reproduce.]
Source: - Vapi Support Documentation To open a formal support ticket with Vapi, simply email your issue details (including call IDs, logs, and a description of the problem) to support@vapi.ai. This is the official channel for technical support and unresolved issues. For fastest resolution, include all relevant information in your message. Reference: Vapi Support Options Source: - Vapi Support Options To open a formal support ticket with Vapi, simply email your issue details (including call IDs, logs, and a description of the problem) to support@vapi.ai. This is the official channel for technical support and unresolved issues. For fastest resolution, include all relevant information in your message. Reference: Vapi Support Options Source: - Vapi Support Options
mute-gold
mute-goldOP4mo ago
It's not nested, and would you allow nested parameters when you don't support that?
Vapi
Vapi4mo ago
Based on the documentation, Vapi custom tool configurations are expected to use a flat (non-nested) parameter structure—all required fields should be listed directly under properties, and there are no examples or instructions for using nested parameters. While this strongly suggests that nested parameters are not supported, there is no explicit statement confirming this or describing the system's behavior if nesting is attempted. Could you clarify if you have a specific use case that requires nested parameters, or are you asking to confirm whether nesting is officially unsupported due to the issues you've observed? For reference, see the Custom Tools Documentation. Source: - Custom Tools Documentation Based on the documentation, Vapi custom tool configurations are expected to use a flat (non-nested) parameter structure—all required fields should be listed directly under properties, and there are no examples or instructions for using nested parameters. While this strongly suggests that nested parameters are not supported, there is no explicit statement confirming this or describing the system's behavior if nesting is attempted. Could you clarify if you have a specific use case that requires nested parameters, or are you asking to confirm whether nesting is officially unsupported due to the issues you've observed? For reference, see the Custom Tools Documentation. Source: - Custom Tools Documentation Vapi does not support nested parameters in custom tool configurations. All required fields must be listed at the top level of the properties object, as shown in the official examples. Attempting to use nested parameters is not documented as supported and may result in unexpected behavior. Would you like more details on how Vapi handles invalid (e.g., nested) tool configurations at runtime, or are you asking about possible future support for nested parameters? Custom Tools Documentation Source: - Custom Tools Documentation Vapi does not support nested parameters in custom tool configurations. All required fields must be listed at the top level of the properties object, as shown in the official examples. Attempting to use nested parameters is not documented as supported and may result in unexpected behavior. Would you like more details on how Vapi handles invalid (e.g., nested) tool configurations at runtime, or are you asking about possible future support for nested parameters? Custom Tools Documentation Source: - Custom Tools Documentation Vapi does not support nested parameters in custom tool schemas. All required parameters must be defined as top-level properties within the parameters object—nesting (objects within objects) is not allowed. If you attempt to use nested parameters, the platform's behavior is not documented, so it is best to avoid nesting entirely. Reference: Custom Tools Documentation – "no nesting" Source: - Custom Tools Documentation
Shubham Bajaj
Shubham Bajaj4mo ago
Hey RPV, you have to increase your assistant max tokens limit from 100 to 500. This way, the parameters won't get truncated, and you'll be able to use them. Try 2-3 calls, and let me know how it goes for you.

Did you find this page helpful?