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

# Crea server MCP

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

Crea una nuova configurazione del server MCP nel workspace.

Reference: https://elevenlabs.io/docs/eleven-agents/api-reference/mcp/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 an object.

- `config` (McpServerConfigInput, required) — Dettagli di configurazione per il server MCP.

## Response

### 200

Risposta riuscita

- `id` (string, required)
- `config` (McpServerConfigOutput, required)
- `metadata` (McpServerMetadataResponseModel, required) — I metadati del server MCP
- `access_info` (ResourceAccessInfo, optional) — Le informazioni di accesso del server MCP
- `dependent_agents` (list of McpServerResponseModelDependentAgentsItem, optional) — Elenco degli agenti che dipendono da questo server MCP.

## Errors

### 422 Mcp Servers Create Request Unprocessable Entity Error

Errore di convalida

- `detail` (list of ValidationError, optional)

## Types

### McpServerConfigInput

- `url` (McpServerConfigInputUrl, required) — L'URL del server MCP. Se contiene un segreto, salvalo come segreto del workspace; altrimenti, salvalo come stringa semplice. Deve usare HTTPS.
- `name` (string, required)
- `approval_policy` (enum, optional, default: require_approval_all) — Definisce la policy di approvazione a livello di server MCP per l'esecuzione degli strumenti.
  - Allowed values: `auto_approve_all`, `require_approval_all`, `require_approval_per_tool`
- `tool_approval_hashes` (list of McpToolApprovalHash, optional) — Elenco degli hash di approvazione degli strumenti per l'approvazione per singolo strumento quando approval_policy è REQUIRE_APPROVAL_PER_TOOL
- `transport` (enum, optional, default: SSE) — Il tipo di trasporto usato per connettersi al server MCP
  - Allowed values: `SSE`, `STREAMABLE_HTTP`
- `secret_token` (McpServerConfigInputSecretToken, optional) — Il token segreto (header Authorization) archiviato come segreto del workspace o segreto in linea
- `request_headers` (map from string to McpServerConfigInputRequestHeadersValue, optional) — Gli header inclusi nella richiesta
- `request_meta` (map from string to McpServerConfigInputRequestMetaValue, optional) — Voci inviate nel campo MCP `_meta` delle richieste tools/call. I valori possono essere scalari JSON oppure riferimenti a un segreto del workspace, una variabile dinamica o una variabile di ambiente risolta per ogni chiamata.
- `auth_connection` (McpServerConfigInputAuthConnection, optional) — Connessione di autenticazione facoltativa da usare per l'autenticazione con questo server MCP
- `description` (string, optional, default: )
- `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. Si applica a ogni strumento di questo server MCP, salvo override per singolo strumento.
  - Allowed values: `auto`, `force`, `off`
- `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. Si applica a ogni strumento di questo server MCP, salvo override per singolo strumento.
  - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
- `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione per tutti gli strumenti di questo server MCP
  - 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 per tutti gli strumenti di questo server MCP.
  - Allowed values: `auto`, `always`
- `execution_mode` (enum, optional, default: immediate) — Determina quando e come vengono eseguiti tutti gli strumenti di questo server MCP: '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`
- `response_timeout_secs` (integer, optional, default: 30) — Il tempo massimo in secondi di attesa per il completamento di ogni chiamata allo strumento MCP. Deve essere compreso tra 5 e 300 secondi inclusi.
- `tool_config_overrides` (list of McpToolConfigOverrideInput, optional) — Elenco degli override di configurazione per strumento che sostituiscono i valori predefiniti a livello di server per strumenti specifici
- `disable_compression` (boolean, optional, default: false) — Indica se disabilitare la compressione HTTP per questo server MCP. Abilitala se il server non supporta risposte compresse.
- `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, tutti gli strumenti di questo server MCP richiederanno un messaggio vocale prima dell'esecuzione dello strumento.
- `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre è in esecuzione uno qualsiasi degli strumenti di questo server MCP.

### McpServerConfigOutput

- `url` (McpServerConfigOutputUrl, required) — L'URL del server MCP. Se contiene un segreto, salvalo come segreto del workspace; altrimenti, salvalo come stringa semplice. Deve usare HTTPS.
- `name` (string, required)
- `approval_policy` (enum, optional, default: require_approval_all) — Definisce la policy di approvazione a livello di server MCP per l'esecuzione degli strumenti.
  - Allowed values: `auto_approve_all`, `require_approval_all`, `require_approval_per_tool`
- `tool_approval_hashes` (list of McpToolApprovalHash, optional) — Elenco degli hash di approvazione degli strumenti per l'approvazione per singolo strumento quando approval_policy è REQUIRE_APPROVAL_PER_TOOL
- `transport` (enum, optional, default: SSE) — Il tipo di trasporto usato per connettersi al server MCP
  - Allowed values: `SSE`, `STREAMABLE_HTTP`
- `secret_token` (McpServerConfigOutputSecretToken, optional) — Il token segreto (header Authorization) archiviato come segreto del workspace o segreto in linea
- `request_headers` (map from string to McpServerConfigOutputRequestHeadersValue, optional) — Gli header inclusi nella richiesta
- `request_meta` (map from string to McpServerConfigOutputRequestMetaValue, optional) — Voci inviate nel campo MCP `_meta` delle richieste tools/call. I valori possono essere scalari JSON oppure riferimenti a un segreto del workspace, una variabile dinamica o una variabile di ambiente risolta per ogni chiamata.
- `auth_connection` (McpServerConfigOutputAuthConnection, optional) — Connessione di autenticazione facoltativa da usare per l'autenticazione con questo server MCP
- `description` (string, optional, default: )
- `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. Si applica a ogni strumento di questo server MCP, salvo override per singolo strumento.
  - Allowed values: `auto`, `force`, `off`
- `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. Si applica a ogni strumento di questo server MCP, salvo override per singolo strumento.
  - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
- `tool_call_sound` (enum, optional) — Tipo di suono di chiamata dello strumento predefinito da riprodurre durante l'esecuzione per tutti gli strumenti di questo server MCP
  - 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 per tutti gli strumenti di questo server MCP.
  - Allowed values: `auto`, `always`
- `execution_mode` (enum, optional, default: immediate) — Determina quando e come vengono eseguiti tutti gli strumenti di questo server MCP: '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`
- `response_timeout_secs` (integer, optional, default: 30) — Il tempo massimo in secondi di attesa per il completamento di ogni chiamata allo strumento MCP. Deve essere compreso tra 5 e 300 secondi inclusi.
- `tool_config_overrides` (list of McpToolConfigOverrideOutput, optional) — Elenco degli override di configurazione per strumento che sostituiscono i valori predefiniti a livello di server per strumenti specifici
- `disable_compression` (boolean, optional, default: false) — Indica se disabilitare la compressione HTTP per questo server MCP. Abilitala se il server non supporta risposte compresse.
- `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se true, tutti gli strumenti di questo server MCP richiederanno un messaggio vocale prima dell'esecuzione dello strumento.
- `disable_interruptions` (boolean, optional, default: false, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se true, l'utente non potrà interrompere l'agente mentre è in esecuzione uno qualsiasi degli strumenti di questo server MCP.

### McpServerMetadataResponseModel

- `created_at` (integer, required)
- `owner_user_id` (string, optional)

### 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`

### McpServerResponseModelDependentAgentsItem

- `type`: `available`
  - `access_level` (enum, required)
    - Allowed values: `admin`, `editor`, `commenter`, `viewer`
  - `created_at_unix_secs` (integer, required)
  - `id` (string, required)
  - `name` (string, required)
  - `referenced_resource_ids` (list of string, optional) — Se l'agente è un dipendente transitivo, contiene gli ID delle risorse da cui l'agente dipende direttamente.
- `type`: `unknown`
  - `id` (string, required)
  - `referenced_resource_ids` (list of string, optional) — Se l'agente è un dipendente transitivo, contiene gli ID delle risorse da cui l'agente dipende direttamente.

### ValidationError

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

### McpServerConfigInputUrl

L'URL del server MCP. Se contiene un segreto, salvalo come segreto del workspace; altrimenti, salvalo come stringa semplice. Deve usare HTTPS.

### McpToolApprovalHash

Modello per archiviare gli hash di approvazione degli strumenti per l'approvazione per singolo strumento.

- `tool_name` (string, required) — Il nome dello strumento MCP
- `tool_hash` (string, required) — Hash SHA256 dei parametri e della descrizione dello strumento
- `approval_policy` (enum, optional, default: requires_approval) — La policy di approvazione per questo strumento
  - Allowed values: `auto_approved`, `requires_approval`

### McpServerConfigInputSecretToken

Il token segreto (header Authorization) archiviato come segreto del workspace o segreto in linea

### McpServerConfigInputRequestHeadersValue

### McpServerConfigInputRequestMetaValue

### McpServerConfigInputAuthConnection

Connessione di autenticazione facoltativa da usare per l'autenticazione con questo server MCP

### McpToolConfigOverrideInput

- `tool_name` (string, required) — Il nome dello strumento MCP
- `pre_tool_speech` (enum, optional, default: auto) — Se impostato, sostituisce l'impostazione pre_tool_speech del server per questo strumento.
  - Allowed values: `auto`, `force`, `off`
- `interruption_mode` (enum, optional, default: allow) — Se impostato, sostituisce l'impostazione interruption_mode del server per questo strumento.
  - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
- `tool_call_sound` (McpToolConfigOverrideInputToolCallSound, optional) — Sostituisce l'impostazione tool_call_sound del server per questo strumento. Un nome di suono riproduce il suono corrispondente; 'off' imposta l'assenza di suono (silenzio); null indica di non sostituire l'impostazione (viene ereditato il valore predefinito del server).
- `tool_call_sound_behavior` (enum, optional, default: auto) — Se impostato, sostituisce l'impostazione tool_call_sound_behavior del server per questo strumento.
  - Allowed values: `auto`, `always`
- `execution_mode` (enum, optional, default: immediate) — Se impostato, sostituisce l'impostazione execution_mode del server per questo strumento.
  - Allowed values: `immediate`, `post_tool_speech`, `async`
- `response_timeout_secs` (integer, optional) — Se impostato, sostituisce il timeout di risposta del server per questo strumento MCP, in secondi.
- `assignments` (list of DynamicVariableAssignment, optional) — Assegnazioni di variabili dinamiche per questo strumento MCP
- `input_overrides` (map from string to McpToolConfigOverrideInputInputOverridesValue, optional) — Mappatura del path JSON alla configurazione di override dell'input
- `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.
- `force_pre_tool_speech` (boolean, optional, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se impostato, sostituisce l'impostazione force_pre_tool_speech del server per questo strumento.
- `disable_interruptions` (boolean, optional, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se impostato, sostituisce l'impostazione disable_interruptions del server per questo strumento.

### McpServerConfigOutputUrl

L'URL del server MCP. Se contiene un segreto, salvalo come segreto del workspace; altrimenti, salvalo come stringa semplice. Deve usare HTTPS.

### McpServerConfigOutputSecretToken

Il token segreto (header Authorization) archiviato come segreto del workspace o segreto in linea

### McpServerConfigOutputRequestHeadersValue

### McpServerConfigOutputRequestMetaValue

### McpServerConfigOutputAuthConnection

Connessione di autenticazione facoltativa da usare per l'autenticazione con questo server MCP

### McpToolConfigOverrideOutput

- `tool_name` (string, required) — Il nome dello strumento MCP
- `pre_tool_speech` (enum, optional, default: auto) — Se impostato, sostituisce l'impostazione pre_tool_speech del server per questo strumento.
  - Allowed values: `auto`, `force`, `off`
- `interruption_mode` (enum, optional, default: allow) — Se impostato, sostituisce l'impostazione interruption_mode del server per questo strumento.
  - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
- `tool_call_sound` (McpToolConfigOverrideOutputToolCallSound, optional) — Sostituisce l'impostazione tool_call_sound del server per questo strumento. Un nome di suono riproduce il suono corrispondente; 'off' imposta l'assenza di suono (silenzio); null indica di non sostituire l'impostazione (viene ereditato il valore predefinito del server).
- `tool_call_sound_behavior` (enum, optional, default: auto) — Se impostato, sostituisce l'impostazione tool_call_sound_behavior del server per questo strumento.
  - Allowed values: `auto`, `always`
- `execution_mode` (enum, optional, default: immediate) — Se impostato, sostituisce l'impostazione execution_mode del server per questo strumento.
  - Allowed values: `immediate`, `post_tool_speech`, `async`
- `response_timeout_secs` (integer, optional) — Se impostato, sostituisce il timeout di risposta del server per questo strumento MCP, in secondi.
- `assignments` (list of DynamicVariableAssignment, optional) — Assegnazioni di variabili dinamiche per questo strumento MCP
- `input_overrides` (map from string to McpToolConfigOverrideOutputInputOverridesValue, optional) — Mappatura del path JSON alla configurazione di override dell'input
- `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.
- `force_pre_tool_speech` (boolean, optional, deprecated) — DEPRECATO: usa invece `pre_tool_speech`. Se impostato, sostituisce l'impostazione force_pre_tool_speech del server per questo strumento.
- `disable_interruptions` (boolean, optional, deprecated) — DEPRECATO: usa invece `interruption_mode`. Se impostato, sostituisce l'impostazione disable_interruptions del server per questo strumento.

### ValidationErrorLocItem

### ConvAiSecretLocator

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

- `secret_id` (string, required)

### ConvAiUserSecretDbModel

Modello di segreti specifici dell'utente che non vengono condivisi con altri utenti in un workspace.

- `name` (string, required)
- `encrypted_value` (string, required)
- `nonce` (string, required)
- `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)

### 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)

### McpToolConfigOverrideInputToolCallSound

Sostituisce l'impostazione tool_call_sound del server per questo strumento. Un nome di suono riproduce il suono corrispondente; 'off' imposta l'assenza di suono (silenzio); null indica di non sostituire l'impostazione (viene ereditato il valore predefinito del server).

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

### McpToolConfigOverrideInputInputOverridesValue

- `source`: `constant`
  - `constant_value` (ConstantSchemaOverrideConstantValue, optional) — Il valore costante da usare
- `source`: `dynamic_variable`
  - `dynamic_variable` (string, required) — Il nome della variabile dinamica da usare
- `source`: `llm`
  - `prompt` (string, optional) — Sostituzione del prompt per l'LLM. Se non fornita, viene utilizzata la descrizione originale dello schema.
- `source`: `omit`

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

### McpToolConfigOverrideOutputToolCallSound

Sostituisce l'impostazione tool_call_sound del server per questo strumento. Un nome di suono riproduce il suono corrispondente; 'off' imposta l'assenza di suono (silenzio); null indica di non sostituire l'impostazione (viene ereditato il valore predefinito del server).

### McpToolConfigOverrideOutputInputOverridesValue

- `source`: `constant`
  - `constant_value` (ConstantSchemaOverrideConstantValue, optional) — Il valore costante da usare
- `source`: `dynamic_variable`
  - `dynamic_variable` (string, required) — Il nome della variabile dinamica da usare
- `source`: `llm`
  - `prompt` (string, optional) — Sostituzione del prompt per l'LLM. Se non fornita, viene utilizzata la descrizione originale dello schema.
- `source`: `omit`

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

### ConstantSchemaOverrideConstantValue

Il valore costante da usare

### UnitTestToolCallParameter

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

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

## Examples

**Request**

```json
{
  "config": {
    "url": "url",
    "name": "name"
  }
}
```

**Response**

```json
{
  "id": "id",
  "config": {
    "url": "url",
    "name": "name",
    "approval_policy": "auto_approve_all",
    "tool_approval_hashes": [
      {
        "tool_name": "tool_name",
        "tool_hash": "tool_hash"
      }
    ],
    "transport": "SSE",
    "secret_token": {
      "secret_id": "secret_id"
    },
    "request_headers": {
      "key": "value"
    },
    "request_meta": {
      "key": "value"
    },
    "auth_connection": {
      "auth_connection_id": "auth_connection_id"
    },
    "description": "description",
    "pre_tool_speech": "auto",
    "interruption_mode": "allow",
    "tool_call_sound": "typing",
    "tool_call_sound_behavior": "auto",
    "execution_mode": "immediate",
    "response_timeout_secs": 1,
    "tool_config_overrides": [
      {
        "tool_name": "tool_name",
        "assignments": [
          {
            "dynamic_variable": "user_name",
            "value_path": "user.name",
            "source": "response",
            "sanitize": false,
            "preserve_native_type": false
          }
        ]
      }
    ],
    "disable_compression": true
  },
  "metadata": {
    "created_at": 1,
    "owner_user_id": "owner_user_id"
  },
  "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"
  },
  "dependent_agents": [
    {
      "type": "available",
      "access_level": "admin",
      "created_at_unix_secs": 1,
      "id": "id",
      "name": "name",
      "referenced_resource_ids": [
        "referenced_resource_ids"
      ]
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/mcp-servers"

payload = { "config": {
        "url": "url",
        "name": "name"
    } }
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/mcp-servers';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"config":{"url":"url","name":"name"}}'
};

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/mcp-servers"

	payload := strings.NewReader("{\n  \"config\": {\n    \"url\": \"url\",\n    \"name\": \"name\"\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/mcp-servers")

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  \"config\": {\n    \"url\": \"url\",\n    \"name\": \"name\"\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/mcp-servers")
  .header("Content-Type", "application/json")
  .body("{\n  \"config\": {\n    \"url\": \"url\",\n    \"name\": \"name\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/convai/mcp-servers', [
  'body' => '{
  "config": {
    "url": "url",
    "name": "name"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/mcp-servers");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"config\": {\n    \"url\": \"url\",\n    \"name\": \"name\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["config": [
    "url": "url",
    "name": "name"
  ]] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/mcp-servers")! 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()
```