---
title: "Update Mcp Tool Configuration Override"
method: PATCH
path: "/v1/convai/mcp-servers/{mcp_server_id}/tool-configs/{tool_name}"
tags: ["Agents Platform"]
---

# Update Mcp Tool Configuration Override

`PATCH /v1/convai/mcp-servers/{mcp_server_id}/tool-configs/{tool_name}`

Update configuration overrides for a specific MCP tool.

## Path parameters

- `mcp_server_id` string, required — ID of the MCP Server.
- `tool_name` string, required — Name of the MCP tool to update config overrides for.

## Query parameters

- `environment` string — Environment whose values are used when the MCP server URL, headers, or auth connection reference environment variables. Mirrors the environment a conversation would run in; defaults to production.

## Headers

- `xi-api-key` string, nullable — Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Request body

- MCPToolConfigOverrideUpdateRequestModel
  - `force_pre_tool_speech` boolean, nullable — DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.
  - `pre_tool_speech` 'auto' | 'force' | 'off'
  - `disable_interruptions` boolean, nullable — DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.
  - `interruption_mode` 'allow' | 'disable_during_tool' | 'disable_during_tool_and_turn'
  - `tool_call_sound` union — Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).
    - 'typing' | 'elevator1' | 'elevator2' | 'elevator3' | 'elevator4' — Predefined tool call sounds; ``None`` means no sound.
    - 'off'
  - `tool_call_sound_behavior` 'auto' | 'always' — Determines how the tool call sound should be played.
  - `execution_mode` 'immediate' | 'post_tool_speech' | 'async'
  - `response_timeout_secs` integer, nullable — If set, overrides the server's response timeout for this MCP tool.
  - `assignments` DynamicVariableAssignment[], nullable — Dynamic variable assignments for this MCP tool
    - `source` 'response' — The source to extract the value from. Currently only 'response' is supported.
    - `dynamic_variable` string, required — The name of the dynamic variable to assign the extracted value to
    - `value_path` string, required — Dot notation path to extract the value from the source (e.g., 'user.name' or 'data.0.id')
    - `sanitize` boolean — If true, this assignment's value will be removed from the tool response before sending to the LLM and transcript, but still processed for variable assignment.
    - `preserve_native_type` boolean — If true, non-scalar values (lists, objects) extracted from the tool response are stored as their native type instead of being stringified to JSON. Enable this to use extracted arrays directly as list dynamic variables.
  - `input_overrides` object, nullable — Mapping of json path to input override configuration
  - `response_mocks` ToolResponseMockConfigInput[], nullable — Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
    - `parameter_conditions` UnitTestToolCallParameter[] — If the list is empty, the mock will always activate.
      - `eval` union, required
        - LLMParameterEvaluationStrategy
          - `type` 'llm', required
          - `description` string, required — A description of the evaluation strategy to use for the test.
        - RegexParameterEvaluationStrategy
          - `type` 'regex', required
          - `pattern` string, required — A regex pattern to match the agent's response against.
        - ExactParameterEvaluationStrategy
          - `type` 'exact', required
          - `expected_value` string, required — The exact string value that the parameter must match.
        - MatchAnythingParameterEvaluationStrategy
          - `type` 'anything', required
      - `path` string, required
    - `mock_result` string, required — The return value the LLM sees when this mock is active.
    - `is_error` boolean — If true, the mock result is surfaced to the LLM as a tool error rather than a successful result.

## Response `200`

Successful Response

- MCPServerResponseModel — Response model representing an MCP Server configuration.
  - `id` string, required
  - `config` MCPServerConfigOutput, required
    - `approval_policy` 'auto_approve_all' | 'require_approval_all' | 'require_approval_per_tool' — Defines the MCP server-level approval policy for tool execution.
    - `tool_approval_hashes` MCPToolApprovalHash[] — List of tool approval hashes for per-tool approval when approval_policy is REQUIRE_APPROVAL_PER_TOOL
      - `tool_name` string, required — The name of the MCP tool
      - `tool_hash` string, required — SHA256 hash of the tool's parameters and description
      - `approval_policy` 'auto_approved' | 'requires_approval' — Defines the tool-level approval policy.
    - `transport` 'SSE' | 'STREAMABLE_HTTP' — Supported MCP server transport types.
    - `url` union, required — The URL of the MCP server, if this contains a secret please store as a workspace secret, otherwise store as a plain string. Must use https
      - string
      - ConvAISecretLocator — Used to reference a secret from the agent's secret store.
        - `secret_id` string, required
    - `secret_token` union — The secret token (Authorization header) stored as a workspace secret or in-place secret
      - ConvAISecretLocator — Used to reference a secret from the agent's secret store.
        - `secret_id` string, required
      - ConvAIUserSecretDBModel — User-specific secret model that are not shared with other users in a workspace.
        - `name` string, required
        - `encrypted_value` string, required
        - `nonce` string, required
        - `id` string, required
    - `request_headers` object — The headers included in the request
    - `request_meta` object — Entries sent in the MCP `_meta` field of tools/call requests. Values may be JSON scalars, or references to a workspace secret, dynamic variable, or environment variable resolved per call.
    - `auth_connection` union — Optional auth connection to use for authentication with this MCP server
      - AuthConnectionLocator — Used to reference an auth connection from the workspace's auth connection store.
        - `auth_connection_id` string, required
      - EnvironmentAuthConnectionLocator — References an environment variable of type 'auth_connection' by label. At runtime, resolves to the auth connection for the current environment, falling back to the default environment.
        - `env_var_label` string, required
    - `name` string, required
    - `description` string
    - `force_pre_tool_speech` boolean — DEPRECATED: use `pre_tool_speech` instead. If true, all tools from this MCP server will require pre-tool execution speech.
    - `pre_tool_speech` 'auto' | 'force' | 'off'
    - `disable_interruptions` boolean — DEPRECATED: use `interruption_mode` instead. If true, the user will not be able to interrupt the agent while any tool from this MCP server is running.
    - `interruption_mode` 'allow' | 'disable_during_tool' | 'disable_during_tool_and_turn'
    - `tool_call_sound` 'typing' | 'elevator1' | 'elevator2' | 'elevator3' | 'elevator4' — Predefined tool call sounds; ``None`` means no sound.
    - `tool_call_sound_behavior` 'auto' | 'always' — Determines how the tool call sound should be played.
    - `execution_mode` 'immediate' | 'post_tool_speech' | 'async'
    - `response_timeout_secs` integer — The maximum time in seconds to wait for each MCP tool call to complete. Must be between 5 and 300 seconds (inclusive).
    - `tool_config_overrides` MCPToolConfigOverrideOutput[] — List of per-tool configuration overrides that override the server-level defaults for specific tools
      - `tool_name` string, required — The name of the MCP tool
      - `force_pre_tool_speech` boolean, nullable — DEPRECATED: use `pre_tool_speech` instead. If set, overrides the server's force_pre_tool_speech setting for this tool.
      - `pre_tool_speech` 'auto' | 'force' | 'off'
      - `disable_interruptions` boolean, nullable — DEPRECATED: use `interruption_mode` instead. If set, overrides the server's disable_interruptions setting for this tool.
      - `interruption_mode` 'allow' | 'disable_during_tool' | 'disable_during_tool_and_turn'
      - `tool_call_sound` union — Overrides the server's tool_call_sound setting for this tool. A sound name plays that sound; 'off' overrides to no sound (silence); null means do not override (inherit the server default).
        - 'typing' | 'elevator1' | 'elevator2' | 'elevator3' | 'elevator4' — Predefined tool call sounds; ``None`` means no sound.
        - 'off'
      - `tool_call_sound_behavior` 'auto' | 'always' — Determines how the tool call sound should be played.
      - `execution_mode` 'immediate' | 'post_tool_speech' | 'async'
      - `response_timeout_secs` integer, nullable — If set, overrides the server's response timeout for this MCP tool (seconds).
      - `assignments` DynamicVariableAssignment[] — Dynamic variable assignments for this MCP tool
        - `source` 'response' — The source to extract the value from. Currently only 'response' is supported.
        - `dynamic_variable` string, required — The name of the dynamic variable to assign the extracted value to
        - `value_path` string, required — Dot notation path to extract the value from the source (e.g., 'user.name' or 'data.0.id')
        - `sanitize` boolean — If true, this assignment's value will be removed from the tool response before sending to the LLM and transcript, but still processed for variable assignment.
        - `preserve_native_type` boolean — If true, non-scalar values (lists, objects) extracted from the tool response are stored as their native type instead of being stringified to JSON. Enable this to use extracted arrays directly as list dynamic variables.
      - `input_overrides` object, nullable — Mapping of json path to input override configuration
      - `response_mocks` ToolResponseMockConfigOutput[], nullable — Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
        - `parameter_conditions` UnitTestToolCallParameter[] — If the list is empty, the mock will always activate.
          - `eval` union, required
            - LLMParameterEvaluationStrategy
              - …
            - RegexParameterEvaluationStrategy
              - …
            - ExactParameterEvaluationStrategy
              - …
            - MatchAnythingParameterEvaluationStrategy
              - …
          - `path` string, required
        - `mock_result` string, required — The return value the LLM sees when this mock is active.
        - `is_error` boolean — If true, the mock result is surfaced to the LLM as a tool error rather than a successful result.
    - `disable_compression` boolean — Whether to disable HTTP compression for this MCP server. Enable this if the server does not support compressed responses.
  - `access_info` ResourceAccessInfo
    - `is_creator` boolean, required — Whether the user making the request is the creator of the agent
    - `creator_name` string, required — Name of the agent's creator
    - `creator_email` string, required — Email of the agent's creator
    - `role` 'admin' | 'editor' | 'commenter' | 'viewer', required — The role of the user making the request
    - `anonymous_access_level_override` 'admin' | 'editor' | 'commenter' | 'viewer', nullable — The access level for anonymous users. If None, the resource is not shared publicly.
    - `access_source` 'creator' | 'explicit' | 'workspace_admin' | 'workspace_default', nullable — Why the requesting user has access to this resource. 'creator' = caller is the owner. 'explicit' = caller (or one of their workspace groups) is listed in role_to_group_ids beyond the workspace-wide everyone group. 'workspace_default' = the workspace-wide everyone group is listed in role_to_group_ids (every non-anon workspace member, including admins, sees this resource). 'workspace_admin' = caller is a workspace admin and the admin seat is the *only* path to access; reserved for docs nobody else can see. Lets the UI disclose why an admin-bypass viewer sees a doc that wasn't explicitly shared with them.
  - `dependent_agents` union[] — List of agents that depend on this MCP Server.
    - union
      - DependentAvailableAgentIdentifier
        - `referenced_resource_ids` string[] — If the agent is a transitive dependent, contains IDs of the resources that the agent depends on directly.
        - `id` string, required
        - `name` string, required
        - `type` 'available'
        - `created_at_unix_secs` integer, required
        - `access_level` 'admin' | 'editor' | 'commenter' | 'viewer', required
      - DependentUnknownAgentIdentifier — A model that represents an agent dependent on a knowledge base/tools to which the user has no direct access.
        - `referenced_resource_ids` string[] — If the agent is a transitive dependent, contains IDs of the resources that the agent depends on directly.
        - `id` string, required
        - `type` 'unknown'
  - `metadata` MCPServerMetadataResponseModel, required
    - `created_at` integer, required
    - `owner_user_id` string, nullable

## Other responses

- `404` — Tool config override not found
- `422` — Validation Error

---

[API](https://skmtc.net/elevenlabs/apis/elevenlabs-api-documentation.md) · [All operations](https://skmtc.net/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/elevenlabs/elevenlabs-api-documentation/versions/e77a0a530a82/schema)
