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

# Create A New Branch

> Create a new branch from a given version of any branch



## OpenAPI

````yaml /api-reference/openapi.json post /v1/convai/agents/{agent_id}/branches
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/agents/{agent_id}/branches:
    post:
      tags:
        - Agents Platform
      summary: Create A New Branch
      description: Create a new branch from a given version of any branch
      operationId: create_branch_route
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            description: The id of an agent. This is returned on agent creation.
            examples:
              - agent_3701k3ttaq12ewp8b7qv5rfyszkz
            embed: true
            title: Agent Id
          description: The id of an agent. This is returned on agent creation.
        - 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.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAgentBranchResponseModel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post:
      properties:
        parent_version_id:
          type: string
          title: Parent Version Id
          description: ID of the version to branch from
        name:
          type: string
          maxLength: 140
          title: Name
          description: Name of the branch. It is unique within the agent.
        description:
          type: string
          maxLength: 4096
          title: Description
          description: Description for the branch
        conversation_config:
          anyOf:
            - $ref: '#/components/schemas/ConversationalConfigAuthoringPatch'
            - type: 'null'
          description: Changes to apply to conversation config
        platform_settings:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Platform Settings
          description: Changes to apply to platform settings
        workflow:
          anyOf:
            - $ref: '#/components/schemas/AgentWorkflowRequestModel'
            - type: 'null'
          description: Updated workflow definition
      type: object
      required:
        - parent_version_id
        - name
        - description
      title: Body_Create_a_new_branch_v1_convai_agents__agent_id__branches_post
    CreateAgentBranchResponseModel:
      properties:
        created_branch_id:
          type: string
          title: Created Branch Id
          description: ID of the created branch
        created_version_id:
          type: string
          title: Created Version Id
          description: ID of the first version on the created branch
      type: object
      required:
        - created_branch_id
        - created_version_id
      title: CreateAgentBranchResponseModel
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ConversationalConfigAuthoringPatch:
      properties:
        turn:
          anyOf:
            - $ref: '#/components/schemas/TurnConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for turn detection
        tts:
          anyOf:
            - $ref: '#/components/schemas/TTSConversationalConfigPatch'
            - type: 'null'
          description: Sparse text-to-speech authoring changes.
        conversation:
          anyOf:
            - $ref: '#/components/schemas/ConversationConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational events
        language_presets:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/LanguagePreset'
              type: object
            - type: 'null'
          title: Language Presets
          description: Language presets for conversations
        vad:
          anyOf:
            - $ref: '#/components/schemas/VADConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for voice activity detection
        agent:
          anyOf:
            - $ref: '#/components/schemas/AgentConfigAPIModelWorkflowOverride-Input'
            - type: 'null'
          description: Agent specific configuration
        asr:
          anyOf:
            - $ref: '#/components/schemas/ASRConversationalConfigPatch'
            - type: 'null'
          description: Sparse speech-recognition authoring changes.
      additionalProperties: false
      type: object
      title: ConversationalConfigAuthoringPatch
      description: Strict sparse patch for branch and agent authoring endpoints.
      example:
        agent:
          disable_first_message_interruptions: false
          dynamic_variables:
            dynamic_variable_placeholders:
              user_name: John Doe
          first_message: Hello, how can I help you today?
          language: en
          prompt:
            knowledge_base: []
            llm: gemini-2.0-flash-001
            max_tokens: -1
            prompt: >-
              You are a helpful assistant that can answer questions about the
              topic of the conversation.
            temperature: 0
            tool_ids: []
        conversation:
          client_events:
            - audio
            - interruption
          max_duration_seconds: 600
        tts:
          performance: latency
          voice_id: ME9RtCnWp5vX2LhJdF3k
        turn:
          interruption_ignore_term_languages: []
          interruption_ignore_terms: []
          merge_with_default_ignore_terms: false
          mode: turn
          retranscribe_on_turn_timeout: false
          silence_end_call_timeout: -1
          soft_timeout_config:
            message: Hhmmmm...yeah.
            timeout_seconds: -1
            use_llm_generated_message: false
          speculative_turn: false
          spelling_patience: auto
          transcribe_on_disabled_interruptions: false
          turn_eagerness: normal
          turn_model: turn_v3
          turn_timeout: 7
    AgentWorkflowRequestModel:
      properties:
        edges:
          additionalProperties:
            $ref: '#/components/schemas/WorkflowEdgeModel-Input'
          type: object
          title: Edges
        nodes:
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/WorkflowStartNodeModel-Input'
                description: Entry point of the workflow.
              - $ref: '#/components/schemas/WorkflowEndNodeModel-Input'
                description: Terminates the conversation upon reaching this node.
              - $ref: '#/components/schemas/WorkflowPhoneNumberNodeModel-Input'
                description: Transfers the conversation to a phone number.
              - $ref: '#/components/schemas/WorkflowOverrideAgentNodeModel-Input'
                description: >-
                  A subagent conducting the conversation until one of the exit
                  conditions is met. Each subagent can override the base
                  settings, changing the prompt, knowledge base, and more.
              - $ref: '#/components/schemas/WorkflowStandaloneAgentNodeModel-Input'
                description: Transfer the conversation to a standalone agent.
              - $ref: '#/components/schemas/WorkflowToolNodeModel-Input'
                description: Executes one or more tools in parallel.
            discriminator:
              propertyName: type
              mapping:
                end:
                  $ref: '#/components/schemas/WorkflowEndNodeModel-Input'
                override_agent:
                  $ref: '#/components/schemas/WorkflowOverrideAgentNodeModel-Input'
                phone_number:
                  $ref: '#/components/schemas/WorkflowPhoneNumberNodeModel-Input'
                standalone_agent:
                  $ref: '#/components/schemas/WorkflowStandaloneAgentNodeModel-Input'
                start:
                  $ref: '#/components/schemas/WorkflowStartNodeModel-Input'
                tool:
                  $ref: '#/components/schemas/WorkflowToolNodeModel-Input'
          type: object
          title: Nodes
        prevent_subagent_loops:
          type: boolean
          title: Prevent Subagent Loops
          description: Whether to prevent loops in the workflow execution.
          default: false
      additionalProperties: false
      type: object
      title: AgentWorkflowRequestModel
      example:
        edges:
          start_to_support:
            forward_condition:
              type: unconditional
            source: start_node
            target: support
          support_to_end:
            forward_condition:
              condition: The request is resolved
              type: llm
            source: support
            target: end
        nodes:
          end:
            type: end
          start_node:
            edge_order:
              - start_to_support
            type: start
          support:
            edge_order:
              - support_to_end
            label: Support
            type: override_agent
    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
    TurnConfigWorkflowOverride:
      properties:
        turn_timeout:
          anyOf:
            - type: number
            - type: 'null'
          title: Turn Timeout
          description: Maximum wait time for the user's reply before re-engaging the user
        initial_wait_time:
          anyOf:
            - type: number
            - type: 'null'
          title: Initial Wait Time
          description: >-
            How long the agent will wait for the user to start the conversation
            if the first message is empty. If not set, uses the regular
            turn_timeout.
        silence_end_call_timeout:
          anyOf:
            - type: number
            - type: 'null'
          title: Silence End Call Timeout
          description: >-
            Maximum wait time since the user last spoke before terminating the
            call
        mode:
          anyOf:
            - $ref: '#/components/schemas/TurnMode'
            - type: 'null'
          description: The mode of turn detection
          x-fern-ignore: true
        turn_eagerness:
          anyOf:
            - $ref: '#/components/schemas/TurnEagerness'
            - type: 'null'
          description: >-
            Controls how eager the agent is to respond. Low = less eager (waits
            longer), Standard = default eagerness, High = more eager (responds
            sooner)
        spelling_patience:
          anyOf:
            - $ref: '#/components/schemas/SpellingPatience'
            - type: 'null'
          description: >-
            Controls if the agent should be more patient when user is spelling
            numbers and named entities. Auto = model based, Off = never wait
            extra
        speculative_turn:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Speculative Turn
          description: >-
            When enabled, starts generating LLM responses during silence before
            full turn confidence is reached, reducing perceived latency. May
            increase LLM costs.
        retranscribe_on_turn_timeout:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Retranscribe On Turn Timeout
          description: >-
            When enabled, if VAD detects no speech, attempts to re-transcribe
            accumulated audio at turn timeout. Disables silence discount billing
            for affected turns.
        turn_model:
          anyOf:
            - $ref: '#/components/schemas/TurnModel'
            - type: 'null'
          description: Version of the turn detection model to use.
        interruption_ignore_terms:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Interruption Ignore Terms
          description: >-
            List of terms that should not trigger an interruption when spoken by
            the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact
            matching.
        interruption_ignore_term_languages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Interruption Ignore Term Languages
          description: >-
            Language codes for which preset ignore-term categories have been
            activated. Stored explicitly so display is not inferred from term
            overlap.
        merge_with_default_ignore_terms:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Merge With Default Ignore Terms
          description: >-
            When enabled, the curated default terms for
            interruption_ignore_term_languages are used in addition to
            interruption_ignore_terms.
        transcribe_on_disabled_interruptions:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Transcribe On Disabled Interruptions
          description: >-
            When interruptions are disabled, still transcribe what the user says
            so it can carry into the next turn. When off, user speech during a
            non-interruptible turn is ignored and won't trigger a turn.
        soft_timeout_config:
          anyOf:
            - $ref: '#/components/schemas/SoftTimeoutConfigWorkflowOverride'
            - type: 'null'
          description: >-
            Configuration for soft timeout functionality. Provides immediate
            feedback during longer LLM responses.
      type: object
      title: TurnConfigWorkflowOverride
      example:
        interruption_ignore_term_languages: []
        interruption_ignore_terms: []
        merge_with_default_ignore_terms: false
        mode: turn
        retranscribe_on_turn_timeout: false
        silence_end_call_timeout: -1
        soft_timeout_config:
          message: Hhmmmm...yeah.
          timeout_seconds: -1
          use_llm_generated_message: false
        speculative_turn: false
        spelling_patience: auto
        transcribe_on_disabled_interruptions: false
        turn_eagerness: normal
        turn_model: turn_v3
        turn_timeout: 7
    TTSConversationalConfigPatch:
      properties:
        voice_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Id
          description: The voice ID to use for TTS
        performance:
          anyOf:
            - $ref: '#/components/schemas/TTSPerformance'
            - type: 'null'
          description: >-
            User-facing TTS performance tier (latency or quality). The concrete
            provider/model is selected by the voice-server based on this value.
        pronunciation_dictionary_locators:
          anyOf:
            - items:
                $ref: >-
                  #/components/schemas/PydanticPronunciationDictionaryVersionLocator
              type: array
            - type: 'null'
          title: Pronunciation Dictionary Locators
          description: The pronunciation dictionary locators
          x-convai-client-override: true
        enable_phoneme_tags:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Phoneme Tags
          description: >-
            Opt-in to SSML phoneme tag handling. When enabled, phoneme tags from
            inline content and pronunciation dictionaries may be normalized
            before synthesis when the selected provider supports them.
        model_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 5
              pattern: ^tts\.[a-z0-9][a-z0-9._:-]*$
              description: Stable Threetone TTS catalog model identifier.
            - type: 'null'
          title: Model Id
          description: >-
            Stable Threetone TTS catalog model ID; null clears an unpublished
            selection.
        options:
          anyOf:
            - oneOf:
                - $ref: >-
                    #/components/schemas/CartesiaSonic36LiveKitInferenceTTSOptions
                - $ref: '#/components/schemas/SarvamBulbulV3LiveKitPluginTTSOptions'
              discriminator:
                propertyName: adapter_contract
                mapping:
                  livekit_inference_cartesia_sonic_3_6_2026_08_27_v1:
                    $ref: >-
                      #/components/schemas/CartesiaSonic36LiveKitInferenceTTSOptions
                  livekit_plugin_python_sarvam_bulbul_v3_v1:
                    $ref: '#/components/schemas/SarvamBulbulV3LiveKitPluginTTSOptions'
            - type: 'null'
          title: Options
          description: >-
            Validated options for the selected catalog model; null clears
            existing options.
      additionalProperties: false
      type: object
      title: TTSConversationalConfigPatch
      description: Sparse TTS authoring patch kept separate from workflow overrides.
      example:
        performance: latency
        voice_id: ME9RtCnWp5vX2LhJdF3k
    ConversationConfigWorkflowOverride:
      properties:
        text_only:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Text Only
          description: >-
            If enabled audio will not be processed and only text will be used,
            use to avoid audio pricing.
          x-convai-client-override: true
        max_duration_seconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Duration Seconds
          description: The maximum duration of a conversation in seconds
          x-convai-client-override: true
        client_events:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClientEvent'
              type: array
            - type: 'null'
          title: Client Events
          description: The events that will be sent to the client
        file_input:
          anyOf:
            - $ref: '#/components/schemas/FileInputConfigWorkflowOverride'
            - type: 'null'
          description: >-
            Configuration for file input (image/PDF uploads) during
            conversations.
          x-convai-client-override: true
        monitoring_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Monitoring Enabled
          description: Enable real-time monitoring of conversations via WebSocket
        monitoring_events:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClientEvent'
              type: array
            - type: 'null'
          title: Monitoring Events
          description: The events that will be sent to monitoring connections.
        dtmf_input_settings:
          anyOf:
            - $ref: '#/components/schemas/DTMFInputConfig'
            - type: 'null'
          description: Configure DTMF (keypad) input collection during phone calls
        background_sound:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for background sound during conversations.
        source_attribution:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Source Attribution
          description: >-
            When enabled and knowledge base content is present, the LLM is
            instructed to report which sources it used.
      type: object
      title: ConversationConfigWorkflowOverride
      example:
        client_events:
          - audio
          - interruption
        max_duration_seconds: 600
    LanguagePreset:
      properties:
        overrides:
          $ref: '#/components/schemas/ConversationConfigClientOverride'
          description: The overrides for the language preset
        first_message_translation:
          anyOf:
            - $ref: '#/components/schemas/LanguagePresetTranslation'
            - type: 'null'
          description: The translation of the first message
        soft_timeout_translation:
          anyOf:
            - $ref: '#/components/schemas/LanguagePresetTranslation'
            - type: 'null'
          description: The translation of the soft timeout message
      type: object
      required:
        - overrides
      title: LanguagePreset
    VADConfigWorkflowOverride:
      properties:
        background_voice_detection:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Background Voice Detection
          description: Whether to use background voice filtering
          x-fern-ignore: true
      type: object
      title: VADConfigWorkflowOverride
      example:
        background_voice_detection: false
    AgentConfigAPIModelWorkflowOverride-Input:
      properties:
        first_message:
          anyOf:
            - type: string
            - type: 'null'
          title: First Message
          description: >-
            If non-empty, the first message the agent will say. If empty, the
            agent waits for the user to start the discussion.
          x-convai-client-override: true
          x-convai-language-override: true
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: Language of the agent - used for ASR and TTS
          x-convai-client-override: true
        dynamic_variables:
          anyOf:
            - $ref: >-
                #/components/schemas/DynamicVariablesConfigWorkflowOverride-Input
            - type: 'null'
          description: Configuration for dynamic variables
        disable_first_message_interruptions:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disable First Message Interruptions
          description: >-
            If true, the user will not be able to interrupt the agent while the
            first message is being delivered.
        max_conversation_duration_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Max Conversation Duration Message
          description: >-
            If non-empty, the message the agent will send when max conversation
            duration is reached.
          x-convai-client-override: true
          x-convai-language-override: true
        text_behavior_overrides:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/BehaviorOverride'
              propertyNames:
                $ref: '#/components/schemas/ConversationInitiationSource'
              type: object
            - type: 'null'
          title: Text Behavior Overrides
          description: >-
            Per-channel response behavior overrides for text conversations.
            Built-in channel defaults apply when unset.
        prompt:
          anyOf:
            - $ref: '#/components/schemas/PromptAgentAPIModelWorkflowOverride-Input'
            - type: 'null'
          description: The prompt for the agent
      type: object
      title: AgentConfigAPIModelWorkflowOverride
      example:
        disable_first_message_interruptions: false
        dynamic_variables:
          dynamic_variable_placeholders:
            user_name: John Doe
        first_message: Hello, how can I help you today?
        language: en
        prompt:
          knowledge_base: []
          llm: gemini-2.0-flash-001
          max_tokens: -1
          prompt: >-
            You are a helpful assistant that can answer questions about the
            topic of the conversation.
          temperature: 0
          tool_ids: []
    ASRConversationalConfigPatch:
      properties:
        model_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 5
              pattern: ^asr\.[a-z0-9][a-z0-9._:-]*$
              description: Stable Threetone ASR catalog model identifier.
            - type: 'null'
          title: Model Id
        recognition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/ASRFixedRecognition'
                - $ref: '#/components/schemas/ASRAutomaticAgentLanguagesRecognition'
                - $ref: >-
                    #/components/schemas/ASRAutomaticProviderLanguagesRecognition
              discriminator:
                propertyName: mode
                mapping:
                  automatic_agent_languages:
                    $ref: '#/components/schemas/ASRAutomaticAgentLanguagesRecognition'
                  automatic_provider_languages:
                    $ref: >-
                      #/components/schemas/ASRAutomaticProviderLanguagesRecognition
                  fixed:
                    $ref: '#/components/schemas/ASRFixedRecognition'
            - type: 'null'
          title: Recognition
        task:
          anyOf:
            - $ref: '#/components/schemas/ASRTranscriptTask'
            - type: 'null'
        keyterms:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Keyterms
        options:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/CartesiaInk2LiveKitInferenceASROptions'
                - $ref: >-
                    #/components/schemas/CartesiaInkWhisperLiveKitInferenceASROptions
                - $ref: '#/components/schemas/SarvamSaarasV4DirectRealtimeASROptions'
              discriminator:
                propertyName: adapter_contract
                mapping:
                  livekit_inference_cartesia_ink_2_v1:
                    $ref: >-
                      #/components/schemas/CartesiaInk2LiveKitInferenceASROptions
                  livekit_inference_cartesia_ink_whisper_v1:
                    $ref: >-
                      #/components/schemas/CartesiaInkWhisperLiveKitInferenceASROptions
                  sarvam_direct_realtime_saaras_v4_2026_09_v1:
                    $ref: >-
                      #/components/schemas/SarvamSaarasV4DirectRealtimeASROptions
            - type: 'null'
          title: Options
      additionalProperties: false
      type: object
      title: ASRConversationalConfigPatch
      description: Sparse ASR authoring patch; compatibility is checked after merge.
    WorkflowEdgeModel-Input:
      properties:
        source:
          type: string
          title: Source
          description: ID of the source node.
        target:
          type: string
          title: Target
          description: ID of the target node.
        forward_condition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/WorkflowUnconditionalModel'
                  description: Condition that is always true.
                - $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  description: >-
                    Condition described using human language and evaluated by an
                    LLM.
                - $ref: '#/components/schemas/WorkflowResultConditionModel'
                  description: >-
                    Condition based on the result of the last executed tool
                    dispatch node.
                - $ref: '#/components/schemas/WorkflowExpressionConditionModel-Input'
                  description: Condition described using a deterministic expression.
              discriminator:
                propertyName: type
                mapping:
                  expression:
                    $ref: >-
                      #/components/schemas/WorkflowExpressionConditionModel-Input
                  llm:
                    $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  result:
                    $ref: '#/components/schemas/WorkflowResultConditionModel'
                  unconditional:
                    $ref: '#/components/schemas/WorkflowUnconditionalModel'
            - type: 'null'
          title: Forward Condition
          description: >-
            Condition that must be met for the edge to be traversed in the
            forward direction (source to target).
        backward_condition:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/WorkflowUnconditionalModel'
                  description: Condition that is always true.
                - $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  description: >-
                    Condition described using human language and evaluated by an
                    LLM.
                - $ref: '#/components/schemas/WorkflowResultConditionModel'
                  description: >-
                    Condition based on the result of the last executed tool
                    dispatch node.
                - $ref: '#/components/schemas/WorkflowExpressionConditionModel-Input'
                  description: Condition described using a deterministic expression.
              discriminator:
                propertyName: type
                mapping:
                  expression:
                    $ref: >-
                      #/components/schemas/WorkflowExpressionConditionModel-Input
                  llm:
                    $ref: '#/components/schemas/WorkflowLLMConditionModel'
                  result:
                    $ref: '#/components/schemas/WorkflowResultConditionModel'
                  unconditional:
                    $ref: '#/components/schemas/WorkflowUnconditionalModel'
            - type: 'null'
          title: Backward Condition
          description: >-
            Condition that must be met for the edge to be traversed in the
            backward direction (target to source).
      type: object
      required:
        - source
        - target
      title: WorkflowEdgeModel
    WorkflowStartNodeModel-Input:
      properties:
        type:
          type: string
          const: start
          title: Type
          default: start
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      title: WorkflowStartNodeModel
    WorkflowEndNodeModel-Input:
      properties:
        type:
          type: string
          const: end
          title: Type
          default: end
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      title: WorkflowEndNodeModel
    WorkflowPhoneNumberNodeModel-Input:
      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.
        type:
          type: string
          const: phone_number
          title: Type
          default: phone_number
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
      type: object
      required:
        - transfer_destination
      title: WorkflowPhoneNumberNodeModel
    WorkflowOverrideAgentNodeModel-Input:
      properties:
        type:
          type: string
          const: override_agent
          title: Type
          default: override_agent
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        conversation_config:
          $ref: >-
            #/components/schemas/ConversationalConfigAPIModelWorkflowOverride-Input
          description: >-
            Configuration overrides applied while the subagent is conducting the
            conversation.
        additional_prompt:
          type: string
          title: Additional Prompt
          description: >-
            Specific goal for this subagent. It will be added to the system
            prompt and can be used to further refine the agent's behavior in
            this specific context.
        additional_knowledge_base:
          items:
            $ref: '#/components/schemas/KnowledgeBaseLocator'
          type: array
          title: Additional Knowledge Base
          description: >-
            Additional knowledge base documents that the subagent has access to.
            These will be used in addition to the main agent's documents.
        additional_tool_ids:
          items:
            type: string
          type: array
          title: Additional Tool Ids
          description: >-
            IDs of additional tools that the subagent has access to. These will
            be used in addition to the main agent's tools.
        label:
          type: string
          title: Label
          description: Human-readable label for the node used throughout the UI.
        entry_behavior:
          $ref: '#/components/schemas/EntryBehavior'
          description: >-
            Dictates whether this node should immediately generate a response
            upon entry or wait for the user input. When set to "auto", the
            behavior will be decided based on the type of the preceding node:
            "wait_for_user" after the "say" and "start" nodes and
            "generate_immediately" otherwise.
          default: auto
      type: object
      required:
        - label
      title: WorkflowOverrideAgentNodeModel
    WorkflowStandaloneAgentNodeModel-Input:
      properties:
        type:
          type: string
          const: standalone_agent
          title: Type
          default: standalone_agent
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        agent_id:
          type: string
          title: Agent Id
          description: The ID of the agent to transfer the conversation to.
        delay_ms:
          type: integer
          title: Delay Ms
          description: >-
            Artificial delay in milliseconds applied before transferring the
            conversation.
          default: 0
        transfer_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Transfer Message
          description: Optional message sent to the user before the transfer is initiated.
        enable_transferred_agent_first_message:
          type: boolean
          title: Enable Transferred Agent First Message
          description: >-
            Whether to enable the transferred agent to send its configured first
            message after the transfer.
          default: false
      type: object
      required:
        - agent_id
      title: WorkflowStandaloneAgentNodeModel
    WorkflowToolNodeModel-Input:
      properties:
        type:
          type: string
          const: tool
          title: Type
          default: tool
        position:
          $ref: '#/components/schemas/Position-Input'
          description: Position of the node in the workflow.
        edge_order:
          items:
            type: string
          type: array
          title: Edge Order
          description: The ids of outgoing edges in the order they should be evaluated.
        tools:
          items:
            $ref: '#/components/schemas/WorkflowToolLocator'
          type: array
          title: Tools
          description: >-
            List of tools to execute in parallel. The entire node is considered
            successful if all tools are executed successfully.
      type: object
      title: WorkflowToolNodeModel
    TurnMode:
      type: string
      enum:
        - silence
        - turn
      title: TurnMode
    TurnEagerness:
      type: string
      enum:
        - patient
        - normal
        - eager
      title: TurnEagerness
    SpellingPatience:
      type: string
      enum:
        - auto
        - 'off'
      title: SpellingPatience
    TurnModel:
      type: string
      enum:
        - turn_v2
        - turn_v3
      title: TurnModel
    SoftTimeoutConfigWorkflowOverride:
      properties:
        timeout_seconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Timeout Seconds
          description: >-
            Time in seconds before showing the predefined message while waiting
            for LLM response. Set to -1 to disable.
        message:
          anyOf:
            - type: string
            - type: 'null'
          title: Message
          description: >-
            Message to show when the first soft timeout is reached while waiting
            for LLM response. Supports dynamic variables (e.g.,
            {{system__time}}, {{custom_variable}}).
          x-convai-client-override: true
          x-convai-language-override: true
        additional_soft_timeout_messages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Additional Soft Timeout Messages
          description: >-
            Extra static filler messages for subsequent soft timeouts in the
            same LLM generation. The first timeout uses `message`. If fewer
            messages are configured than `max_soft_timeouts_per_generation`, the
            last configured message is repeated; otherwise a built-in filler is
            used.
          x-convai-client-override: true
          x-convai-language-override: true
        use_llm_generated_message:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Llm Generated Message
          description: >-
            If enabled, the soft timeout message will be generated dynamically
            instead of using the static message.
        randomize_fillers:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Randomize Fillers
          description: >-
            If enabled, shuffle the order of static soft timeout messages once
            at the start of each turn. Only applies when
            use_llm_generated_message is false.
        max_soft_timeouts_per_generation:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Soft Timeouts Per Generation
          description: >-
            Maximum filler messages while waiting for a single LLM response.
            Fires every timeout_seconds until the LLM streams content or this
            limit is reached.
        llm_generated_message_prompt_override:
          anyOf:
            - type: string
            - type: 'null'
          title: Llm Generated Message Prompt Override
          description: >-
            Custom prompt for generating the soft timeout filler message when
            use_llm_generated_message is enabled. Recent conversation context is
            provided as a separate user message. If not set, the default prompt
            will be used. Supports dynamic variables (e.g., {{system__time}},
            {{custom_variable}}).
          examples:
            - >-
              Output a SHORT neutral filler phrase (1-4 words MAX) acknowledging
              you heard the user.
        disable_until_first_user_message:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disable Until First User Message
          description: >-
            When true, soft timeout fillers are suppressed until the
            conversation has at least one real user message. Prevents fillers
            during the agent's opening turn (e.g. workflow generate-immediately
            / tool calls before the user speaks).
      type: object
      title: SoftTimeoutConfigWorkflowOverride
      example:
        message: Hhmmmm...yeah.
        timeout_seconds: -1
        use_llm_generated_message: false
    TTSPerformance:
      type: string
      enum:
        - latency
        - quality
      title: TTSPerformance
      description: |-
        User-facing TTS performance tier. Decouples the UI from vendor names.

        latency  -> optimized for response speed (currently Cartesia Sonic).
        quality  -> optimized for expressiveness (currently ElevenLabs v3).
    PydanticPronunciationDictionaryVersionLocator:
      properties:
        pronunciation_dictionary_id:
          type: string
          title: Pronunciation Dictionary Id
          description: The ID of the pronunciation dictionary
        version_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Id
          description: The ID of the version of the pronunciation dictionary
      type: object
      required:
        - pronunciation_dictionary_id
        - version_id
      title: PydanticPronunciationDictionaryVersionLocator
      description: >-
        A locator for other documents to be able to reference a specific
        dictionary and it's version.

        This is a pydantic version of
        PronunciationDictionaryVersionLocatorDBModel.

        Required to ensure compat with the rest of the agent data models.
    CartesiaSonic36LiveKitInferenceTTSOptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_inference_cartesia_sonic_3_6_2026_08_27_v1
          title: Adapter Contract
          default: livekit_inference_cartesia_sonic_3_6_2026_08_27_v1
        speed:
          anyOf:
            - $ref: '#/components/schemas/CartesiaSpeedPreset'
            - type: number
              maximum: 1.5
              minimum: 0.6
            - type: 'null'
          title: Speed
        volume:
          anyOf:
            - type: number
              maximum: 2
              minimum: 0.5
            - type: 'null'
          title: Volume
        emotion:
          anyOf:
            - $ref: '#/components/schemas/CartesiaEmotion'
            - type: 'null'
        duration_seconds:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Duration Seconds
        max_buffer_delay_ms:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Max Buffer Delay Ms
        add_timestamps:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Add Timestamps
        add_phoneme_timestamps:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Add Phoneme Timestamps
        use_normalized_timestamps:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Normalized Timestamps
      additionalProperties: false
      type: object
      title: CartesiaSonic36LiveKitInferenceTTSOptions
      description: Options for the pinned Sonic 3.6 LiveKit Inference variant.
    SarvamBulbulV3LiveKitPluginTTSOptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_plugin_python_sarvam_bulbul_v3_v1
          title: Adapter Contract
          default: livekit_plugin_python_sarvam_bulbul_v3_v1
        pace:
          anyOf:
            - type: number
              maximum: 2
              minimum: 0.5
            - type: 'null'
          title: Pace
        temperature:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0.01
            - type: 'null'
          title: Temperature
        min_buffer_size:
          anyOf:
            - type: integer
              maximum: 200
              minimum: 30
            - type: 'null'
          title: Min Buffer Size
        max_chunk_length:
          anyOf:
            - type: integer
              maximum: 500
              minimum: 50
            - type: 'null'
          title: Max Chunk Length
      additionalProperties: false
      type: object
      title: SarvamBulbulV3LiveKitPluginTTSOptions
      description: User-facing Bulbul v3 controls compiled to the LiveKit Python plugin.
    ClientEvent:
      type: string
      enum:
        - conversation_initiation_metadata
        - asr_initiation_metadata
        - ping
        - audio
        - interruption
        - user_transcript
        - tentative_user_transcript
        - agent_response
        - agent_response_correction
        - client_tool_call
        - mcp_tool_call
        - mcp_connection_status
        - agent_tool_request
        - agent_tool_response
        - agent_tool_response_full_payload
        - agent_response_metadata
        - vad_score
        - agent_chat_response_part
        - client_error
        - guardrail_triggered
        - dtmf_request
        - agent_response_complete
        - context_usage
        - internal_turn_probability
        - internal_tentative_agent_response
      title: ClientEvent
    FileInputConfigWorkflowOverride:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
          description: >-
            When enabled, users may attach images or PDFs in chat when the LLM
            supports multimodal input.
        max_files_in_memory:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Files In Memory
          description: >-
            Number of most-recent files kept in memory during a conversation.
            Older files are summarized and their bytes freed.
        max_files_per_conversation:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Files Per Conversation
          description: >-
            Total files a user can upload in one conversation. Uploads are
            billed per file. Use -1 for no limit, or a value >=
            max_files_in_memory.
      type: object
      title: FileInputConfigWorkflowOverride
    DTMFInputConfig:
      properties:
        dtmf_input_timeout:
          type: number
          maximum: 10
          minimum: 0.5
          title: Dtmf Input Timeout
          description: Timeout in seconds to wait for additional DTMF digits
          default: 2
        hash_terminator:
          type: boolean
          title: Hash Terminator
          description: 'If true, pressing # immediately completes DTMF input'
          default: true
        redact_input:
          type: boolean
          title: Redact Input
          description: >-
            If true, replace the caller's DTMF (keypad) entries with a redaction
            marker in the transcript, conversation log and analysis. Digits the
            agent repeats back or passes to a tool are not affected.
          default: false
      type: object
      title: DTMFInputConfig
      description: Configuration for DTMF (keypad) input collection during phone calls.
    BackgroundSoundConfigWorkflowOverride:
      properties:
        source_type:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundSourceType'
            - type: 'null'
          description: The type of background sound source.
        source_id:
          anyOf:
            - $ref: '#/components/schemas/BackgroundSoundPresetId'
            - type: 'null'
          description: Identifier for the sound source.
        volume:
          anyOf:
            - type: number
            - type: 'null'
          title: Volume
          description: Volume level for background sound (0.01 to 1.0).
        crossfade_loop:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Crossfade Loop
          description: >-
            Apply a crossfade at the loop boundary to avoid audible pops when
            the sound loops.
      type: object
      title: BackgroundSoundConfigWorkflowOverride
    ConversationConfigClientOverride:
      properties:
        turn:
          anyOf:
            - $ref: '#/components/schemas/TurnConfigOverride'
            - type: 'null'
          description: Configuration for turn detection
        tts:
          anyOf:
            - $ref: '#/components/schemas/TTSConversationalConfigOverride'
            - type: 'null'
          description: Configuration for conversational text to speech
        conversation:
          anyOf:
            - $ref: '#/components/schemas/ConversationConfigOverride'
            - type: 'null'
          description: Configuration for conversational events
        agent:
          anyOf:
            - $ref: '#/components/schemas/AgentConfigOverride'
            - type: 'null'
          description: Agent specific configuration
      type: object
      title: ConversationConfigClientOverride
      example:
        agent:
          first_message: Hello, how can I help you today?
          language: en
          prompt:
            knowledge_base: []
            llm: gemini-2.0-flash-001
            prompt: >-
              You are a helpful assistant that can answer questions about the
              topic of the conversation.
            tool_ids: []
        tts:
          performance: latency
          voice_id: ME9RtCnWp5vX2LhJdF3k
    LanguagePresetTranslation:
      properties:
        source_hash:
          type: string
          title: Source Hash
        text:
          type: string
          title: Text
      type: object
      required:
        - source_hash
        - text
      title: LanguagePresetTranslation
    DynamicVariablesConfigWorkflowOverride-Input:
      properties:
        dynamic_variable_placeholders:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/DynamicVariableValueType-Input'
              type: object
            - type: 'null'
          title: Dynamic Variable Placeholders
          description: A dictionary of dynamic variable placeholders and their values
      type: object
      title: DynamicVariablesConfigWorkflowOverride
      example:
        dynamic_variable_placeholders:
          user_name: John Doe
    BehaviorOverride:
      properties:
        verbosity:
          anyOf:
            - $ref: '#/components/schemas/Verbosity'
            - type: 'null'
          description: Verbosity override. Underlying default applies when unset.
        output_format:
          anyOf:
            - $ref: '#/components/schemas/OutputFormat'
            - type: 'null'
          description: Output format override. Underlying default applies when unset.
        interaction_budget:
          anyOf:
            - $ref: '#/components/schemas/InteractionBudget'
            - type: 'null'
          description: Interaction budget override. Underlying default applies when unset.
      type: object
      title: BehaviorOverride
    PromptAgentAPIModelWorkflowOverride-Input:
      properties:
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: The prompt for the agent
          x-convai-client-override: true
        llm:
          anyOf:
            - $ref: '#/components/schemas/LLM'
            - type: 'null'
          description: >-
            The LLM to query with the prompt and the chat history. If using data
            residency, the LLM must be supported in the data residency
            environment
          x-convai-client-override: true
        reasoning_effort:
          anyOf:
            - $ref: '#/components/schemas/LLMReasoningEffort'
            - type: 'null'
          description: Reasoning effort of the model. Only available for some models.
        thinking_budget:
          anyOf:
            - type: integer
            - type: 'null'
          title: Thinking Budget
          description: >-
            Max number of tokens used for thinking. Use 0 to turn off if
            supported by the model.
        enable_reasoning_summary:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Reasoning Summary
          description: >-
            Enable model reasoning summaries. When disabled, we do not request
            summaries from provider if possible for faster TTFB. Not ZRM
            compatible.
        temperature:
          anyOf:
            - type: number
            - type: 'null'
          title: Temperature
          description: >-
            The temperature for the LLM. Defaults to 0. Set to null to omit the
            parameter from the LLM request entirely (useful for custom LLMs that
            reject the temperature field).
        max_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Tokens
          description: If greater than 0, maximum number of tokens the LLM can predict
        tool_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tool Ids
          description: A list of IDs of tools used by the agent
          x-convai-client-override: true
        built_in_tools:
          anyOf:
            - $ref: '#/components/schemas/BuiltInToolsWorkflowOverride'
            - type: 'null'
          description: Built-in system tools to be used by the agent
        mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mcp Server Ids
          description: A list of MCP server ids to be used by the agent
        native_mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Native Mcp Server Ids
          description: A list of Native MCP server ids to be used by the agent
          x-convai-client-override: true
        knowledge_base:
          anyOf:
            - items:
                $ref: '#/components/schemas/KnowledgeBaseLocator'
              type: array
            - type: 'null'
          title: Knowledge Base
          description: A list of knowledge bases to be used by the agent
          x-convai-client-override: true
        custom_llm:
          anyOf:
            - $ref: '#/components/schemas/CustomLLM'
            - type: 'null'
          description: Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'
        ignore_default_personality:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Ignore Default Personality
          description: >-
            Whether to remove the default personality lines from the system
            prompt
        rag:
          anyOf:
            - $ref: '#/components/schemas/RagConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for RAG
        timezone:
          anyOf:
            - type: string
            - type: 'null'
          title: Timezone
          description: >-
            Timezone for displaying current time in system prompt. If set, the
            current time will be included in the system prompt using this
            timezone. Must be a valid timezone name (e.g., 'America/New_York',
            'Europe/London', 'UTC'). Recommended for accurate time-aware
            responses; without this, the agent has no knowledge of the current
            date/time unless you provide it via dynamic variables or tools,
            which can lead to incorrect or hallucinated time references.
        backup_llm_config:
          anyOf:
            - $ref: '#/components/schemas/BackupLLMDefault'
            - $ref: '#/components/schemas/BackupLLMDisabled'
            - $ref: '#/components/schemas/BackupLLMOverride'
            - type: 'null'
          title: Backup Llm Config
          description: >-
            Configuration for backup LLM cascading. Can be disabled, use system
            defaults, or specify custom order.
        cascade_timeout_seconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Cascade Timeout Seconds
          description: >-
            Time in seconds before cascading to backup LLM. Must be between 2
            and 15 seconds.
        tools:
          anyOf:
            - items:
                oneOf:
                  - $ref: '#/components/schemas/WebhookToolConfig-Input'
                  - $ref: '#/components/schemas/ClientToolConfig-Input'
                  - $ref: '#/components/schemas/SystemToolConfig'
                  - $ref: '#/components/schemas/MCPToolConfig-Input'
                  - $ref: '#/components/schemas/ApiIntegrationWebhookToolConfig-Input'
                  - $ref: '#/components/schemas/SMBToolConfig'
                description: The type of tool
                discriminator:
                  propertyName: type
                  mapping:
                    api_integration_webhook:
                      $ref: >-
                        #/components/schemas/ApiIntegrationWebhookToolConfig-Input
                    client:
                      $ref: '#/components/schemas/ClientToolConfig-Input'
                    mcp:
                      $ref: '#/components/schemas/MCPToolConfig-Input'
                    smb:
                      $ref: '#/components/schemas/SMBToolConfig'
                    system:
                      $ref: '#/components/schemas/SystemToolConfig'
                    webhook:
                      $ref: '#/components/schemas/WebhookToolConfig-Input'
              type: array
            - type: 'null'
          title: Tools
          description: >-
            A list of tools that the agent can use over the course of the
            conversation, use tool_ids instead
      type: object
      title: PromptAgentAPIModelWorkflowOverride
      example:
        knowledge_base: []
        llm: gemini-2.0-flash-001
        max_tokens: -1
        prompt: >-
          You are a helpful assistant that can answer questions about the topic
          of the conversation.
        temperature: 0
        tool_ids: []
        tools: []
    ASRFixedRecognition:
      properties:
        mode:
          type: string
          const: fixed
          title: Mode
          default: fixed
      additionalProperties: false
      type: object
      title: ASRFixedRecognition
      description: Recognize the agent's configured base language.
    ASRAutomaticAgentLanguagesRecognition:
      properties:
        mode:
          type: string
          const: automatic_agent_languages
          title: Mode
          default: automatic_agent_languages
      additionalProperties: false
      type: object
      title: ASRAutomaticAgentLanguagesRecognition
      description: Detect only among the base language and configured language presets.
    ASRAutomaticProviderLanguagesRecognition:
      properties:
        mode:
          type: string
          const: automatic_provider_languages
          title: Mode
          default: automatic_provider_languages
      additionalProperties: false
      type: object
      title: ASRAutomaticProviderLanguagesRecognition
      description: Allow detection across every language supported by the resolved route.
    ASRTranscriptTask:
      type: string
      enum:
        - transcribe
        - translate
        - verbatim
        - transliterate
        - code_mixed
      title: ASRTranscriptTask
    CartesiaInk2LiveKitInferenceASROptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_inference_cartesia_ink_2_v1
          title: Adapter Contract
          default: livekit_inference_cartesia_ink_2_v1
        turn_start_threshold:
          anyOf:
            - type: number
              maximum: 0.9
              minimum: 0.5
            - type: 'null'
          title: Turn Start Threshold
        turn_eager_end_threshold:
          anyOf:
            - type: number
              maximum: 0.6
              minimum: 0.3
            - type: 'null'
          title: Turn Eager End Threshold
        turn_end_threshold:
          anyOf:
            - type: number
              maximum: 0.5
              minimum: 0.05
            - type: 'null'
          title: Turn End Threshold
        turn_end_timeout_ms:
          anyOf:
            - type: integer
              maximum: 11200
              minimum: 640
            - type: 'null'
          title: Turn End Timeout Ms
      additionalProperties: false
      type: object
      title: CartesiaInk2LiveKitInferenceASROptions
      description: Options for Cartesia Ink 2 through LiveKit Inference.
    CartesiaInkWhisperLiveKitInferenceASROptions:
      properties:
        adapter_contract:
          type: string
          const: livekit_inference_cartesia_ink_whisper_v1
          title: Adapter Contract
          default: livekit_inference_cartesia_ink_whisper_v1
        min_volume:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Min Volume
        max_silence_duration_secs:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Silence Duration Secs
      additionalProperties: false
      type: object
      title: CartesiaInkWhisperLiveKitInferenceASROptions
      description: Options for Cartesia Ink Whisper through LiveKit Inference.
    SarvamSaarasV4DirectRealtimeASROptions:
      properties:
        adapter_contract:
          type: string
          const: sarvam_direct_realtime_saaras_v4_2026_09_v1
          title: Adapter Contract
          default: sarvam_direct_realtime_saaras_v4_2026_09_v1
        stream_type:
          $ref: '#/components/schemas/SarvamStreamType'
          default: balanced
        endpointing:
          $ref: '#/components/schemas/ASREndpointingMode'
          default: vad
        threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Threshold
        silence_duration_ms:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Silence Duration Ms
        min_speech_duration_ms:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Min Speech Duration Ms
        return_timestamps:
          type: boolean
          title: Return Timestamps
          default: false
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
      additionalProperties: false
      type: object
      title: SarvamSaarasV4DirectRealtimeASROptions
      description: Options for Saaras v4 on Sarvam's direct realtime WebSocket API.
    WorkflowUnconditionalModel:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: unconditional
          title: Type
          default: unconditional
      type: object
      title: WorkflowUnconditionalModel
    WorkflowLLMConditionModel:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: llm
          title: Type
          default: llm
        condition:
          type: string
          title: Condition
          description: Condition to evaluate
          examples:
            - User's last message contains a question about our pricing.
            - User provided their email address.
      type: object
      required:
        - condition
      title: WorkflowLLMConditionModel
    WorkflowResultConditionModel:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: result
          title: Type
          default: result
        successful:
          type: boolean
          title: Successful
          description: >-
            Whether all tools in the previously executed tool node were executed
            successfully.
      type: object
      required:
        - successful
      title: WorkflowResultConditionModel
    WorkflowExpressionConditionModel-Input:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: >-
            Optional human-readable label for the condition used throughout the
            UI.
        type:
          type: string
          const: expression
          title: Type
          default: expression
        expression:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Expression to evaluate.
      type: object
      required:
        - expression
      title: WorkflowExpressionConditionModel
    Position-Input:
      properties:
        x:
          type: number
          title: X
          default: 0
        'y':
          type: number
          title: 'Y'
          default: 0
      type: object
      title: Position
    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
    ConversationalConfigAPIModelWorkflowOverride-Input:
      properties:
        turn:
          anyOf:
            - $ref: '#/components/schemas/TurnConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for turn detection
        tts:
          anyOf:
            - $ref: '#/components/schemas/TTSConversationalConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational text to speech
        conversation:
          anyOf:
            - $ref: '#/components/schemas/ConversationConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for conversational events
        language_presets:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/LanguagePreset'
              type: object
            - type: 'null'
          title: Language Presets
          description: Language presets for conversations
        vad:
          anyOf:
            - $ref: '#/components/schemas/VADConfigWorkflowOverride'
            - type: 'null'
          description: Configuration for voice activity detection
        agent:
          anyOf:
            - $ref: '#/components/schemas/AgentConfigAPIModelWorkflowOverride-Input'
            - type: 'null'
          description: Agent specific configuration
      type: object
      title: ConversationalConfigAPIModelWorkflowOverride
      example:
        agent:
          disable_first_message_interruptions: false
          dynamic_variables:
            dynamic_variable_placeholders:
              user_name: John Doe
          first_message: Hello, how can I help you today?
          language: en
          prompt:
            knowledge_base: []
            llm: gemini-2.0-flash-001
            max_tokens: -1
            prompt: >-
              You are a helpful assistant that can answer questions about the
              topic of the conversation.
            temperature: 0
            tool_ids: []
        conversation:
          client_events:
            - audio
            - interruption
          max_duration_seconds: 600
        tts:
          performance: latency
          voice_id: ME9RtCnWp5vX2LhJdF3k
        turn:
          interruption_ignore_term_languages: []
          interruption_ignore_terms: []
          merge_with_default_ignore_terms: false
          mode: turn
          retranscribe_on_turn_timeout: false
          silence_end_call_timeout: -1
          soft_timeout_config:
            message: Hhmmmm...yeah.
            timeout_seconds: -1
            use_llm_generated_message: false
          speculative_turn: false
          spelling_patience: auto
          transcribe_on_disabled_interruptions: false
          turn_eagerness: normal
          turn_model: turn_v3
          turn_timeout: 7
    KnowledgeBaseLocator:
      properties:
        type:
          $ref: '#/components/schemas/KnowledgeBaseDocumentType'
          description: The type of the knowledge base
        name:
          type: string
          title: Name
          description: The name of the knowledge base
        id:
          type: string
          title: Id
          description: The ID of the knowledge base
        usage_mode:
          $ref: '#/components/schemas/DocumentUsageModeEnum'
          description: The usage mode of the knowledge base
          default: auto
      type: object
      required:
        - type
        - name
        - id
      title: KnowledgeBaseLocator
      example:
        id: '123'
        name: My Knowledge Base
        type: file
        usage_mode: auto
    EntryBehavior:
      type: string
      enum:
        - generate_immediately
        - wait_for_user
        - auto
      title: EntryBehavior
      default: auto
    WorkflowToolLocator:
      properties:
        tool_id:
          type: string
          title: Tool Id
        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
          description: >-
            Per-node parameter overrides applied on top of the tool's own
            configuration. Keys are dotted parameter paths (webhook tools prefix
            keys with path_params./query_params./request_body.). These take
            precedence over any overrides already defined on the tool itself.
      type: object
      required:
        - tool_id
      title: WorkflowToolLocator
    CartesiaSpeedPreset:
      type: string
      enum:
        - slow
        - normal
        - fast
      title: CartesiaSpeedPreset
    CartesiaEmotion:
      type: string
      enum:
        - happy
        - excited
        - enthusiastic
        - elated
        - euphoric
        - triumphant
        - amazed
        - surprised
        - flirtatious
        - joking/comedic
        - curious
        - content
        - peaceful
        - serene
        - calm
        - grateful
        - affectionate
        - trust
        - sympathetic
        - anticipation
        - mysterious
        - angry
        - mad
        - outraged
        - frustrated
        - agitated
        - threatened
        - disgusted
        - contempt
        - envious
        - sarcastic
        - ironic
        - sad
        - dejected
        - melancholic
        - disappointed
        - hurt
        - guilty
        - bored
        - tired
        - rejected
        - nostalgic
        - wistful
        - apologetic
        - hesitant
        - insecure
        - confused
        - resigned
        - anxious
        - panicked
        - alarmed
        - scared
        - neutral
        - proud
        - confident
        - distant
        - skeptical
        - contemplative
        - determined
      title: CartesiaEmotion
    BackgroundSoundSourceType:
      type: string
      enum:
        - preset
      title: BackgroundSoundSourceType
      description: The type of background sound source.
    BackgroundSoundPresetId:
      type: string
      enum:
        - office2
        - office1
        - restaurant
        - city
        - typing
        - elevator1
        - elevator2
        - elevator3
        - elevator4
      title: BackgroundSoundPresetId
      description: Predefined background sound preset identifiers.
    TurnConfigOverride:
      properties:
        soft_timeout_config:
          anyOf:
            - $ref: '#/components/schemas/SoftTimeoutConfigOverride'
            - type: 'null'
          description: >-
            Configuration for soft timeout functionality. Provides immediate
            feedback during longer LLM responses.
      type: object
      title: TurnConfigOverride
      example:
        soft_timeout_config:
          message: Hhmmmm...yeah.
    TTSConversationalConfigOverride:
      properties:
        voice_id:
          type: string
          title: Voice Id
          description: The voice ID to use for TTS
        performance:
          $ref: '#/components/schemas/TTSPerformance'
          description: >-
            User-facing TTS performance tier (latency or quality). The concrete
            provider/model is selected by the voice-server based on this value.
        pronunciation_dictionary_locators:
          anyOf:
            - items:
                $ref: >-
                  #/components/schemas/PydanticPronunciationDictionaryVersionLocator
              type: array
            - type: 'null'
          title: Pronunciation Dictionary Locators
          description: The pronunciation dictionary locators
          x-convai-client-override: true
      type: object
      title: TTSConversationalConfigOverride
    ConversationConfigOverride:
      properties:
        text_only:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Text Only
          description: >-
            If enabled audio will not be processed and only text will be used,
            use to avoid audio pricing.
          x-convai-client-override: true
        max_duration_seconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Duration Seconds
          description: The maximum duration of a conversation in seconds
          x-convai-client-override: true
      type: object
      title: ConversationConfigOverride
      example:
        max_duration_seconds: 600
    AgentConfigOverride:
      properties:
        first_message:
          anyOf:
            - type: string
            - type: 'null'
          title: First Message
          description: >-
            If non-empty, the first message the agent will say. If empty, the
            agent waits for the user to start the discussion.
          x-convai-client-override: true
          x-convai-language-override: true
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: Language of the agent - used for ASR and TTS
          x-convai-client-override: true
        max_conversation_duration_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Max Conversation Duration Message
          description: >-
            If non-empty, the message the agent will send when max conversation
            duration is reached.
          x-convai-client-override: true
          x-convai-language-override: true
        prompt:
          anyOf:
            - $ref: '#/components/schemas/PromptAgentAPIModelOverride'
            - type: 'null'
          description: The prompt for the agent
      type: object
      title: AgentConfigOverride
      example:
        first_message: Hello, how can I help you today?
        language: en
        prompt:
          knowledge_base: []
          llm: gemini-2.0-flash-001
          prompt: >-
            You are a helpful assistant that can answer questions about the
            topic of the conversation.
          tool_ids: []
    DynamicVariableValueType-Input:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Input'
          type: array
        - type: 'null'
    Verbosity:
      type: string
      enum:
        - auto
        - concise
        - thorough
      title: Verbosity
    OutputFormat:
      type: string
      enum:
        - plain_text
        - markdown
      title: OutputFormat
    InteractionBudget:
      type: string
      enum:
        - realtime
        - 5_minutes
        - 10_minutes
        - 1_hour
      title: InteractionBudget
    LLM:
      type: string
      enum:
        - gpt-4o-mini
        - gpt-4o
        - gpt-4
        - gpt-4-turbo
        - gpt-4.1
        - gpt-4.1-mini
        - gpt-4.1-nano
        - gpt-5
        - gpt-5.1
        - gpt-5.2
        - gpt-5.2-chat-latest
        - gpt-5.4
        - gpt-5.5
        - gpt-5.6-sol
        - gpt-5.6-terra
        - gpt-5.6-luna
        - gpt-5-mini
        - gpt-5-nano
        - gpt-3.5-turbo
        - gemini-1.5-pro
        - gemini-1.5-flash
        - gemini-2.0-flash
        - gemini-2.0-flash-lite
        - gemini-2.5-flash-lite
        - gemini-2.5-flash
        - gemini-3-pro-preview
        - gemini-3-flash-preview
        - gemini-3.1-pro-preview
        - gemini-3.1-flash-lite-preview
        - gemini-3.6-flash
        - gemini-3.7-flash
        - claude-sonnet-4-5
        - claude-opus-4-7
        - claude-sonnet-4-6
        - claude-sonnet-4
        - claude-haiku-4-5
        - claude-3-7-sonnet
        - claude-3-5-sonnet
        - claude-3-5-sonnet-v1
        - claude-3-haiku
        - grok-beta
        - custom-llm
        - qwen3-4b
        - qwen3-30b-a3b
        - qwen36-35b-a3b
        - gpt-oss-20b
        - gpt-oss-120b
        - glm-45-air-fp8
        - gemini-2.5-flash-preview-09-2025
        - gemini-2.5-flash-lite-preview-09-2025
        - gemini-2.5-flash-preview-05-20
        - gemini-2.5-flash-preview-04-17
        - gemini-2.5-flash-lite-preview-06-17
        - gemini-2.0-flash-lite-001
        - gemini-2.0-flash-001
        - gemini-1.5-flash-002
        - gemini-1.5-flash-001
        - gemini-1.5-pro-002
        - gemini-1.5-pro-001
        - claude-sonnet-4@20250514
        - claude-sonnet-4-5@20250929
        - claude-haiku-4-5@20251001
        - claude-3-7-sonnet@20250219
        - claude-3-5-sonnet@20240620
        - claude-3-5-sonnet-v2@20241022
        - claude-3-haiku@20240307
        - gpt-5-2025-08-07
        - gpt-5.1-2025-11-13
        - gpt-5.2-2025-12-11
        - gpt-5.4-2026-03-05
        - gpt-5.5-2026-04-23
        - gpt-5-mini-2025-08-07
        - gpt-5-nano-2025-08-07
        - gpt-4.1-2025-04-14
        - gpt-4.1-mini-2025-04-14
        - gpt-4.1-nano-2025-04-14
        - gpt-4o-mini-2024-07-18
        - gpt-4o-2024-11-20
        - gpt-4o-2024-08-06
        - gpt-4o-2024-05-13
        - gpt-4-0613
        - gpt-4-0314
        - gpt-4-turbo-2024-04-09
        - gpt-3.5-turbo-0125
        - gpt-3.5-turbo-1106
        - watt-tool-8b
        - watt-tool-70b
      title: LLM
    LLMReasoningEffort:
      type: string
      enum:
        - none
        - minimal
        - low
        - medium
        - high
        - xhigh
        - max
      title: LLMReasoningEffort
    BuiltInToolsWorkflowOverride:
      properties:
        end_call:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The end call tool
        language_detection:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The language detection tool
        transfer_to_agent:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The transfer to agent tool
        transfer_to_number:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The transfer to number tool
        skip_turn:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The skip turn tool
        play_keypad_touch_tone:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The play DTMF tool
        voicemail_detection:
          anyOf:
            - $ref: '#/components/schemas/SystemToolConfig'
            - type: 'null'
          description: The voicemail detection tool
      additionalProperties: false
      type: object
      title: BuiltInToolsWorkflowOverride
    CustomLLM:
      properties:
        url:
          type: string
          title: Url
          description: The URL of the Chat Completions compatible endpoint
        model_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Model Id
          description: The model ID to be used if URL serves multiple models
        api_key:
          anyOf:
            - $ref: '#/components/schemas/ConvAISecretLocator'
            - $ref: '#/components/schemas/ConvAIEnvVarLocator'
            - type: 'null'
          title: Api Key
          description: >-
            The API key for authentication. Either a workspace secret reference
            {'secret_id': '...'} or an environment variable reference
            {'env_var_label': '...'}.
        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
        api_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Api Version
          description: The API version to use for the request
        api_type:
          $ref: '#/components/schemas/CustomLLMAPIType'
          description: The API type to use (chat_completions, responses or websocket)
          default: chat_completions
      type: object
      required:
        - url
      title: CustomLLM
    RagConfigWorkflowOverride:
      properties:
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
        embedding_model:
          anyOf:
            - $ref: '#/components/schemas/EmbeddingModelEnum'
            - type: 'null'
        max_vector_distance:
          anyOf:
            - type: number
            - type: 'null'
          title: Max Vector Distance
          description: Maximum vector distance of retrieved chunks.
          examples:
            - 0.5
        max_documents_length:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Documents Length
          description: Maximum total length of document chunks retrieved from RAG.
          examples:
            - '50000'
        max_retrieved_rag_chunks_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Retrieved Rag Chunks Count
          description: >-
            Maximum number of RAG document chunks to initially retrieve from the
            vector store. These are then further filtered by vector distance and
            total length.
          examples:
            - 5
        num_candidates:
          anyOf:
            - type: integer
            - type: 'null'
          title: Num Candidates
          description: >-
            Number of candidates evaluated in ANN vector search. Higher number
            means better results, but higher latency. Minimum recommended value
            is 100. If disabled, the default value is used.
          examples:
            - 300
        query_rewrite_prompt_override:
          anyOf:
            - type: string
            - type: 'null'
          title: Query Rewrite Prompt Override
          description: >-
            Custom prompt for rewriting user queries before RAG retrieval. The
            conversation history will be automatically appended at the end. If
            not set, the default prompt will be used.
          examples:
            - >-
              You are given a conversation between a user and an assistant.
              Rewrite the last question to be self-contained and clear.
      type: object
      title: RagConfigWorkflowOverride
    BackupLLMDefault:
      properties:
        preference:
          type: string
          const: default
          title: Preference
          default: default
      type: object
      title: BackupLLMDefault
    BackupLLMDisabled:
      properties:
        preference:
          type: string
          const: disabled
          title: Preference
          default: disabled
      type: object
      title: BackupLLMDisabled
    BackupLLMOverride:
      properties:
        preference:
          type: string
          const: override
          title: Preference
          default: override
        order:
          items:
            $ref: '#/components/schemas/LLM'
          type: array
          title: Order
      type: object
      required:
        - order
      title: BackupLLMOverride
    WebhookToolConfig-Input:
      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-Input'
          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-Input'
          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-Input:
      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-Input'
            - 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-Input'
          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-Input:
      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-Input'
            - 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-Input:
      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-Input'
          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:
        - name
        - description
        - api_integration_id
        - api_integration_connection_id
      title: ApiIntegrationWebhookToolConfig
    SMBToolConfig:
      properties:
        type:
          type: string
          const: smb
          title: Type
          description: Tool type identifier
          default: smb
        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.
          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
        human_description:
          type: string
          minLength: 0
          title: Human Description
          description: >-
            User-facing tooltip for the procedure reference picker. Not sent to
            the LLM.
          default: ''
        enabled:
          type: boolean
          title: Enabled
          description: Whether this tool is enabled for the agent
          default: true
        params:
          oneOf:
            - $ref: '#/components/schemas/SearchClientsParams'
            - $ref: '#/components/schemas/ListClientsParams'
            - $ref: '#/components/schemas/GetClientByPhoneParams'
            - $ref: '#/components/schemas/CreateClientParams'
            - $ref: '#/components/schemas/UpdateClientParams'
            - $ref: '#/components/schemas/DeleteClientParams'
            - $ref: '#/components/schemas/ListStaffParams'
            - $ref: '#/components/schemas/CreateStaffParams'
            - $ref: '#/components/schemas/UpdateStaffParams'
            - $ref: '#/components/schemas/DeleteStaffParams'
            - $ref: '#/components/schemas/ListAssetsParams'
            - $ref: '#/components/schemas/CreateAssetParams'
            - $ref: '#/components/schemas/UpdateAssetParams'
            - $ref: '#/components/schemas/DeleteAssetParams'
            - $ref: '#/components/schemas/ListServicesParams'
            - $ref: '#/components/schemas/CreateServiceParams'
            - $ref: '#/components/schemas/UpdateServiceParams'
            - $ref: '#/components/schemas/DeleteServiceParams'
            - $ref: '#/components/schemas/ListProductsParams'
            - $ref: '#/components/schemas/CreateProductParams'
            - $ref: '#/components/schemas/UpdateProductParams'
            - $ref: '#/components/schemas/DeleteProductParams'
            - $ref: '#/components/schemas/CheckServiceAvailabilityParams'
            - $ref: '#/components/schemas/CreateClientAppointmentParams'
            - $ref: '#/components/schemas/GetClientAppointmentsParams'
            - $ref: '#/components/schemas/GetAppointmentByConfirmationNumberParams'
            - $ref: '#/components/schemas/CreateOrderParams'
            - $ref: '#/components/schemas/GetOrderByConfirmationNumberParams'
            - $ref: '#/components/schemas/GetClientOrdersParams'
            - $ref: '#/components/schemas/UpdateOrderParams'
            - $ref: '#/components/schemas/CancelOrderParams'
            - $ref: '#/components/schemas/ListGroupSessionsParams'
            - $ref: '#/components/schemas/ScheduleGroupSessionParams'
            - $ref: '#/components/schemas/RegisterForGroupSessionParams'
            - $ref: '#/components/schemas/CancelGroupSessionRegistrationParams'
            - $ref: '#/components/schemas/UpdateGroupSessionSeatsParams'
            - $ref: '#/components/schemas/CancelGroupSessionForAllParams'
            - $ref: '#/components/schemas/DeleteGroupSessionParams'
            - $ref: '#/components/schemas/ListCalendarEventsParams'
            - $ref: '#/components/schemas/UpdateCalendarEventParams'
            - $ref: '#/components/schemas/CancelCalendarEventParams'
            - $ref: '#/components/schemas/RestoreCalendarEventParams'
            - $ref: '#/components/schemas/DeleteCalendarEventParams'
            - $ref: '#/components/schemas/ListCustomerFacingAgentsParams'
            - $ref: '#/components/schemas/ListAgentRulesParams'
            - $ref: '#/components/schemas/CreateAgentRuleParams'
            - $ref: '#/components/schemas/UpdateAgentRuleParams'
            - $ref: '#/components/schemas/DeleteAgentRuleParams'
            - $ref: '#/components/schemas/ListTransferRulesParams'
            - $ref: '#/components/schemas/CreateTransferRuleParams'
            - $ref: '#/components/schemas/UpdateTransferRuleParams'
            - $ref: '#/components/schemas/DeleteTransferRuleParams'
            - $ref: '#/components/schemas/ListAgentProceduresParams'
            - $ref: '#/components/schemas/ListAgentReferencesParams'
            - $ref: '#/components/schemas/CreateAgentProcedureParams'
            - $ref: '#/components/schemas/UpdateAgentProcedureParams'
            - $ref: '#/components/schemas/DeleteAgentProcedureParams'
            - $ref: '#/components/schemas/ListHolidaysParams'
            - $ref: '#/components/schemas/CreateHolidayParams'
            - $ref: '#/components/schemas/UpdateHolidayParams'
            - $ref: '#/components/schemas/DeleteHolidayParams'
            - $ref: '#/components/schemas/GetScheduleParams'
            - $ref: '#/components/schemas/SubmitBusinessInfoParams'
            - $ref: '#/components/schemas/UpdateBusinessInfoParams'
            - $ref: '#/components/schemas/UpdateCustomerFacingConfigParams'
            - $ref: '#/components/schemas/GetAnalyticsSummaryParams'
            - $ref: '#/components/schemas/GetBookingPageSettingsParams'
            - $ref: '#/components/schemas/UpdateBookingPageSettingsParams'
            - $ref: '#/components/schemas/UpdateBookingPageAppearanceParams'
            - $ref: '#/components/schemas/GetBookingSlugStatusParams'
            - $ref: '#/components/schemas/SetBookingSlugParams'
            - $ref: '#/components/schemas/ListClientInteractionsParams'
            - $ref: '#/components/schemas/CreateClientInteractionParams'
            - $ref: '#/components/schemas/DeleteClientInteractionParams'
            - $ref: '#/components/schemas/ListLocationsParams'
            - $ref: '#/components/schemas/CreateLocationParams'
            - $ref: '#/components/schemas/UpdateLocationParams'
            - $ref: '#/components/schemas/DeleteLocationParams'
            - $ref: '#/components/schemas/LeaveMessageParams'
            - $ref: '#/components/schemas/ReportKnowledgeGapParams'
            - $ref: '#/components/schemas/OptInSmsReminderParams'
            - $ref: '#/components/schemas/OptOutSmsReminderParams'
            - $ref: '#/components/schemas/TriggerUserVerificationParams'
            - $ref: '#/components/schemas/ValidateUserVerificationCodeParams'
          title: Params
          discriminator:
            propertyName: smb_tool_type
            mapping:
              cancel_calendar_event:
                $ref: '#/components/schemas/CancelCalendarEventParams'
              cancel_group_session_for_all:
                $ref: '#/components/schemas/CancelGroupSessionForAllParams'
              cancel_group_session_registration:
                $ref: '#/components/schemas/CancelGroupSessionRegistrationParams'
              cancel_order:
                $ref: '#/components/schemas/CancelOrderParams'
              check_service_availability:
                $ref: '#/components/schemas/CheckServiceAvailabilityParams'
              create_agent_procedure:
                $ref: '#/components/schemas/CreateAgentProcedureParams'
              create_agent_rule:
                $ref: '#/components/schemas/CreateAgentRuleParams'
              create_asset:
                $ref: '#/components/schemas/CreateAssetParams'
              create_client:
                $ref: '#/components/schemas/CreateClientParams'
              create_client_appointment:
                $ref: '#/components/schemas/CreateClientAppointmentParams'
              create_client_interaction:
                $ref: '#/components/schemas/CreateClientInteractionParams'
              create_holiday:
                $ref: '#/components/schemas/CreateHolidayParams'
              create_location:
                $ref: '#/components/schemas/CreateLocationParams'
              create_order:
                $ref: '#/components/schemas/CreateOrderParams'
              create_product:
                $ref: '#/components/schemas/CreateProductParams'
              create_service:
                $ref: '#/components/schemas/CreateServiceParams'
              create_staff:
                $ref: '#/components/schemas/CreateStaffParams'
              create_transfer_rule:
                $ref: '#/components/schemas/CreateTransferRuleParams'
              delete_agent_procedure:
                $ref: '#/components/schemas/DeleteAgentProcedureParams'
              delete_agent_rule:
                $ref: '#/components/schemas/DeleteAgentRuleParams'
              delete_asset:
                $ref: '#/components/schemas/DeleteAssetParams'
              delete_calendar_event:
                $ref: '#/components/schemas/DeleteCalendarEventParams'
              delete_client:
                $ref: '#/components/schemas/DeleteClientParams'
              delete_client_interaction:
                $ref: '#/components/schemas/DeleteClientInteractionParams'
              delete_group_session:
                $ref: '#/components/schemas/DeleteGroupSessionParams'
              delete_holiday:
                $ref: '#/components/schemas/DeleteHolidayParams'
              delete_location:
                $ref: '#/components/schemas/DeleteLocationParams'
              delete_product:
                $ref: '#/components/schemas/DeleteProductParams'
              delete_service:
                $ref: '#/components/schemas/DeleteServiceParams'
              delete_staff:
                $ref: '#/components/schemas/DeleteStaffParams'
              delete_transfer_rule:
                $ref: '#/components/schemas/DeleteTransferRuleParams'
              get_analytics_summary:
                $ref: '#/components/schemas/GetAnalyticsSummaryParams'
              get_appointment_by_confirmation_number:
                $ref: '#/components/schemas/GetAppointmentByConfirmationNumberParams'
              get_booking_page_settings:
                $ref: '#/components/schemas/GetBookingPageSettingsParams'
              get_booking_slug_status:
                $ref: '#/components/schemas/GetBookingSlugStatusParams'
              get_client_appointments:
                $ref: '#/components/schemas/GetClientAppointmentsParams'
              get_client_by_phone:
                $ref: '#/components/schemas/GetClientByPhoneParams'
              get_client_orders:
                $ref: '#/components/schemas/GetClientOrdersParams'
              get_order_by_confirmation_number:
                $ref: '#/components/schemas/GetOrderByConfirmationNumberParams'
              get_schedule:
                $ref: '#/components/schemas/GetScheduleParams'
              leave_message:
                $ref: '#/components/schemas/LeaveMessageParams'
              list_agent_procedures:
                $ref: '#/components/schemas/ListAgentProceduresParams'
              list_agent_references:
                $ref: '#/components/schemas/ListAgentReferencesParams'
              list_agent_rules:
                $ref: '#/components/schemas/ListAgentRulesParams'
              list_assets:
                $ref: '#/components/schemas/ListAssetsParams'
              list_calendar_events:
                $ref: '#/components/schemas/ListCalendarEventsParams'
              list_client_interactions:
                $ref: '#/components/schemas/ListClientInteractionsParams'
              list_clients:
                $ref: '#/components/schemas/ListClientsParams'
              list_customer_facing_agents:
                $ref: '#/components/schemas/ListCustomerFacingAgentsParams'
              list_group_sessions:
                $ref: '#/components/schemas/ListGroupSessionsParams'
              list_holidays:
                $ref: '#/components/schemas/ListHolidaysParams'
              list_locations:
                $ref: '#/components/schemas/ListLocationsParams'
              list_products:
                $ref: '#/components/schemas/ListProductsParams'
              list_services:
                $ref: '#/components/schemas/ListServicesParams'
              list_staff:
                $ref: '#/components/schemas/ListStaffParams'
              list_transfer_rules:
                $ref: '#/components/schemas/ListTransferRulesParams'
              opt_in_sms_reminder:
                $ref: '#/components/schemas/OptInSmsReminderParams'
              opt_out_sms_reminder:
                $ref: '#/components/schemas/OptOutSmsReminderParams'
              register_for_group_session:
                $ref: '#/components/schemas/RegisterForGroupSessionParams'
              report_knowledge_gap:
                $ref: '#/components/schemas/ReportKnowledgeGapParams'
              restore_calendar_event:
                $ref: '#/components/schemas/RestoreCalendarEventParams'
              schedule_group_session:
                $ref: '#/components/schemas/ScheduleGroupSessionParams'
              search_clients:
                $ref: '#/components/schemas/SearchClientsParams'
              set_booking_slug:
                $ref: '#/components/schemas/SetBookingSlugParams'
              submit_business_info:
                $ref: '#/components/schemas/SubmitBusinessInfoParams'
              trigger_user_verification:
                $ref: '#/components/schemas/TriggerUserVerificationParams'
              update_agent_procedure:
                $ref: '#/components/schemas/UpdateAgentProcedureParams'
              update_agent_rule:
                $ref: '#/components/schemas/UpdateAgentRuleParams'
              update_asset:
                $ref: '#/components/schemas/UpdateAssetParams'
              update_booking_page_appearance:
                $ref: '#/components/schemas/UpdateBookingPageAppearanceParams'
              update_booking_page_settings:
                $ref: '#/components/schemas/UpdateBookingPageSettingsParams'
              update_business_info:
                $ref: '#/components/schemas/UpdateBusinessInfoParams'
              update_calendar_event:
                $ref: '#/components/schemas/UpdateCalendarEventParams'
              update_client:
                $ref: '#/components/schemas/UpdateClientParams'
              update_customer_facing_config:
                $ref: '#/components/schemas/UpdateCustomerFacingConfigParams'
              update_group_session_seats:
                $ref: '#/components/schemas/UpdateGroupSessionSeatsParams'
              update_holiday:
                $ref: '#/components/schemas/UpdateHolidayParams'
              update_location:
                $ref: '#/components/schemas/UpdateLocationParams'
              update_order:
                $ref: '#/components/schemas/UpdateOrderParams'
              update_product:
                $ref: '#/components/schemas/UpdateProductParams'
              update_service:
                $ref: '#/components/schemas/UpdateServiceParams'
              update_staff:
                $ref: '#/components/schemas/UpdateStaffParams'
              update_transfer_rule:
                $ref: '#/components/schemas/UpdateTransferRuleParams'
              validate_user_verification_code:
                $ref: '#/components/schemas/ValidateUserVerificationCodeParams'
      type: object
      required:
        - name
        - params
      title: SMBToolConfig
      description: SMB tool configuration that wraps SMB tool parameters.
      examples:
        - description: ''
          enabled: true
          name: search_clients
          params:
            smb_tool_type: search_clients
          type: smb
      x-fern-ignore: true
    SarvamStreamType:
      type: string
      enum:
        - fast
        - balanced
        - simulated
      title: SarvamStreamType
    ASREndpointingMode:
      type: string
      enum:
        - vad
        - manual
      title: ASREndpointingMode
    ASTNode-Input:
      oneOf:
        - $ref: '#/components/schemas/ASTStringNode-Input'
          description: String literal.
        - $ref: '#/components/schemas/ASTNumberNode-Input'
          description: Number literal.
        - $ref: '#/components/schemas/ASTBooleanNode-Input'
          description: Boolean literal.
        - $ref: '#/components/schemas/ASTNullNode-Input'
          description: Null literal.
        - $ref: '#/components/schemas/ASTLLMNode-Input'
          description: Value extracted by an LLM according to the given schema.
        - $ref: '#/components/schemas/ASTDynamicVariableNode-Input'
          description: Reference to a dynamic variable.
        - $ref: '#/components/schemas/ASTOrOperatorNode-Input'
          description: Evaluates to true if any child is true.
        - $ref: '#/components/schemas/ASTAndOperatorNode-Input'
          description: Evaluates to true if all children are true.
        - $ref: '#/components/schemas/ASTEqualsOperatorNode-Input'
          description: Evaluates to true if the left value equals the right.
        - $ref: '#/components/schemas/ASTNotEqualsOperatorNode-Input'
          description: Evaluates to true if the left value does not equal the right.
        - $ref: '#/components/schemas/ASTGreaterThanOperatorNode-Input'
          description: Evaluates to true if the left value is greater than the right.
        - $ref: '#/components/schemas/ASTLessThanOperatorNode-Input'
          description: Evaluates to true if the left value is less than the right.
        - $ref: '#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input'
          description: >-
            Evaluates to true if the left value is greater than or equal to the
            right.
        - $ref: '#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input'
          description: >-
            Evaluates to true if the left value is less than or equal to the
            right.
        - $ref: '#/components/schemas/ASTAdditionOperatorNode-Input'
          description: Adds the left and right values.
        - $ref: '#/components/schemas/ASTSubtractionOperatorNode-Input'
          description: Subtracts the right value from the left.
        - $ref: '#/components/schemas/ASTMultiplicationOperatorNode-Input'
          description: Multiplies the left value times the right.
        - $ref: '#/components/schemas/ASTDivisionOperatorNode-Input'
          description: Divides the left value by the right.
        - $ref: '#/components/schemas/ASTConditionalOperatorNode-Input'
          description: >-
            Selects one of two expressions based on whether the given condition
            evaluates to true.
      discriminator:
        propertyName: type
        mapping:
          add_operator:
            $ref: '#/components/schemas/ASTAdditionOperatorNode-Input'
          and_operator:
            $ref: '#/components/schemas/ASTAndOperatorNode-Input'
          boolean_literal:
            $ref: '#/components/schemas/ASTBooleanNode-Input'
          conditional_operator:
            $ref: '#/components/schemas/ASTConditionalOperatorNode-Input'
          div_operator:
            $ref: '#/components/schemas/ASTDivisionOperatorNode-Input'
          dynamic_variable:
            $ref: '#/components/schemas/ASTDynamicVariableNode-Input'
          eq_operator:
            $ref: '#/components/schemas/ASTEqualsOperatorNode-Input'
          gt_operator:
            $ref: '#/components/schemas/ASTGreaterThanOperatorNode-Input'
          gte_operator:
            $ref: '#/components/schemas/ASTGreaterThanOrEqualsOperatorNode-Input'
          llm:
            $ref: '#/components/schemas/ASTLLMNode-Input'
          lt_operator:
            $ref: '#/components/schemas/ASTLessThanOperatorNode-Input'
          lte_operator:
            $ref: '#/components/schemas/ASTLessThanOrEqualsOperatorNode-Input'
          mul_operator:
            $ref: '#/components/schemas/ASTMultiplicationOperatorNode-Input'
          neq_operator:
            $ref: '#/components/schemas/ASTNotEqualsOperatorNode-Input'
          null_literal:
            $ref: '#/components/schemas/ASTNullNode-Input'
          number_literal:
            $ref: '#/components/schemas/ASTNumberNode-Input'
          or_operator:
            $ref: '#/components/schemas/ASTOrOperatorNode-Input'
          string_literal:
            $ref: '#/components/schemas/ASTStringNode-Input'
          sub_operator:
            $ref: '#/components/schemas/ASTSubtractionOperatorNode-Input'
    TTSConversationalConfigWorkflowOverride:
      properties:
        voice_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Id
          description: The voice ID to use for TTS
        performance:
          anyOf:
            - $ref: '#/components/schemas/TTSPerformance'
            - type: 'null'
          description: >-
            User-facing TTS performance tier (latency or quality). The concrete
            provider/model is selected by the voice-server based on this value.
        pronunciation_dictionary_locators:
          anyOf:
            - items:
                $ref: >-
                  #/components/schemas/PydanticPronunciationDictionaryVersionLocator
              type: array
            - type: 'null'
          title: Pronunciation Dictionary Locators
          description: The pronunciation dictionary locators
          x-convai-client-override: true
        enable_phoneme_tags:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Phoneme Tags
          description: >-
            Opt-in to SSML phoneme tag handling. When enabled, phoneme tags from
            inline content and pronunciation dictionaries may be normalized
            before synthesis when the selected provider supports them.
      type: object
      title: TTSConversationalConfigWorkflowOverride
      example:
        performance: latency
        voice_id: ME9RtCnWp5vX2LhJdF3k
    KnowledgeBaseDocumentType:
      type: string
      enum:
        - file
        - url
        - text
        - folder
      title: KnowledgeBaseDocumentType
    DocumentUsageModeEnum:
      type: string
      enum:
        - prompt
        - auto
      title: DocumentUsageModeEnum
      default: auto
    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
    SoftTimeoutConfigOverride:
      properties:
        message:
          anyOf:
            - type: string
            - type: 'null'
          title: Message
          description: >-
            Message to show when the first soft timeout is reached while waiting
            for LLM response. Supports dynamic variables (e.g.,
            {{system__time}}, {{custom_variable}}).
          x-convai-client-override: true
          x-convai-language-override: true
        additional_soft_timeout_messages:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Additional Soft Timeout Messages
          description: >-
            Extra static filler messages for subsequent soft timeouts in the
            same LLM generation. The first timeout uses `message`. If fewer
            messages are configured than `max_soft_timeouts_per_generation`, the
            last configured message is repeated; otherwise a built-in filler is
            used.
          x-convai-client-override: true
          x-convai-language-override: true
      type: object
      title: SoftTimeoutConfigOverride
      example:
        message: Hhmmmm...yeah.
    PromptAgentAPIModelOverride:
      properties:
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: The prompt for the agent
          x-convai-client-override: true
        llm:
          anyOf:
            - $ref: '#/components/schemas/LLM'
            - type: 'null'
          description: >-
            The LLM to query with the prompt and the chat history. If using data
            residency, the LLM must be supported in the data residency
            environment
          x-convai-client-override: true
        tool_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tool Ids
          description: A list of IDs of tools used by the agent
          x-convai-client-override: true
        native_mcp_server_ids:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Native Mcp Server Ids
          description: A list of Native MCP server ids to be used by the agent
          x-convai-client-override: true
        knowledge_base:
          anyOf:
            - items:
                $ref: '#/components/schemas/KnowledgeBaseLocator'
              type: array
            - type: 'null'
          title: Knowledge Base
          description: A list of knowledge bases to be used by the agent
          x-convai-client-override: true
      type: object
      title: PromptAgentAPIModelOverride
      example:
        knowledge_base: []
        llm: gemini-2.0-flash-001
        prompt: >-
          You are a helpful assistant that can answer questions about the topic
          of the conversation.
        tool_ids: []
    DynamicVariableNestedValueType-Input:
      anyOf:
        - type: string
        - type: number
        - type: integer
        - type: boolean
        - items:
            $ref: '#/components/schemas/DynamicVariableNestedValueType-Input'
          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.
    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.
    ConvAIDynamicVariable:
      properties:
        variable_name:
          type: string
          title: Variable Name
      type: object
      required:
        - variable_name
      title: ConvAIDynamicVariable
      description: Used to reference a dynamic variable.
    CustomLLMAPIType:
      type: string
      enum:
        - chat_completions
        - responses
        - websocket
      title: CustomLLMAPIType
    EmbeddingModelEnum:
      type: string
      enum:
        - e5_mistral_7b_instruct
        - multilingual_e5_large_instruct
      title: EmbeddingModelEnum
      default: e5_mistral_7b_instruct
    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-Input:
      properties:
        dynamic_variable_placeholders:
          additionalProperties:
            $ref: '#/components/schemas/DynamicVariableValueType-Input'
          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-Input:
      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-Input'
            - 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-Input'
            - 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-Input:
      properties:
        property_kind:
          type: string
          enum:
            - array
            - object
          title: Property Kind
          default: object
        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-Input'
              - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Input'
          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
    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.
    SearchClientsParams:
      properties:
        smb_tool_type:
          type: string
          const: search_clients
          title: Smb Tool Type
          default: search_clients
      type: object
      title: SearchClientsParams
      description: Search for clients by name, phone number, or email.
    ListClientsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_clients
          title: Smb Tool Type
          default: list_clients
      type: object
      title: ListClientsParams
      description: List clients ordered by most recently updated, with an optional limit.
    GetClientByPhoneParams:
      properties:
        smb_tool_type:
          type: string
          const: get_client_by_phone
          title: Smb Tool Type
          default: get_client_by_phone
      type: object
      title: GetClientByPhoneParams
      description: Look up a client by their exact phone number.
    CreateClientParams:
      properties:
        smb_tool_type:
          type: string
          const: create_client
          title: Smb Tool Type
          default: create_client
      type: object
      title: CreateClientParams
      description: Create a new client in the system.
    UpdateClientParams:
      properties:
        smb_tool_type:
          type: string
          const: update_client
          title: Smb Tool Type
          default: update_client
      type: object
      title: UpdateClientParams
      description: Update an existing client's information.
    DeleteClientParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_client
          title: Smb Tool Type
          default: delete_client
      type: object
      title: DeleteClientParams
      description: Delete a client, cascading deletion of all their appointments first.
    ListStaffParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_staff
          title: Smb Tool Type
          default: list_staff
      type: object
      title: ListStaffParams
    CreateStaffParams:
      properties:
        smb_tool_type:
          type: string
          const: create_staff
          title: Smb Tool Type
          default: create_staff
      type: object
      title: CreateStaffParams
      description: Create a new staff member in the system.
    UpdateStaffParams:
      properties:
        smb_tool_type:
          type: string
          const: update_staff
          title: Smb Tool Type
          default: update_staff
      type: object
      title: UpdateStaffParams
      description: Update an existing staff member's information.
    DeleteStaffParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_staff
          title: Smb Tool Type
          default: delete_staff
      type: object
      title: DeleteStaffParams
      description: Delete an existing staff member from the system.
    ListAssetsParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_assets
          title: Smb Tool Type
          default: list_assets
      type: object
      title: ListAssetsParams
    CreateAssetParams:
      properties:
        smb_tool_type:
          type: string
          const: create_asset
          title: Smb Tool Type
          default: create_asset
      type: object
      title: CreateAssetParams
    UpdateAssetParams:
      properties:
        smb_tool_type:
          type: string
          const: update_asset
          title: Smb Tool Type
          default: update_asset
      type: object
      title: UpdateAssetParams
    DeleteAssetParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_asset
          title: Smb Tool Type
          default: delete_asset
      type: object
      title: DeleteAssetParams
    ListServicesParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_services
          title: Smb Tool Type
          default: list_services
      type: object
      title: ListServicesParams
    CreateServiceParams:
      properties:
        smb_tool_type:
          type: string
          const: create_service
          title: Smb Tool Type
          default: create_service
      type: object
      title: CreateServiceParams
      description: Create a new service (classic, rental, or group) in the system.
    UpdateServiceParams:
      properties:
        smb_tool_type:
          type: string
          const: update_service
          title: Smb Tool Type
          default: update_service
      type: object
      title: UpdateServiceParams
      description: Update an existing service's information.
    DeleteServiceParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_service
          title: Smb Tool Type
          default: delete_service
      type: object
      title: DeleteServiceParams
      description: Delete an existing service from the system.
    ListProductsParams:
      properties:
        list_kwargs:
          additionalProperties: true
          type: object
          title: List Kwargs
        smb_tool_type:
          type: string
          const: list_products
          title: Smb Tool Type
          default: list_products
      type: object
      title: ListProductsParams
    CreateProductParams:
      properties:
        smb_tool_type:
          type: string
          const: create_product
          title: Smb Tool Type
          default: create_product
      type: object
      title: CreateProductParams
    UpdateProductParams:
      properties:
        smb_tool_type:
          type: string
          const: update_product
          title: Smb Tool Type
          default: update_product
      type: object
      title: UpdateProductParams
    DeleteProductParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_product
          title: Smb Tool Type
          default: delete_product
      type: object
      title: DeleteProductParams
    CheckServiceAvailabilityParams:
      properties:
        smb_tool_type:
          type: string
          const: check_service_availability
          title: Smb Tool Type
          default: check_service_availability
      type: object
      title: CheckServiceAvailabilityParams
    CreateClientAppointmentParams:
      properties:
        smb_tool_type:
          type: string
          const: create_client_appointment
          title: Smb Tool Type
          default: create_client_appointment
      type: object
      title: CreateClientAppointmentParams
    GetClientAppointmentsParams:
      properties:
        smb_tool_type:
          type: string
          const: get_client_appointments
          title: Smb Tool Type
          default: get_client_appointments
        include_cancelled:
          type: boolean
          title: Include Cancelled
          default: false
      type: object
      title: GetClientAppointmentsParams
    GetAppointmentByConfirmationNumberParams:
      properties:
        smb_tool_type:
          type: string
          const: get_appointment_by_confirmation_number
          title: Smb Tool Type
          default: get_appointment_by_confirmation_number
      type: object
      title: GetAppointmentByConfirmationNumberParams
      description: >-
        Look up an appointment by the booking confirmation number the caller
        quotes.


        The confirmation number is the 8-character code shown on the booking

        confirmation page (e.g. ``#01ABCDEF``). Callers may read it back with or

        without the leading ``#`` and with varied spacing; the tool normalizes

        the input and does a prefix match on the stored calendar item id.
    CreateOrderParams:
      properties:
        smb_tool_type:
          type: string
          const: create_order
          title: Smb Tool Type
          default: create_order
      type: object
      title: CreateOrderParams
    GetOrderByConfirmationNumberParams:
      properties:
        smb_tool_type:
          type: string
          const: get_order_by_confirmation_number
          title: Smb Tool Type
          default: get_order_by_confirmation_number
      type: object
      title: GetOrderByConfirmationNumberParams
    GetClientOrdersParams:
      properties:
        smb_tool_type:
          type: string
          const: get_client_orders
          title: Smb Tool Type
          default: get_client_orders
        include_cancelled:
          type: boolean
          title: Include Cancelled
          default: false
      type: object
      title: GetClientOrdersParams
    UpdateOrderParams:
      properties:
        smb_tool_type:
          type: string
          const: update_order
          title: Smb Tool Type
          default: update_order
      type: object
      title: UpdateOrderParams
    CancelOrderParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_order
          title: Smb Tool Type
          default: cancel_order
      type: object
      title: CancelOrderParams
    ListGroupSessionsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_group_sessions
          title: Smb Tool Type
          default: list_group_sessions
      type: object
      title: ListGroupSessionsParams
      description: >-
        List scheduled group sessions for a group service in a date range.


        Group services are scheduled in advance (e.g. yoga classes, workshops)
        and

        callers register against an existing session. Use this for group
        services;

        use ``check_service_availability`` for appointment / rental services.
    ScheduleGroupSessionParams:
      properties:
        smb_tool_type:
          type: string
          const: schedule_group_session
          title: Smb Tool Type
          default: schedule_group_session
      type: object
      title: ScheduleGroupSessionParams
      description: >-
        Schedule a single instance of a group service.


        The session's duration is derived from the parent service so the
        assistant

        only has to pin start time, the (optional) instructor / room, and the

        location. Participants register separately via

        ``register_for_group_session``.
    RegisterForGroupSessionParams:
      properties:
        smb_tool_type:
          type: string
          const: register_for_group_session
          title: Smb Tool Type
          default: register_for_group_session
      type: object
      title: RegisterForGroupSessionParams
      description: Register a client for a scheduled group session.
    CancelGroupSessionRegistrationParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_group_session_registration
          title: Smb Tool Type
          default: cancel_group_session_registration
      type: object
      title: CancelGroupSessionRegistrationParams
      description: Cancel a single client's registration for a group session.
    UpdateGroupSessionSeatsParams:
      properties:
        smb_tool_type:
          type: string
          const: update_group_session_seats
          title: Smb Tool Type
          default: update_group_session_seats
      type: object
      title: UpdateGroupSessionSeatsParams
      description: Change the seat count of an existing group session registration.
    CancelGroupSessionForAllParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_group_session_for_all
          title: Smb Tool Type
          default: cancel_group_session_for_all
      type: object
      title: CancelGroupSessionForAllParams
      description: >-
        Cancel an entire group session and notify every registered participant.

        Destructive -- prefer ``cancel_group_session_registration`` for
        cancelling

        a single attendee.
    DeleteGroupSessionParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_group_session
          title: Smb Tool Type
          default: delete_group_session
      type: object
      title: DeleteGroupSessionParams
      description: |-
        Permanently remove a previously-cancelled group session.

        Group analogue of ``delete_calendar_event``: cancel
        (``cancel_group_session_for_all``) is the soft, history-preserving step;
        this tool is the irreversible follow-up that drops the row from Mongo
        and the staff Google Calendar entirely. The backend rejects the call
        (422) if the session hasn't been cancelled yet, so the only safe path
        is cancel-then-delete.
    ListCalendarEventsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_calendar_events
          title: Smb Tool Type
          default: list_calendar_events
        include_cancelled:
          type: boolean
          title: Include Cancelled
          default: false
      type: object
      title: ListCalendarEventsParams
    UpdateCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: update_calendar_event
          title: Smb Tool Type
          default: update_calendar_event
      type: object
      title: UpdateCalendarEventParams
    CancelCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: cancel_calendar_event
          title: Smb Tool Type
          default: cancel_calendar_event
      type: object
      title: CancelCalendarEventParams
    RestoreCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: restore_calendar_event
          title: Smb Tool Type
          default: restore_calendar_event
      type: object
      title: RestoreCalendarEventParams
    DeleteCalendarEventParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_calendar_event
          title: Smb Tool Type
          default: delete_calendar_event
      type: object
      title: DeleteCalendarEventParams
      description: |-
        Permanently remove a previously-cancelled calendar event.

        This delete tool is the irreversible follow-up to cancel_calendar_event.
        The backend rejects the call (422) if the event hasn't been
        cancelled yet, so the only safe path is cancel-then-delete.
    ListCustomerFacingAgentsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_customer_facing_agents
          title: Smb Tool Type
          default: list_customer_facing_agents
      type: object
      title: ListCustomerFacingAgentsParams
      description: >-
        List every customer-facing agent on the workspace.


        The assistant uses this whenever it needs to act on a specific
        customer-facing

        agent (rules, config edits, etc.) so it can pick the right ``agent_id``
        to pass

        to mutating tools. Mirrors the ``list_services`` / ``list_clients``

        pattern: read once, then mutate by id.
    ListAgentRulesParams:
      properties:
        smb_tool_type:
          type: string
          const: list_agent_rules
          title: Smb Tool Type
          default: list_agent_rules
      type: object
      title: ListAgentRulesParams
    CreateAgentRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: create_agent_rule
          title: Smb Tool Type
          default: create_agent_rule
      type: object
      title: CreateAgentRuleParams
    UpdateAgentRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: update_agent_rule
          title: Smb Tool Type
          default: update_agent_rule
      type: object
      title: UpdateAgentRuleParams
    DeleteAgentRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_agent_rule
          title: Smb Tool Type
          default: delete_agent_rule
      type: object
      title: DeleteAgentRuleParams
    ListTransferRulesParams:
      properties:
        smb_tool_type:
          type: string
          const: list_transfer_rules
          title: Smb Tool Type
          default: list_transfer_rules
      type: object
      title: ListTransferRulesParams
    CreateTransferRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: create_transfer_rule
          title: Smb Tool Type
          default: create_transfer_rule
        post_dial_digits_enabled:
          type: boolean
          title: Post Dial Digits Enabled
          description: >-
            Whether to offer the post_dial_digits parameter, set from the
            receptionists' enable_play_keypad_touch_tone_tool config. Digits
            saved while that is off are dropped when the receptionist is built,
            so the parameter is hidden rather than accepted and ignored.
          default: false
      type: object
      title: CreateTransferRuleParams
    UpdateTransferRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: update_transfer_rule
          title: Smb Tool Type
          default: update_transfer_rule
        post_dial_digits_enabled:
          type: boolean
          title: Post Dial Digits Enabled
          description: >-
            Whether to offer the post_dial_digits parameter, set from the
            receptionists' enable_play_keypad_touch_tone_tool config. Digits
            saved while that is off are dropped when the receptionist is built,
            so the parameter is hidden rather than accepted and ignored.
          default: false
      type: object
      title: UpdateTransferRuleParams
    DeleteTransferRuleParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_transfer_rule
          title: Smb Tool Type
          default: delete_transfer_rule
      type: object
      title: DeleteTransferRuleParams
    ListAgentProceduresParams:
      properties:
        smb_tool_type:
          type: string
          const: list_agent_procedures
          title: Smb Tool Type
          default: list_agent_procedures
      type: object
      title: ListAgentProceduresParams
    ListAgentReferencesParams:
      properties:
        smb_tool_type:
          type: string
          const: list_agent_references
          title: Smb Tool Type
          default: list_agent_references
      type: object
      title: ListAgentReferencesParams
    CreateAgentProcedureParams:
      properties:
        smb_tool_type:
          type: string
          const: create_agent_procedure
          title: Smb Tool Type
          default: create_agent_procedure
      type: object
      title: CreateAgentProcedureParams
    UpdateAgentProcedureParams:
      properties:
        smb_tool_type:
          type: string
          const: update_agent_procedure
          title: Smb Tool Type
          default: update_agent_procedure
      type: object
      title: UpdateAgentProcedureParams
    DeleteAgentProcedureParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_agent_procedure
          title: Smb Tool Type
          default: delete_agent_procedure
      type: object
      title: DeleteAgentProcedureParams
    ListHolidaysParams:
      properties:
        smb_tool_type:
          type: string
          const: list_holidays
          title: Smb Tool Type
          default: list_holidays
      type: object
      title: ListHolidaysParams
    CreateHolidayParams:
      properties:
        smb_tool_type:
          type: string
          const: create_holiday
          title: Smb Tool Type
          default: create_holiday
      type: object
      title: CreateHolidayParams
    UpdateHolidayParams:
      properties:
        smb_tool_type:
          type: string
          const: update_holiday
          title: Smb Tool Type
          default: update_holiday
      type: object
      title: UpdateHolidayParams
    DeleteHolidayParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_holiday
          title: Smb Tool Type
          default: delete_holiday
      type: object
      title: DeleteHolidayParams
    GetScheduleParams:
      properties:
        smb_tool_type:
          type: string
          const: get_schedule
          title: Smb Tool Type
          default: get_schedule
        include_location_filter:
          type: boolean
          title: Include Location Filter
          default: false
      type: object
      title: GetScheduleParams
    SubmitBusinessInfoParams:
      properties:
        smb_tool_type:
          type: string
          const: submit_business_info
          title: Smb Tool Type
          default: submit_business_info
      type: object
      title: SubmitBusinessInfoParams
      description: >-
        Finalize the onboarding interview: create a text knowledge source and
        mark done.
    UpdateBusinessInfoParams:
      properties:
        smb_tool_type:
          type: string
          const: update_business_info
          title: Smb Tool Type
          default: update_business_info
      type: object
      title: UpdateBusinessInfoParams
    UpdateCustomerFacingConfigParams:
      properties:
        smb_tool_type:
          type: string
          const: update_customer_facing_config
          title: Smb Tool Type
          default: update_customer_facing_config
      type: object
      title: UpdateCustomerFacingConfigParams
    GetAnalyticsSummaryParams:
      properties:
        smb_tool_type:
          type: string
          const: get_analytics_summary
          title: Smb Tool Type
          default: get_analytics_summary
      type: object
      title: GetAnalyticsSummaryParams
      description: Get a summary of key business analytics for a time period.
    GetBookingPageSettingsParams:
      properties:
        smb_tool_type:
          type: string
          const: get_booking_page_settings
          title: Smb Tool Type
          default: get_booking_page_settings
      type: object
      title: GetBookingPageSettingsParams
    UpdateBookingPageSettingsParams:
      properties:
        smb_tool_type:
          type: string
          const: update_booking_page_settings
          title: Smb Tool Type
          default: update_booking_page_settings
      type: object
      title: UpdateBookingPageSettingsParams
    UpdateBookingPageAppearanceParams:
      properties:
        smb_tool_type:
          type: string
          const: update_booking_page_appearance
          title: Smb Tool Type
          default: update_booking_page_appearance
      type: object
      title: UpdateBookingPageAppearanceParams
    GetBookingSlugStatusParams:
      properties:
        smb_tool_type:
          type: string
          const: get_booking_slug_status
          title: Smb Tool Type
          default: get_booking_slug_status
      type: object
      title: GetBookingSlugStatusParams
    SetBookingSlugParams:
      properties:
        smb_tool_type:
          type: string
          const: set_booking_slug
          title: Smb Tool Type
          default: set_booking_slug
      type: object
      title: SetBookingSlugParams
    ListClientInteractionsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_client_interactions
          title: Smb Tool Type
          default: list_client_interactions
      type: object
      title: ListClientInteractionsParams
    CreateClientInteractionParams:
      properties:
        smb_tool_type:
          type: string
          const: create_client_interaction
          title: Smb Tool Type
          default: create_client_interaction
      type: object
      title: CreateClientInteractionParams
    DeleteClientInteractionParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_client_interaction
          title: Smb Tool Type
          default: delete_client_interaction
      type: object
      title: DeleteClientInteractionParams
    ListLocationsParams:
      properties:
        smb_tool_type:
          type: string
          const: list_locations
          title: Smb Tool Type
          default: list_locations
      type: object
      title: ListLocationsParams
      description: Params + Reception-proxied ``run()`` for list_locations.
    CreateLocationParams:
      properties:
        smb_tool_type:
          type: string
          const: create_location
          title: Smb Tool Type
          default: create_location
      type: object
      title: CreateLocationParams
    UpdateLocationParams:
      properties:
        smb_tool_type:
          type: string
          const: update_location
          title: Smb Tool Type
          default: update_location
      type: object
      title: UpdateLocationParams
    DeleteLocationParams:
      properties:
        smb_tool_type:
          type: string
          const: delete_location
          title: Smb Tool Type
          default: delete_location
      type: object
      title: DeleteLocationParams
    LeaveMessageParams:
      properties:
        smb_tool_type:
          type: string
          const: leave_message
          title: Smb Tool Type
          default: leave_message
      type: object
      title: LeaveMessageParams
    ReportKnowledgeGapParams:
      properties:
        smb_tool_type:
          type: string
          const: report_knowledge_gap
          title: Smb Tool Type
          default: report_knowledge_gap
      type: object
      title: ReportKnowledgeGapParams
    OptInSmsReminderParams:
      properties:
        smb_tool_type:
          type: string
          const: opt_in_sms_reminder
          title: Smb Tool Type
          default: opt_in_sms_reminder
      type: object
      title: OptInSmsReminderParams
    OptOutSmsReminderParams:
      properties:
        smb_tool_type:
          type: string
          const: opt_out_sms_reminder
          title: Smb Tool Type
          default: opt_out_sms_reminder
      type: object
      title: OptOutSmsReminderParams
    TriggerUserVerificationParams:
      properties:
        smb_tool_type:
          type: string
          const: trigger_user_verification
          title: Smb Tool Type
          default: trigger_user_verification
      type: object
      title: TriggerUserVerificationParams
    ValidateUserVerificationCodeParams:
      properties:
        smb_tool_type:
          type: string
          const: validate_user_verification_code
          title: Smb Tool Type
          default: validate_user_verification_code
      type: object
      title: ValidateUserVerificationCodeParams
    ASTStringNode-Input:
      properties:
        type:
          type: string
          const: string_literal
          title: Type
          default: string_literal
        value:
          type: string
          title: Value
          description: Value of this literal.
      type: object
      required:
        - value
      title: ASTStringNode
    ASTNumberNode-Input:
      properties:
        type:
          type: string
          const: number_literal
          title: Type
          default: number_literal
        value:
          anyOf:
            - type: number
            - type: integer
          title: Value
          description: Value of this literal.
      type: object
      required:
        - value
      title: ASTNumberNode
    ASTBooleanNode-Input:
      properties:
        type:
          type: string
          const: boolean_literal
          title: Type
          default: boolean_literal
        value:
          type: boolean
          title: Value
          description: Value of this literal.
      type: object
      required:
        - value
      title: ASTBooleanNode
    ASTNullNode-Input:
      properties:
        type:
          type: string
          const: null_literal
          title: Type
          default: null_literal
      type: object
      title: ASTNullNode
    ASTLLMNode-Input:
      properties:
        type:
          type: string
          const: llm
          title: Type
          default: llm
        value_schema:
          $ref: '#/components/schemas/LLMLiteralJsonSchemaProperty'
          description: JSON schema describing the value that the LLM should extract.
          examples:
            - description: User's last message contains a question about our pricing.
              type: boolean
            - description: User provided their email address.
              type: boolean
      type: object
      required:
        - value_schema
      title: ASTLLMNode
    ASTDynamicVariableNode-Input:
      properties:
        type:
          type: string
          const: dynamic_variable
          title: Type
          default: dynamic_variable
        name:
          type: string
          title: Name
          description: The name of the dynamic variable.
      type: object
      required:
        - name
      title: ASTDynamicVariableNode
    ASTOrOperatorNode-Input:
      properties:
        type:
          type: string
          const: or_operator
          title: Type
          default: or_operator
        children:
          items:
            $ref: '#/components/schemas/ASTNode-Input'
          type: array
          minItems: 2
          title: Children
          description: Child nodes of the logical operator.
      type: object
      required:
        - children
      title: ASTOrOperatorNode
    ASTAndOperatorNode-Input:
      properties:
        type:
          type: string
          const: and_operator
          title: Type
          default: and_operator
        children:
          items:
            $ref: '#/components/schemas/ASTNode-Input'
          type: array
          minItems: 2
          title: Children
          description: Child nodes of the logical operator.
      type: object
      required:
        - children
      title: ASTAndOperatorNode
    ASTEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: eq_operator
          title: Type
          default: eq_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTEqualsOperatorNode
    ASTNotEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: neq_operator
          title: Type
          default: neq_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTNotEqualsOperatorNode
    ASTGreaterThanOperatorNode-Input:
      properties:
        type:
          type: string
          const: gt_operator
          title: Type
          default: gt_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTGreaterThanOperatorNode
    ASTLessThanOperatorNode-Input:
      properties:
        type:
          type: string
          const: lt_operator
          title: Type
          default: lt_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTLessThanOperatorNode
    ASTGreaterThanOrEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: gte_operator
          title: Type
          default: gte_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTGreaterThanOrEqualsOperatorNode
    ASTLessThanOrEqualsOperatorNode-Input:
      properties:
        type:
          type: string
          const: lte_operator
          title: Type
          default: lte_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTLessThanOrEqualsOperatorNode
    ASTAdditionOperatorNode-Input:
      properties:
        type:
          type: string
          const: add_operator
          title: Type
          default: add_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTAdditionOperatorNode
    ASTSubtractionOperatorNode-Input:
      properties:
        type:
          type: string
          const: sub_operator
          title: Type
          default: sub_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTSubtractionOperatorNode
    ASTMultiplicationOperatorNode-Input:
      properties:
        type:
          type: string
          const: mul_operator
          title: Type
          default: mul_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTMultiplicationOperatorNode
    ASTDivisionOperatorNode-Input:
      properties:
        type:
          type: string
          const: div_operator
          title: Type
          default: div_operator
        left:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Left operand of the binary operator.
        right:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Right operand of the binary operator.
      type: object
      required:
        - left
        - right
      title: ASTDivisionOperatorNode
    ASTConditionalOperatorNode-Input:
      properties:
        type:
          type: string
          const: conditional_operator
          title: Type
          default: conditional_operator
        condition:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Condition deciding which expression should be selected.
        trueExpression:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Expression selected if the condition is true.
        falseExpression:
          $ref: '#/components/schemas/ASTNode-Input'
          description: Expression selected if the condition is false.
      type: object
      required:
        - condition
        - trueExpression
        - falseExpression
      title: ASTConditionalOperatorNode
    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-Input:
      properties:
        property_kind:
          type: string
          enum:
            - array
            - object
          title: Property Kind
          default: array
        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-Input'
            - $ref: '#/components/schemas/ArrayJsonSchemaProperty-Input'
          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
    LLMLiteralJsonSchemaProperty:
      properties:
        type:
          anyOf:
            - type: string
              enum:
                - boolean
                - string
                - integer
                - number
            - items:
                type: string
              type: array
              maxItems: 2
              minItems: 2
          title: Type
        description:
          type: string
          minLength: 0
          title: Description
        enum:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Enum
          description: List of allowed string values for string type parameters
      type: object
      required:
        - type
        - description
      title: LLMLiteralJsonSchemaProperty
    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.

````