> ## Documentation Index
> Fetch the complete documentation index at: https://docs.threetone.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete Mcp Server Tool Approval

> Remove approval for a specific MCP tool when using per-tool approval mode.



## OpenAPI

````yaml /api-reference/openapi.json delete /v1/convai/mcp-servers/{mcp_server_id}/tool-approvals/{tool_name}
openapi: 3.1.0
info:
  title: Threetone API Documentation
  description: >-
    This is the documentation for the Threetone API. You can use this API to use
    our service programmatically with API keys sent in the x-api-key header. You
    can create and manage API keys in the dashboard at
    https://threetone.in/app/developers/api-keys.
  version: '1.0'
servers:
  - url: https://api.threetone.in
    description: Production
security: []
paths:
  /v1/convai/mcp-servers/{mcp_server_id}/tool-approvals/{tool_name}:
    delete:
      tags:
        - Agents Platform
      summary: Delete Mcp Server Tool Approval
      description: >-
        Remove approval for a specific MCP tool when using per-tool approval
        mode.
      operationId: remove_mcp_server_tool_approval_route
      parameters:
        - name: mcp_server_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the MCP Server.
            title: Mcp Server Id
          description: ID of the MCP Server.
        - name: tool_name
          in: path
          required: true
          schema:
            type: string
            description: Name of the MCP tool to remove approval for.
            title: Tool Name
          description: Name of the MCP tool to remove approval for.
        - name: x-api-key
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Your API key for programmatic access. Send it in the x-api-key
              header; you can create and manage keys from the Developers page.
            title: X-Api-Key
          description: >-
            Your API key for programmatic access. Send it in the x-api-key
            header; you can create and manage keys from the Developers page.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MCPServerResponseModel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    MCPServerResponseModel:
      properties:
        id:
          type: string
          title: Id
        config:
          $ref: '#/components/schemas/MCPServerConfig'
        access_info:
          anyOf:
            - $ref: '#/components/schemas/ResourceAccessInfo'
            - type: 'null'
          description: The access information of the MCP Server
        dependent_agents:
          items:
            oneOf:
              - $ref: '#/components/schemas/DependentAvailableAgentIdentifier'
              - $ref: '#/components/schemas/DependentUnknownAgentIdentifier'
            discriminator:
              propertyName: type
              mapping:
                available:
                  $ref: '#/components/schemas/DependentAvailableAgentIdentifier'
                unknown:
                  $ref: '#/components/schemas/DependentUnknownAgentIdentifier'
          type: array
          title: Dependent Agents
          description: List of agents that depend on this MCP Server.
        metadata:
          $ref: '#/components/schemas/MCPServerMetadataResponseModel'
          description: The metadata of the MCP Server
      type: object
      required:
        - id
        - config
        - metadata
      title: MCPServerResponseModel
      description: Response model representing an MCP Server configuration.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    MCPServerConfig:
      properties:
        approval_policy:
          $ref: '#/components/schemas/MCPApprovalPolicy'
          default: require_approval_all
        tool_approval_hashes:
          items:
            $ref: '#/components/schemas/MCPToolApprovalHash'
          type: array
          title: Tool Approval Hashes
          description: >-
            List of tool approval hashes for per-tool approval when
            approval_policy is REQUIRE_APPROVAL_PER_TOOL
        transport:
          $ref: '#/components/schemas/MCPServerTransport'
          description: The transport type used to connect to the MCP server
          default: SSE
        url:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/ConvAISecretLocator'
          title: Url
          description: >-
            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
        secret_token:
          anyOf:
            - $ref: '#/components/schemas/ConvAISecretLocator'
            - $ref: '#/components/schemas/ConvAIUserSecretDBModel'
            - type: 'null'
          title: Secret Token
          description: >-
            The secret token (Authorization header) stored as a workspace secret
            or in-place secret
        request_headers:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ConvAISecretLocator'
              - $ref: '#/components/schemas/ConvAIDynamicVariable'
              - $ref: '#/components/schemas/ConvAIEnvVarLocator'
          type: object
          title: Request Headers
          description: The headers included in the request
        request_meta:
          additionalProperties:
            anyOf:
              - type: string
              - type: integer
              - type: number
              - type: boolean
              - $ref: '#/components/schemas/ConvAISecretLocator'
              - $ref: '#/components/schemas/ConvAIDynamicVariable'
              - $ref: '#/components/schemas/ConvAIEnvVarLocator'
          type: object
          title: Request Meta
          description: >-
            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:
          anyOf:
            - $ref: '#/components/schemas/AuthConnectionLocator'
            - $ref: '#/components/schemas/EnvironmentAuthConnectionLocator'
            - type: 'null'
          title: Auth Connection
          description: >-
            Optional auth connection to use for authentication with this MCP
            server
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
          default: ''
        pre_tool_speech:
          $ref: '#/components/schemas/PreToolSpeechMode'
          description: >-
            Controls whether the agent speaks before this tool is called. 'auto'
            (default) decides based on recent tool latency, 'force' always asks
            the agent to speak, 'off' fully opts out regardless of latency.
            Applies to every tool from this MCP server unless overridden per
            tool.
          default: auto
        interruption_mode:
          $ref: '#/components/schemas/ToolInterruptionMode'
          description: >-
            Controls whether the user can interrupt the agent around this tool
            call. 'allow' (default) lets the user interrupt at any time,
            'disable_during_tool' suppresses interruptions only while the tool
            is running, 'disable_during_tool_and_turn' suppresses interruptions
            while the tool runs and for the agent response that follows it.
            Applies to every tool from this MCP server unless overridden per
            tool.
          default: allow
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution for
            all tools from this MCP server
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play for all tools from
            this MCP server
          default: auto
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how all tools from this MCP server execute:
            'immediate' executes the tool right away when requested by the LLM,
            'post_tool_speech' waits for the agent to finish speaking before
            executing, 'async' runs the tool in the background without blocking
            - best for long-running operations.
          default: immediate
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for each MCP tool call to
            complete. Must be between 5 and 300 seconds (inclusive).
          default: 30
        tool_config_overrides:
          items:
            $ref: '#/components/schemas/MCPToolConfigOverride'
          type: array
          title: Tool Config Overrides
          description: >-
            List of per-tool configuration overrides that override the
            server-level defaults for specific tools
        disable_compression:
          type: boolean
          title: Disable Compression
          description: >-
            Whether to disable HTTP compression for this MCP server. Enable this
            if the server does not support compressed responses.
          default: false
      type: object
      required:
        - url
        - name
      title: MCPServerConfig
    ResourceAccessInfo:
      properties:
        is_creator:
          type: boolean
          title: Is Creator
          description: Whether the user making the request is the creator of the agent
        creator_name:
          type: string
          title: Creator Name
          description: Name of the agent's creator
        creator_email:
          type: string
          title: Creator Email
          description: Email of the agent's creator
        role:
          type: string
          enum:
            - admin
            - editor
            - commenter
            - viewer
          title: Role
          description: The role of the user making the request
        anonymous_access_level_override:
          anyOf:
            - type: string
              enum:
                - admin
                - editor
                - commenter
                - viewer
            - type: 'null'
          title: Anonymous Access Level Override
          description: >-
            The access level for anonymous users. If None, the resource is not
            shared publicly.
        access_source:
          anyOf:
            - type: string
              enum:
                - creator
                - explicit
                - workspace_admin
                - workspace_default
            - type: 'null'
          title: Access Source
          description: >-
            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.
      type: object
      required:
        - is_creator
        - creator_name
        - creator_email
        - role
      title: ResourceAccessInfo
      example:
        access_source: creator
        creator_email: john.doe@example.com
        creator_name: John Doe
        is_creator: true
        role: admin
    DependentAvailableAgentIdentifier:
      properties:
        referenced_resource_ids:
          items:
            type: string
          type: array
          title: Referenced Resource Ids
          description: >-
            If the agent is a transitive dependent, contains IDs of the
            resources that the agent depends on directly.
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        type:
          type: string
          const: available
          title: Type
          default: available
        created_at_unix_secs:
          type: integer
          title: Created At Unix Secs
        access_level:
          type: string
          enum:
            - admin
            - editor
            - commenter
            - viewer
          title: Access Level
      type: object
      required:
        - id
        - name
        - created_at_unix_secs
        - access_level
      title: DependentAvailableAgentIdentifier
    DependentUnknownAgentIdentifier:
      properties:
        referenced_resource_ids:
          items:
            type: string
          type: array
          title: Referenced Resource Ids
          description: >-
            If the agent is a transitive dependent, contains IDs of the
            resources that the agent depends on directly.
        id:
          type: string
          title: Id
        type:
          type: string
          const: unknown
          title: Type
          default: unknown
      type: object
      required:
        - id
      title: DependentUnknownAgentIdentifier
      description: |-
        A model that represents an agent dependent on a knowledge base/tools
        to which the user has no direct access.
    MCPServerMetadataResponseModel:
      properties:
        created_at:
          type: integer
          title: Created At
        owner_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Owner User Id
      type: object
      required:
        - created_at
      title: MCPServerMetadataResponseModel
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    MCPApprovalPolicy:
      type: string
      enum:
        - auto_approve_all
        - require_approval_all
        - require_approval_per_tool
      title: MCPApprovalPolicy
      description: Defines the MCP server-level approval policy for tool execution.
      default: require_approval_all
    MCPToolApprovalHash:
      properties:
        tool_name:
          type: string
          title: Tool Name
          description: The name of the MCP tool
        tool_hash:
          type: string
          title: Tool Hash
          description: SHA256 hash of the tool's parameters and description
        approval_policy:
          $ref: '#/components/schemas/MCPToolApprovalPolicy'
          description: The approval policy for this tool
          default: requires_approval
      type: object
      required:
        - tool_name
        - tool_hash
      title: MCPToolApprovalHash
      description: Model for storing tool approval hashes for per-tool approval.
    MCPServerTransport:
      type: string
      enum:
        - SSE
        - STREAMABLE_HTTP
      title: MCPServerTransport
      description: Supported MCP server transport types.
      default: SSE
    ConvAISecretLocator:
      properties:
        secret_id:
          type: string
          title: Secret Id
      type: object
      required:
        - secret_id
      title: ConvAISecretLocator
      description: Used to reference a secret from the agent's secret store.
    ConvAIUserSecretDBModel:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        encrypted_value:
          type: string
          title: Encrypted Value
        nonce:
          type: string
          title: Nonce
      type: object
      required:
        - id
        - name
        - encrypted_value
        - nonce
      title: ConvAIUserSecretDBModel
      description: >-
        User-specific secret model that are not shared with other users in a
        workspace.
    ConvAIDynamicVariable:
      properties:
        variable_name:
          type: string
          title: Variable Name
      type: object
      required:
        - variable_name
      title: ConvAIDynamicVariable
      description: Used to reference a dynamic variable.
    ConvAIEnvVarLocator:
      properties:
        env_var_label:
          type: string
          title: Env Var Label
      type: object
      required:
        - env_var_label
      title: ConvAIEnvVarLocator
      description: Used to reference an environment variable by label.
    AuthConnectionLocator:
      properties:
        auth_connection_id:
          type: string
          title: Auth Connection Id
      type: object
      required:
        - auth_connection_id
      title: AuthConnectionLocator
      description: >-
        Used to reference an auth connection from the workspace's auth
        connection store.
    EnvironmentAuthConnectionLocator:
      properties:
        env_var_label:
          type: string
          title: Env Var Label
      type: object
      required:
        - env_var_label
      title: EnvironmentAuthConnectionLocator
      description: |-
        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.
    PreToolSpeechMode:
      type: string
      enum:
        - auto
        - force
        - 'off'
      title: PreToolSpeechMode
    ToolInterruptionMode:
      type: string
      enum:
        - allow
        - disable_during_tool
        - disable_during_tool_and_turn
      title: ToolInterruptionMode
      default: allow
    ToolCallSoundType:
      type: string
      enum:
        - typing
        - elevator1
        - elevator2
        - elevator3
        - elevator4
      title: ToolCallSoundType
      description: Predefined tool call sound types.
    ToolCallSoundBehavior:
      type: string
      enum:
        - auto
        - always
      title: ToolCallSoundBehavior
      description: Determines how the tool call sound should be played.
    ToolExecutionMode:
      type: string
      enum:
        - immediate
        - post_tool_speech
        - async
      title: ToolExecutionMode
    MCPToolConfigOverride:
      properties:
        tool_name:
          type: string
          title: Tool Name
          description: The name of the MCP tool
        pre_tool_speech:
          anyOf:
            - $ref: '#/components/schemas/PreToolSpeechMode'
            - type: 'null'
          description: >-
            If set, overrides the server's pre_tool_speech setting for this
            tool.
        interruption_mode:
          anyOf:
            - $ref: '#/components/schemas/ToolInterruptionMode'
            - type: 'null'
          description: >-
            If set, overrides the server's interruption_mode setting for this
            tool.
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: string
              const: 'off'
            - type: 'null'
          title: Tool Call Sound
          description: >-
            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).
        tool_call_sound_behavior:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundBehavior'
            - type: 'null'
          description: >-
            If set, overrides the server's tool_call_sound_behavior setting for
            this tool
        execution_mode:
          anyOf:
            - $ref: '#/components/schemas/ToolExecutionMode'
            - type: 'null'
          description: If set, overrides the server's execution_mode setting for this tool
        response_timeout_secs:
          anyOf:
            - type: integer
              maximum: 300
              minimum: 5
            - type: 'null'
          title: Response Timeout Secs
          description: >-
            If set, overrides the server's response timeout for this MCP tool
            (seconds).
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: Dynamic variable assignments for this MCP tool
        input_overrides:
          anyOf:
            - additionalProperties:
                oneOf:
                  - $ref: '#/components/schemas/ConstantSchemaOverride'
                  - $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                  - $ref: '#/components/schemas/LLMSchemaOverride'
                  - $ref: '#/components/schemas/OmitSchemaOverride'
                discriminator:
                  propertyName: source
                  mapping:
                    constant:
                      $ref: '#/components/schemas/ConstantSchemaOverride'
                    dynamic_variable:
                      $ref: '#/components/schemas/DynamicVariableSchemaOverride'
                    llm:
                      $ref: '#/components/schemas/LLMSchemaOverride'
                    omit:
                      $ref: '#/components/schemas/OmitSchemaOverride'
              type: object
            - type: 'null'
          title: Input Overrides
          description: Mapping of json path to input override configuration
        response_mocks:
          anyOf:
            - items:
                $ref: '#/components/schemas/ToolResponseMockConfig'
              type: array
            - type: 'null'
          title: Response Mocks
          description: >-
            Mock responses with optional parameter conditions. Evaluated
            top-to-bottom; first match wins.
      type: object
      required:
        - tool_name
      title: MCPToolConfigOverride
    MCPToolApprovalPolicy:
      type: string
      enum:
        - auto_approved
        - requires_approval
      title: MCPToolApprovalPolicy
      description: Defines the tool-level approval policy.
      default: requires_approval
    DynamicVariableAssignment:
      properties:
        source:
          type: string
          const: response
          title: Source
          description: >-
            The source to extract the value from. Currently only 'response' is
            supported.
          default: response
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: The name of the dynamic variable to assign the extracted value to
        value_path:
          type: string
          title: Value Path
          description: >-
            Dot notation path to extract the value from the source (e.g.,
            'user.name' or 'data.0.id')
        sanitize:
          type: boolean
          title: Sanitize
          description: >-
            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.
          default: false
        preserve_native_type:
          type: boolean
          title: Preserve Native Type
          description: >-
            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.
          default: false
      additionalProperties: false
      type: object
      required:
        - dynamic_variable
        - value_path
      title: DynamicVariableAssignment
      description: >-
        Configuration for extracting values from tool responses and assigning
        them to dynamic variables.
      example:
        dynamic_variable: user_name
        preserve_native_type: false
        sanitize: false
        source: response
        value_path: user.name
    ConstantSchemaOverride:
      properties:
        source:
          type: string
          const: constant
          title: Source
          default: constant
        constant_value:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - items: {}
              type: array
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Constant Value
          description: The constant value to use
      type: object
      required:
        - constant_value
      title: ConstantSchemaOverride
    DynamicVariableSchemaOverride:
      properties:
        source:
          type: string
          const: dynamic_variable
          title: Source
          default: dynamic_variable
        dynamic_variable:
          type: string
          minLength: 1
          title: Dynamic Variable
          description: The name of the dynamic variable to use
      type: object
      required:
        - dynamic_variable
      title: DynamicVariableSchemaOverride
    LLMSchemaOverride:
      properties:
        source:
          type: string
          const: llm
          title: Source
          default: llm
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: >-
            Prompt override for the LLM. If not provided, the original schema
            description is used.
      type: object
      title: LLMSchemaOverride
    OmitSchemaOverride:
      properties:
        source:
          type: string
          const: omit
          title: Source
          default: omit
      type: object
      title: OmitSchemaOverride
    ToolResponseMockConfig:
      properties:
        parameter_conditions:
          items:
            $ref: '#/components/schemas/UnitTestToolCallParameter'
          type: array
          title: Parameter Conditions
          description: If the list is empty, the mock will always activate.
        mock_result:
          type: string
          title: Mock Result
          description: The return value the LLM sees when this mock is active.
        is_error:
          type: boolean
          title: Is Error
          description: >-
            If true, the mock result is surfaced to the LLM as a tool error
            rather than a successful result.
          default: false
      type: object
      required:
        - mock_result
      title: ToolResponseMockConfig
    UnitTestToolCallParameter:
      properties:
        eval:
          oneOf:
            - $ref: '#/components/schemas/LLMParameterEvaluationStrategy'
            - $ref: '#/components/schemas/RegexParameterEvaluationStrategy'
            - $ref: '#/components/schemas/ExactParameterEvaluationStrategy'
            - $ref: '#/components/schemas/MatchAnythingParameterEvaluationStrategy'
          title: Eval
          discriminator:
            propertyName: type
            mapping:
              anything:
                $ref: '#/components/schemas/MatchAnythingParameterEvaluationStrategy'
              exact:
                $ref: '#/components/schemas/ExactParameterEvaluationStrategy'
              llm:
                $ref: '#/components/schemas/LLMParameterEvaluationStrategy'
              regex:
                $ref: '#/components/schemas/RegexParameterEvaluationStrategy'
        path:
          type: string
          title: Path
      type: object
      required:
        - eval
        - path
      title: UnitTestToolCallParameter
    LLMParameterEvaluationStrategy:
      properties:
        type:
          type: string
          const: llm
          title: Type
        description:
          type: string
          title: Description
          description: A description of the evaluation strategy to use for the test.
      type: object
      required:
        - type
        - description
      title: LLMParameterEvaluationStrategy
    RegexParameterEvaluationStrategy:
      properties:
        type:
          type: string
          const: regex
          title: Type
        pattern:
          type: string
          title: Pattern
          description: A regex pattern to match the agent's response against.
      type: object
      required:
        - type
        - pattern
      title: RegexParameterEvaluationStrategy
    ExactParameterEvaluationStrategy:
      properties:
        type:
          type: string
          const: exact
          title: Type
        expected_value:
          type: string
          title: Expected Value
          description: The exact string value that the parameter must match.
      type: object
      required:
        - type
        - expected_value
      title: ExactParameterEvaluationStrategy
    MatchAnythingParameterEvaluationStrategy:
      properties:
        type:
          type: string
          const: anything
          title: Type
      type: object
      required:
        - type
      title: MatchAnythingParameterEvaluationStrategy

````