Clear, practical technology insights BSOD Code Lookup · Windows Error Code Lookup · Wi-Fi Troubleshooting · PC Troubleshooting Checklist

ElevenAgents System Tools: Conversation Control and Function Calls

Choose ElevenAgents tools for call endings, language changes, transfers, pauses, DTMF, voicemail, and state updates, with valid function-call examples.

Table of Contents

ElevenAgents system tools control conversation behavior, including ending a call, changing language, transferring a conversation, and updating dynamic variables. They are platform-provided actions rather than custom webhook endpoints or functions implemented in your client app.

Choose a system tool for conversation control; use a webhook or another integration when you need to query or update an external business system. A call transfer can still have real-world effects, even though it is handled as a built-in action.

Available system tools

  • End call : Allows the agent to automatically end the conversation when the appropriate conditions are met.
  • Language detection : Allows the agent to automatically switch to the user's language throughout the conversation.
  • Agent transfer :  Switches conversations between AI agents based on defined conditions.
  • Call Transfer to Number : Transfers calls to external phone numbers or SIP URI addresses.
  • Skip turn : Allows the agent to skip their turn if the large language model (LLM) determines that the agent should not speak yet.
  • Play keypad touch tone : Allows the agent to play DTMF signals to interact with automated telephone systems and navigate menus.
  • Voicemail detection : Allows agents to automatically identify voicemail systems and optionally leave messages.
  • Update state : Allows the agent to update dynamic variables directly during the conversation using expressions.

Configure tools before testing the agent

Add the required system tools in the agent configuration and set their supported languages, transfer destinations, or state expressions as appropriate. For API-created agents, check the built-in tool configuration in your installed SDK. Enabling a tool and telling an agent when to use it are separate steps.

Use the current system tools reference for each tool's schema. A custom LLM must return the function calls expected by the platform.

Custom LLM tool calls

When using a custom large language model (LLM) with ElevenLabs agents, system tools are exposed as function definitions that your LLM can call. Each system tool has specific parameters and trigger conditions:

The examples below illustrate individual tool calls. They are not complete API requests; use the schema provided to your model for the configured tool.

End call

Purpose : To automatically end the conversation when the appropriate conditions are met.

Activation conditions : LLM should call this tool when:

  • The main task has been completed and the user is satisfied.
  • The conversation came to a natural conclusion with mutual agreement from both sides.
  • The user clearly expressed a desire to end the conversation.

Parameters :

  • reason (string, required): Reason for ending the call.
  • message (string, optional): A farewell message sent to the user before the call ends.

Function call format :

{
  "type": "function",
  "function": {
    "name": "end_call",
    "arguments": "{"reason":"Task completed successfully","message":"Thank you for using our service. Have a great day!"}"
  }
}

Implementation : Configure it as a system tool in your agent settings. The Large Language Model (LLM) will receive detailed instructions on when to call this function.

Language detection

Purpose : To automatically switch to the user's language during a conversation.

Activation conditions : LLM should call this tool when:

  • The user is using a language different from the language being used in the conversation.
  • Users requested a clear language switch.
  • The conversation needs multilingual support.

Parameters :

  • reason (string, required): Reason for changing the language
  • language (string, required): Language code to convert to (must be in the list of supported languages)

Function call format :

{
  "type": "function",
  "function": {
    "name": "language_detection",
    "arguments": "{"reason":"User requested Spanish","language":"es"}"
  }
}

Deployment : Configure supported languages ​​in the agent settings and add a system language detection tool. Test that the agent switches its responses to the selected supported language.

Agent transfer

Purpose : To transfer conversations between specialized AI agents based on user needs.

Activation conditions : Configure the agent to call this tool when:

  • The user's request requires specialized knowledge or other capabilities that the current agent does not possess.
  • The agent is currently unable to adequately process the user's query.
  • The flow of conversation suggests the need for a different type of agent.

Parameters :

  • reason (string, optional): Reason for performing agent switching.
  • agent_number (integer, required): The index (starting from 0) of the agent to which to transfer (based on the configured transfer rules).

Function call format :

{
  "type": "function",
  "function": {
    "name": "transfer_to_agent",
    "arguments": "{"reason":"User needs billing support","agent_number":0}"
  }
}

Implementation : Define conversation transfer rules by setting conditions corresponding to specific agent IDs. Configure to specify which agents the current agent can transfer conversations to. In the conversation transfer configuration, agents are identified by numbers starting from 0.

Transfer to a phone number

Purpose : To transfer the conversation to a human agent in cases where AI support is insufficient.

Activation conditions : The LLM should call this tool when:

  • Complex problems have emerged that require human evaluation.
  • Users directly request human assistance.
  • The AI ​​has reached the limit of its processing power for that specific request.
  • The handover protocols are enabled.

Parameters :

  • reason (string, optional): Reason for transferring the conversation.
  • transfer_number (string, required): The phone number to which the call should be transferred (must match the numbers already configured).
  • client_message (string, required): Message/notification for the client while waiting for the conversation to be transferred.
  • agent_message (string, required): Message/notification for the human agent receiving the call.

Function call format :

{
  "type": "function",
  "function": {
    "name": "transfer_to_number",
    "arguments": "{"reason":"Complex billing issue","transfer_number":"+15551234567","client_message":"I'm transferring you to a billing specialist who can help with your account.","agent_message":"Customer has a complex billing dispute about order #12345 from last month."}"
  }
}

Deployment : Configure forwarded phone numbers and associated conditions. Set up message content for both clients and call center operators. Supports both Twilio and SIP trunking.

Skip turn

Purpose : To allow the agent to pause and wait for a response from the user without providing a verbal response.

Activation conditions : The Large Language Model (LLM) should call this tool when:

  • Users express a need for more time ('Give me some time', 'Let me think about it').
  • The user requests to pause the conversation.
  • The agent realized that users needed time to process the information.

Parameters :

  • reason (string, optional): Reason explaining why a pause is needed (can be entered freely)

Function call format :

{
  "type": "function",
  "function": {
    "name": "skip_turn",
    "arguments": "{"reason":"User requested time to think"}"
  }
}

Deployment : No additional configuration is required. This tool simply signals the agent to remain silent until the user speaks again.

Play keypad touch tones (DTMF)

Parameters :

  • reason (string, optional): Reason for playing DTMF sound (e.g., 'transfer to extension', 'enter PIN')
  • dtmf_tones (string, required): The DTMF string to play. Valid characters: 0-9, *, #, w (0.5-second pause), W (1-second pause)

Function call format :

{
  "type": "function",
  "function": {
    "name": "play_keypad_touch_tone",
    "arguments": "{"reason":"Navigating to customer service","dtmf_tones":"2"}"
  }
}

Voicemail detection

Parameters :

  • reason (string, required): Reason for voicemail detection (e.g., 'automated greeting detected', 'no human response')

Function call format :

{
  "type": "function",
  "function": {
    "name": "voicemail_detection",
    "arguments": "{"reason":"Automated greeting detected with request to leave message"}"
  }
}

Update state

Purpose : To allow the agent to update one or more dynamic variables based on the conversation content without calling an external API.

Activation conditions : LLM should call this tool when:

  • The conversation provides information that needs to be recorded (e.g., signals to be transferred, selected options, or user-provided values).
  • A configured state update operation depends on the value that the LLM needs to evaluate or extract from the conversation.

Parameters :

The function's parameters depend on how the tool is configured. Each state update operation using the value extracted by the LLM adds an attribute to the schema; this attribute is named after the corresponding variable and has a data type of string, number, or boolean. State update operations based solely on constants or other variables do not add any parameters.

Function call format :

{
  "type": "function",
  "function": {
    "name": "update_state",
    "arguments": "{"should_escalate":true}"
  }
}

Implementation : The agent evaluates all configured expressions using the extracted parameters plus the current dynamic variables of the conversation, then assigns the results to the corresponding dynamic variables. No external requests are made.

API configuration and version checks

For tools supported by your SDK, configure built-in system tools in the agent prompt configuration. Python uses names such as built_in_tools; JavaScript SDK models may use camelCase. Match the current SDK schema rather than translating identifiers by guesswork.

The Update state tool is documented as dashboard-configurable; do not assume it can be created through the same API pattern as End call. See the Update state reference for current support.

Test the behavior, not just the function format

  • End call: test an explicit goodbye and a user who still has a follow-up question.
  • Language detection: test a supported language switch and an unsupported request.
  • Transfers: verify the configured destination, handoff messages, and failure behavior using a test call.
  • Skip turn: check that the agent waits when asked and resumes appropriately.
  • State updates: inspect the resulting variables and confirm that missing values do not silently overwrite useful state.

Check the call log for the selected function and its arguments. Valid JSON alone does not show that the agent chose the right action. For background, see common AI terminology. For the external-request model that system tools differ from, see our REST API overview.

Discussion

Reader Comments 0

Sign in with email or Google to join the discussion.