ISSUE: TOOL ARGUMENTS DROPPED IN WEBHOOK
# support
e
We are seeing inconsistent behavior with a Vapi custom tool. What we observe: Vapi call logs show Model called tool with populated arguments (email, voice_sdr_outcome, voice_sdr_summary, booking fields). The webhook endpoint receives the tool call envelope, but function.arguments is sometimes {}. This happens intermittently. Other calls send the full arguments as expected. The tool is definitely invoked, and the server URL is correct. The workflow is active and using the production webhook URL. Resulting issue: Downstream workflows do not receive voice_sdr_* fields even though the model generated them. Questions: Under what conditions does Vapi send {} as function.arguments in the webhook? Is {} expected behavior when tool validation fails? Does the webhook payload reflect post-validation arguments rather than what the model generated? Is toolCalls[0].id the only reliable tool call identifier (vs passing toolCallId as a parameter)? We are trying to confirm whether this behavior is expected and how to configure the tool schema to prevent argument loss.
v
To prevent arguments from being dropped due to schema validation errors, enable strict validation in your tool schema. Add
"strict": true
to your tool configuration, like this:
Copy code
json
{
  "name": "your_tool_name",
  "description": "Describe your tool",
  "parameters": {
    "type": "object",
    "properties": {
      "email": { "type": "string" },
      "voice_sdr_outcome": { "type": "string" },
      "voice_sdr_summary": { "type": "string" },
      "booking": { "type": "string" }
    },
    "required": ["email", "voice_sdr_outcome", "voice_sdr_summary", "booking"]
  },
  "strict": true
}
This will help catch missing or invalid arguments before the webhook is called, reducing the chance of receiving
{}
in
function.arguments
.
For more, see the [Custom tools troubleshooting guide](https://docs.vapi.ai/tools/custom-tools-troubleshooting). Source: - [Custom tools troubleshooting guide](https://docs.vapi.ai/tools/custom-tools-troubleshooting)
t
Empty function.arguments ({}) usually happens when the model output fails tool schema validation, as the webhook only receives post-validation arguments. toolCalls[0].id is the most reliable identifier. To prevent loss, ensure strict schema alignment and log raw model output before invocation. Are the {} cases tied to specific outputs or truly random? @es
c
Hi, could you please provide a call id where you experienced this issue? We would like to review the logs to identify the cause.