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

# Get Tools

> Get all available tools in the workspace.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/convai/tools
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/tools:
    get:
      tags:
        - Agents Platform
      summary: Get Tools
      description: Get all available tools in the workspace.
      operationId: get_tools_route
      parameters:
        - name: search
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              If specified, the endpoint returns only tools whose names start
              with this string.
            title: Search
          description: >-
            If specified, the endpoint returns only tools whose names start with
            this string.
        - name: page_size
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                minimum: 1
              - type: 'null'
            description: >-
              How many documents to return at maximum. Can not exceed 100,
              defaults to 30.
            title: Page Size
          description: >-
            How many documents to return at maximum. Can not exceed 100,
            defaults to 30.
        - name: created_by_user_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter tools by creator user ID. When set, only tools created by
              this user are returned. Use '@me' to refer to the authenticated
              user.
            title: Created By User Id
          description: >-
            Filter tools by creator user ID. When set, only tools created by
            this user are returned. Use '@me' to refer to the authenticated
            user.
        - name: types
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  $ref: '#/components/schemas/ToolTypeFilter'
              - type: 'null'
            description: >-
              If present, the endpoint will return only tools of the given
              types.
            title: Types
          description: If present, the endpoint will return only tools of the given types.
        - name: sort_direction
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/SortDirection'
            description: The direction to sort the results
            default: desc
          description: The direction to sort the results
        - name: sort_by
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/ToolSortBy'
              - type: 'null'
            description: The field to sort the results by
            title: Sort By
          description: The field to sort the results by
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Used for fetching next page. Cursor is returned in the response.
            title: Cursor
          description: Used for fetching next page. Cursor is returned in the response.
        - 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/ToolsResponseModel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ToolTypeFilter:
      type: string
      enum:
        - webhook
        - client
        - api_integration_webhook
        - code
      title: ToolTypeFilter
    SortDirection:
      type: string
      enum:
        - asc
        - desc
      title: SortDirection
    ToolSortBy:
      type: string
      enum:
        - name
        - created_at
      title: ToolSortBy
    ToolsResponseModel:
      properties:
        tools:
          items:
            $ref: '#/components/schemas/ToolResponseModel'
          type: array
          title: Tools
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
        has_more:
          type: boolean
          title: Has More
      type: object
      required:
        - tools
        - has_more
      title: ToolsResponseModel
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ToolResponseModel:
      properties:
        id:
          type: string
          title: Id
        tool_config:
          oneOf:
            - $ref: '#/components/schemas/WebhookToolConfig-Output'
            - $ref: '#/components/schemas/ClientToolConfig-Output'
            - $ref: '#/components/schemas/SystemToolConfig'
            - $ref: '#/components/schemas/MCPToolConfig-Output'
            - $ref: '#/components/schemas/ApiIntegrationWebhookToolConfig-Output'
          title: Tool Config
          description: The type of tool
          discriminator:
            propertyName: type
            mapping:
              api_integration_webhook:
                $ref: '#/components/schemas/ApiIntegrationWebhookToolConfig-Output'
              client:
                $ref: '#/components/schemas/ClientToolConfig-Output'
              mcp:
                $ref: '#/components/schemas/MCPToolConfig-Output'
              system:
                $ref: '#/components/schemas/SystemToolConfig'
              webhook:
                $ref: '#/components/schemas/WebhookToolConfig-Output'
        access_info:
          $ref: '#/components/schemas/ResourceAccessInfo'
        usage_stats:
          $ref: '#/components/schemas/ToolUsageStatsResponseModel'
        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:
        - id
        - tool_config
        - access_info
        - usage_stats
      title: ToolResponseModel
    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
    WebhookToolConfig-Output:
      properties:
        type:
          type: string
          const: webhook
          title: Type
          description: The type of tool
          default: webhook
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 5 and 300 seconds (inclusive).
          default: 20
        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.
          default: allow
        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.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Output'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: '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
        api_schema:
          $ref: '#/components/schemas/WebhookToolApiSchemaConfig-Output'
          description: >-
            The schema for the outgoing webhook, including parameters and URL
            specification
      type: object
      required:
        - name
        - description
        - api_schema
      title: WebhookToolConfig
      description: A webhook tool is a tool that calls an external webhook from our server
      example:
        response_timeout_secs: 20
        type: webhook
    ClientToolConfig-Output:
      properties:
        type:
          type: string
          const: client
          title: Type
          description: The type of tool
          default: client
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 120
          minimum: 1
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 1 and 120 seconds (inclusive).
          default: 20
        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.
          default: allow
        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.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        parameters:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: Schema for any parameters to pass to the client
        expects_response:
          type: boolean
          title: Expects Response
          description: >-
            If true, calling this tool should block the conversation until the
            client responds with some response which is passed to the llm. If
            false then we will continue the conversation without waiting for the
            client to respond, this is useful to show content to a user but not
            block the conversation
          default: false
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Output'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: '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
      type: object
      required:
        - name
        - description
      title: ClientToolConfig
      description: >-
        A client tool is one that sends an event to the user's client to trigger
        something client side
      example:
        expects_response: false
        type: client
    SystemToolConfig:
      properties:
        type:
          type: string
          const: system
          title: Type
          description: The type of tool
          default: system
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: >-
            Description of when the tool should be used and what it does. Leave
            empty to use the default description that's optimized for the
            specific tool type.
          default: ''
        response_timeout_secs:
          type: integer
          title: Response Timeout Secs
          description: The maximum time in seconds to wait for the tool call to complete.
          default: 20
        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.
          default: allow
        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.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        params:
          oneOf:
            - $ref: '#/components/schemas/EndCallToolConfig'
            - $ref: '#/components/schemas/LanguageDetectionToolConfig'
            - $ref: '#/components/schemas/TransferToAgentToolConfig'
            - $ref: '#/components/schemas/TransferToNumberToolConfig'
            - $ref: '#/components/schemas/SkipTurnToolConfig'
            - $ref: '#/components/schemas/PlayDTMFToolConfig'
            - $ref: '#/components/schemas/VoicemailDetectionToolConfig'
            - $ref: '#/components/schemas/KnowledgeBaseRagToolConfig'
            - $ref: '#/components/schemas/KnowledgeBaseToolConfig'
            - $ref: '#/components/schemas/StartProcedureToolConfig'
            - $ref: '#/components/schemas/EndProcedureToolConfig'
          title: Params
          discriminator:
            propertyName: system_tool_type
            mapping:
              end_call:
                $ref: '#/components/schemas/EndCallToolConfig'
              end_procedure:
                $ref: '#/components/schemas/EndProcedureToolConfig'
              knowledge_base:
                $ref: '#/components/schemas/KnowledgeBaseToolConfig'
              knowledge_base_rag:
                $ref: '#/components/schemas/KnowledgeBaseRagToolConfig'
              language_detection:
                $ref: '#/components/schemas/LanguageDetectionToolConfig'
              play_keypad_touch_tone:
                $ref: '#/components/schemas/PlayDTMFToolConfig'
              skip_turn:
                $ref: '#/components/schemas/SkipTurnToolConfig'
              start_procedure:
                $ref: '#/components/schemas/StartProcedureToolConfig'
              transfer_to_agent:
                $ref: '#/components/schemas/TransferToAgentToolConfig'
              transfer_to_number:
                $ref: '#/components/schemas/TransferToNumberToolConfig'
              voicemail_detection:
                $ref: '#/components/schemas/VoicemailDetectionToolConfig'
      additionalProperties: false
      type: object
      required:
        - name
        - params
      title: SystemToolConfig
      description: >-
        A system tool is a tool that is used to call a system method in the
        server
      examples:
        - description: ''
          name: end_call
          params:
            system_tool_type: end_call
          type: system
        - description: Custom description for specific use case
          name: transfer_to_agent
          params:
            system_tool_type: transfer_to_agent
            transfers: []
          type: system
    MCPToolConfig-Output:
      properties:
        type:
          type: string
          const: mcp
          title: Type
          default: mcp
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the MCP tool call to
            complete. Must be between 5 and 300 seconds (inclusive).
          default: 30
        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.
          default: allow
        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.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        integration_type:
          $ref: '#/components/schemas/IntegrationType'
          description: The type of MCP tool
        parameters:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: Schema for any parameters the LLM needs to provide to the MCP tool.
        approval_policy:
          $ref: '#/components/schemas/MCPApprovalPolicy'
          description: The approval policy for the MCP tool
          default: require_approval_all
        mcp_tool_name:
          type: string
          title: Mcp Tool Name
          description: The name of the MCP tool to call
        mcp_tool_description:
          type: string
          title: Mcp Tool Description
          description: The description of the MCP tool to call
        mcp_server_id:
          type: string
          title: Mcp Server Id
          description: The id of the MCP server to call
        mcp_server_name:
          type: string
          title: Mcp Server Name
          description: The name of the MCP server to call
        mcp_input_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Mcp Input Schema
          description: Original inputSchema dict for consistent hashing
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: '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
        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: Input parameter overrides for this tool
      type: object
      required:
        - name
        - description
        - integration_type
        - mcp_tool_name
        - mcp_tool_description
        - mcp_server_id
        - mcp_server_name
      title: MCPToolConfig
      description: An MCP tool configuration that can be used to call MCP servers.
      x-fern-ignore: true
    ApiIntegrationWebhookToolConfig-Output:
      properties:
        type:
          type: string
          const: api_integration_webhook
          title: Type
          default: api_integration_webhook
        name:
          type: string
          minLength: 0
          pattern: ^[a-zA-Z0-9_-]{1,64}$
          title: Name
        description:
          type: string
          minLength: 0
          title: Description
          description: Description of when the tool should be used and what it does.
        response_timeout_secs:
          type: integer
          maximum: 300
          minimum: 5
          title: Response Timeout Secs
          description: >-
            The maximum time in seconds to wait for the tool call to complete.
            Must be between 5 and 300 seconds (inclusive).
          default: 20
        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.
          default: allow
        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.
          default: auto
        assignments:
          items:
            $ref: '#/components/schemas/DynamicVariableAssignment'
          type: array
          title: Assignments
          description: >-
            Configuration for extracting values from tool responses and
            assigning them to dynamic variables
        tool_call_sound:
          anyOf:
            - $ref: '#/components/schemas/ToolCallSoundType'
            - type: 'null'
          description: >-
            Predefined tool call sound type to play during tool execution. If
            not specified, no tool call sound will be played.
          x-convai-client-override: true
        tool_call_sound_behavior:
          $ref: '#/components/schemas/ToolCallSoundBehavior'
          description: >-
            Determines when the tool call sound should play. 'auto' only plays
            when there's pre-tool speech, 'always' plays for every tool call.
          default: auto
        tool_error_handling_mode:
          $ref: '#/components/schemas/ToolErrorHandlingMode'
          description: >-
            Controls how tool errors are processed before being shared with the
            agent. 'auto' determines handling based on tool type (summarized for
            native integrations, hide for others), 'summarized' sends an
            LLM-generated summary, 'passthrough' sends the raw error, 'hide'
            does not share the error with the agent.
          default: auto
        dynamic_variables:
          $ref: '#/components/schemas/DynamicVariablesConfig-Output'
          description: Configuration for dynamic variables
        execution_mode:
          $ref: '#/components/schemas/ToolExecutionMode'
          description: >-
            Determines when and how the tool executes: '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
        tool_version:
          type: string
          title: Tool Version
          description: The version of the API integration tool
          default: 1.0.0
        api_integration_id:
          type: string
          title: Api Integration Id
        api_integration_connection_id:
          type: string
          title: Api Integration Connection Id
        api_schema_overrides:
          anyOf:
            - $ref: '#/components/schemas/ApiIntegrationWebhookOverrides'
            - type: 'null'
          title: Api Schema Overrides
          description: User overrides applied on top of the base api_schema
      type: object
      required:
        - type
        - name
        - description
        - response_timeout_secs
        - interruption_mode
        - pre_tool_speech
        - assignments
        - tool_call_sound
        - tool_call_sound_behavior
        - tool_error_handling_mode
        - dynamic_variables
        - execution_mode
        - tool_version
        - api_integration_id
        - api_integration_connection_id
        - api_schema_overrides
      title: ApiIntegrationWebhookToolConfig
    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
    ToolUsageStatsResponseModel:
      properties:
        total_calls:
          type: integer
          title: Total Calls
          description: The total number of calls to the tool
          default: 0
        avg_latency_secs:
          type: number
          title: Avg Latency Secs
      type: object
      required:
        - avg_latency_secs
      title: ToolUsageStatsResponseModel
    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
    ToolInterruptionMode:
      type: string
      enum:
        - allow
        - disable_during_tool
        - disable_during_tool_and_turn
      title: ToolInterruptionMode
      default: allow
    PreToolSpeechMode:
      type: string
      enum:
        - auto
        - force
        - 'off'
      title: PreToolSpeechMode
    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
    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.
    ToolErrorHandlingMode:
      type: string
      enum:
        - auto
        - summarized
        - passthrough
        - hide
      title: ToolErrorHandlingMode
      description: >-
        Controls how tool errors are processed before being shared with the
        agent.
    DynamicVariablesConfig-Output:
      properties:
        dynamic_variable_placeholders:
          additionalProperties:
            $ref: '#/components/schemas/DynamicVariableValueType-Output'
          type: object
          title: Dynamic Variable Placeholders
          description: A dictionary of dynamic variable placeholders and their values
      type: object
      title: DynamicVariablesConfig
      example:
        dynamic_variable_placeholders:
          user_name: John Doe
    ToolExecutionMode:
      type: string
      enum:
        - immediate
        - post_tool_speech
        - async
      title: ToolExecutionMode
    WebhookToolApiSchemaConfig-Output:
      properties:
        request_headers:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ConvAISecretLocator'
              - $ref: '#/components/schemas/ConvAIDynamicVariable'
              - $ref: '#/components/schemas/ConvAIEnvVarLocator'
          type: object
          title: Request Headers
          description: Headers that should be included in the request
        url:
          type: string
          title: Url
          description: >-
            The URL that the webhook will be sent to. May include path
            parameters, e.g. https://example.com/agents/{agent_id}
        method:
          type: string
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
          title: Method
          description: The HTTP method to use for the webhook
          default: GET
        path_params_schema:
          additionalProperties:
            $ref: '#/components/schemas/LiteralJsonSchemaProperty'
          type: object
          title: Path Params Schema
          description: >-
            Schema for path parameters, if any. The keys should match the
            placeholders in the URL.
        query_params_schema:
          anyOf:
            - $ref: '#/components/schemas/QueryParamsJsonSchema'
            - type: 'null'
          description: >-
            Schema for any query params, if any. These will be added to end of
            the URL as query params. Note: properties in a query param must all
            be literal types
        request_body_schema:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: >-
            Schema for the body parameters, if any. Used for POST/PATCH/PUT
            requests. The schema should be an object which will be sent as the
            json body
        response_body_schema:
          anyOf:
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - type: 'null'
          description: >-
            Schema describing the expected response body structure. For
            documentation only; not surfaced to the LLM.
        response_filter:
          anyOf:
            - $ref: '#/components/schemas/ResponseFilter'
            - type: 'null'
          description: >-
            Optional allow-list filter applied to the response before the LLM
            sees it, so large responses don't pollute the context. Defaults to
            the full response.
        content_type:
          type: string
          enum:
            - application/json
            - application/x-www-form-urlencoded
          title: Content Type
          description: >-
            Content type for the request body. Only applies to POST/PUT/PATCH
            requests.
          default: application/json
        auth_resolved_params:
          items:
            type: string
          type: array
          uniqueItems: true
          title: Auth Resolved Params
          description: >-
            URL placeholders resolved from the auth connection (e.g. secrets
            injected via UrlSecretAuthConnection) rather than from
            path_params_schema.
        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 webhook
      type: object
      required:
        - url
      title: WebhookToolApiSchemaConfig
      example:
        method: GET
        path_params_schema:
          agent_id:
            type: string
        query_params_schema:
          param1:
            type: string
        request_body_schema:
          param1:
            type: string
        request_headers:
          Authorization: Bearer {api_key}
        url: https://example.com/agents/{agent_id}
    ObjectJsonSchemaProperty-Output:
      properties:
        description:
          type: string
          title: Description
          default: ''
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            When set, the entire parameter is populated from this dynamic
            variable at runtime. Mutually exclusive with description
            (LLM-provided value), constant_value, and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Constant Value
          description: >-
            When set, the entire object uses this constant JSON value at
            runtime. Mutually exclusive with description (LLM-provided object),
            dynamic_variable, and is_omitted.
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, and constant_value.
          default: false
        type:
          type: string
          const: object
          title: Type
          default: object
        required:
          items:
            type: string
          type: array
          title: Required
        properties:
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/LiteralJsonSchemaProperty'
              - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
              - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Output'
          type: object
          title: Properties
        required_constraints:
          anyOf:
            - $ref: '#/components/schemas/RequiredConstraints'
            - type: 'null'
      additionalProperties: false
      type: object
      title: ObjectJsonSchemaProperty
    EndCallToolConfig:
      properties:
        system_tool_type:
          type: string
          const: end_call
          title: System Tool Type
          default: end_call
      additionalProperties: false
      type: object
      title: EndCallToolConfig
    LanguageDetectionToolConfig:
      properties:
        system_tool_type:
          type: string
          const: language_detection
          title: System Tool Type
          default: language_detection
        only_at_conversation_start:
          type: boolean
          title: Only At Conversation Start
          description: >-
            If no language switch happens in the first 2 user turns, later
            attempts fail and the conversation stays in the current language. If
            the language switches during those turns, later switching stays
            available. Enable to reduce the possibility of false switching.
          default: false
      additionalProperties: false
      type: object
      title: LanguageDetectionToolConfig
    TransferToAgentToolConfig:
      properties:
        system_tool_type:
          type: string
          const: transfer_to_agent
          title: System Tool Type
          default: transfer_to_agent
        transfers:
          items:
            $ref: '#/components/schemas/AgentTransfer'
          type: array
          title: Transfers
      additionalProperties: false
      type: object
      required:
        - transfers
      title: TransferToAgentToolConfig
    TransferToNumberToolConfig:
      properties:
        system_tool_type:
          type: string
          const: transfer_to_number
          title: System Tool Type
          default: transfer_to_number
        transfers:
          items:
            $ref: '#/components/schemas/PhoneNumberTransfer'
          type: array
          title: Transfers
        enable_client_message:
          type: boolean
          title: Enable Client Message
          description: >-
            Whether to play a message to the client while they wait for
            transfer. Defaults to true.
          default: true
      additionalProperties: false
      type: object
      required:
        - transfers
      title: TransferToNumberToolConfig
    SkipTurnToolConfig:
      properties:
        system_tool_type:
          type: string
          const: skip_turn
          title: System Tool Type
          default: skip_turn
      additionalProperties: false
      type: object
      title: SkipTurnToolConfig
    PlayDTMFToolConfig:
      properties:
        system_tool_type:
          type: string
          const: play_keypad_touch_tone
          title: System Tool Type
          default: play_keypad_touch_tone
        use_out_of_band_dtmf:
          type: boolean
          title: Use Out Of Band Dtmf
          description: >-
            Send DTMF tones as out-of-band RTP events (RFC 4733) instead of
            in-band audio. Only effective for SIP trunk imported numbers.
          default: true
        suppress_turn_after_dtmf:
          type: boolean
          title: Suppress Turn After Dtmf
          description: >-
            If true, the agent will not generate further speech after playing
            DTMF tones. This prevents the agent's speech from interfering with
            IVR systems.
          default: false
      additionalProperties: false
      type: object
      title: PlayDTMFToolConfig
    VoicemailDetectionToolConfig:
      properties:
        system_tool_type:
          type: string
          const: voicemail_detection
          title: System Tool Type
          default: voicemail_detection
        voicemail_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Voicemail Message
          description: >-
            Optional message to leave on voicemail when detected. If not
            provided, the call will end immediately when voicemail is detected.
            Supports dynamic variables (e.g., {{system__time}},
            {{system__call_duration_secs}}, {{custom_variable}}).
      additionalProperties: false
      type: object
      title: VoicemailDetectionToolConfig
    KnowledgeBaseRagToolConfig:
      properties:
        system_tool_type:
          type: string
          const: knowledge_base_rag
          title: System Tool Type
          default: knowledge_base_rag
      additionalProperties: false
      type: object
      title: KnowledgeBaseRagToolConfig
    KnowledgeBaseToolConfig:
      properties:
        system_tool_type:
          type: string
          const: knowledge_base
          title: System Tool Type
          default: knowledge_base
        enabled_strategies:
          items:
            $ref: '#/components/schemas/SearchStrategy'
          type: array
          title: Enabled Strategies
      additionalProperties: false
      type: object
      title: KnowledgeBaseToolConfig
    StartProcedureToolConfig:
      properties:
        system_tool_type:
          type: string
          const: start_procedure
          title: System Tool Type
          default: start_procedure
        procedures:
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/ProcedureVersionRef'
              - $ref: '#/components/schemas/ProcedureDraftRef'
          type: object
          title: Procedures
      additionalProperties: false
      type: object
      title: StartProcedureToolConfig
    EndProcedureToolConfig:
      properties:
        system_tool_type:
          type: string
          const: end_procedure
          title: System Tool Type
          default: end_procedure
        procedures:
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/ProcedureVersionRef'
              - $ref: '#/components/schemas/ProcedureDraftRef'
          type: object
          title: Procedures
      additionalProperties: false
      type: object
      title: EndProcedureToolConfig
    IntegrationType:
      type: string
      enum:
        - mcp_server
        - mcp_integration
      title: IntegrationType
    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
    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
    ApiIntegrationWebhookOverrides:
      properties:
        schema_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: Schema Overrides
        request_headers:
          anyOf:
            - additionalProperties:
                anyOf:
                  - type: string
                  - $ref: '#/components/schemas/ConvAIDynamicVariable'
              type: object
            - type: 'null'
          title: Request Headers
        response_filter_mode:
          anyOf:
            - $ref: '#/components/schemas/ResponseFilterMode'
            - type: 'null'
        response_filters:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Response Filters
      type: object
      title: ApiIntegrationWebhookOverrides
      description: |-
        A whitelist of fields that can be overridden by users when
        configuring an API Integration Webhook Tool.
    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
    DynamicVariableValueType-Output:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Output'
          type: array
        - type: 'null'
    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.
    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.
    LiteralJsonSchemaProperty:
      properties:
        type:
          anyOf:
            - type: string
              enum:
                - boolean
                - string
                - integer
                - number
            - items:
                type: string
              type: array
              maxItems: 2
              minItems: 2
          title: Type
        description:
          type: string
          title: Description
          description: >-
            The description of the property. When set, the LLM will provide the
            value based on this description. Mutually exclusive with
            dynamic_variable, is_system_provided, constant_value, and
            is_omitted.
          default: ''
        enum:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Enum
          description: List of allowed string values for string type parameters
        is_system_provided:
          type: boolean
          title: Is System Provided
          description: >-
            If true, the value will be populated by the system at runtime. Used
            by API Integration Webhook tools for templating. Mutually exclusive
            with description, dynamic_variable, constant_value, and is_omitted.
          default: false
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            The name of the dynamic variable to use for this property's value.
            Mutually exclusive with description, is_system_provided,
            constant_value, and is_omitted.
          default: ''
        allowed_values_dynamic_variable:
          type: string
          title: Allowed Values Dynamic Variable
          description: >-
            When set, the LLM provides the value but the runtime rejects any
            value not present in the list held by this dynamic variable. Use to
            let the LLM pick from a server-verified set (e.g. the IDs the
            current user is allowed to access). Requires description; mutually
            exclusive with dynamic_variable, is_system_provided, constant_value,
            and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - type: 'null'
          title: Constant Value
          description: >-
            A constant value to use for this property. Mutually exclusive with
            description, dynamic_variable, is_system_provided, and is_omitted.
          default: ''
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, is_system_provided, and
            constant_value.
          default: false
      type: object
      required:
        - type
      title: LiteralJsonSchemaProperty
      description: >-
        Schema property for literal JSON types. IMPORTANT: Only ONE of the
        following fields can be set: description (LLM provides value),
        dynamic_variable (value from variable), is_system_provided (system
        provides value), constant_value (fixed value), or is_omitted (parameter
        is omitted). These are mutually exclusive.
      example:
        description: A user-provided message
        type: string
    QueryParamsJsonSchema:
      properties:
        properties:
          additionalProperties:
            $ref: '#/components/schemas/LiteralJsonSchemaProperty'
          type: object
          minProperties: 1
          title: Properties
        required:
          items:
            type: string
          type: array
          title: Required
      additionalProperties: false
      type: object
      required:
        - properties
      title: QueryParamsJsonSchema
    ResponseFilter:
      properties:
        mode:
          $ref: '#/components/schemas/ResponseFilterMode'
          description: >-
            Controls how tool responses are filtered. 'all' returns entire
            response, 'allow' returns only specified paths, 'hide_all' hides the
            entire response.
          default: all
        filters:
          items:
            type: string
          type: array
          title: Filters
          description: >-
            Dot notation paths to include when mode is 'allow' (e.g.,
            ['ticket.id', 'ticket.status']).
        content_type:
          type: string
          const: application/json
          title: Content Type
          description: >-
            Content type for response filtering. Only 'application/json'
            responses are filtered.
          default: application/json
      type: object
      title: ResponseFilter
      description: >-
        Configuration for filtering tool responses before they are visible to
        the agent.
    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.
    ArrayJsonSchemaProperty-Output:
      properties:
        description:
          type: string
          title: Description
          default: ''
        dynamic_variable:
          type: string
          title: Dynamic Variable
          description: >-
            When set, the entire parameter is populated from this dynamic
            variable at runtime. Mutually exclusive with description
            (LLM-provided value), constant_value, and is_omitted.
          default: ''
        constant_value:
          anyOf:
            - items: {}
              type: array
            - type: 'null'
          title: Constant Value
          description: >-
            When set, the entire array uses this constant value at runtime.
            Mutually exclusive with description (LLM-provided array),
            dynamic_variable, and is_omitted.
        is_omitted:
          type: boolean
          title: Is Omitted
          description: >-
            If true, this parameter will be completely omitted from the request.
            Only valid for optional parameters. Mutually exclusive with
            description, dynamic_variable, and constant_value.
          default: false
        type:
          type: string
          const: array
          title: Type
          default: array
        items:
          oneOf:
            - $ref: '#/components/schemas/LiteralJsonSchemaProperty'
            - $ref: '#/components/schemas/ObjectJsonSchemaProperty-Output'
            - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Output'
          title: Items
          description: Schema for array elements.
          default:
            type: string
            description: Array element
            is_system_provided: false
            dynamic_variable: ''
            allowed_values_dynamic_variable: ''
            constant_value: ''
            is_omitted: false
      additionalProperties: false
      type: object
      title: ArrayJsonSchemaProperty
    RequiredConstraints:
      properties:
        any_of:
          items:
            $ref: '#/components/schemas/RequiredConstraint'
          type: array
          title: Any Of
        all_of:
          items:
            $ref: '#/components/schemas/RequiredConstraint'
          type: array
          title: All Of
      type: object
      title: RequiredConstraints
      description: >-
        Wrapper for anyOf/allOf composition constraints scoped to required
        fields.
    AgentTransfer:
      properties:
        agent_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Agent Id
        node_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Node Id
        condition:
          type: string
          title: Condition
        delay_ms:
          type: integer
          title: Delay Ms
          default: 0
        transfer_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Transfer Message
        enable_transferred_agent_first_message:
          type: boolean
          title: Enable Transferred Agent First Message
          default: false
        is_workflow_node_transfer:
          type: boolean
          title: Is Workflow Node Transfer
          default: false
        preserve_client_tts_overrides:
          type: boolean
          title: Preserve Client Tts Overrides
          description: >-
            Defines whether TTS client overrides should be carried over to the
            transferred agent.
          default: false
      additionalProperties: false
      type: object
      required:
        - condition
      title: AgentTransfer
    PhoneNumberTransfer:
      properties:
        custom_sip_headers:
          items:
            oneOf:
              - $ref: '#/components/schemas/CustomSIPHeader'
              - $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
            discriminator:
              propertyName: type
              mapping:
                dynamic:
                  $ref: '#/components/schemas/CustomSIPHeaderWithDynamicVariable'
                static:
                  $ref: '#/components/schemas/CustomSIPHeader'
          type: array
          maxItems: 20
          title: Custom Sip Headers
          description: >-
            Custom SIP headers to include when transferring the call. Each
            header can be either a static value or a dynamic variable reference.
        transfer_destination:
          oneOf:
            - $ref: '#/components/schemas/PhoneNumberTransferDestination'
            - $ref: '#/components/schemas/SIPUriTransferDestination'
            - $ref: >-
                #/components/schemas/PhoneNumberDynamicVariableTransferDestination
            - $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
          title: Transfer Destination
          discriminator:
            propertyName: type
            mapping:
              phone:
                $ref: '#/components/schemas/PhoneNumberTransferDestination'
              phone_dynamic_variable:
                $ref: >-
                  #/components/schemas/PhoneNumberDynamicVariableTransferDestination
              sip_uri:
                $ref: '#/components/schemas/SIPUriTransferDestination'
              sip_uri_dynamic_variable:
                $ref: '#/components/schemas/SIPUriDynamicVariableTransferDestination'
        transfer_type:
          $ref: '#/components/schemas/TransferTypeEnum'
          default: conference
        sip_refer_play_dialtone:
          type: boolean
          title: Sip Refer Play Dialtone
          description: >-
            When True, a ringing tone is played on the original call leg while a
            SIP REFER transfer completes. The tone is carried over RTP to the
            SIP peer executing the REFER, so disable this if the receiving
            system (e.g. an SBC or contact center) should not hear it. When
            disabled the caller hears silence until the transfer completes. SIP
            REFER transfers only.
          default: true
        uui:
          anyOf:
            - $ref: '#/components/schemas/UUITransferConfig'
            - type: 'null'
          description: >-
            User-to-User Information (RFC 7433) to attach to SIP REFER
            transfers. Carries call context such as CRM identifiers or
            escalation reason across the transfer boundary.
        post_dial_digits:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/PostDialDigitsStatic'
                - $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
              discriminator:
                propertyName: type
                mapping:
                  dynamic:
                    $ref: '#/components/schemas/PostDialDigitsDynamicVariable'
                  static:
                    $ref: '#/components/schemas/PostDialDigitsStatic'
            - type: 'null'
          title: Post Dial Digits
          description: >-
            DTMF digits to send after call connects (e.g., 'ww1234' for
            extension). Can be either a static value or a dynamic variable
            reference. Use 'w' for 0.5s pause. Only supported for Twilio
            transfers.
        condition:
          type: string
          title: Condition
      additionalProperties: false
      type: object
      required:
        - transfer_destination
        - condition
      title: PhoneNumberTransfer
    SearchStrategy:
      type: string
      enum:
        - cat
        - keyword
        - semantic
        - ls
      title: SearchStrategy
    ProcedureVersionRef:
      properties:
        procedure_id:
          type: string
          title: Procedure Id
          description: Procedure ID
        version_id:
          type: string
          title: Version Id
          description: Version ID of the procedure version.
      additionalProperties: false
      type: object
      required:
        - procedure_id
        - version_id
      title: ProcedureVersionRef
    ProcedureDraftRef:
      properties:
        procedure_id:
          type: string
          title: Procedure Id
          description: Procedure ID
        version_id:
          type: 'null'
          title: Version Id
      additionalProperties: false
      type: object
      required:
        - procedure_id
      title: ProcedureDraftRef
    ResponseFilterMode:
      type: string
      enum:
        - all
        - allow
        - hide_all
      title: ResponseFilterMode
      description: >-
        Controls how tool responses are filtered before being visible to the
        agent.
      default: all
    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
    DynamicVariableNestedValueType-Output:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Output'
          type: array
        - type: 'null'
    RequiredConstraint:
      properties:
        required:
          items:
            type: string
          type: array
          title: Required
      type: object
      required:
        - required
      title: RequiredConstraint
      description: A set of fields that must all be present to satisfy this constraint.
    CustomSIPHeader:
      properties:
        type:
          type: string
          const: static
          title: Type
          default: static
        key:
          type: string
          maxLength: 64
          minLength: 1
          pattern: ^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
          title: Key
          description: The SIP header name (e.g., 'X-Customer-ID')
        value:
          type: string
          maxLength: 512
          minLength: 1
          pattern: ^[\x09\x20-\x7E]+$
          title: Value
          description: The header value
      additionalProperties: false
      type: object
      required:
        - key
        - value
      title: CustomSIPHeader
    CustomSIPHeaderWithDynamicVariable:
      properties:
        type:
          type: string
          const: dynamic
          title: Type
        key:
          type: string
          maxLength: 64
          minLength: 1
          pattern: ^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
          title: Key
          description: The SIP header name (e.g., 'X-Customer-ID')
        value:
          type: string
          minLength: 1
          title: Value
          description: The dynamic variable name to resolve
      additionalProperties: false
      type: object
      required:
        - type
        - key
        - value
      title: CustomSIPHeaderWithDynamicVariable
    PhoneNumberTransferDestination:
      properties:
        type:
          type: string
          const: phone
          title: Type
          default: phone
        phone_number:
          type: string
          title: Phone Number
      additionalProperties: false
      type: object
      required:
        - phone_number
      title: PhoneNumberTransferDestination
    SIPUriTransferDestination:
      properties:
        type:
          type: string
          const: sip_uri
          title: Type
          default: sip_uri
        sip_uri:
          type: string
          title: Sip Uri
      additionalProperties: false
      type: object
      required:
        - sip_uri
      title: SIPUriTransferDestination
    PhoneNumberDynamicVariableTransferDestination:
      properties:
        type:
          type: string
          const: phone_dynamic_variable
          title: Type
          default: phone_dynamic_variable
        phone_number:
          type: string
          title: Phone Number
      additionalProperties: false
      type: object
      required:
        - phone_number
      title: PhoneNumberDynamicVariableTransferDestination
    SIPUriDynamicVariableTransferDestination:
      properties:
        type:
          type: string
          const: sip_uri_dynamic_variable
          title: Type
          default: sip_uri_dynamic_variable
        sip_uri:
          type: string
          title: Sip Uri
      additionalProperties: false
      type: object
      required:
        - sip_uri
      title: SIPUriDynamicVariableTransferDestination
    TransferTypeEnum:
      type: string
      enum:
        - blind
        - conference
        - sip_refer
      title: TransferTypeEnum
    UUITransferConfig:
      properties:
        data:
          type: string
          maxLength: 8192
          title: Data
          description: >-
            UUI payload to send on SIP REFER transfers. Supports inline dynamic
            variables and is hex-encoded at transfer time.
        protocol_discriminator:
          anyOf:
            - type: string
              pattern: ^[0-9A-Fa-f]{2}$
            - type: 'null'
          title: Protocol Discriminator
          description: >-
            Optional one-octet protocol discriminator (two hex digits, e.g.
            '00'). Required by platforms such as Genesys Cloud, which otherwise
            strip the first octet of the payload. Leave unset for platforms like
            Talkdesk that expect a bare hex payload.
        protocol_discriminator_mode:
          type: string
          enum:
            - prefix
            - pd_parameter
          title: Protocol Discriminator Mode
          description: >-
            How to attach protocol_discriminator. 'prefix' prepends the octet to
            the hex payload (User-to-User=XX<hex>;encoding=hex). 'pd_parameter'
            sends it as a separate parameter
            (User-to-User=<hex>;pd=XX;encoding=hex). Ignored when
            protocol_discriminator is unset.
          default: prefix
      additionalProperties: false
      type: object
      required:
        - data
      title: UUITransferConfig
      description: >-
        User-to-User Information envelope for SIP REFER transfers (RFC 7433).


        Outbound payloads are hex-encoded (the only encoding RFC 7433 defines).
        The

        protocol discriminator axis lets per-platform formats (Talkdesk,
        Genesys, ...)

        be expressed by configuration rather than scattered transfer flags.
        Further

        axes (ASCII encoding, header name, purpose/content parameters) can be
        added

        here without touching the transfer model.
    PostDialDigitsStatic:
      properties:
        type:
          type: string
          const: static
          title: Type
          default: static
        value:
          type: string
          minLength: 1
          pattern: ^[0-9*#wW]*$
          title: Value
          description: >-
            DTMF digits to send after call connects (e.g., 'ww1234' for
            extension)
      additionalProperties: false
      type: object
      required:
        - value
      title: PostDialDigitsStatic
    PostDialDigitsDynamicVariable:
      properties:
        type:
          type: string
          const: dynamic
          title: Type
          default: dynamic
        value:
          type: string
          minLength: 1
          title: Value
          description: The dynamic variable name to resolve
      additionalProperties: false
      type: object
      required:
        - value
      title: PostDialDigitsDynamicVariable

````