Hi,
Thanks for sharing those call IDs. I pulled the logs and found the root cause.
Your system prompt correctly tells the assistant to use workspaceId, referralId, and causeCatalogJson from variableValues, but the actual values from those variables are never injected into the text the LLM receives. The model is being told those values exist but it cannot see what they are, so it falls back to guessing.
In Vapi, variable values only appear in your prompts if you reference them using double curly braces. You need to explicitly inject them somewhere in your system prompt where the model can read them, for example:
Workspace ID: {{workspaceId}} Referral ID: {{referralId}} Cause catalog: {{causeCatalogJson}}
Once those placeholders are in the prompt, the LLM will receive the real values on each call and can use the catalog to select the correct causeId and serviceType IDs, and will use your actual workspaceId and referralId when calling the tool.
The call on 019eaf7e not attempting the tool at all is consistent with this too. If the model never receives a valid catalog to parse, it may never reach the point of building a complete set of required fields, so it holds off on calling submit_job_form_secure.
Give that change a try and let me know how the next test calls go. Happy to help review your updated prompt if needed.