> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Tool hinzufügen

POST https://api.elevenlabs.io/v1/convai/tools
Content-Type: application/json

Fügen Sie den verfügbaren Tools im Workspace ein neues Tool hinzu.

Reference: https://elevenlabs.io/docs/api-reference/tools/create

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Body (application/json)

This endpoint expects a ToolRequestModel.

- `tool_config` (ToolRequestModelToolConfig, required) — Konfiguration für das Tool
- `response_mocks` (list of ToolResponseMockConfig-Input, optional, nullable) — Mock-Antworten mit optionalen Parameterbedingungen. Sie werden von oben nach unten ausgewertet; der erste Treffer gewinnt.

## Response

### 200

Erfolgreiche Antwort

- `id` (string, required)
- `tool_config` (ToolResponseModelToolConfig, required) — Der Tool-Typ
- `access_info` (ResourceAccessInfo, required)
- `usage_stats` (ToolUsageStatsResponseModel, required)
- `response_mocks` (list of ToolResponseMockConfig-Output, optional, nullable) — Mock-Antworten mit optionalen Parameterbedingungen. Sie werden von oben nach unten ausgewertet; der erste Treffer gewinnt.

## Errors

### 422 Unprocessable Entity Error

Validierungsfehler

- `detail` (list of ValidationError, optional)

## Types

### ToolRequestModelToolConfig

Konfiguration für das Tool

- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — Beschreibung, wann das Tool verwendet werden soll und was es tut.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Konfiguration für dynamische Variablen
  - `execution_mode` (enum, optional, default: immediate) — Legt fest, wann und wie das Tool ausgeführt wird: 'immediate' führt das Tool sofort aus, wenn das LLM es anfordert, 'post_tool_speech' wartet, bis der Agent zu Ende gesprochen hat, und 'async' führt das Tool im Hintergrund ohne Blockierung aus – ideal für lang laufende Vorgänge.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Wenn true, soll der Aufruf dieses Tools die Unterhaltung blockieren, bis der Client antwortet und die Antwort an das LLM übergeben wird. Wenn false, wird die Unterhaltung fortgesetzt, ohne auf die Antwort des Clients zu warten. Dies eignet sich, um Nutzern Inhalte anzuzeigen, ohne die Unterhaltung zu blockieren.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Input, optional, nullable) — Schema für alle an den Client zu übergebenden Parameter
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden, bis der Tool-Aufruf abgeschlossen ist. Muss zwischen 1 und 120 Sekunden (einschließlich) liegen oder -1, um unbegrenzt auf die Antwort des Clients zu warten (erfordert expects_response).
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.
- `type`: `mcp` (mcp)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolRequestModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `description` (string, optional, default: ) — Beschreibung, wann das Tool verwendet werden soll und was es tut. Leer lassen, um die für den jeweiligen Tooltyp optimierte Standardbeschreibung zu verwenden.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs.
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Input, required) — Das Schema für den ausgehenden Webhook, einschließlich Parameter und URL-Spezifikation
  - `description` (string, required) — Beschreibung, wann das Tool verwendet werden soll und was es tut.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Konfiguration für dynamische Variablen
  - `execution_mode` (enum, optional, default: immediate) — Legt fest, wann und wie das Tool ausgeführt wird: 'immediate' führt das Tool sofort aus, wenn das LLM es anfordert, 'post_tool_speech' wartet, bis der Agent zu Ende gesprochen hat, und 'async' führt das Tool im Hintergrund ohne Blockierung aus – ideal für lang laufende Vorgänge.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Ob einer Weiterleitung vom Endpunkt gefolgt und die endgültige Antwort zurückgegeben werden soll. Einer Weiterleitung wird als GET ohne Request-Body gefolgt. Keine für dieses Tool konfigurierte Einstellung (Header, Authentifizierung, Client-Zertifikat) wird an das Weiterleitungsziel gesendet. Sowohl der Endpunkt als auch das Weiterleitungsziel müssen HTTPS verwenden. Wird von API-Integrationstools nicht unterstützt.
  - `follow_redirects_allowed_domains` (list of string, optional) — Domains, auf die eine Weiterleitung verweisen darf, z. B. 'test.example.com'. Erforderlich beim Folgen von Weiterleitungen; Ziele außerhalb der Liste werden abgelehnt.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs. Muss zwischen 5 und 300 Sekunden liegen, einschließlich.
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.

### ToolResponseMockConfig-Input

- `mock_result` (string, required) — Der Rückgabewert, den das LLM sieht, wenn dieser Mock aktiv ist.
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — Wenn die Liste leer ist, wird der Mock immer aktiviert.
- `is_error` (boolean, optional, default: false) — Wenn true, wird das Mock-Ergebnis dem LLM als Tool-Fehler statt als erfolgreiches Ergebnis bereitgestellt.

### ToolResponseModelToolConfig

Der Tool-Typ

- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — Beschreibung, wann das Tool verwendet werden soll und was es tut.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Konfiguration für dynamische Variablen
  - `execution_mode` (enum, optional, default: immediate) — Legt fest, wann und wie das Tool ausgeführt wird: 'immediate' führt das Tool sofort aus, wenn das LLM es anfordert, 'post_tool_speech' wartet, bis der Agent zu Ende gesprochen hat, und 'async' führt das Tool im Hintergrund ohne Blockierung aus – ideal für lang laufende Vorgänge.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Wenn true, soll der Aufruf dieses Tools die Unterhaltung blockieren, bis der Client antwortet und die Antwort an das LLM übergeben wird. Wenn false, wird die Unterhaltung fortgesetzt, ohne auf die Antwort des Clients zu warten. Dies eignet sich, um Nutzern Inhalte anzuzeigen, ohne die Unterhaltung zu blockieren.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Output, optional, nullable) — Schema für alle an den Client zu übergebenden Parameter
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden, bis der Tool-Aufruf abgeschlossen ist. Muss zwischen 1 und 120 Sekunden (einschließlich) liegen oder -1, um unbegrenzt auf die Antwort des Clients zu warten (erfordert expects_response).
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.
- `type`: `mcp` (mcp)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolResponseModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `description` (string, optional, default: ) — Beschreibung, wann das Tool verwendet werden soll und was es tut. Leer lassen, um die für den jeweiligen Tooltyp optimierte Standardbeschreibung zu verwenden.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs.
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Output, required) — Das Schema für den ausgehenden Webhook, einschließlich Parameter und URL-Spezifikation
  - `description` (string, required) — Beschreibung, wann das Tool verwendet werden soll und was es tut.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Konfiguration für dynamische Variablen
  - `execution_mode` (enum, optional, default: immediate) — Legt fest, wann und wie das Tool ausgeführt wird: 'immediate' führt das Tool sofort aus, wenn das LLM es anfordert, 'post_tool_speech' wartet, bis der Agent zu Ende gesprochen hat, und 'async' führt das Tool im Hintergrund ohne Blockierung aus – ideal für lang laufende Vorgänge.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Ob einer Weiterleitung vom Endpunkt gefolgt und die endgültige Antwort zurückgegeben werden soll. Einer Weiterleitung wird als GET ohne Request-Body gefolgt. Keine für dieses Tool konfigurierte Einstellung (Header, Authentifizierung, Client-Zertifikat) wird an das Weiterleitungsziel gesendet. Sowohl der Endpunkt als auch das Weiterleitungsziel müssen HTTPS verwenden. Wird von API-Integrationstools nicht unterstützt.
  - `follow_redirects_allowed_domains` (list of string, optional) — Domains, auf die eine Weiterleitung verweisen darf, z. B. 'test.example.com'. Erforderlich beim Folgen von Weiterleitungen; Ziele außerhalb der Liste werden abgelehnt.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs. Muss zwischen 5 und 300 Sekunden liegen, einschließlich.
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.

### ResourceAccessInfo

- `is_creator` (boolean, required) — Ob der Nutzer, der die Anfrage stellt, den Agenten erstellt hat.
- `creator_name` (string, required) — Name des Erstellers des Agenten
- `creator_email` (string, required) — E-Mail-Adresse des Erstellers des Agents
- `role` (enum, required) — Die Rolle des Benutzers, der die Anfrage stellt
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `anonymous_access_level_override` (enum, optional, nullable) — Die Zugriffsebene für anonyme Nutzer. Bei None ist die Ressource nicht öffentlich freigegeben.
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `access_source` (enum, optional, nullable) — Warum der anfragende Nutzer Zugriff auf diese Ressource hat. 'creator' = der Aufrufer ist der Eigentümer. 'explicit' = der Aufrufer (oder eine seiner Workspace-Gruppen) ist zusätzlich zur workspaceweiten Gruppe „everyone“ in role_to_group_ids aufgeführt. 'workspace_default' = die workspaceweite Gruppe „everyone“ ist in role_to_group_ids aufgeführt (jedes nicht anonyme Workspace-Mitglied, einschließlich Administratoren, sieht diese Ressource). 'workspace_admin' = der Aufrufer ist Workspace-Administrator und der Administratorzugang ist der *einzige* Zugriffsweg; reserviert für Dokumente, die sonst niemand sehen kann. Ermöglicht der Benutzeroberfläche offenzulegen, warum ein Betrachter mit Administrator-Bypass ein Dokument sieht, das nicht explizit mit ihm geteilt wurde.
  - Allowed values: `creator`, `explicit`, `workspace_admin`, `workspace_default`

### ToolUsageStatsResponseModel

- `avg_latency_secs` (double, required)
- `total_calls` (integer, optional, default: 0) — Die Gesamtzahl der Aufrufe des Tools

### ToolResponseMockConfig-Output

- `mock_result` (string, required) — Der Rückgabewert, den das LLM sieht, wenn dieser Mock aktiv ist.
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — Wenn die Liste leer ist, wird der Mock immer aktiviert.
- `is_error` (boolean, optional, default: false) — Wenn true, wird das Mock-Ergebnis dem LLM als Tool-Fehler statt als erfolgreiches Ergebnis bereitgestellt.

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### DynamicVariableAssignment

Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen.

- `dynamic_variable` (string, required) — Der Name der dynamischen Variable, der der extrahierte Wert zugewiesen wird
- `value_path` (string, required) — Pfad in Punktnotation zum Extrahieren des Werts aus der Quelle (z. B. 'user.name' oder 'data.0.id')
- `source` ("response", optional, default: response) — Die Quelle, aus der der Wert extrahiert wird. Derzeit wird nur „response“ unterstützt.
- `sanitize` (boolean, optional, default: false) — Wenn true, wird der Wert dieser Zuweisung aus der Tool-Antwort entfernt, bevor sie an das LLM und Transkript gesendet wird, aber weiterhin für die Variablenzuweisung verarbeitet.
- `preserve_native_type` (boolean, optional, default: false) — Wenn true, werden nicht skalare Werte (Listen, Objekte), die aus der Tool-Antwort extrahiert werden, in ihrem nativen Typ gespeichert, statt in JSON-Strings umgewandelt zu werden. Aktivieren Sie dies, um extrahierte Arrays direkt als dynamische Listenvariablen zu verwenden.

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — Ein Wörterbuch mit Platzhaltern für dynamische Variablen und ihren Werten

### ObjectJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: object)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Wenn festgelegt, wird der gesamte Parameter zur Laufzeit mit dieser dynamischen Variable befüllt. Schließt sich gegenseitig mit description (vom LLM bereitgestellter Wert), constant_value und is_omitted aus.
- `constant_value` (map from string to any, optional, nullable) — Wenn festgelegt, verwendet das gesamte Objekt zur Laufzeit diesen konstanten JSON-Wert. Schließt sich gegenseitig mit description (vom LLM bereitgestelltes Objekt), dynamic_variable und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable und constant_value aus.
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyInput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — Wrapper für auf erforderliche Felder begrenzte anyOf/allOf-Kompositionseinschränkungen.

### ToolRequestModelToolConfigDiscriminatorMappingSystemParams

- `system_tool_type`: `end_call` (EndCallToolConfig)
- `system_tool_type`: `end_procedure` (EndProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures, optional)
- `system_tool_type`: `knowledge_base` (KnowledgeBaseToolConfig)
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag` (KnowledgeBaseRagToolConfig)
- `system_tool_type`: `language_detection` (LanguageDetectionToolConfig)
  - `only_at_conversation_start` (boolean, optional, default: false) — Wenn in den ersten 2 Nutzer-Turns kein Sprachwechsel erfolgt, schlagen spätere Versuche fehl und die Unterhaltung bleibt in der aktuellen Sprache. Erfolgt während dieser Turns ein Sprachwechsel, bleiben spätere Wechsel möglich. Aktivieren Sie dies, um die Wahrscheinlichkeit falscher Sprachwechsel zu verringern.
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Wenn true, generiert der Agent nach dem Abspielen von DTMF-Tönen keine weitere Sprache. Dadurch wird verhindert, dass die Sprache des Agenten IVR-Systeme stört.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — DTMF-Töne als Out-of-Band-RTP-Ereignisse (RFC 4733) statt als In-Band-Audio senden. Nur für aus SIP-Trunks importierte Nummern wirksam.
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — Sekunden, die nach skip_turn gewartet werden, bevor der Agent eine kontextbezogene Rückmeldung generiert. Der Timer „Unterhaltung nach Stille beenden“ wird während der Wartezeit pausiert. -1 deaktiviert die Wartezeit: Nach skip_turn bleibt der Agent still, bis der Aufrufer spricht, und dieser Timer läuft weiter. Gilt nur für Sprachunterhaltungen.
- `system_tool_type`: `start_procedure` (StartProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures, optional)
- `system_tool_type`: `transfer_to_agent` (TransferToAgentToolConfig)
  - `transfers` (list of AgentTransfer-Input, required)
- `system_tool_type`: `transfer_to_number` (TransferToNumberToolConfig)
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Ob dem Kunden während der Wartezeit auf die Weiterleitung eine Nachricht abgespielt werden soll. Aus Gründen der Abwärtskompatibilität ist der Standardwert true.
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — Optionale Nachricht, die bei erkannter Mailbox hinterlassen wird. Wenn nicht angegeben, wird der Anruf sofort beendet, sobald eine Mailbox erkannt wird. Unterstützt dynamische Variablen, z. B. \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}.

### WebhookToolApiSchemaConfig-Input

- `url` (string, required) — Die URL, an die der Webhook gesendet wird. Kann Pfadparameter enthalten, z. B. [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigInputRequestHeaders, optional) — Header, die in die Anfrage aufgenommen werden sollen
- `method` (enum, optional, default: GET) — Die für den Webhook zu verwendende HTTP-Methode
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Schema für Pfadparameter, falls vorhanden. Die Schlüssel sollten den Platzhaltern in der URL entsprechen.
- `query_params_schema` (QueryParamsJsonSchema-Input, optional, nullable) — Schema für Query-Parameter, falls vorhanden. Diese werden als Query-Parameter an das Ende der URL angehängt. Hinweis: Eigenschaften in einem Query-Parameter müssen alle literale Typen sein.
- `request_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — Schema für die Body-Parameter, falls vorhanden. Wird für POST-/PATCH-/PUT-Anfragen verwendet. Das Schema sollte ein Objekt sein, das als JSON-Body gesendet wird.
- `response_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — Schema, das die erwartete Struktur des Antworttextkörpers beschreibt. Nur zur Dokumentation; wird nicht an das LLM übermittelt.
- `response_filter` (ResponseFilter, optional, nullable) — Optionaler Allowlist-Filter, der auf die Antwort angewendet wird, bevor das LLM sie sieht, damit große Antworten den Kontext nicht überladen. Standardmäßig wird die vollständige Antwort verwendet.
- `content_type` (enum, optional, default: application/json) — Inhaltstyp für den Anfrage-Body. Gilt nur für POST-/PUT-/PATCH-Anfragen.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — URL-Platzhalter werden über die Authentifizierungsverbindung aufgelöst (z. B. über UrlSecretAuthConnection eingefügte Secrets) und nicht über path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigInputAuthConnection, optional, nullable) — Optionale Authentifizierungsverbindung zur Anmeldung bei diesem Webhook

### UnitTestToolCallParameter

- `eval` (UnitTestToolCallParameterEval, required)
- `path` (string, required)

### ObjectJsonSchemaProperty-Output

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Wenn festgelegt, wird der gesamte Parameter zur Laufzeit mit dieser dynamischen Variable befüllt. Schließt sich gegenseitig mit description (vom LLM bereitgestellter Wert), constant_value und is_omitted aus.
- `constant_value` (map from string to any, optional, nullable) — Wenn festgelegt, verwendet das gesamte Objekt zur Laufzeit diesen konstanten JSON-Wert. Schließt sich gegenseitig mit description (vom LLM bereitgestelltes Objekt), dynamic_variable und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable und constant_value aus.
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyOutput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — Wrapper für auf erforderliche Felder begrenzte anyOf/allOf-Kompositionseinschränkungen.

### ToolResponseModelToolConfigDiscriminatorMappingSystemParams

- `system_tool_type`: `end_call` (EndCallToolConfig)
- `system_tool_type`: `end_procedure` (EndProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures, optional)
- `system_tool_type`: `knowledge_base` (KnowledgeBaseToolConfig)
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag` (KnowledgeBaseRagToolConfig)
- `system_tool_type`: `language_detection` (LanguageDetectionToolConfig)
  - `only_at_conversation_start` (boolean, optional, default: false) — Wenn in den ersten 2 Nutzer-Turns kein Sprachwechsel erfolgt, schlagen spätere Versuche fehl und die Unterhaltung bleibt in der aktuellen Sprache. Erfolgt während dieser Turns ein Sprachwechsel, bleiben spätere Wechsel möglich. Aktivieren Sie dies, um die Wahrscheinlichkeit falscher Sprachwechsel zu verringern.
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Wenn true, generiert der Agent nach dem Abspielen von DTMF-Tönen keine weitere Sprache. Dadurch wird verhindert, dass die Sprache des Agenten IVR-Systeme stört.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — DTMF-Töne als Out-of-Band-RTP-Ereignisse (RFC 4733) statt als In-Band-Audio senden. Nur für aus SIP-Trunks importierte Nummern wirksam.
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — Sekunden, die nach skip_turn gewartet werden, bevor der Agent eine kontextbezogene Rückmeldung generiert. Der Timer „Unterhaltung nach Stille beenden“ wird während der Wartezeit pausiert. -1 deaktiviert die Wartezeit: Nach skip_turn bleibt der Agent still, bis der Aufrufer spricht, und dieser Timer läuft weiter. Gilt nur für Sprachunterhaltungen.
- `system_tool_type`: `start_procedure` (StartProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures, optional)
- `system_tool_type`: `transfer_to_agent` (TransferToAgentToolConfig)
  - `transfers` (list of AgentTransfer-Output, required)
- `system_tool_type`: `transfer_to_number` (TransferToNumberToolConfig)
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Ob dem Kunden während der Wartezeit auf die Weiterleitung eine Nachricht abgespielt werden soll. Aus Gründen der Abwärtskompatibilität ist der Standardwert true.
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — Optionale Nachricht, die bei erkannter Mailbox hinterlassen wird. Wenn nicht angegeben, wird der Anruf sofort beendet, sobald eine Mailbox erkannt wird. Unterstützt dynamische Variablen, z. B. \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}.

### WebhookToolApiSchemaConfig-Output

- `url` (string, required) — Die URL, an die der Webhook gesendet wird. Kann Pfadparameter enthalten, z. B. [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigOutputRequestHeaders, optional) — Header, die in die Anfrage aufgenommen werden sollen
- `method` (enum, optional, default: GET) — Die für den Webhook zu verwendende HTTP-Methode
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Schema für Pfadparameter, falls vorhanden. Die Schlüssel sollten den Platzhaltern in der URL entsprechen.
- `query_params_schema` (QueryParamsJsonSchema-Output, optional, nullable) — Schema für Query-Parameter, falls vorhanden. Diese werden als Query-Parameter an das Ende der URL angehängt. Hinweis: Eigenschaften in einem Query-Parameter müssen alle literale Typen sein.
- `request_body_schema` (ObjectJsonSchemaProperty-Output, optional, nullable) — Schema für die Body-Parameter, falls vorhanden. Wird für POST-/PATCH-/PUT-Anfragen verwendet. Das Schema sollte ein Objekt sein, das als JSON-Body gesendet wird.
- `response_body_schema` (ObjectJsonSchemaProperty-Output, optional, nullable) — Schema, das die erwartete Struktur des Antworttextkörpers beschreibt. Nur zur Dokumentation; wird nicht an das LLM übermittelt.
- `response_filter` (ResponseFilter, optional, nullable) — Optionaler Allowlist-Filter, der auf die Antwort angewendet wird, bevor das LLM sie sieht, damit große Antworten den Kontext nicht überladen. Standardmäßig wird die vollständige Antwort verwendet.
- `content_type` (enum, optional, default: application/json) — Inhaltstyp für den Anfrage-Body. Gilt nur für POST-/PUT-/PATCH-Anfragen.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — URL-Platzhalter werden über die Authentifizierungsverbindung aufgelöst (z. B. über UrlSecretAuthConnection eingefügte Secrets) und nicht über path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigOutputAuthConnection, optional, nullable) — Optionale Authentifizierungsverbindung zur Anmeldung bei diesem Webhook

### ValidationErrorLocItems

### ObjectJsonSchemaPropertyInput

### RequiredConstraints

Wrapper für auf erforderliche Felder begrenzte anyOf/allOf-Kompositionseinschränkungen.

- `any_of` (list of RequiredConstraint, optional)
- `all_of` (list of RequiredConstraint, optional)

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures

### AgentTransfer-Input

- `condition` (string, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `node_id` (string, optional, nullable)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional, nullable)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — Legt fest, ob TTS-Client-Überschreibungen auf den weitergeleiteten Agenten übertragen werden sollen.
- `preserve_voice_settings` (boolean, optional, default: false) — Legt fest, ob die Basisstimme, das TTS-Modell und die Stimmeinstellungen auf den übertragenen Agenten übernommen werden sollen.

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItems, optional) — Benutzerdefinierte SIP-Header, die bei der Gesprächsweiterleitung eingeschlossen werden. Jeder Header kann entweder ein statischer Wert oder ein Verweis auf eine dynamische Variable sein.
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — Wenn True, wird auf dem ursprünglichen Anrufzweig ein Klingelton wiedergegeben, während eine SIP-REFER-Weiterleitung abgeschlossen wird. Der Ton wird über RTP an den SIP-Peer übertragen, der den REFER ausführt. Deaktivieren Sie dies, wenn das empfangende System, z. B. ein SBC oder Contact Center, ihn nicht hören soll. Wenn deaktiviert, hört der Anrufer bis zum Abschluss der Weiterleitung Stille. Nur für SIP-REFER-Weiterleitungen.
- `uui` (UUITransferConfig, optional, nullable) — User-to-User Information (RFC 7433), die SIP-REFER-Weiterleitungen beigefügt wird. Überträgt den Anrufkontext, etwa CRM-Identifikatoren oder den Eskalationsgrund, über die Weiterleitungsgrenze hinweg.
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional, nullable) — Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl). Kann ein statischer Wert oder ein Verweis auf eine dynamische Variable sein. Verwenden Sie 'w' für eine Pause von 0,5 Sekunden. Nur für Twilio-Weiterleitungen unterstützt.
- `phone_number` (string, optional, nullable, deprecated)

### WebhookToolApiSchemaConfigInputRequestHeaders

### LiteralJsonSchemaProperty

Schema-Eigenschaft für literale JSON-Typen. WICHTIG: Es kann nur EINES der folgenden Felder festgelegt werden: description (LLM liefert Wert), dynamic_variable (Wert aus Variable), is_system_provided (System liefert Wert), constant_value (fester Wert) oder is_omitted (Parameter wird ausgelassen). Diese schließen sich gegenseitig aus.

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — Die Beschreibung der Eigenschaft. Wenn festgelegt, stellt das LLM den Wert anhand dieser Beschreibung bereit. Nicht gleichzeitig mit dynamic_variable, is_system_provided, constant_value und is_omitted verwendbar.
- `enum` (list of string, optional, nullable) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — Wenn true, wird der Wert vom System zur Laufzeit ausgefüllt. Wird von API-Integration-Webhook-Tools für Vorlagen verwendet. Schließt sich gegenseitig mit description, dynamic_variable, constant_value und is_omitted aus.
- `dynamic_variable` (string, optional, default: ) — Der Name der dynamischen Variable, die für den Wert dieser Eigenschaft verwendet werden soll. Kann nicht zusammen mit description, is_system_provided, constant_value und is_omitted verwendet werden.
- `allowed_values` (AllowedValues, optional, nullable) — Serverseitige Ablehnungsprüfung für einen von der LLM bereitgestellten Wert: Die Laufzeit lehnt jeden Wert außerhalb der von diesem Objekt benannten zulässigen Menge ab. Die Menge wird der LLM nicht als Enum mitgeteilt. Wird nur unterstützt, wenn die Wertquelle `description` ist; eine Kombination mit dynamic_variable, is_system_provided, constant_value oder is_omitted wird abgelehnt.
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional, nullable, default: ) — Ein konstanter Wert für diese Eigenschaft. Schließt sich gegenseitig mit description, dynamic_variable, is_system_provided und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable, is_system_provided und constant_value aus.
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — VERALTET: Verwenden Sie stattdessen `allowed_values`. Wenn festgelegt, liefert das LLM den Wert, aber die Laufzeitumgebung lehnt jeden Wert ab, der nicht in der Liste dieser dynamischen Variable enthalten ist (muss ein JSON-Array wie ["ws_alpha", "ws_beta"] sein). Verwenden Sie dies, damit das LLM aus einer serverseitig verifizierten Menge auswählen kann (z. B. den IDs, auf die der aktuelle Benutzer zugreifen darf). Erfordert description; schließt sich gegenseitig mit dynamic_variable, is_system_provided, constant_value und is_omitted aus.

### QueryParamsJsonSchema-Input

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### ResponseFilter

Konfiguration zum Filtern von Tool-Antworten, bevor sie für den Agent sichtbar sind.

- `mode` (enum, optional, default: all) — Controls how tool responses are filtered. 'all' returns entire response, 'allow' returns only specified paths, 'hide_all' hides the entire response.
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — Pfade in Punktnotation, die einbezogen werden, wenn der Modus 'allow' ist (z. B. ['ticket.id', 'ticket.status']).
- `content_type` ("application/json", optional, default: application/json) — Inhaltstyp für die Antwortfilterung. Nur Antworten vom Typ „application/json“ werden gefiltert.

### WebhookToolApiSchemaConfigInputAuthConnection

Optionale Authentifizierungsverbindung zur Anmeldung bei diesem Webhook

### UnitTestToolCallParameterEval

- `type`: `anything` (MatchAnythingParameterEvaluationStrategy)
- `type`: `exact` (ExactParameterEvaluationStrategy)
  - `expected_value` (string, required) — Der genaue Zeichenfolgenwert, dem der Parameter entsprechen muss.
- `type`: `llm` (LLMParameterEvaluationStrategy)
  - `description` (string, required) — Eine Beschreibung der für den Test zu verwendenden Bewertungsstrategie.
- `type`: `regex` (RegexParameterEvaluationStrategy)
  - `pattern` (string, required) — Ein Regex-Muster, mit dem die Antwort des Agenten abgeglichen wird.

### ObjectJsonSchemaPropertyOutput

### AgentTransfer-Output

- `condition` (string, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `node_id` (string, optional, nullable)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional, nullable)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — Legt fest, ob TTS-Client-Überschreibungen auf den weitergeleiteten Agenten übertragen werden sollen.
- `preserve_voice_settings` (boolean, optional, default: false) — Legt fest, ob die Basisstimme, das TTS-Modell und die Stimmeinstellungen auf den übertragenen Agenten übernommen werden sollen.

### WebhookToolApiSchemaConfigOutputRequestHeaders

### QueryParamsJsonSchema-Output

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### WebhookToolApiSchemaConfigOutputAuthConnection

Optionale Authentifizierungsverbindung zur Anmeldung bei diesem Webhook

### ArrayJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: array)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Wenn festgelegt, wird der gesamte Parameter zur Laufzeit mit dieser dynamischen Variable befüllt. Schließt sich gegenseitig mit description (vom LLM bereitgestellter Wert), constant_value und is_omitted aus.
- `constant_value` (list of any, optional, nullable) — Wenn festgelegt, verwendet das gesamte Array zur Laufzeit diesen konstanten Wert. Schließt sich gegenseitig mit description (vom LLM bereitgestelltes Array), dynamic_variable und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable und constant_value aus.
- `type` ("array", optional, default: array)
- `items` (ArrayJsonSchemaPropertyInputItems, optional, default: {"allowed_values_dynamic_variable":"","constant_value":"","description":"Array element","dynamic_variable":"","is_omitted":false,"is_system_provided":false,"type":"string"}) — Schema für Array-Elemente.

### RequiredConstraint

Eine Menge von Feldern, die alle vorhanden sein müssen, um diese Einschränkung zu erfüllen.

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — Prozedur-ID
- `version_id` (string, required) — Versions-ID der Verfahrensversion.

### ProcedureDraftRef

- `procedure_id` (string, required) — Prozedur-ID
- `version_id` (any, optional)

### PhoneNumberTransferTransferDestination

- `type`: `phone` (PhoneNumberTransferDestination)
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable` (PhoneNumberDynamicVariableTransferDestination)
  - `phone_number` (string, required)
- `type`: `sip_uri` (SIPUriTransferDestination)
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable` (SIPUriDynamicVariableTransferDestination)
  - `sip_uri` (string, required)

### PhoneNumberTransferCustomSipHeadersItems

- `type`: `dynamic` (CustomSIPHeaderWithDynamicVariable)
  - `key` (string, required) — Der SIP-Headername (z. B. 'X-Customer-ID')
  - `value` (string, required) — Der aufzulösende Name der dynamischen Variable
- `type`: `static` (CustomSIPHeader)
  - `key` (string, required) — Der SIP-Headername (z. B. 'X-Customer-ID')
  - `value` (string, required) — Der Header-Wert

### UUITransferConfig

User-to-User-Information-Umschlag für SIP-REFER-Weiterleitungen (RFC 7433). Ausgehende Payloads sind hexadezimal codiert (die einzige in RFC 7433 definierte Codierung). Die Protokolldiskriminator-Achse ermöglicht, plattformspezifische Formate (Talkdesk, Genesys, ...) per Konfiguration auszudrücken, statt über verstreute Weiterleitungs-Flags. Weitere Achsen (ASCII-Codierung, Header-Name, Zweck-/Inhaltsparameter) können hier ergänzt werden, ohne das Weiterleitungsmodell anzupassen.

- `data` (string, required) — UUI-Payload, die bei SIP-REFER-Weiterleitungen gesendet wird. Unterstützt eingebettete dynamische Variablen und wird bei der Weiterleitung hexadezimal codiert.
- `protocol_discriminator` (string, optional, nullable) — Optionaler Ein-Oktett-Protokolldiskriminator (zwei Hexadezimalziffern, z. B. '00'). Erforderlich für Plattformen wie Genesys Cloud, die andernfalls das erste Oktett der Payload entfernen. Für Plattformen wie Talkdesk, die eine reine Hex-Payload erwarten, nicht festlegen.
- `protocol_discriminator_mode` (enum, optional, default: prefix) — Wie protocol\_discriminator angehängt wird. 'prefix' stellt das Oktett der hexadezimalen Nutzlast voran (User-to-User=XX\<hex>;encoding=hex). 'pd\_parameter' sendet es als separaten Parameter (User-to-User=\<hex>;pd=XX;encoding=hex). Wird ignoriert, wenn protocol\_discriminator nicht festgelegt ist.
  - Allowed values: `prefix`, `pd_parameter`

### PhoneNumberTransferPostDialDigits

Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl). Kann ein statischer Wert oder ein Verweis auf eine dynamische Variable sein. Verwenden Sie 'w' für eine Pause von 0,5 Sekunden. Nur für Twilio-Weiterleitungen unterstützt.

- `type`: `dynamic` (PostDialDigitsDynamicVariable)
  - `value` (string, required) — Der aufzulösende Name der dynamischen Variable
- `type`: `static` (PostDialDigitsStatic)
  - `value` (string, required) — Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl)

### ConvAISecretLocator

Wird verwendet, um auf ein Secret aus dem Secret-Speicher des Agenten zu verweisen.

- `secret_id` (string, required)

### ConvAIDynamicVariable

Wird verwendet, um auf eine dynamische Variable zu verweisen.

- `variable_name` (string, required)

### ConvAIEnvVarLocator

Wird verwendet, um über ihr Label auf eine Umgebungsvariable zu verweisen.

- `env_var_label` (string, required)

### LiteralJsonSchemaPropertyType

### AllowedValues

- `dynamic_variable` (string, required) — Name einer dynamischen Variablen, die zu einem JSON-Array zulässiger Werte aufgelöst werden muss, z. B. ["ws_alpha", "ws_beta"]. Systemvariablen funktionieren nur, wenn sie zu einer Liste aufgelöst werden.

### LiteralJsonSchemaPropertyConstantValue

Ein konstanter Wert für diese Eigenschaft. Schließt sich gegenseitig mit description, dynamic_variable, is_system_provided und is_omitted aus.

### AuthConnectionLocator

Wird verwendet, um auf eine Authentifizierungsverbindung aus dem Speicher für Authentifizierungsverbindungen des Workspace zu verweisen.

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

Verweist per Label auf eine Umgebungsvariable vom Typ 'auth_connection'. Zur Laufzeit wird die Authentifizierungsverbindung für die aktuelle Umgebung aufgelöst, wobei auf die Standardumgebung zurückgegriffen wird.

- `env_var_label` (string, required)

### ArrayJsonSchemaProperty-Output

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Wenn festgelegt, wird der gesamte Parameter zur Laufzeit mit dieser dynamischen Variable befüllt. Schließt sich gegenseitig mit description (vom LLM bereitgestellter Wert), constant_value und is_omitted aus.
- `constant_value` (list of any, optional, nullable) — Wenn festgelegt, verwendet das gesamte Array zur Laufzeit diesen konstanten Wert. Schließt sich gegenseitig mit description (vom LLM bereitgestelltes Array), dynamic_variable und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable und constant_value aus.
- `type` ("array", optional, default: array)
- `items` (ArrayJsonSchemaPropertyOutputItems, optional, default: {"allowed_values_dynamic_variable":"","constant_value":"","description":"Array element","dynamic_variable":"","is_omitted":false,"is_system_provided":false,"type":"string"}) — Schema für Array-Elemente.

### ArrayJsonSchemaPropertyInputItems

Schema für Array-Elemente.

### ArrayJsonSchemaPropertyOutputItems

Schema für Array-Elemente.

## Examples

**Request**

```json
{
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  }
}
```

**Response**

```json
{
  "id": "string",
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  },
  "access_info": {
    "is_creator": true,
    "creator_name": "John Doe",
    "creator_email": "john.doe@example.com",
    "role": "admin",
    "access_source": "creator"
  },
  "usage_stats": {
    "avg_latency_secs": 1.1,
    "total_calls": 0
  },
  "response_mocks": [
    {
      "mock_result": "string",
      "parameter_conditions": [
        {
          "eval": {
            "description": "string",
            "type": "string"
          },
          "path": "string"
        }
      ],
      "is_error": false
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/tools"

payload = { "tool_config": {
        "type": "system",
        "name": "end_call",
        "params": { "system_tool_type": "end_call" },
        "description": ""
    } }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/tools';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"tool_config":{"type":"system","name":"end_call","params":{"system_tool_type":"end_call"},"description":""}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/convai/tools"

	payload := strings.NewReader("{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/convai/tools")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/convai/tools")
  .header("Content-Type", "application/json")
  .body("{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/convai/tools', [
  'body' => '{
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/tools");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["tool_config": [
    "type": "system",
    "name": "end_call",
    "params": ["system_tool_type": "end_call"],
    "description": ""
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/tools")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```