#why my functions are not being called by the prompt?
1 messages · Page 1 of 1 (latest)
Likeliest causes (and how to fix) based on the official docs:
-
Tools not actually attached to your agent config. Since July 23, 2025, the legacy prompt.tools field is rejected; you must reference standalone tools via prompt.tool_ids, and list built-in/system tools under prompt.built_in_tools. If you still send prompt.tools, functions won’t be available to the model. (elevenlabs.io)
-
Your LLM doesn’t support (or is unreliable at) function/tool calling. Pick a model with tool use support. ElevenLabs’ Custom LLM guides call this out explicitly (e.g., Together AI models with function calling) and the Cloudflare guide says to choose models that support function calling. The DeepSeek post also notes R1 itself does not support function calling, while the distilled Qwen variant does. Recent posts highlight Gemini Flash models as strong for tool/function calling. (elevenlabs.io)
-
Name/parameter mismatches. Tool and parameter names are case-sensitive and must exactly match what you registered (client tools) or defined (server tools). A mismatch prevents the call. (elevenlabs.io)
-
Client tool not registered or not wired to the Conversation. Ensure you register the function (ClientTools.register) and pass the ClientTools instance when creating the Conversation. If you expect the tool’s return value to be fed back to the LLM, enable “Wait for response” for that tool. Use the conversation transcript in the dashboard to verify the call was attempted. (elevenlabs.io)
-
Prompt doesn’t tell the model when to use the tool. Add explicit instructions/examples in the system prompt about when to call each tool; this measurably improves selection accuracy. See the server tools best practices and the general prompting guide. (elevenlabs.io)
-
Poor model choice for tool extraction. The docs note tool calling quality varies by LLM; prefer higher‑capability models and avoid ones known to struggle. (elevenlabs.io)
If you want, share your agent config (redact secrets) and which LLM you’re using—I can map it against the above checklist.
Sources:
Agent tools deprecation | ElevenLabs Documentation
Together AI | ElevenLabs Documentation
Client tools | ElevenLabs Documentation
Client tools | ElevenLabs Documentation
Server tools | ElevenLabs Documentation
Server tools | ElevenLabs Documentation
i am using the agents platform
If you’re on the ElevenLabs Agents Platform, tool/functions are invoked only when the LLM decides they’re appropriate. Use this checklist to ensure calls actually fire:
- Confirm the tool is attached the supported way. Tools are now standalone records referenced by prompt.tool_ids; the legacy prompt.tools field was deprecated (removed July 23, 2025). If you still send prompt.tools, the agent won’t see the tools. (elevenlabs.io)
- For Server (webhook) tools:
- Define method, URL, and parameters clearly; the LLM builds query/body/path params from your descriptions. Use path placeholders like /api/{id} and provide per-argument descriptions. (elevenlabs.io)
- If the API needs auth, configure a Workspace Auth connection (OAuth2 client credentials/JWT, Basic, Bearer, or custom headers) and attach it to the tool. (elevenlabs.io)
- Improve tool selection by: using intuitive tool and parameter names; adding explicit “when to use” guidance in the agent’s system prompt; and specifying multi-tool orchestration (e.g., “check availability before schedule”). (elevenlabs.io)
- Pick an LLM that handles tools well (recommended: GPT‑4o mini or Claude 3.5 Sonnet; avoid Gemini 1.5 Flash). (elevenlabs.io)
- For Client tools (SDK):
- Ensure the clientTools function names and parameter shapes in your app exactly match the tool configuration in the dashboard. (elevenlabs.io)
- If you expect the agent to wait for the client tool’s return value, mark the tool as “blocking conversation” in the UI; otherwise the agent assumes success and continues. (elevenlabs.io)
- If using MCP tools, check approval mode. With “Always Ask” or fine‑grained approvals enabled, the agent may wait for permission and appear to “not call” the tool. Set auto‑approved where appropriate. (elevenlabs.io)
- Verify whether calls are being attempted:
- Use Real‑time Monitoring (enterprise) to stream conversation events and observe tool activity live. (elevenlabs.io)
- Create Tool Call Tests to assert the agent uses the right tool with the right parameters in a given scenario. (elevenlabs.io)
- General reference on tool types and when to use them (Client, Server/Webhook, System) is here. (help.elevenlabs.io)
If you share which tool type you configured and how (method/URL, params, auth, model, and whether it’s blocking), I can map the exact field(s) to fix per the docs above.
my function is not being called and i dont understand why because the prompt looks good and all