ISSUE: TOOL ARGUMENTS DROPPED IN WEBHOOK
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 voicesdr* 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.
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 voicesdr* 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.