> 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.

# Aggiungi strumento

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

Aggiunge un nuovo strumento agli strumenti disponibili nel workspace.

Reference: https://elevenlabs.io/docs/eleven-agents/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) — Configurazione dello strumento
- `response_mocks` (list of ToolResponseMockConfigInput, optional) — Risposte mock con condizioni opzionali sui parametri. Vengono valutate dall'alto verso il basso; viene scelta la prima corrispondenza.

## Response

### 200

Risposta riuscita

- `id` (string, required)
- `tool_config` (ToolResponseModelToolConfig, required) — Il tipo di strumento
- `access_info` (ResourceAccessInfo, required)
- `usage_stats` (ToolUsageStatsResponseModel, required)
- `response_mocks` (list of ToolResponseMockConfigOutput, optional) — Risposte mock con condizioni opzionali sui parametri. Vengono valutate dall'alto verso il basso; viene scelta la prima corrispondenza.

## Errors

### 422 Tools Create Request Unprocessable Entity Error

Errore di convalida

- `detail` (list of ValidationError, optional)

## Types

### ToolRequestModelToolConfig

Configurazione dello strumento

- `type`: `client`
  - `description` (string, required) — Descrizione di quando usare lo strumento e di cosa fa.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configurazione per estrarre valori dalle risposte degli strumenti e assegnarli alle variabili dinamiche
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configurazione per le variabili dinamiche
  - `execution_mode` (enum, optional, default: immediate) — Determina quando e come viene eseguito lo strumento: 'immediate' esegue subito lo strumento quando viene richiesto dall'LLM, 'post_tool_speech' attende che l'agente finisca di parlare prima di eseguirlo, 'async' esegue lo strumento in background senza bloccare: ideale per operazioni di lunga durata.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Se true, la chiamata di questo strumento deve bloccare la conversazione finché il client non risponde con una risposta passata all'llm. Se false, la conversazione continuerà senza attendere la risposta del client; è utile per mostrare contenuti a un utente senza bloccare la conversazione.
  - `interruption_mode` (enum, optional, default: allow) — Controlla se l'utente può interrompere l'agente durante questa chiamata allo strumento. 'allow' (predefinito) consente all'utente di interrompere in qualsiasi momento, 'disable_during_tool' sopprime le interruzioni solo mentre lo strumento è in esecuzione, 'disable_during_tool_and_turn' sopprime le interruzioni mentre lo strumento è in esecuzione e per la risposta dell'agente successiva.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaPropertyInput, optional) — Schema per tutti i parametri da passare al client
  - `pre_tool_speech` (enum, optional, default: auto) — Controlla se l'agente parla prima che venga chiamato questo strumento. 'auto' (predefinito) decide in base alla latenza recente dello strumento, 'force' chiede sempre all'agente di parlare, 'off' disattiva completamente questa funzione indipendentemente dalla latenza.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Il tempo massimo in secondi di attesa per il completamento della chiamata allo strumento. Deve essere compreso tra 1 e 120 secondi inclusi, oppure -1 per attendere indefinitamente la risposta del client (richiede expects_response).
  - `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione. Se non specificato, non verrà riprodotto alcun suono di chiamata dello strumento.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina quando deve essere riprodotto il suono della chiamata dello strumento. 'auto' viene riprodotto solo quando è presente parlato prima dello strumento, mentre 'always' viene riprodotto a ogni chiamata dello strumento.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controlla come vengono elaborati gli errori degli strumenti prima di essere condivisi con l'agente. 'auto' determina la gestione in base al tipo di strumento (riassunto per le integrazioni native, nascosto per gli altri), 'summarized' invia un riepilogo generato da un LLM, 'passthrough' invia l'errore non elaborato, 'hide' non condivide l'errore con l'agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre questo strumento è in esecuzione.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, l'agente parlerà prima della chiamata allo strumento.
- `type`: `mcp`
  - `value` (any, required)
- `type`: `system`
  - `name` (string, required)
  - `params` (SystemToolConfigInputParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configurazione per estrarre valori dalle risposte degli strumenti e assegnarli alle variabili dinamiche
  - `description` (string, optional, default: ) — Descrizione di quando usare lo strumento e di cosa fa. Lascia vuoto per utilizzare la descrizione predefinita ottimizzata per il tipo di strumento specifico.
  - `interruption_mode` (enum, optional, default: allow) — Controlla se l'utente può interrompere l'agente durante questa chiamata allo strumento. 'allow' (predefinito) consente all'utente di interrompere in qualsiasi momento, 'disable_during_tool' sopprime le interruzioni solo mentre lo strumento è in esecuzione, 'disable_during_tool_and_turn' sopprime le interruzioni mentre lo strumento è in esecuzione e per la risposta dell'agente successiva.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controlla se l'agente parla prima che venga chiamato questo strumento. 'auto' (predefinito) decide in base alla latenza recente dello strumento, 'force' chiede sempre all'agente di parlare, 'off' disattiva completamente questa funzione indipendentemente dalla latenza.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Il tempo massimo in secondi di attesa per il completamento della chiamata allo strumento.
  - `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione. Se non specificato, non verrà riprodotto alcun suono di chiamata dello strumento.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina quando deve essere riprodotto il suono della chiamata dello strumento. 'auto' viene riprodotto solo quando è presente parlato prima dello strumento, mentre 'always' viene riprodotto a ogni chiamata dello strumento.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controlla come vengono elaborati gli errori degli strumenti prima di essere condivisi con l'agente. 'auto' determina la gestione in base al tipo di strumento (riassunto per le integrazioni native, nascosto per gli altri), 'summarized' invia un riepilogo generato da un LLM, 'passthrough' invia l'errore non elaborato, 'hide' non condivide l'errore con l'agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre questo strumento è in esecuzione.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, l'agente parlerà prima della chiamata allo strumento.
- `type`: `webhook`
  - `api_schema` (WebhookToolApiSchemaConfigInput, required) — Lo schema per il webhook in uscita, inclusi i parametri e la specifica dell'URL
  - `description` (string, required) — Descrizione di quando usare lo strumento e di cosa fa.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configurazione per estrarre valori dalle risposte degli strumenti e assegnarli alle variabili dinamiche
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configurazione per le variabili dinamiche
  - `execution_mode` (enum, optional, default: immediate) — Determina quando e come viene eseguito lo strumento: 'immediate' esegue subito lo strumento quando viene richiesto dall'LLM, 'post_tool_speech' attende che l'agente finisca di parlare prima di eseguirlo, 'async' esegue lo strumento in background senza bloccare: ideale per operazioni di lunga durata.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Indica se risolvere un redirect dall'endpoint e restituire la risposta finale. Viene seguito un solo redirect, come richiesta GET senza il body della richiesta; nessuna configurazione di questo strumento (header, autenticazione, certificato client) viene inviata alla destinazione del redirect. Sia l'endpoint sia la destinazione del redirect devono usare HTTPS. Non supportato per gli strumenti di integrazione API.
  - `follow_redirects_allowed_domains` (list of string, optional) — Domini a cui può puntare un reindirizzamento, ad esempio 'test.example.com'. Obbligatorio quando si seguono i reindirizzamenti; una destinazione esterna all'elenco viene rifiutata.
  - `interruption_mode` (enum, optional, default: allow) — Controlla se l'utente può interrompere l'agente durante questa chiamata allo strumento. 'allow' (predefinito) consente all'utente di interrompere in qualsiasi momento, 'disable_during_tool' sopprime le interruzioni solo mentre lo strumento è in esecuzione, 'disable_during_tool_and_turn' sopprime le interruzioni mentre lo strumento è in esecuzione e per la risposta dell'agente successiva.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controlla se l'agente parla prima che venga chiamato questo strumento. 'auto' (predefinito) decide in base alla latenza recente dello strumento, 'force' chiede sempre all'agente di parlare, 'off' disattiva completamente questa funzione indipendentemente dalla latenza.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Il tempo massimo in secondi di attesa per il completamento della chiamata allo strumento. Deve essere compreso tra 5 e 300 secondi inclusi.
  - `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione. Se non specificato, non verrà riprodotto alcun suono di chiamata dello strumento.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina quando deve essere riprodotto il suono della chiamata dello strumento. 'auto' viene riprodotto solo quando è presente parlato prima dello strumento, mentre 'always' viene riprodotto a ogni chiamata dello strumento.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controlla come vengono elaborati gli errori degli strumenti prima di essere condivisi con l'agente. 'auto' determina la gestione in base al tipo di strumento (riassunto per le integrazioni native, nascosto per gli altri), 'summarized' invia un riepilogo generato da un LLM, 'passthrough' invia l'errore non elaborato, 'hide' non condivide l'errore con l'agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre questo strumento è in esecuzione.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, l'agente parlerà prima della chiamata allo strumento.

### ToolResponseMockConfigInput

- `mock_result` (string, required) — Il valore restituito che l'LLM vede quando questo mock è attivo.
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — Se l'elenco è vuoto, il mock si attiverà sempre.
- `is_error` (boolean, optional, default: false) — Se true, il risultato mock viene presentato all'LLM come errore dello strumento anziché come risultato riuscito.

### ToolResponseModelToolConfig

Il tipo di strumento

- `type`: `client`
  - `description` (string, required) — Descrizione di quando usare lo strumento e di cosa fa.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configurazione per estrarre valori dalle risposte degli strumenti e assegnarli alle variabili dinamiche
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configurazione per le variabili dinamiche
  - `execution_mode` (enum, optional, default: immediate) — Determina quando e come viene eseguito lo strumento: 'immediate' esegue subito lo strumento quando viene richiesto dall'LLM, 'post_tool_speech' attende che l'agente finisca di parlare prima di eseguirlo, 'async' esegue lo strumento in background senza bloccare: ideale per operazioni di lunga durata.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Se true, la chiamata di questo strumento deve bloccare la conversazione finché il client non risponde con una risposta passata all'llm. Se false, la conversazione continuerà senza attendere la risposta del client; è utile per mostrare contenuti a un utente senza bloccare la conversazione.
  - `interruption_mode` (enum, optional, default: allow) — Controlla se l'utente può interrompere l'agente durante questa chiamata allo strumento. 'allow' (predefinito) consente all'utente di interrompere in qualsiasi momento, 'disable_during_tool' sopprime le interruzioni solo mentre lo strumento è in esecuzione, 'disable_during_tool_and_turn' sopprime le interruzioni mentre lo strumento è in esecuzione e per la risposta dell'agente successiva.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaPropertyOutput, optional) — Schema per tutti i parametri da passare al client
  - `pre_tool_speech` (enum, optional, default: auto) — Controlla se l'agente parla prima che venga chiamato questo strumento. 'auto' (predefinito) decide in base alla latenza recente dello strumento, 'force' chiede sempre all'agente di parlare, 'off' disattiva completamente questa funzione indipendentemente dalla latenza.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Il tempo massimo in secondi di attesa per il completamento della chiamata allo strumento. Deve essere compreso tra 1 e 120 secondi inclusi, oppure -1 per attendere indefinitamente la risposta del client (richiede expects_response).
  - `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione. Se non specificato, non verrà riprodotto alcun suono di chiamata dello strumento.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina quando deve essere riprodotto il suono della chiamata dello strumento. 'auto' viene riprodotto solo quando è presente parlato prima dello strumento, mentre 'always' viene riprodotto a ogni chiamata dello strumento.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controlla come vengono elaborati gli errori degli strumenti prima di essere condivisi con l'agente. 'auto' determina la gestione in base al tipo di strumento (riassunto per le integrazioni native, nascosto per gli altri), 'summarized' invia un riepilogo generato da un LLM, 'passthrough' invia l'errore non elaborato, 'hide' non condivide l'errore con l'agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre questo strumento è in esecuzione.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, l'agente parlerà prima della chiamata allo strumento.
- `type`: `mcp`
  - `value` (any, required)
- `type`: `system`
  - `name` (string, required)
  - `params` (SystemToolConfigOutputParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configurazione per estrarre valori dalle risposte degli strumenti e assegnarli alle variabili dinamiche
  - `description` (string, optional, default: ) — Descrizione di quando usare lo strumento e di cosa fa. Lascia vuoto per utilizzare la descrizione predefinita ottimizzata per il tipo di strumento specifico.
  - `interruption_mode` (enum, optional, default: allow) — Controlla se l'utente può interrompere l'agente durante questa chiamata allo strumento. 'allow' (predefinito) consente all'utente di interrompere in qualsiasi momento, 'disable_during_tool' sopprime le interruzioni solo mentre lo strumento è in esecuzione, 'disable_during_tool_and_turn' sopprime le interruzioni mentre lo strumento è in esecuzione e per la risposta dell'agente successiva.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controlla se l'agente parla prima che venga chiamato questo strumento. 'auto' (predefinito) decide in base alla latenza recente dello strumento, 'force' chiede sempre all'agente di parlare, 'off' disattiva completamente questa funzione indipendentemente dalla latenza.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Il tempo massimo in secondi di attesa per il completamento della chiamata allo strumento.
  - `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione. Se non specificato, non verrà riprodotto alcun suono di chiamata dello strumento.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina quando deve essere riprodotto il suono della chiamata dello strumento. 'auto' viene riprodotto solo quando è presente parlato prima dello strumento, mentre 'always' viene riprodotto a ogni chiamata dello strumento.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controlla come vengono elaborati gli errori degli strumenti prima di essere condivisi con l'agente. 'auto' determina la gestione in base al tipo di strumento (riassunto per le integrazioni native, nascosto per gli altri), 'summarized' invia un riepilogo generato da un LLM, 'passthrough' invia l'errore non elaborato, 'hide' non condivide l'errore con l'agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre questo strumento è in esecuzione.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, l'agente parlerà prima della chiamata allo strumento.
- `type`: `webhook`
  - `api_schema` (WebhookToolApiSchemaConfigOutput, required) — Lo schema per il webhook in uscita, inclusi i parametri e la specifica dell'URL
  - `description` (string, required) — Descrizione di quando usare lo strumento e di cosa fa.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configurazione per estrarre valori dalle risposte degli strumenti e assegnarli alle variabili dinamiche
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configurazione per le variabili dinamiche
  - `execution_mode` (enum, optional, default: immediate) — Determina quando e come viene eseguito lo strumento: 'immediate' esegue subito lo strumento quando viene richiesto dall'LLM, 'post_tool_speech' attende che l'agente finisca di parlare prima di eseguirlo, 'async' esegue lo strumento in background senza bloccare: ideale per operazioni di lunga durata.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Indica se risolvere un redirect dall'endpoint e restituire la risposta finale. Viene seguito un solo redirect, come richiesta GET senza il body della richiesta; nessuna configurazione di questo strumento (header, autenticazione, certificato client) viene inviata alla destinazione del redirect. Sia l'endpoint sia la destinazione del redirect devono usare HTTPS. Non supportato per gli strumenti di integrazione API.
  - `follow_redirects_allowed_domains` (list of string, optional) — Domini a cui può puntare un reindirizzamento, ad esempio 'test.example.com'. Obbligatorio quando si seguono i reindirizzamenti; una destinazione esterna all'elenco viene rifiutata.
  - `interruption_mode` (enum, optional, default: allow) — Controlla se l'utente può interrompere l'agente durante questa chiamata allo strumento. 'allow' (predefinito) consente all'utente di interrompere in qualsiasi momento, 'disable_during_tool' sopprime le interruzioni solo mentre lo strumento è in esecuzione, 'disable_during_tool_and_turn' sopprime le interruzioni mentre lo strumento è in esecuzione e per la risposta dell'agente successiva.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controlla se l'agente parla prima che venga chiamato questo strumento. 'auto' (predefinito) decide in base alla latenza recente dello strumento, 'force' chiede sempre all'agente di parlare, 'off' disattiva completamente questa funzione indipendentemente dalla latenza.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Il tempo massimo in secondi di attesa per il completamento della chiamata allo strumento. Deve essere compreso tra 5 e 300 secondi inclusi.
  - `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione. Se non specificato, non verrà riprodotto alcun suono di chiamata dello strumento.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina quando deve essere riprodotto il suono della chiamata dello strumento. 'auto' viene riprodotto solo quando è presente parlato prima dello strumento, mentre 'always' viene riprodotto a ogni chiamata dello strumento.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controlla come vengono elaborati gli errori degli strumenti prima di essere condivisi con l'agente. 'auto' determina la gestione in base al tipo di strumento (riassunto per le integrazioni native, nascosto per gli altri), 'summarized' invia un riepilogo generato da un LLM, 'passthrough' invia l'errore non elaborato, 'hide' non condivide l'errore con l'agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre questo strumento è in esecuzione.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, l'agente parlerà prima della chiamata allo strumento.

### ResourceAccessInfo

- `is_creator` (boolean, required) — Se l'utente che effettua la richiesta è il creatore dell'agente
- `creator_name` (string, required) — Nome del creatore dell'agente
- `creator_email` (string, required) — Email del creatore dell'agente
- `role` (enum, required) — Il ruolo dell'utente che effettua la richiesta
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `anonymous_access_level_override` (enum, optional) — Il livello di accesso per gli utenti anonimi. Se è None, la risorsa non è condivisa pubblicamente.
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `access_source` (enum, optional) — Motivo per cui l'utente richiedente ha accesso a questa risorsa. 'creator' = il chiamante è il proprietario. 'explicit' = il chiamante, o uno dei suoi gruppi del workspace, è elencato in role_to_group_ids oltre al gruppo everyone dell'intero workspace. 'workspace_default' = il gruppo everyone dell'intero workspace è elencato in role_to_group_ids (ogni membro non anonimo del workspace, inclusi gli amministratori, vede questa risorsa). 'workspace_admin' = il chiamante è un amministratore del workspace e il ruolo di amministratore è l'*unica* modalità di accesso; riservato ai documenti che nessun altro può vedere. Consente all'interfaccia di indicare perché un visualizzatore con bypass da amministratore vede un documento che non è stato condiviso esplicitamente con lui.
  - Allowed values: `creator`, `explicit`, `workspace_admin`, `workspace_default`

### ToolUsageStatsResponseModel

- `avg_latency_secs` (double, required)
- `total_calls` (integer, optional, default: 0) — Il numero totale di chiamate allo strumento

### ToolResponseMockConfigOutput

- `mock_result` (string, required) — Il valore restituito che l'LLM vede quando questo mock è attivo.
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — Se l'elenco è vuoto, il mock si attiverà sempre.
- `is_error` (boolean, optional, default: false) — Se true, il risultato mock viene presentato all'LLM come errore dello strumento anziché come risultato riuscito.

### ValidationError

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

### DynamicVariableAssignment

Configurazione per estrarre valori dalle risposte degli strumenti e assegnarli alle variabili dinamiche.

- `dynamic_variable` (string, required) — Il nome della variabile dinamica a cui assegnare il valore estratto
- `value_path` (string, required) — Path in notazione puntata per estrarre il valore dalla sorgente (ad esempio, 'user.name' o 'data.0.id')
- `source` ("response", optional) — La sorgente da cui estrarre il valore. Al momento è supportato solo 'response'.
- `sanitize` (boolean, optional, default: false) — Se true, il valore di questa assegnazione verrà rimosso dalla risposta dello strumento prima dell'invio all'LLM e alla trascrizione, ma verrà comunque elaborato per l'assegnazione delle variabili.
- `preserve_native_type` (boolean, optional, default: false) — Se true, i valori non scalari, come elenchi e oggetti, estratti dalla risposta dello strumento vengono archiviati nel loro tipo nativo anziché essere convertiti in stringhe JSON. Abilita questa opzione per usare direttamente gli array estratti come variabili dinamiche di elenco.

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — Un dizionario di segnaposto di variabili dinamiche e dei relativi valori.

### ObjectJsonSchemaPropertyInput

- `property_kind` (enum, optional, default: object)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Quando è impostato, l'intero parametro viene popolato da questa variabile dinamica in fase di runtime. Si esclude a vicenda con description (valore fornito dall'LLM), constant_value e is_omitted.
- `constant_value` (map from string to any, optional) — Quando è impostato, l'intero oggetto usa questo valore JSON costante in fase di runtime. Si esclude a vicenda con description (oggetto fornito dall'LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Se true, questo parametro verrà completamente omesso dalla richiesta. Valido solo per i parametri facoltativi. Si esclude a vicenda con description, dynamic_variable e constant_value.
- `type` ("object", optional)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyInputPropertiesValue, optional)
- `required_constraints` (RequiredConstraints, optional) — Wrapper per i vincoli di composizione anyOf/allOf limitati ai campi obbligatori.

### SystemToolConfigInputParams

- `system_tool_type`: `end_call`
- `system_tool_type`: `end_procedure`
  - `procedures` (map from string to EndProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `knowledge_base`
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag`
- `system_tool_type`: `language_detection`
  - `only_at_conversation_start` (boolean, optional, default: false) — Se non avviene alcun cambio di lingua nei primi 2 turni dell'utente, i tentativi successivi non riusciranno e la conversazione rimarrà nella lingua corrente. Se la lingua cambia durante questi turni, i cambi successivi restano disponibili. Abilita questa opzione per ridurre la possibilità di cambi errati.
- `system_tool_type`: `play_keypad_touch_tone`
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Se true, l'agente non genererà altro parlato dopo aver riprodotto i toni DTMF. Ciò impedisce che il parlato dell'agente interferisca con i sistemi IVR.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — Invia i toni DTMF come eventi RTP out-of-band (RFC 4733) anziché come audio in-band. Efficace solo per i numeri importati da trunk SIP.
- `system_tool_type`: `skip_turn`
  - `wait_timeout_secs` (double, optional, default: -1) — Secondi di attesa dopo skip_turn prima che l'agente generi un messaggio di verifica contestuale. Il timer "End conversation after silence" viene sospeso durante l'attesa. -1 disabilita l'attesa: dopo skip_turn l'agente resta in silenzio finché il chiamante non parla e il timer continua a scorrere. Si applica solo alle conversazioni vocali.
- `system_tool_type`: `start_procedure`
  - `procedures` (map from string to StartProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `transfer_to_agent`
  - `transfers` (list of AgentTransferInput, required)
- `system_tool_type`: `transfer_to_number`
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Indica se riprodurre un messaggio al cliente mentre attende il trasferimento. Per la retrocompatibilità, il valore predefinito è true.
- `system_tool_type`: `voicemail_detection`
  - `voicemail_message` (string, optional) — Messaggio facoltativo da lasciare nella segreteria telefonica quando viene rilevata. Se non viene fornito, la chiamata termina immediatamente al rilevamento della segreteria. Supporta variabili dinamiche, ad esempio \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}.

### WebhookToolApiSchemaConfigInput

- `url` (string, required) — L'URL a cui verrà inviato il webhook. Può includere parametri path, ad es. [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigInputRequestHeadersValue, optional) — Header da includere nella richiesta
- `method` (enum, optional, default: GET) — Il metodo HTTP da usare per il webhook
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Schema per eventuali parametri del path. Le chiavi devono corrispondere ai segnaposto nell'URL.
- `query_params_schema` (QueryParamsJsonSchemaInput, optional) — Schema per eventuali query params. Verranno aggiunti alla fine dell'URL come query params. Nota: le proprietà in un query param devono essere tutte di tipi letterali.
- `request_body_schema` (ObjectJsonSchemaPropertyInput, optional) — Schema per eventuali parametri del body. Utilizzato per le richieste POST/PATCH/PUT. Lo schema deve essere un oggetto che verrà inviato come body JSON.
- `response_body_schema` (ObjectJsonSchemaPropertyInput, optional) — Schema che descrive la struttura prevista del body della risposta. Solo a scopo di documentazione; non viene esposto al LLM.
- `response_filter` (ResponseFilter, optional) — Filtro facoltativo di allow-list applicato alla risposta prima che l'LLM la elabori, affinché le risposte di grandi dimensioni non sovraccarichino il contesto. Per impostazione predefinita viene usata la risposta completa.
- `content_type` (enum, optional, default: application/json) — Tipo di contenuto per il body della richiesta. Si applica solo alle richieste POST/PUT/PATCH.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — Segnaposto URL risolti dalla connessione di autenticazione (ad esempio, segreti inseriti tramite UrlSecretAuthConnection) anziché da path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigInputAuthConnection, optional) — Connessione di autenticazione facoltativa da usare per l'autenticazione con questo webhook

### UnitTestToolCallParameter

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

### ObjectJsonSchemaPropertyOutput

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Quando è impostato, l'intero parametro viene popolato da questa variabile dinamica in fase di runtime. Si esclude a vicenda con description (valore fornito dall'LLM), constant_value e is_omitted.
- `constant_value` (map from string to any, optional) — Quando è impostato, l'intero oggetto usa questo valore JSON costante in fase di runtime. Si esclude a vicenda con description (oggetto fornito dall'LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Se true, questo parametro verrà completamente omesso dalla richiesta. Valido solo per i parametri facoltativi. Si esclude a vicenda con description, dynamic_variable e constant_value.
- `type` ("object", optional)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyOutputPropertiesValue, optional)
- `required_constraints` (RequiredConstraints, optional) — Wrapper per i vincoli di composizione anyOf/allOf limitati ai campi obbligatori.

### SystemToolConfigOutputParams

- `system_tool_type`: `end_call`
- `system_tool_type`: `end_procedure`
  - `procedures` (map from string to EndProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `knowledge_base`
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag`
- `system_tool_type`: `language_detection`
  - `only_at_conversation_start` (boolean, optional, default: false) — Se non avviene alcun cambio di lingua nei primi 2 turni dell'utente, i tentativi successivi non riusciranno e la conversazione rimarrà nella lingua corrente. Se la lingua cambia durante questi turni, i cambi successivi restano disponibili. Abilita questa opzione per ridurre la possibilità di cambi errati.
- `system_tool_type`: `play_keypad_touch_tone`
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Se true, l'agente non genererà altro parlato dopo aver riprodotto i toni DTMF. Ciò impedisce che il parlato dell'agente interferisca con i sistemi IVR.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — Invia i toni DTMF come eventi RTP out-of-band (RFC 4733) anziché come audio in-band. Efficace solo per i numeri importati da trunk SIP.
- `system_tool_type`: `skip_turn`
  - `wait_timeout_secs` (double, optional, default: -1) — Secondi di attesa dopo skip_turn prima che l'agente generi un messaggio di verifica contestuale. Il timer "End conversation after silence" viene sospeso durante l'attesa. -1 disabilita l'attesa: dopo skip_turn l'agente resta in silenzio finché il chiamante non parla e il timer continua a scorrere. Si applica solo alle conversazioni vocali.
- `system_tool_type`: `start_procedure`
  - `procedures` (map from string to StartProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `transfer_to_agent`
  - `transfers` (list of AgentTransferOutput, required)
- `system_tool_type`: `transfer_to_number`
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Indica se riprodurre un messaggio al cliente mentre attende il trasferimento. Per la retrocompatibilità, il valore predefinito è true.
- `system_tool_type`: `voicemail_detection`
  - `voicemail_message` (string, optional) — Messaggio facoltativo da lasciare nella segreteria telefonica quando viene rilevata. Se non viene fornito, la chiamata termina immediatamente al rilevamento della segreteria. Supporta variabili dinamiche, ad esempio \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}.

### WebhookToolApiSchemaConfigOutput

- `url` (string, required) — L'URL a cui verrà inviato il webhook. Può includere parametri path, ad es. [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigOutputRequestHeadersValue, optional) — Header da includere nella richiesta
- `method` (enum, optional, default: GET) — Il metodo HTTP da usare per il webhook
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Schema per eventuali parametri del path. Le chiavi devono corrispondere ai segnaposto nell'URL.
- `query_params_schema` (QueryParamsJsonSchemaOutput, optional) — Schema per eventuali query params. Verranno aggiunti alla fine dell'URL come query params. Nota: le proprietà in un query param devono essere tutte di tipi letterali.
- `request_body_schema` (ObjectJsonSchemaPropertyOutput, optional) — Schema per eventuali parametri del body. Utilizzato per le richieste POST/PATCH/PUT. Lo schema deve essere un oggetto che verrà inviato come body JSON.
- `response_body_schema` (ObjectJsonSchemaPropertyOutput, optional) — Schema che descrive la struttura prevista del body della risposta. Solo a scopo di documentazione; non viene esposto al LLM.
- `response_filter` (ResponseFilter, optional) — Filtro facoltativo di allow-list applicato alla risposta prima che l'LLM la elabori, affinché le risposte di grandi dimensioni non sovraccarichino il contesto. Per impostazione predefinita viene usata la risposta completa.
- `content_type` (enum, optional, default: application/json) — Tipo di contenuto per il body della richiesta. Si applica solo alle richieste POST/PUT/PATCH.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — Segnaposto URL risolti dalla connessione di autenticazione (ad esempio, segreti inseriti tramite UrlSecretAuthConnection) anziché da path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigOutputAuthConnection, optional) — Connessione di autenticazione facoltativa da usare per l'autenticazione con questo webhook

### ValidationErrorLocItem

### ObjectJsonSchemaPropertyInputPropertiesValue

### RequiredConstraints

Wrapper per i vincoli di composizione anyOf/allOf limitati ai campi obbligatori.

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

### EndProcedureToolConfigProceduresValue

### StartProcedureToolConfigProceduresValue

### AgentTransferInput

- `condition` (string, required)
- `agent_id` (string, optional)
- `branch_id` (string, optional)
- `node_id` (string, optional)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional)
- `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) — Definisce se gli override del client TTS debbano essere trasferiti all'agente di destinazione.
- `preserve_voice_settings` (boolean, optional, default: false) — Definisce se la voce di base, il modello TTS e le impostazioni vocali debbano essere trasferiti all'agente di destinazione.

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItem, optional) — Header SIP personalizzati da includere durante il trasferimento della chiamata. Ogni header può essere un valore statico o un riferimento a variabile dinamica.
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — Se True, viene riprodotto un tono di chiamata sulla tratta di chiamata originale durante il completamento di un trasferimento SIP REFER. Il tono viene trasmesso tramite RTP al peer SIP che esegue il REFER, quindi disabilita questa opzione se il sistema ricevente (ad esempio un SBC o un contact center) non deve sentirlo. Se disabilitata, il chiamante sente silenzio fino al completamento del trasferimento. Solo per trasferimenti SIP REFER.
- `uui` (UuiTransferConfig, optional) — Informazioni User-to-User (RFC 7433) da allegare ai trasferimenti SIP REFER. Trasporta il contesto della chiamata, come identificatori CRM o il motivo dell'escalation, oltre il confine del trasferimento.
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional) — Cifre DTMF da inviare dopo la connessione della chiamata (ad esempio, 'ww1234' per l'interno). Possono essere un valore statico o un riferimento a una variabile dinamica. Usa 'w' per una pausa di 0,5 s. Supportato solo per i trasferimenti Twilio.
- `phone_number` (string, optional, deprecated)

### WebhookToolApiSchemaConfigInputRequestHeadersValue

### LiteralJsonSchemaProperty

Proprietà dello schema per tipi JSON letterali. IMPORTANTE: puoi impostare UN SOLO dei seguenti campi: description (il LLM fornisce il valore), dynamic_variable (valore da variabile), is_system_provided (il sistema fornisce il valore), constant_value (valore fisso) oppure is_omitted (il parametro viene omesso). Sono mutuamente esclusivi.

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — La descrizione della proprietà. Se impostata, l'LLM fornirà il valore in base a questa descrizione. Si esclude a vicenda con dynamic_variable, is_system_provided, constant_value e is_omitted.
- `enum` (list of string, optional) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — Se true, il valore verrà popolato dal sistema a runtime. Utilizzato dagli strumenti Webhook di integrazione API per i template. Si esclude a vicenda con description, dynamic_variable, constant_value e is_omitted.
- `dynamic_variable` (string, optional, default: ) — Il nome della variabile dinamica da usare per il valore di questa proprietà. Si esclude a vicenda con description, is_system_provided, constant_value e is_omitted.
- `allowed_values` (AllowedValues, optional) — Controllo di rifiuto lato server per un valore fornito da un LLM: il runtime rifiuta qualsiasi valore esterno all'insieme consentito specificato da questo oggetto e l'insieme non viene comunicato all'LLM come enum. Supportato solo quando l'origine del valore è `description`; la combinazione con dynamic_variable, is_system_provided, constant_value o is_omitted viene rifiutata.
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional) — Un valore costante da usare per questa proprietà. È mutuamente esclusivo con description, dynamic_variable, is_system_provided e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Se true, questo parametro verrà completamente omesso dalla richiesta. Valido solo per i parametri facoltativi. Si esclude a vicenda con description, dynamic_variable, is_system_provided e constant_value.
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — DEPRECATO: usa invece `allowed_values`. Se impostato, l'LLM fornisce il valore, ma il runtime rifiuta qualsiasi valore non presente nell'elenco contenuto in questa variabile dinamica (deve essere un array JSON come ["ws_alpha", "ws_beta"]). Usalo per consentire all'LLM di scegliere da un insieme verificato dal server, ad esempio gli ID a cui l'utente corrente può accedere. Richiede description; è mutuamente esclusivo con dynamic_variable, is_system_provided, constant_value e is_omitted.

### QueryParamsJsonSchemaInput

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

### ResponseFilter

Configurazione per filtrare le risposte degli strumenti prima che siano visibili all'agente.

- `mode` (enum, optional, default: all) — Controlla come vengono filtrate le risposte degli strumenti. 'all' restituisce l'intera risposta, 'allow' restituisce solo i path specificati, 'hide_all' nasconde l'intera risposta.
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — Path in notazione puntata da includere quando mode è 'allow' (ad esempio, ['ticket.id', 'ticket.status']).
- `content_type` ("application/json", optional) — Tipo di contenuto per il filtro delle risposte. Vengono filtrate solo le risposte 'application/json'.

### WebhookToolApiSchemaConfigInputAuthConnection

Connessione di autenticazione facoltativa da usare per l'autenticazione con questo webhook

### UnitTestToolCallParameterEval

- `type`: `anything`
- `type`: `exact`
  - `expected_value` (string, required) — Il valore stringa esatto a cui il parametro deve corrispondere.
- `type`: `llm`
  - `description` (string, required) — Una descrizione della strategia di valutazione da usare per il test.
- `type`: `regex`
  - `pattern` (string, required) — Un pattern regex rispetto al quale confrontare la risposta dell'agente.

### ObjectJsonSchemaPropertyOutputPropertiesValue

### AgentTransferOutput

- `condition` (string, required)
- `agent_id` (string, optional)
- `branch_id` (string, optional)
- `node_id` (string, optional)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional)
- `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) — Definisce se gli override del client TTS debbano essere trasferiti all'agente di destinazione.
- `preserve_voice_settings` (boolean, optional, default: false) — Definisce se la voce di base, il modello TTS e le impostazioni vocali debbano essere trasferiti all'agente di destinazione.

### WebhookToolApiSchemaConfigOutputRequestHeadersValue

### QueryParamsJsonSchemaOutput

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

### WebhookToolApiSchemaConfigOutputAuthConnection

Connessione di autenticazione facoltativa da usare per l'autenticazione con questo webhook

### ArrayJsonSchemaPropertyInput

- `property_kind` (enum, optional, default: array)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Quando è impostato, l'intero parametro viene popolato da questa variabile dinamica in fase di runtime. Si esclude a vicenda con description (valore fornito dall'LLM), constant_value e is_omitted.
- `constant_value` (list of any, optional) — Quando è impostato, l'intero array usa questo valore costante in fase di runtime. Si esclude a vicenda con description (array fornito dall'LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Se true, questo parametro verrà completamente omesso dalla richiesta. Valido solo per i parametri facoltativi. Si esclude a vicenda con description, dynamic_variable e constant_value.
- `type` ("array", optional)
- `items` (ArrayJsonSchemaPropertyInputItems, optional) — Schema per gli elementi dell'array.

### RequiredConstraint

Un insieme di campi che devono essere tutti presenti per soddisfare questo vincolo.

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — ID della procedura
- `version_id` (string, required) — ID della versione della procedura.

### ProcedureDraftRef

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

### PhoneNumberTransferTransferDestination

- `type`: `phone`
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable`
  - `phone_number` (string, required)
- `type`: `sip_uri`
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable`
  - `sip_uri` (string, required)

### PhoneNumberTransferCustomSipHeadersItem

- `type`: `dynamic`
  - `key` (string, required) — Il nome dell'header SIP (ad es. 'X-Customer-ID')
  - `value` (string, required) — Il nome della variabile dinamica da risolvere
- `type`: `static`
  - `key` (string, required) — Il nome dell'header SIP (ad es. 'X-Customer-ID')
  - `value` (string, required) — Il valore dell'header

### UuiTransferConfig

Contenitore User-to-User Information per trasferimenti SIP REFER (RFC 7433). I payload in uscita sono codificati in esadecimale (l'unica codifica definita da RFC 7433). L'asse del discriminatore di protocollo consente di esprimere tramite configurazione i formati per piattaforma (Talkdesk, Genesys, ...) anziché mediante flag di trasferimento distribuiti. È possibile aggiungere qui ulteriori assi (codifica ASCII, nome dell'header, parametri di scopo/contenuto) senza modificare il modello di trasferimento.

- `data` (string, required) — Payload UUI da inviare nei trasferimenti SIP REFER. Supporta variabili dinamiche inline ed è codificato in esadecimale al momento del trasferimento.
- `protocol_discriminator` (string, optional) — Discriminatore di protocollo facoltativo di un ottetto, composto da due cifre esadecimali, ad esempio '00'. È richiesto da piattaforme come Genesys Cloud, che altrimenti rimuovono il primo ottetto del payload. Lascialo non impostato per piattaforme come Talkdesk, che prevedono un payload esadecimale senza prefisso.
- `protocol_discriminator_mode` (enum, optional, default: prefix) — Come allegare protocol\_discriminator. 'prefix' antepone l'ottetto al payload esadecimale (User-to-User=XX\<hex>;encoding=hex). 'pd\_parameter' lo invia come parametro separato (User-to-User=\<hex>;pd=XX;encoding=hex). Ignorato quando protocol\_discriminator non è impostato.
  - Allowed values: `prefix`, `pd_parameter`

### PhoneNumberTransferPostDialDigits

- `type`: `dynamic`
  - `value` (string, required) — Il nome della variabile dinamica da risolvere
- `type`: `static`
  - `value` (string, required) — Cifre DTMF da inviare dopo la connessione della chiamata (ad esempio, 'ww1234' per l'interno)

### ConvAiSecretLocator

Usato per fare riferimento a un segreto dall'archivio dei segreti dell'agente.

- `secret_id` (string, required)

### ConvAiDynamicVariable

Usato per fare riferimento a una variabile dinamica.

- `variable_name` (string, required)

### ConvAiEnvVarLocator

Usato per fare riferimento a una variabile d'ambiente tramite etichetta.

- `env_var_label` (string, required)

### LiteralJsonSchemaPropertyType

### AllowedValues

- `dynamic_variable` (string, required) — Nome di una variabile dinamica che deve risolversi in un array JSON di valori consentiti, ad esempio ["ws_alpha", "ws_beta"]. Le variabili di sistema funzionano solo se si risolvono in un elenco.

### LiteralJsonSchemaPropertyConstantValue

Un valore costante da usare per questa proprietà. È mutuamente esclusivo con description, dynamic_variable, is_system_provided e is_omitted.

### AuthConnectionLocator

Usato per fare riferimento a una connessione di autenticazione dall'archivio delle connessioni di autenticazione del workspace.

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

Fa riferimento tramite etichetta a una variabile di ambiente di tipo 'auth_connection'. In fase di runtime, viene risolta nella connessione di autenticazione dell'ambiente corrente, con fallback all'ambiente predefinito.

- `env_var_label` (string, required)

### ArrayJsonSchemaPropertyOutput

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Quando è impostato, l'intero parametro viene popolato da questa variabile dinamica in fase di runtime. Si esclude a vicenda con description (valore fornito dall'LLM), constant_value e is_omitted.
- `constant_value` (list of any, optional) — Quando è impostato, l'intero array usa questo valore costante in fase di runtime. Si esclude a vicenda con description (array fornito dall'LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Se true, questo parametro verrà completamente omesso dalla richiesta. Valido solo per i parametri facoltativi. Si esclude a vicenda con description, dynamic_variable e constant_value.
- `type` ("array", optional)
- `items` (ArrayJsonSchemaPropertyOutputItems, optional) — Schema per gli elementi dell'array.

### ArrayJsonSchemaPropertyInputItems

Schema per gli elementi dell'array.

### ArrayJsonSchemaPropertyOutputItems

Schema per gli elementi dell'array.

## Examples

**Request**

```json
{
  "tool_config": {
    "type": "client",
    "description": "description",
    "name": "name",
    "expects_response": false
  }
}
```

**Response**

```json
{
  "id": "id",
  "tool_config": {
    "type": "client",
    "description": "description",
    "name": "name",
    "assignments": [
      {
        "dynamic_variable": "user_name",
        "value_path": "user.name",
        "source": "response",
        "sanitize": false,
        "preserve_native_type": false
      }
    ],
    "dynamic_variables": {
      "dynamic_variable_placeholders": {
        "user_name": "John Doe"
      }
    },
    "execution_mode": "immediate",
    "expects_response": false,
    "interruption_mode": "allow",
    "parameters": {
      "description": "description",
      "dynamic_variable": "dynamic_variable",
      "constant_value": {
        "key": "value"
      },
      "is_omitted": true,
      "type": "object",
      "required": [
        "required"
      ],
      "properties": {
        "key": {
          "description": "A user-provided message",
          "type": "string"
        }
      }
    },
    "pre_tool_speech": "auto",
    "response_timeout_secs": 1,
    "tool_call_sound": "typing",
    "tool_call_sound_behavior": "auto",
    "tool_error_handling_mode": "auto"
  },
  "access_info": {
    "is_creator": true,
    "creator_name": "John Doe",
    "creator_email": "john.doe@example.com",
    "role": "admin",
    "anonymous_access_level_override": "admin",
    "access_source": "creator"
  },
  "usage_stats": {
    "avg_latency_secs": 1.1,
    "total_calls": 1
  },
  "response_mocks": [
    {
      "mock_result": "mock_result",
      "parameter_conditions": [
        {
          "eval": {
            "type": "anything"
          },
          "path": "path"
        }
      ],
      "is_error": true
    }
  ]
}
```

**SDK Code**

```python
import requests

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

payload = { "tool_config": {
        "type": "client",
        "description": "description",
        "name": "name",
        "expects_response": False
    } }
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":"client","description":"description","name":"name","expects_response":false}}'
};

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\": \"client\",\n    \"description\": \"description\",\n    \"name\": \"name\",\n    \"expects_response\": false\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\": \"client\",\n    \"description\": \"description\",\n    \"name\": \"name\",\n    \"expects_response\": false\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\": \"client\",\n    \"description\": \"description\",\n    \"name\": \"name\",\n    \"expects_response\": false\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": "client",
    "description": "description",
    "name": "name",
    "expects_response": false
  }
}',
  '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\": \"client\",\n    \"description\": \"description\",\n    \"name\": \"name\",\n    \"expects_response\": false\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["tool_config": [
    "type": "client",
    "description": "description",
    "name": "name",
    "expects_response": false
  ]] 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()
```