Skip to main content
Glama
Omnidim

@omnidim-ai/mcp-server

by Omnidim

createAgent

Set up a new voice agent for inbound or outbound calls with settings for speech-to-text, language model, voice, transfers, call-ending rules, post-call actions, and multilingual support.

Instructions

Create a new agent with the provided configuration. The full config supports transcriber, model, voice, web search, transfer, end-call conditions, post-call actions (email, webhook, Omni CRM, Cloud WhatsApp, or a workflow), ambient background track, initial ringing sound, and multilingual support.

Voicemail detection is an access-gated feature that we turn on per account. If it isn't enabled for yours yet, request access before configuring the voicemail object.

(Tags: Agents)

Input Schema

NameRequiredDescriptionDefault
requestBodyYesThe JSON request body.
Idempotency-KeyNoYour own unique key for this agent, for example a fresh UUID. Send the same key when you retry. If the first request already created the agent, you get that agent back instead of a second one, so a request that timed out is safe to repeat. The same key with a different request body is refused. Keys are kept for 24 hours.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.14.0
    • addedInput schema / properties / Idempotency-Key
      Added value: +{
      +  "description": "Your own unique key for this agent, for example a fresh UUID.\nSend the same key when you retry. If the first request already\ncreated the agent, you get that agent back instead of a second\none, so a request that timed out is safe to repeat. The same key\nwith a different request body is refused. Keys are kept for 24\nhours.\n",
      +  "maxLength": 255,
      +  "type": "string"
      +}
    • changedInput schema / properties / requestBody / allOf
      Previous value: -[
      -  {
      -    "description": "Agent configuration.",
      -    "properties": {
      -      "background_track": {
      -        "description": "Ambient background noise that plays under the agent's voice.",
      -        "properties": {
      -          "enabled": {
      -            "description": "Whether to mix the ambient track under the agent's audio.",
      -            "type": "boolean"
      -          },
      -          "name": {
      -            "description": "Ambient track to mix under the agent.",
      -            "enum": [
      -              "call_center",
      -              "filler",
      -              "office",
      -              "office_1",
      -              "restaurant"
      -            ],
      -            "type": "string"
      -          },
      -          "tts_volume_reduction": {
      -            "description": "Amount to drop the agent's TTS volume while the ambient track plays, on a 0–1 scale. Helps the voice cut through without raising the overall mix.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "volume": {
      -            "default": 0.2,
      -            "description": "Volume level on a 0–1 scale. Default 0.2.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "call_type": {
      -        "description": "Call type of the assistant.",
      -        "enum": [
      -          "Incoming",
      -          "Outgoing"
      -        ],
      -        "type": "string"
      -      },
      -      "context_breakdown": {
      -        "description": "List of context breakdowns, each containing `title`, `body`, and optional `is_enabled`.",
      -        "items": {
      -          "properties": {
      -            "body": {
      -              "description": "Body of the breakdown, the detailed prompt content.",
      -              "example": "This agent helps customers with product inquiries and support issues.",
      -              "type": "string"
      -            },
      -            "is_enabled": {
      -              "default": true,
      -              "description": "Whether this section is included in the prompt.",
      -              "type": "boolean"
      -            },
      -            "title": {
      -              "description": "Title of the breakdown.",
      -              "example": "Purpose",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "title",
      -            "body"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "dynamic_variables": {
      -        "additionalProperties": {
      -          "type": "string"
      -        },
      -        "description": "Key/value map used to substitute placeholders in the agent's\nprompt and welcome message at call time. Reference a variable\nin your prompt with `{{variable_name}}`. Useful for\npersonalising the same agent across many calls.\n",
      -        "example": {
      -          "customer_name": "Jane Doe",
      -          "order_id": "ORD-12345"
      -        },
      -        "type": "object"
      -      },
      -      "end_call": {
      -        "description": "Hang up automatically when a condition is met.",
      -        "properties": {
      -          "condition": {
      -            "description": "Natural-language condition that triggers ending the call. Only evaluated when `enabled` is true.",
      -            "example": "End the call once the customer's issue is resolved.",
      -            "type": "string"
      -          },
      -          "enabled": {
      -            "type": "boolean"
      -          },
      -          "message": {
      -            "description": "What the agent says before hanging up.",
      -            "example": "Thank you for contacting us. Have a great day!",
      -            "type": "string"
      -          },
      -          "message_prompt": {
      -            "description": "LLM prompt used to generate the closing line when `message_type` is `prompt`.",
      -            "example": "End the call politely in the same language the user is speaking.",
      -            "type": "string"
      -          },
      -          "message_type": {
      -            "description": "`static` speaks `message` verbatim. `prompt` treats\n`message_prompt` as an LLM instruction and generates a\nfresh closing line each call (useful for matching the\ncaller's language and tone).\n",
      -            "enum": [
      -              "static",
      -              "prompt"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "initial_ringing_sound_enabled": {
      -        "description": "Plays a ringing tone after the call is picked up, until the agent starts speaking.",
      -        "type": "boolean"
      -      },
      -      "is_interruption_allowed": {
      -        "description": "Global toggle for whether the caller can interrupt the agent mid-sentence at any point in the call.",
      -        "type": "boolean"
      -      },
      -      "is_welcome_message_dynamic": {
      -        "description": "When true, the welcome message is treated as a directive the agent uses to generate a tailored greeting for each call, rather than being spoken word for word. When false, the welcome message is spoken exactly as written.",
      -        "type": "boolean"
      -      },
      -      "is_welcome_message_interruption": {
      -        "description": "Allow the caller to interrupt the welcome message. When false, the agent finishes speaking the welcome before listening.",
      -        "type": "boolean"
      -      },
      -      "languages": {
      -        "description": "Languages the agent should support. Pass each language as a display-name string exactly as it appears in the dashboard's language picker. Unrecognized names are skipped.",
      -        "example": [
      -          "English (India)",
      -          "Hindi"
      -        ],
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "model": {
      -        "description": "Configuration for the language model.",
      -        "properties": {
      -          "model": {
      -            "description": "The language model to use. The current catalog is returned by the LLM providers list.",
      -            "enum": [
      -              "azure-gpt-4.1-mini",
      -              "azure-gpt-4.1-nano",
      -              "azure-gpt-4o",
      -              "azure-gpt-4o-mini",
      -              "gemini-2.5-flash",
      -              "gemini-2.5-flash-lite",
      -              "gpt-3.5-turbo",
      -              "gpt-4.1-mini",
      -              "gpt-4.1-nano",
      -              "gpt-4o",
      -              "gpt-4o-mini",
      -              "gpt-5.1",
      -              "llama-3.3-70b-versatile"
      -            ],
      -            "example": "gpt-4.1-mini",
      -            "type": "string"
      -          },
      -          "temperature": {
      -            "description": "Controls randomness in the model's output (0.0 to 1.0).",
      -            "example": 0.7,
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "name": {
      -        "description": "Name for the agent.",
      -        "example": "Customer Support Agent",
      -        "type": "string"
      -      },
      -      "post_call_actions": {
      -        "description": "Side effects that fire once the call ends. Configure email, webhook, or both.",
      -        "properties": {
      -          "email": {
      -            "properties": {
      -              "enabled": {
      -                "type": "boolean"
      -              },
      -              "extracted_variables": {
      -                "description": "Variables the model should pull out of the conversation for the email.",
      -                "items": {
      -                  "properties": {
      -                    "key": {
      -                      "description": "Unique identifier for the variable in the post-call payload.",
      -                      "example": "customer_issue",
      -                      "type": "string"
      -                    },
      -                    "prompt": {
      -                      "description": "Instruction for the model on what to pull out of the conversation.",
      -                      "example": "Identify the main issue the customer is experiencing.",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "prompt"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "include": {
      -                "description": "Which sections to include in the email body.",
      -                "items": {
      -                  "enum": [
      -                    "summary",
      -                    "extracted_variables",
      -                    "fullConversation",
      -                    "sentiment"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "recipients": {
      -                "description": "Email addresses that should receive the notification.",
      -                "example": [
      -                  "support@example.com"
      -                ],
      -                "items": {
      -                  "format": "email",
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "trigger_call_statuses": {
      -                "description": "Call outcomes that should fire this action. Omit to\nuse the default (`completed`, `voicemail_detected`).\nPass an explicit list to also include failed calls,\nno-answers, busy signals, etc.\n",
      -                "example": [
      -                  "completed",
      -                  "voicemail_detected"
      -                ],
      -                "items": {
      -                  "enum": [
      -                    "completed",
      -                    "voicemail_detected",
      -                    "failed",
      -                    "no_answer",
      -                    "busy",
      -                    "cancelled"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "webhook": {
      -            "properties": {
      -              "enabled": {
      -                "type": "boolean"
      -              },
      -              "extracted_variables": {
      -                "description": "Variables the model should pull out of the conversation for the webhook.",
      -                "items": {
      -                  "properties": {
      -                    "key": {
      -                      "description": "Unique identifier for the variable in the post-call payload.",
      -                      "example": "customer_issue",
      -                      "type": "string"
      -                    },
      -                    "prompt": {
      -                      "description": "Instruction for the model on what to pull out of the conversation.",
      -                      "example": "Identify the main issue the customer is experiencing.",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "prompt"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "include": {
      -                "description": "Which sections to include in the webhook body.",
      -                "items": {
      -                  "enum": [
      -                    "summary",
      -                    "extracted_variables",
      -                    "fullConversation",
      -                    "sentiment"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "trigger_call_statuses": {
      -                "description": "Call outcomes that should fire this webhook. Omit to\nuse the default (`completed`, `voicemail_detected`).\n",
      -                "example": [
      -                  "completed",
      -                  "failed"
      -                ],
      -                "items": {
      -                  "enum": [
      -                    "completed",
      -                    "voicemail_detected",
      -                    "failed",
      -                    "no_answer",
      -                    "busy",
      -                    "cancelled"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "url": {
      -                "description": "Endpoint that receives a POST with the call payload.",
      -                "example": "https://your-webhook-endpoint.com/omnidim-callback",
      -                "format": "uri",
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "timezone": {
      -        "description": "IANA timezone for this agent, for example `Asia/Kolkata`. Sets the local date and time the agent works with during calls. If not set, the account timezone is used as fallback. Pass an empty string to clear it.",
      -        "example": "America/New_York",
      -        "type": "string"
      -      },
      -      "transcriber": {
      -        "description": "Configuration for the speech-to-text transcriber.",
      -        "properties": {
      -          "diarize": {
      -            "description": "Identify different speakers in the transcript.",
      -            "type": "boolean"
      -          },
      -          "first_ideal_message": {
      -            "description": "First nudge spoken when the caller goes silent past the\nidle threshold. Set `is_first_ideal_message_dynamic` to\n`true` to have the LLM regenerate this each time.\n",
      -            "type": "string"
      -          },
      -          "interruption_min_words": {
      -            "description": "Minimum number of words the caller must say before their speech is treated as an interruption.",
      -            "example": 2,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "is_first_ideal_message_dynamic": {
      -            "description": "When true, `first_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      -            "type": "boolean"
      -          },
      -          "is_second_ideal_message_dynamic": {
      -            "description": "When true, `second_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      -            "type": "boolean"
      -          },
      -          "language": {
      -            "description": "Language code for the transcriber. Format and supported\nvalues depend on the provider (e.g. `en-US` for Deepgram,\n`hi-IN` for Sarvam). Applies regardless of which\n`provider` is selected.\n",
      -            "example": "en-US",
      -            "type": "string"
      -          },
      -          "max_call_duration_in_sec": {
      -            "description": "Hard upper bound on call length in seconds. The agent will end the call once this is reached.",
      -            "example": 600,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "model": {
      -            "description": "The model to use for transcription (required when provider is `deepgram_stream`).",
      -            "enum": [
      -              "nova-3",
      -              "nova-2"
      -            ],
      -            "example": "nova-3",
      -            "type": "string"
      -          },
      -          "numerals": {
      -            "description": "Convert numbers from words to digits.",
      -            "type": "boolean"
      -          },
      -          "provider": {
      -            "description": "The speech-to-text provider to use.",
      -            "enum": [
      -              "deepgram_stream",
      -              "cartesia",
      -              "sarvam",
      -              "azure_stream",
      -              "soniox"
      -            ],
      -            "example": "deepgram_stream",
      -            "type": "string"
      -          },
      -          "punctuate": {
      -            "description": "Add punctuation to the transcript.",
      -            "type": "boolean"
      -          },
      -          "second_ideal_message": {
      -            "description": "Second nudge spoken if silence continues after the first.",
      -            "type": "string"
      -          },
      -          "should_apply_noise_reduction": {
      -            "description": "Reduce background noise on the inbound audio stream before transcription.",
      -            "type": "boolean"
      -          },
      -          "silence_timeout_ms": {
      -            "description": "Silence timeout in milliseconds.",
      -            "example": 400,
      -            "type": "integer"
      -          },
      -          "smart_format": {
      -            "description": "Apply smart formatting to the transcript.",
      -            "type": "boolean"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "transfer": {
      -        "description": "Conditional call transfer to a human agent or another number.",
      -        "properties": {
      -          "enabled": {
      -            "type": "boolean"
      -          },
      -          "transfer_options": {
      -            "description": "Where to transfer the call and under what condition. The first matching condition wins. In an agent update, sending this list replaces all saved options. Omit it to keep them unchanged, or send an empty array to clear them.",
      -            "items": {
      -              "properties": {
      -                "backup_numbers": {
      -                  "description": "Fallback numbers tried if the primary is unreachable.",
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                "number": {
      -                  "description": "Primary phone number to transfer to. Include country code with leading `+`.",
      -                  "example": "+15551234567",
      -                  "type": "string"
      -                },
      -                "transfer_condition": {
      -                  "description": "Natural-language condition that triggers this transfer option.",
      -                  "example": "Transfer if the customer asks to speak with a human.",
      -                  "type": "string"
      -                },
      -                "transfer_message": {
      -                  "description": "Message the agent says to the caller before executing the transfer.",
      -                  "example": "Please hold while I connect you to one of our agents.",
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "default": "static",
      -                  "description": "`static` transfers to `number`. `dynamic` lets the agent\npick a number at runtime based on the conversation.\n",
      -                  "enum": [
      -                    "static",
      -                    "dynamic"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "number",
      -                "transfer_condition",
      -                "transfer_message"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "voice": {
      -        "dependentRequired": {
      -          "provider": [
      -            "voice_id"
      -          ]
      -        },
      -        "description": "Configuration for the text-to-speech voice. `provider` and `voice_id` identify the voice together, so send both to change it. `provider` on its own is not accepted, and a `voice_id` on its own leaves the voice as it was. The other fields here apply independently.",
      -        "properties": {
      -          "model": {
      -            "description": "TTS model identifier. Only consumed when `provider` is\n`cartesia` (e.g. `sonic-3.5`). For ElevenLabs and other\nproviders the model is implied by `voice_id` and this\nfield is ignored.\n",
      -            "example": "sonic-3.5",
      -            "type": "string"
      -          },
      -          "provider": {
      -            "description": "The voice provider to use. The current catalog is returned by the TTS providers list. Send `voice_id` alongside it.",
      -            "enum": [
      -              "eleven_labs",
      -              "google",
      -              "cartesia",
      -              "sarvam"
      -            ],
      -            "example": "eleven_labs",
      -            "type": "string"
      -          },
      -          "speech_speed": {
      -            "default": 1,
      -            "description": "Playback speed multiplier for the agent's voice. 1.0 is normal speed.",
      -            "maximum": 2,
      -            "minimum": 0.5,
      -            "type": "number"
      -          },
      -          "voice_id": {
      -            "description": "The provider's voice identifier, returned in the `name` field of the voices list (not the numeric `id`). Takes effect when `provider` is sent alongside it.",
      -            "example": "JBFqnCBsd6RMkjVDRZzb",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "voicemail": {
      -        "description": "Voicemail / answering-machine handling for outbound calls. Set this with the nested object shown here; the agent object returns these values as the flat fields `voicemail_enabled` and `voicemail_message`. Voicemail detection is an access-gated feature. If it isn't enabled for your account, [request access](https://omnidim.io/contact-us?reason=product&lock=1).",
      -        "properties": {
      -          "enabled": {
      -            "description": "Detect voicemail and leave your message instead of speaking to a machine.",
      -            "type": "boolean"
      -          },
      -          "message": {
      -            "description": "Message to leave when voicemail is detected.",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "web_search": {
      -        "description": "Configuration for web search capabilities.",
      -        "properties": {
      -          "enabled": {
      -            "description": "Enable or disable web search functionality.",
      -            "type": "boolean"
      -          },
      -          "provider": {
      -            "description": "The search provider to use.",
      -            "enum": [
      -              "DuckDuckGo"
      -            ],
      -            "example": "DuckDuckGo",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "welcome_message": {
      -        "description": "Initial message the agent will say when answering a call.",
      -        "example": "Hello! How can I help you today?",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "required": [
      -      "name",
      -      "welcome_message",
      -      "context_breakdown"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Agent configuration.",
      +    "properties": {
      +      "background_track": {
      +        "description": "Ambient background noise that plays under the agent's voice.",
      +        "properties": {
      +          "enabled": {
      +            "description": "Whether to mix the ambient track under the agent's audio.",
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "description": "Ambient track to mix under the agent.",
      +            "enum": [
      +              "call_center",
      +              "filler",
      +              "office",
      +              "office_1",
      +              "restaurant"
      +            ],
      +            "type": "string"
      +          },
      +          "tts_volume_reduction": {
      +            "description": "Amount to drop the agent's TTS volume while the ambient track plays, on a 0–1 scale. Helps the voice cut through without raising the overall mix.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "volume": {
      +            "default": 0.2,
      +            "description": "Volume level on a 0–1 scale. Default 0.2.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "call_type": {
      +        "description": "Call type of the assistant.",
      +        "enum": [
      +          "Incoming",
      +          "Outgoing"
      +        ],
      +        "type": "string"
      +      },
      +      "context_breakdown": {
      +        "description": "List of context breakdowns, each containing `title`, `body`, and optional `is_enabled`.",
      +        "items": {
      +          "properties": {
      +            "body": {
      +              "description": "Body of the breakdown, the detailed prompt content.",
      +              "example": "This agent helps customers with product inquiries and support issues.",
      +              "type": "string"
      +            },
      +            "is_enabled": {
      +              "default": true,
      +              "description": "Whether this section is included in the prompt.",
      +              "type": "boolean"
      +            },
      +            "title": {
      +              "description": "Title of the breakdown.",
      +              "example": "Purpose",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "title",
      +            "body"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "dynamic_variables": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "description": "Key/value map used to substitute placeholders in the agent's\nprompt and welcome message at call time. Reference a variable\nin your prompt with `{{variable_name}}`. Useful for\npersonalising the same agent across many calls.\n",
      +        "example": {
      +          "customer_name": "Jane Doe",
      +          "order_id": "ORD-12345"
      +        },
      +        "type": "object"
      +      },
      +      "end_call": {
      +        "description": "Hang up automatically when a condition is met.",
      +        "properties": {
      +          "condition": {
      +            "description": "Natural-language condition that triggers ending the call. Only evaluated when `enabled` is true.",
      +            "example": "End the call once the customer's issue is resolved.",
      +            "type": "string"
      +          },
      +          "enabled": {
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "What the agent says before hanging up.",
      +            "example": "Thank you for contacting us. Have a great day!",
      +            "type": "string"
      +          },
      +          "message_prompt": {
      +            "description": "LLM prompt used to generate the closing line when `message_type` is `prompt`.",
      +            "example": "End the call politely in the same language the user is speaking.",
      +            "type": "string"
      +          },
      +          "message_type": {
      +            "description": "`static` speaks `message` verbatim. `prompt` treats\n`message_prompt` as an LLM instruction and generates a\nfresh closing line each call (useful for matching the\ncaller's language and tone).\n",
      +            "enum": [
      +              "static",
      +              "prompt"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "initial_ringing_sound_enabled": {
      +        "description": "Plays a ringing tone after the call is picked up, until the agent starts speaking.",
      +        "type": "boolean"
      +      },
      +      "is_interruption_allowed": {
      +        "description": "Global toggle for whether the caller can interrupt the agent mid-sentence at any point in the call.",
      +        "type": "boolean"
      +      },
      +      "is_welcome_message_dynamic": {
      +        "description": "When true, the welcome message is treated as a directive the agent uses to generate a tailored greeting for each call, rather than being spoken word for word. When false, the welcome message is spoken exactly as written.",
      +        "type": "boolean"
      +      },
      +      "is_welcome_message_interruption": {
      +        "description": "Allow the caller to interrupt the welcome message. When false, the agent finishes speaking the welcome before listening.",
      +        "type": "boolean"
      +      },
      +      "languages": {
      +        "description": "Languages the agent should support. Pass each language as a display-name string exactly as it appears in the dashboard's language picker. Unrecognized names are skipped.",
      +        "example": [
      +          "English (India)",
      +          "Hindi"
      +        ],
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "model": {
      +        "description": "Configuration for the language model.",
      +        "properties": {
      +          "model": {
      +            "description": "The language model to use. The current catalog is returned by the LLM providers list.",
      +            "enum": [
      +              "azure-gpt-4.1-mini",
      +              "azure-gpt-4.1-nano",
      +              "azure-gpt-4o",
      +              "azure-gpt-4o-mini",
      +              "gemini-2.5-flash",
      +              "gemini-2.5-flash-lite",
      +              "gpt-3.5-turbo",
      +              "gpt-4.1-mini",
      +              "gpt-4.1-nano",
      +              "gpt-4o",
      +              "gpt-4o-mini",
      +              "gpt-5.1",
      +              "llama-3.3-70b-versatile"
      +            ],
      +            "example": "gpt-4.1-mini",
      +            "type": "string"
      +          },
      +          "temperature": {
      +            "description": "Controls randomness in the model's output (0.0 to 1.0).",
      +            "example": 0.7,
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "name": {
      +        "description": "Name for the agent.",
      +        "example": "Customer Support Agent",
      +        "type": "string"
      +      },
      +      "post_call_actions": {
      +        "description": "Side effects that fire once the call ends: email, webhook, Omni CRM,\nCloud WhatsApp, a workflow, Google Sheets, Slack, Salesforce, HubSpot\nor Zoho Bigin.\n",
      +        "properties": {
      +          "cloud_whatsapp": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Send a Cloud WhatsApp template message after the call.",
      +                "properties": {
      +                  "phone_number_id": {
      +                    "description": "The id of your organization's Cloud WhatsApp number the\nmessage is sent from.\n",
      +                    "type": "integer"
      +                  },
      +                  "template_id": {
      +                    "description": "An approved template on that number. A template that is not\napproved, or that belongs to another number, is refused.\n",
      +                    "type": "integer"
      +                  },
      +                  "template_variables": {
      +                    "description": "Which extracted variable fills each template placeholder.",
      +                    "items": {
      +                      "properties": {
      +                        "extracted_var": {
      +                          "description": "The key of the extracted variable whose value fills this placeholder.",
      +                          "example": "customer_name",
      +                          "type": "string"
      +                        },
      +                        "index": {
      +                          "description": "The placeholder number, as a string.",
      +                          "example": "1",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "templates": {
      +                    "description": "One or more templates to send, each with its variable mapping.",
      +                    "items": {
      +                      "description": "One Cloud WhatsApp template to send after the call.",
      +                      "properties": {
      +                        "always_send": {
      +                          "description": "Send this template after every call, whichever templates the model chooses.",
      +                          "type": "boolean"
      +                        },
      +                        "template_id": {
      +                          "description": "An approved template on the chosen number.",
      +                          "type": "integer"
      +                        },
      +                        "usage_description": {
      +                          "description": "When this template should be sent. After the call, the model reads\nthese descriptions to choose which templates fit the conversation.\n",
      +                          "example": "Send when the caller books an appointment.",
      +                          "type": "string"
      +                        },
      +                        "variable_mappings": {
      +                          "description": "How to fill each template placeholder.",
      +                          "items": {
      +                            "properties": {
      +                              "extracted_var": {
      +                                "description": "The extracted variable whose value fills this placeholder.",
      +                                "type": "string"
      +                              },
      +                              "fallback_value": {
      +                                "description": "The value to use when the variable is not extracted.",
      +                                "type": "string"
      +                              },
      +                              "index": {
      +                                "description": "The placeholder number, as a string.",
      +                                "example": "1",
      +                                "type": "string"
      +                              },
      +                              "mode": {
      +                                "description": "Which input the dashboard shows for this placeholder. It\ndoes not change the value sent: a `static_value` is used\nfirst, then the extracted variable, then `fallback_value`.\n",
      +                                "enum": [
      +                                  "variable",
      +                                  "static"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "static_value": {
      +                                "description": "A fixed value for this placeholder. When set, it is used\ninstead of the extracted variable.\n",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "type": "object"
      +                          },
      +                          "type": "array"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "email": {
      +            "properties": {
      +              "enabled": {
      +                "type": "boolean"
      +              },
      +              "extracted_variables": {
      +                "description": "Variables the model should pull out of the conversation for the email.",
      +                "items": {
      +                  "properties": {
      +                    "key": {
      +                      "description": "Unique identifier for the variable in the post-call payload.",
      +                      "example": "customer_issue",
      +                      "type": "string"
      +                    },
      +                    "prompt": {
      +                      "description": "Instruction for the model on what to pull out of the conversation.",
      +                      "example": "Identify the main issue the customer is experiencing.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "prompt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "include": {
      +                "description": "Which sections to include in the email body.",
      +                "items": {
      +                  "enum": [
      +                    "summary",
      +                    "extracted_variables",
      +                    "fullConversation",
      +                    "sentiment"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "recipients": {
      +                "description": "Email addresses that should receive the notification.",
      +                "example": [
      +                  "support@example.com"
      +                ],
      +                "items": {
      +                  "format": "email",
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "trigger_call_statuses": {
      +                "description": "Call outcomes that should fire this action. Omit to\nuse the default (`completed`, `voicemail_detected`).\nPass an explicit list to also include failed calls,\nno-answers, busy signals, etc.\n",
      +                "example": [
      +                  "completed",
      +                  "voicemail_detected"
      +                ],
      +                "items": {
      +                  "enum": [
      +                    "completed",
      +                    "voicemail_detected",
      +                    "failed",
      +                    "no-answer",
      +                    "busy",
      +                    "canceled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "google_sheets": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Append the call to a Google Sheet. Sending this key replaces the\nagent's Google Sheets actions; leaving it out keeps them.\n",
      +                "properties": {
      +                  "integration_id": {
      +                    "description": "Required. The id of your Google Sheets integration.",
      +                    "type": "integer"
      +                  },
      +                  "spreadsheet_id": {
      +                    "description": "Required. The id in the sheet's URL, the part after `/d/`.",
      +                    "type": "string"
      +                  },
      +                  "spreadsheet_name": {
      +                    "type": "string"
      +                  },
      +                  "worksheet_name": {
      +                    "description": "The tab to append to. Defaults to `Sheet1`.",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "hubspot": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Create a HubSpot record from the call. Sends a fixed set of\nfields for the object, so it takes no `extracted_variables`.\nSending this key replaces the agent's HubSpot actions; leaving\nit out keeps them.\n",
      +                "properties": {
      +                  "integration_id": {
      +                    "description": "Required. The id of your HubSpot integration.",
      +                    "type": "integer"
      +                  },
      +                  "object_name": {
      +                    "description": "Required.",
      +                    "enum": [
      +                      "contact",
      +                      "company",
      +                      "deal",
      +                      "ticket"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "omni_crm": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Save the call to Omni CRM.",
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "salesforce": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Create a Salesforce record from the call. Sends a fixed set of\nfields for the object, so it takes no `extracted_variables`.\nSending this key replaces the agent's Salesforce actions;\nleaving it out keeps them.\n",
      +                "properties": {
      +                  "integration_id": {
      +                    "description": "Required. The id of your Salesforce integration.",
      +                    "type": "integer"
      +                  },
      +                  "object_name": {
      +                    "description": "Defaults to `Lead`.",
      +                    "enum": [
      +                      "Lead",
      +                      "Contact",
      +                      "Account",
      +                      "Opportunity",
      +                      "Case",
      +                      "Task",
      +                      "Product"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "slack": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Post the call to a Slack channel. Sending this key replaces the\nagent's Slack actions; leaving it out keeps them.\n",
      +                "properties": {
      +                  "channel_id": {
      +                    "description": "The channel id. Send this or `channel_name`.",
      +                    "type": "string"
      +                  },
      +                  "channel_name": {
      +                    "description": "The channel name. Send this or `channel_id`.",
      +                    "type": "string"
      +                  },
      +                  "integration_id": {
      +                    "description": "Required. The id of your Slack integration.",
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "webhook": {
      +            "properties": {
      +              "enabled": {
      +                "type": "boolean"
      +              },
      +              "extracted_variables": {
      +                "description": "Variables the model should pull out of the conversation for the webhook.",
      +                "items": {
      +                  "properties": {
      +                    "key": {
      +                      "description": "Unique identifier for the variable in the post-call payload.",
      +                      "example": "customer_issue",
      +                      "type": "string"
      +                    },
      +                    "prompt": {
      +                      "description": "Instruction for the model on what to pull out of the conversation.",
      +                      "example": "Identify the main issue the customer is experiencing.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "prompt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "include": {
      +                "description": "Which sections to include in the webhook body.",
      +                "items": {
      +                  "enum": [
      +                    "summary",
      +                    "extracted_variables",
      +                    "fullConversation",
      +                    "sentiment"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "trigger_call_statuses": {
      +                "description": "Call outcomes that should fire this webhook. Omit to\nuse the default (`completed`, `voicemail_detected`).\n",
      +                "example": [
      +                  "completed",
      +                  "failed"
      +                ],
      +                "items": {
      +                  "enum": [
      +                    "completed",
      +                    "voicemail_detected",
      +                    "failed",
      +                    "no-answer",
      +                    "busy",
      +                    "canceled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "url": {
      +                "description": "Endpoint that receives a POST with the call payload.",
      +                "example": "https://your-webhook-endpoint.com/omnidim-callback",
      +                "format": "uri",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "workflow": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Trigger a workflow after the call.",
      +                "properties": {
      +                  "workflow_id": {
      +                    "description": "The id of the workflow to run.",
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "zoho_bigin": {
      +            "allOf": [
      +              {
      +                "description": "Settings every post-call channel shares.",
      +                "properties": {
      +                  "enabled": {
      +                    "type": "boolean"
      +                  },
      +                  "extracted_variables": {
      +                    "description": "Variables the model should pull out of the conversation for this action.",
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "description": "Unique identifier for the variable in the post-call payload.",
      +                          "example": "customer_issue",
      +                          "type": "string"
      +                        },
      +                        "prompt": {
      +                          "description": "Instruction for the model on what to pull out of the conversation.",
      +                          "example": "Identify the main issue the customer is experiencing.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "prompt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "include": {
      +                    "description": "Which sections to include in this action.",
      +                    "items": {
      +                      "enum": [
      +                        "summary",
      +                        "extracted_variables",
      +                        "fullConversation",
      +                        "sentiment"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "trigger_call_statuses": {
      +                    "description": "Call outcomes that fire this action. Omit to use the default\n(`completed`, `voicemail_detected`).\n",
      +                    "items": {
      +                      "enum": [
      +                        "completed",
      +                        "voicemail_detected",
      +                        "failed",
      +                        "no-answer",
      +                        "busy",
      +                        "canceled"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "description": "Log the call in Zoho Bigin. Sending this key replaces the\nagent's Zoho Bigin actions; leaving it out keeps them.\n",
      +                "properties": {
      +                  "create_call_log": {
      +                    "description": "Log the call. Defaults to true.",
      +                    "type": "boolean"
      +                  },
      +                  "create_contact": {
      +                    "description": "Create a contact when no contact matches. Defaults to true.",
      +                    "type": "boolean"
      +                  },
      +                  "integration_id": {
      +                    "description": "Required. The id of your Zoho Bigin integration.",
      +                    "type": "integer"
      +                  },
      +                  "update_contact": {
      +                    "description": "Update a matching contact with what the call captured. Defaults to true.",
      +                    "type": "boolean"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "timezone": {
      +        "description": "IANA timezone for this agent, for example `Asia/Kolkata`. Sets the local date and time the agent works with during calls. If not set, the account timezone is used as fallback. Pass an empty string to clear it.",
      +        "example": "America/New_York",
      +        "type": "string"
      +      },
      +      "transcriber": {
      +        "description": "Configuration for the speech-to-text transcriber.",
      +        "properties": {
      +          "diarize": {
      +            "description": "Identify different speakers in the transcript.",
      +            "type": "boolean"
      +          },
      +          "first_ideal_message": {
      +            "description": "First nudge spoken when the caller goes silent past the\nidle threshold. Set `is_first_ideal_message_dynamic` to\n`true` to have the LLM regenerate this each time.\n",
      +            "type": "string"
      +          },
      +          "interruption_min_words": {
      +            "description": "Minimum number of words the caller must say before their speech is treated as an interruption.",
      +            "example": 2,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "is_first_ideal_message_dynamic": {
      +            "description": "When true, `first_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      +            "type": "boolean"
      +          },
      +          "is_second_ideal_message_dynamic": {
      +            "description": "When true, `second_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      +            "type": "boolean"
      +          },
      +          "language": {
      +            "description": "Language code for the transcriber. Format and supported\nvalues depend on the provider (e.g. `en-US` for Deepgram,\n`hi-IN` for Sarvam). Applies regardless of which\n`provider` is selected.\n",
      +            "example": "en-US",
      +            "type": "string"
      +          },
      +          "max_call_duration_in_sec": {
      +            "description": "Hard upper bound on call length in seconds. The agent will end the call once this is reached.",
      +            "example": 600,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "model": {
      +            "description": "Transcription model for the selected provider. For\n`deepgram_stream` this is `nova-3` or `nova-2`; other\nproviders take their own model identifiers.\n",
      +            "example": "nova-3",
      +            "type": "string"
      +          },
      +          "numerals": {
      +            "description": "Convert numbers from words to digits.",
      +            "type": "boolean"
      +          },
      +          "provider": {
      +            "description": "The speech-to-text provider to use.",
      +            "enum": [
      +              "deepgram_stream",
      +              "cartesia",
      +              "sarvam",
      +              "azure_stream",
      +              "soniox"
      +            ],
      +            "example": "deepgram_stream",
      +            "type": "string"
      +          },
      +          "punctuate": {
      +            "description": "Add punctuation to the transcript.",
      +            "type": "boolean"
      +          },
      +          "second_ideal_message": {
      +            "description": "Second nudge spoken if silence continues after the first.",
      +            "type": "string"
      +          },
      +          "should_apply_noise_reduction": {
      +            "description": "Reduce background noise on the inbound audio stream before transcription.",
      +            "type": "boolean"
      +          },
      +          "silence_timeout_ms": {
      +            "description": "Silence timeout in milliseconds.",
      +            "example": 400,
      +            "type": "integer"
      +          },
      +          "smart_format": {
      +            "description": "Apply smart formatting to the transcript.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "transfer": {
      +        "description": "Conditional call transfer to a human agent or another number.",
      +        "properties": {
      +          "enabled": {
      +            "type": "boolean"
      +          },
      +          "transfer_options": {
      +            "description": "Where to transfer the call and under what condition. The first matching condition wins. In an agent update, sending this list replaces all saved options. Omit it to keep them unchanged, or send an empty array to clear them.",
      +            "items": {
      +              "properties": {
      +                "backup_numbers": {
      +                  "description": "Fallback numbers tried if the primary is unreachable.",
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "number": {
      +                  "description": "Primary phone number to transfer to. Include country code with leading `+`.",
      +                  "example": "+15551234567",
      +                  "type": "string"
      +                },
      +                "transfer_condition": {
      +                  "description": "Natural-language condition that triggers this transfer option.",
      +                  "example": "Transfer if the customer asks to speak with a human.",
      +                  "type": "string"
      +                },
      +                "transfer_message": {
      +                  "description": "Message the agent says to the caller before executing the transfer.",
      +                  "example": "Please hold while I connect you to one of our agents.",
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "default": "static",
      +                  "description": "`static` transfers to `number`. `dynamic` lets the agent\npick a number at runtime based on the conversation.\n",
      +                  "enum": [
      +                    "static",
      +                    "dynamic"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "number",
      +                "transfer_condition",
      +                "transfer_message"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "voice": {
      +        "dependentRequired": {
      +          "provider": [
      +            "voice_id"
      +          ]
      +        },
      +        "description": "Configuration for the text-to-speech voice. `provider` and `voice_id` identify the voice together, so send both to change it. `provider` on its own is not accepted, and a `voice_id` on its own leaves the voice as it was. The other fields here apply independently.",
      +        "properties": {
      +          "provider": {
      +            "description": "The voice provider to use. The current catalog is returned by the TTS providers list. Send `voice_id` alongside it.",
      +            "enum": [
      +              "eleven_labs",
      +              "google",
      +              "cartesia",
      +              "sarvam"
      +            ],
      +            "example": "eleven_labs",
      +            "type": "string"
      +          },
      +          "speech_speed": {
      +            "default": 1,
      +            "description": "Playback speed multiplier for the agent's voice. 1.0 is normal speed.",
      +            "maximum": 2,
      +            "minimum": 0.5,
      +            "type": "number"
      +          },
      +          "voice_id": {
      +            "description": "The provider's voice identifier, returned in the `name` field of the voices list (not the numeric `id`). Takes effect when `provider` is sent alongside it.",
      +            "example": "JBFqnCBsd6RMkjVDRZzb",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "voicemail": {
      +        "description": "Voicemail / answering-machine handling for outbound calls. Set this with the nested object shown here; the agent object returns these values as the flat fields `voicemail_enabled` and `voicemail_message`. Voicemail detection is an access-gated feature. If it isn't enabled for your account, [request access](https://omnidim.io/contact-us?reason=product&lock=1).",
      +        "properties": {
      +          "enabled": {
      +            "description": "Detect voicemail and leave your message instead of speaking to a machine.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "Message to leave when voicemail is detected.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "web_search": {
      +        "description": "Configuration for web search capabilities.",
      +        "properties": {
      +          "enabled": {
      +            "description": "Enable or disable web search functionality.",
      +            "type": "boolean"
      +          },
      +          "provider": {
      +            "description": "The search provider to use.",
      +            "enum": [
      +              "DuckDuckGo",
      +              "openAI"
      +            ],
      +            "example": "DuckDuckGo",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "welcome_message": {
      +        "description": "Initial message the agent will say when answering a call.",
      +        "example": "Hello! How can I help you today?",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "required": [
      +      "name",
      +      "context_breakdown"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changedv0.12.0
    • changedInput schema / properties / requestBody / allOf
      Previous value: -[
      -  {
      -    "description": "Agent configuration.",
      -    "properties": {
      -      "background_track": {
      -        "description": "Ambient background noise that plays under the agent's voice.",
      -        "properties": {
      -          "enabled": {
      -            "description": "Whether to mix the ambient track under the agent's audio.",
      -            "type": "boolean"
      -          },
      -          "name": {
      -            "description": "Ambient track to mix under the agent.",
      -            "enum": [
      -              "call_center",
      -              "filler",
      -              "office",
      -              "office_1",
      -              "restaurant"
      -            ],
      -            "type": "string"
      -          },
      -          "tts_volume_reduction": {
      -            "description": "Amount to drop the agent's TTS volume while the ambient track plays, on a 0–1 scale. Helps the voice cut through without raising the overall mix.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "volume": {
      -            "default": 0.2,
      -            "description": "Volume level on a 0–1 scale. Default 0.2.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "call_type": {
      -        "description": "Call type of the assistant.",
      -        "enum": [
      -          "Incoming",
      -          "Outgoing"
      -        ],
      -        "type": "string"
      -      },
      -      "context_breakdown": {
      -        "description": "List of context breakdowns, each containing `title`, `body`, and optional `is_enabled`.",
      -        "items": {
      -          "properties": {
      -            "body": {
      -              "description": "Body of the breakdown, the detailed prompt content.",
      -              "example": "This agent helps customers with product inquiries and support issues.",
      -              "type": "string"
      -            },
      -            "is_enabled": {
      -              "default": true,
      -              "description": "Whether this section is included in the prompt.",
      -              "type": "boolean"
      -            },
      -            "title": {
      -              "description": "Title of the breakdown.",
      -              "example": "Purpose",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "title",
      -            "body"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "dynamic_variables": {
      -        "additionalProperties": {
      -          "type": "string"
      -        },
      -        "description": "Key/value map used to substitute placeholders in the agent's\nprompt and welcome message at call time. Reference a variable\nin your prompt with `{{variable_name}}`. Useful for\npersonalising the same agent across many calls.\n",
      -        "example": {
      -          "customer_name": "Jane Doe",
      -          "order_id": "ORD-12345"
      -        },
      -        "type": "object"
      -      },
      -      "end_call": {
      -        "description": "Hang up automatically when a condition is met.",
      -        "properties": {
      -          "condition": {
      -            "description": "Natural-language condition that triggers ending the call. Only evaluated when `enabled` is true.",
      -            "example": "End the call once the customer's issue is resolved.",
      -            "type": "string"
      -          },
      -          "enabled": {
      -            "type": "boolean"
      -          },
      -          "message": {
      -            "description": "What the agent says before hanging up.",
      -            "example": "Thank you for contacting us. Have a great day!",
      -            "type": "string"
      -          },
      -          "message_prompt": {
      -            "description": "LLM prompt used to generate the closing line when `message_type` is `prompt`.",
      -            "example": "End the call politely in the same language the user is speaking.",
      -            "type": "string"
      -          },
      -          "message_type": {
      -            "description": "`static` speaks `message` verbatim. `prompt` treats\n`message_prompt` as an LLM instruction and generates a\nfresh closing line each call (useful for matching the\ncaller's language and tone).\n",
      -            "enum": [
      -              "static",
      -              "prompt"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "initial_ringing_sound_enabled": {
      -        "description": "Plays a ringing tone after the call is picked up, until the agent starts speaking.",
      -        "type": "boolean"
      -      },
      -      "is_interruption_allowed": {
      -        "description": "Global toggle for whether the caller can interrupt the agent mid-sentence at any point in the call.",
      -        "type": "boolean"
      -      },
      -      "is_welcome_message_dynamic": {
      -        "description": "When true, the welcome message is treated as a directive the agent uses to generate a tailored greeting for each call, rather than being spoken word for word. When false, the welcome message is spoken exactly as written.",
      -        "type": "boolean"
      -      },
      -      "is_welcome_message_interruption": {
      -        "description": "Allow the caller to interrupt the welcome message. When false, the agent finishes speaking the welcome before listening.",
      -        "type": "boolean"
      -      },
      -      "languages": {
      -        "description": "Languages the agent should support. Pass each language as a display-name string exactly as it appears in the dashboard's language picker. Unrecognized names are skipped.",
      -        "example": [
      -          "English (India)",
      -          "Hindi"
      -        ],
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "model": {
      -        "description": "Configuration for the language model.",
      -        "properties": {
      -          "model": {
      -            "description": "The language model to use. The current catalog is returned by the LLM providers list.",
      -            "enum": [
      -              "azure-gpt-4.1-mini",
      -              "azure-gpt-4.1-nano",
      -              "azure-gpt-4o",
      -              "azure-gpt-4o-mini",
      -              "gemini-2.5-flash",
      -              "gemini-2.5-flash-lite",
      -              "gpt-3.5-turbo",
      -              "gpt-4.1-mini",
      -              "gpt-4.1-nano",
      -              "gpt-4o",
      -              "gpt-4o-mini",
      -              "gpt-5.1",
      -              "llama-3.3-70b-versatile"
      -            ],
      -            "example": "gpt-4.1-mini",
      -            "type": "string"
      -          },
      -          "temperature": {
      -            "description": "Controls randomness in the model's output (0.0 to 1.0).",
      -            "example": 0.7,
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "name": {
      -        "description": "Name for the agent.",
      -        "example": "Customer Support Agent",
      -        "type": "string"
      -      },
      -      "post_call_actions": {
      -        "description": "Side effects that fire once the call ends. Configure email, webhook, or both.",
      -        "properties": {
      -          "email": {
      -            "properties": {
      -              "enabled": {
      -                "type": "boolean"
      -              },
      -              "extracted_variables": {
      -                "description": "Variables the model should pull out of the conversation for the email.",
      -                "items": {
      -                  "properties": {
      -                    "key": {
      -                      "description": "Unique identifier for the variable in the post-call payload.",
      -                      "example": "customer_issue",
      -                      "type": "string"
      -                    },
      -                    "prompt": {
      -                      "description": "Instruction for the model on what to pull out of the conversation.",
      -                      "example": "Identify the main issue the customer is experiencing.",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "prompt"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "include": {
      -                "description": "Which sections to include in the email body.",
      -                "items": {
      -                  "enum": [
      -                    "summary",
      -                    "extracted_variables",
      -                    "fullConversation",
      -                    "sentiment"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "recipients": {
      -                "description": "Email addresses that should receive the notification.",
      -                "example": [
      -                  "support@example.com"
      -                ],
      -                "items": {
      -                  "format": "email",
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "trigger_call_statuses": {
      -                "description": "Call outcomes that should fire this action. Omit to\nuse the default (`completed`, `voicemail_detected`).\nPass an explicit list to also include failed calls,\nno-answers, busy signals, etc.\n",
      -                "example": [
      -                  "completed",
      -                  "voicemail_detected"
      -                ],
      -                "items": {
      -                  "enum": [
      -                    "completed",
      -                    "voicemail_detected",
      -                    "failed",
      -                    "no_answer",
      -                    "busy",
      -                    "cancelled"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "webhook": {
      -            "properties": {
      -              "enabled": {
      -                "type": "boolean"
      -              },
      -              "extracted_variables": {
      -                "description": "Variables the model should pull out of the conversation for the webhook.",
      -                "items": {
      -                  "properties": {
      -                    "key": {
      -                      "description": "Unique identifier for the variable in the post-call payload.",
      -                      "example": "customer_issue",
      -                      "type": "string"
      -                    },
      -                    "prompt": {
      -                      "description": "Instruction for the model on what to pull out of the conversation.",
      -                      "example": "Identify the main issue the customer is experiencing.",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "prompt"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "include": {
      -                "description": "Which sections to include in the webhook body.",
      -                "items": {
      -                  "enum": [
      -                    "summary",
      -                    "extracted_variables",
      -                    "fullConversation",
      -                    "sentiment"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "trigger_call_statuses": {
      -                "description": "Call outcomes that should fire this webhook. Omit to\nuse the default (`completed`, `voicemail_detected`).\n",
      -                "example": [
      -                  "completed",
      -                  "failed"
      -                ],
      -                "items": {
      -                  "enum": [
      -                    "completed",
      -                    "voicemail_detected",
      -                    "failed",
      -                    "no_answer",
      -                    "busy",
      -                    "cancelled"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "url": {
      -                "description": "Endpoint that receives a POST with the call payload.",
      -                "example": "https://your-webhook-endpoint.com/omnidim-callback",
      -                "format": "uri",
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "transcriber": {
      -        "description": "Configuration for the speech-to-text transcriber.",
      -        "properties": {
      -          "diarize": {
      -            "description": "Identify different speakers in the transcript.",
      -            "type": "boolean"
      -          },
      -          "first_ideal_message": {
      -            "description": "First nudge spoken when the caller goes silent past the\nidle threshold. Set `is_first_ideal_message_dynamic` to\n`true` to have the LLM regenerate this each time.\n",
      -            "type": "string"
      -          },
      -          "interruption_min_words": {
      -            "description": "Minimum number of words the caller must say before their speech is treated as an interruption.",
      -            "example": 2,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "is_first_ideal_message_dynamic": {
      -            "description": "When true, `first_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      -            "type": "boolean"
      -          },
      -          "is_second_ideal_message_dynamic": {
      -            "description": "When true, `second_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      -            "type": "boolean"
      -          },
      -          "language": {
      -            "description": "Language code for the transcriber. Format and supported\nvalues depend on the provider (e.g. `en-US` for Deepgram,\n`hi-IN` for Sarvam). Applies regardless of which\n`provider` is selected.\n",
      -            "example": "en-US",
      -            "type": "string"
      -          },
      -          "max_call_duration_in_sec": {
      -            "description": "Hard upper bound on call length in seconds. The agent will end the call once this is reached.",
      -            "example": 600,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "model": {
      -            "description": "The model to use for transcription (required when provider is `deepgram_stream`).",
      -            "enum": [
      -              "nova-3",
      -              "nova-2"
      -            ],
      -            "example": "nova-3",
      -            "type": "string"
      -          },
      -          "numerals": {
      -            "description": "Convert numbers from words to digits.",
      -            "type": "boolean"
      -          },
      -          "provider": {
      -            "description": "The speech-to-text provider to use.",
      -            "enum": [
      -              "deepgram_stream",
      -              "cartesia",
      -              "sarvam",
      -              "azure_stream",
      -              "soniox"
      -            ],
      -            "example": "deepgram_stream",
      -            "type": "string"
      -          },
      -          "punctuate": {
      -            "description": "Add punctuation to the transcript.",
      -            "type": "boolean"
      -          },
      -          "second_ideal_message": {
      -            "description": "Second nudge spoken if silence continues after the first.",
      -            "type": "string"
      -          },
      -          "should_apply_noise_reduction": {
      -            "description": "Reduce background noise on the inbound audio stream before transcription.",
      -            "type": "boolean"
      -          },
      -          "silence_timeout_ms": {
      -            "description": "Silence timeout in milliseconds.",
      -            "example": 400,
      -            "type": "integer"
      -          },
      -          "smart_format": {
      -            "description": "Apply smart formatting to the transcript.",
      -            "type": "boolean"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "transfer": {
      -        "description": "Conditional call transfer to a human agent or another number.",
      -        "properties": {
      -          "enabled": {
      -            "type": "boolean"
      -          },
      -          "transfer_options": {
      -            "description": "Where to transfer the call and under what condition. The first matching condition wins. In an agent update, sending this list replaces all saved options. Omit it to keep them unchanged, or send an empty array to clear them.",
      -            "items": {
      -              "properties": {
      -                "backup_numbers": {
      -                  "description": "Fallback numbers tried if the primary is unreachable.",
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                "number": {
      -                  "description": "Primary phone number to transfer to. Include country code with leading `+`.",
      -                  "example": "+15551234567",
      -                  "type": "string"
      -                },
      -                "transfer_condition": {
      -                  "description": "Natural-language condition that triggers this transfer option.",
      -                  "example": "Transfer if the customer asks to speak with a human.",
      -                  "type": "string"
      -                },
      -                "transfer_message": {
      -                  "description": "Message the agent says to the caller before executing the transfer.",
      -                  "example": "Please hold while I connect you to one of our agents.",
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "default": "static",
      -                  "description": "`static` transfers to `number`. `dynamic` lets the agent\npick a number at runtime based on the conversation.\n",
      -                  "enum": [
      -                    "static",
      -                    "dynamic"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "number",
      -                "transfer_condition",
      -                "transfer_message"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "voice": {
      -        "dependentRequired": {
      -          "provider": [
      -            "voice_id"
      -          ]
      -        },
      -        "description": "Configuration for the text-to-speech voice. `provider` and `voice_id` identify the voice together, so send both to change it. `provider` on its own is not accepted, and a `voice_id` on its own leaves the voice as it was. The other fields here apply independently.",
      -        "properties": {
      -          "model": {
      -            "description": "TTS model identifier. Only consumed when `provider` is\n`cartesia` (e.g. `sonic-3.5`). For ElevenLabs and other\nproviders the model is implied by `voice_id` and this\nfield is ignored.\n",
      -            "example": "sonic-3.5",
      -            "type": "string"
      -          },
      -          "provider": {
      -            "description": "The voice provider to use. The current catalog is returned by the TTS providers list. Send `voice_id` alongside it.",
      -            "enum": [
      -              "eleven_labs",
      -              "google",
      -              "cartesia",
      -              "sarvam"
      -            ],
      -            "example": "eleven_labs",
      -            "type": "string"
      -          },
      -          "speech_speed": {
      -            "default": 1,
      -            "description": "Playback speed multiplier for the agent's voice. 1.0 is normal speed.",
      -            "maximum": 2,
      -            "minimum": 0.5,
      -            "type": "number"
      -          },
      -          "voice_id": {
      -            "description": "The provider's voice identifier, returned in the `name` field of the voices list (not the numeric `id`). Takes effect when `provider` is sent alongside it.",
      -            "example": "JBFqnCBsd6RMkjVDRZzb",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "voicemail": {
      -        "description": "Voicemail / answering-machine handling for outbound calls. Set this with the nested object shown here; the agent object returns these values as the flat fields `voicemail_enabled` and `voicemail_message`. Voicemail detection is an access-gated feature. If it isn't enabled for your account, [request access](https://omnidim.io/contact-us?reason=product&lock=1).",
      -        "properties": {
      -          "enabled": {
      -            "description": "Detect voicemail and leave your message instead of speaking to a machine.",
      -            "type": "boolean"
      -          },
      -          "message": {
      -            "description": "Message to leave when voicemail is detected.",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "web_search": {
      -        "description": "Configuration for web search capabilities.",
      -        "properties": {
      -          "enabled": {
      -            "description": "Enable or disable web search functionality.",
      -            "type": "boolean"
      -          },
      -          "provider": {
      -            "description": "The search provider to use.",
      -            "enum": [
      -              "DuckDuckGo"
      -            ],
      -            "example": "DuckDuckGo",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "welcome_message": {
      -        "description": "Initial message the agent will say when answering a call.",
      -        "example": "Hello! How can I help you today?",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "required": [
      -      "name",
      -      "welcome_message",
      -      "context_breakdown"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Agent configuration.",
      +    "properties": {
      +      "background_track": {
      +        "description": "Ambient background noise that plays under the agent's voice.",
      +        "properties": {
      +          "enabled": {
      +            "description": "Whether to mix the ambient track under the agent's audio.",
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "description": "Ambient track to mix under the agent.",
      +            "enum": [
      +              "call_center",
      +              "filler",
      +              "office",
      +              "office_1",
      +              "restaurant"
      +            ],
      +            "type": "string"
      +          },
      +          "tts_volume_reduction": {
      +            "description": "Amount to drop the agent's TTS volume while the ambient track plays, on a 0–1 scale. Helps the voice cut through without raising the overall mix.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "volume": {
      +            "default": 0.2,
      +            "description": "Volume level on a 0–1 scale. Default 0.2.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "call_type": {
      +        "description": "Call type of the assistant.",
      +        "enum": [
      +          "Incoming",
      +          "Outgoing"
      +        ],
      +        "type": "string"
      +      },
      +      "context_breakdown": {
      +        "description": "List of context breakdowns, each containing `title`, `body`, and optional `is_enabled`.",
      +        "items": {
      +          "properties": {
      +            "body": {
      +              "description": "Body of the breakdown, the detailed prompt content.",
      +              "example": "This agent helps customers with product inquiries and support issues.",
      +              "type": "string"
      +            },
      +            "is_enabled": {
      +              "default": true,
      +              "description": "Whether this section is included in the prompt.",
      +              "type": "boolean"
      +            },
      +            "title": {
      +              "description": "Title of the breakdown.",
      +              "example": "Purpose",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "title",
      +            "body"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "dynamic_variables": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "description": "Key/value map used to substitute placeholders in the agent's\nprompt and welcome message at call time. Reference a variable\nin your prompt with `{{variable_name}}`. Useful for\npersonalising the same agent across many calls.\n",
      +        "example": {
      +          "customer_name": "Jane Doe",
      +          "order_id": "ORD-12345"
      +        },
      +        "type": "object"
      +      },
      +      "end_call": {
      +        "description": "Hang up automatically when a condition is met.",
      +        "properties": {
      +          "condition": {
      +            "description": "Natural-language condition that triggers ending the call. Only evaluated when `enabled` is true.",
      +            "example": "End the call once the customer's issue is resolved.",
      +            "type": "string"
      +          },
      +          "enabled": {
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "What the agent says before hanging up.",
      +            "example": "Thank you for contacting us. Have a great day!",
      +            "type": "string"
      +          },
      +          "message_prompt": {
      +            "description": "LLM prompt used to generate the closing line when `message_type` is `prompt`.",
      +            "example": "End the call politely in the same language the user is speaking.",
      +            "type": "string"
      +          },
      +          "message_type": {
      +            "description": "`static` speaks `message` verbatim. `prompt` treats\n`message_prompt` as an LLM instruction and generates a\nfresh closing line each call (useful for matching the\ncaller's language and tone).\n",
      +            "enum": [
      +              "static",
      +              "prompt"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "initial_ringing_sound_enabled": {
      +        "description": "Plays a ringing tone after the call is picked up, until the agent starts speaking.",
      +        "type": "boolean"
      +      },
      +      "is_interruption_allowed": {
      +        "description": "Global toggle for whether the caller can interrupt the agent mid-sentence at any point in the call.",
      +        "type": "boolean"
      +      },
      +      "is_welcome_message_dynamic": {
      +        "description": "When true, the welcome message is treated as a directive the agent uses to generate a tailored greeting for each call, rather than being spoken word for word. When false, the welcome message is spoken exactly as written.",
      +        "type": "boolean"
      +      },
      +      "is_welcome_message_interruption": {
      +        "description": "Allow the caller to interrupt the welcome message. When false, the agent finishes speaking the welcome before listening.",
      +        "type": "boolean"
      +      },
      +      "languages": {
      +        "description": "Languages the agent should support. Pass each language as a display-name string exactly as it appears in the dashboard's language picker. Unrecognized names are skipped.",
      +        "example": [
      +          "English (India)",
      +          "Hindi"
      +        ],
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "model": {
      +        "description": "Configuration for the language model.",
      +        "properties": {
      +          "model": {
      +            "description": "The language model to use. The current catalog is returned by the LLM providers list.",
      +            "enum": [
      +              "azure-gpt-4.1-mini",
      +              "azure-gpt-4.1-nano",
      +              "azure-gpt-4o",
      +              "azure-gpt-4o-mini",
      +              "gemini-2.5-flash",
      +              "gemini-2.5-flash-lite",
      +              "gpt-3.5-turbo",
      +              "gpt-4.1-mini",
      +              "gpt-4.1-nano",
      +              "gpt-4o",
      +              "gpt-4o-mini",
      +              "gpt-5.1",
      +              "llama-3.3-70b-versatile"
      +            ],
      +            "example": "gpt-4.1-mini",
      +            "type": "string"
      +          },
      +          "temperature": {
      +            "description": "Controls randomness in the model's output (0.0 to 1.0).",
      +            "example": 0.7,
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "name": {
      +        "description": "Name for the agent.",
      +        "example": "Customer Support Agent",
      +        "type": "string"
      +      },
      +      "post_call_actions": {
      +        "description": "Side effects that fire once the call ends. Configure email, webhook, or both.",
      +        "properties": {
      +          "email": {
      +            "properties": {
      +              "enabled": {
      +                "type": "boolean"
      +              },
      +              "extracted_variables": {
      +                "description": "Variables the model should pull out of the conversation for the email.",
      +                "items": {
      +                  "properties": {
      +                    "key": {
      +                      "description": "Unique identifier for the variable in the post-call payload.",
      +                      "example": "customer_issue",
      +                      "type": "string"
      +                    },
      +                    "prompt": {
      +                      "description": "Instruction for the model on what to pull out of the conversation.",
      +                      "example": "Identify the main issue the customer is experiencing.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "prompt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "include": {
      +                "description": "Which sections to include in the email body.",
      +                "items": {
      +                  "enum": [
      +                    "summary",
      +                    "extracted_variables",
      +                    "fullConversation",
      +                    "sentiment"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "recipients": {
      +                "description": "Email addresses that should receive the notification.",
      +                "example": [
      +                  "support@example.com"
      +                ],
      +                "items": {
      +                  "format": "email",
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "trigger_call_statuses": {
      +                "description": "Call outcomes that should fire this action. Omit to\nuse the default (`completed`, `voicemail_detected`).\nPass an explicit list to also include failed calls,\nno-answers, busy signals, etc.\n",
      +                "example": [
      +                  "completed",
      +                  "voicemail_detected"
      +                ],
      +                "items": {
      +                  "enum": [
      +                    "completed",
      +                    "voicemail_detected",
      +                    "failed",
      +                    "no_answer",
      +                    "busy",
      +                    "cancelled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "webhook": {
      +            "properties": {
      +              "enabled": {
      +                "type": "boolean"
      +              },
      +              "extracted_variables": {
      +                "description": "Variables the model should pull out of the conversation for the webhook.",
      +                "items": {
      +                  "properties": {
      +                    "key": {
      +                      "description": "Unique identifier for the variable in the post-call payload.",
      +                      "example": "customer_issue",
      +                      "type": "string"
      +                    },
      +                    "prompt": {
      +                      "description": "Instruction for the model on what to pull out of the conversation.",
      +                      "example": "Identify the main issue the customer is experiencing.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "prompt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "include": {
      +                "description": "Which sections to include in the webhook body.",
      +                "items": {
      +                  "enum": [
      +                    "summary",
      +                    "extracted_variables",
      +                    "fullConversation",
      +                    "sentiment"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "trigger_call_statuses": {
      +                "description": "Call outcomes that should fire this webhook. Omit to\nuse the default (`completed`, `voicemail_detected`).\n",
      +                "example": [
      +                  "completed",
      +                  "failed"
      +                ],
      +                "items": {
      +                  "enum": [
      +                    "completed",
      +                    "voicemail_detected",
      +                    "failed",
      +                    "no_answer",
      +                    "busy",
      +                    "cancelled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "url": {
      +                "description": "Endpoint that receives a POST with the call payload.",
      +                "example": "https://your-webhook-endpoint.com/omnidim-callback",
      +                "format": "uri",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "timezone": {
      +        "description": "IANA timezone for this agent, for example `Asia/Kolkata`. Sets the local date and time the agent works with during calls. If not set, the account timezone is used as fallback. Pass an empty string to clear it.",
      +        "example": "America/New_York",
      +        "type": "string"
      +      },
      +      "transcriber": {
      +        "description": "Configuration for the speech-to-text transcriber.",
      +        "properties": {
      +          "diarize": {
      +            "description": "Identify different speakers in the transcript.",
      +            "type": "boolean"
      +          },
      +          "first_ideal_message": {
      +            "description": "First nudge spoken when the caller goes silent past the\nidle threshold. Set `is_first_ideal_message_dynamic` to\n`true` to have the LLM regenerate this each time.\n",
      +            "type": "string"
      +          },
      +          "interruption_min_words": {
      +            "description": "Minimum number of words the caller must say before their speech is treated as an interruption.",
      +            "example": 2,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "is_first_ideal_message_dynamic": {
      +            "description": "When true, `first_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      +            "type": "boolean"
      +          },
      +          "is_second_ideal_message_dynamic": {
      +            "description": "When true, `second_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      +            "type": "boolean"
      +          },
      +          "language": {
      +            "description": "Language code for the transcriber. Format and supported\nvalues depend on the provider (e.g. `en-US` for Deepgram,\n`hi-IN` for Sarvam). Applies regardless of which\n`provider` is selected.\n",
      +            "example": "en-US",
      +            "type": "string"
      +          },
      +          "max_call_duration_in_sec": {
      +            "description": "Hard upper bound on call length in seconds. The agent will end the call once this is reached.",
      +            "example": 600,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "model": {
      +            "description": "The model to use for transcription (required when provider is `deepgram_stream`).",
      +            "enum": [
      +              "nova-3",
      +              "nova-2"
      +            ],
      +            "example": "nova-3",
      +            "type": "string"
      +          },
      +          "numerals": {
      +            "description": "Convert numbers from words to digits.",
      +            "type": "boolean"
      +          },
      +          "provider": {
      +            "description": "The speech-to-text provider to use.",
      +            "enum": [
      +              "deepgram_stream",
      +              "cartesia",
      +              "sarvam",
      +              "azure_stream",
      +              "soniox"
      +            ],
      +            "example": "deepgram_stream",
      +            "type": "string"
      +          },
      +          "punctuate": {
      +            "description": "Add punctuation to the transcript.",
      +            "type": "boolean"
      +          },
      +          "second_ideal_message": {
      +            "description": "Second nudge spoken if silence continues after the first.",
      +            "type": "string"
      +          },
      +          "should_apply_noise_reduction": {
      +            "description": "Reduce background noise on the inbound audio stream before transcription.",
      +            "type": "boolean"
      +          },
      +          "silence_timeout_ms": {
      +            "description": "Silence timeout in milliseconds.",
      +            "example": 400,
      +            "type": "integer"
      +          },
      +          "smart_format": {
      +            "description": "Apply smart formatting to the transcript.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "transfer": {
      +        "description": "Conditional call transfer to a human agent or another number.",
      +        "properties": {
      +          "enabled": {
      +            "type": "boolean"
      +          },
      +          "transfer_options": {
      +            "description": "Where to transfer the call and under what condition. The first matching condition wins. In an agent update, sending this list replaces all saved options. Omit it to keep them unchanged, or send an empty array to clear them.",
      +            "items": {
      +              "properties": {
      +                "backup_numbers": {
      +                  "description": "Fallback numbers tried if the primary is unreachable.",
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "number": {
      +                  "description": "Primary phone number to transfer to. Include country code with leading `+`.",
      +                  "example": "+15551234567",
      +                  "type": "string"
      +                },
      +                "transfer_condition": {
      +                  "description": "Natural-language condition that triggers this transfer option.",
      +                  "example": "Transfer if the customer asks to speak with a human.",
      +                  "type": "string"
      +                },
      +                "transfer_message": {
      +                  "description": "Message the agent says to the caller before executing the transfer.",
      +                  "example": "Please hold while I connect you to one of our agents.",
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "default": "static",
      +                  "description": "`static` transfers to `number`. `dynamic` lets the agent\npick a number at runtime based on the conversation.\n",
      +                  "enum": [
      +                    "static",
      +                    "dynamic"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "number",
      +                "transfer_condition",
      +                "transfer_message"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "voice": {
      +        "dependentRequired": {
      +          "provider": [
      +            "voice_id"
      +          ]
      +        },
      +        "description": "Configuration for the text-to-speech voice. `provider` and `voice_id` identify the voice together, so send both to change it. `provider` on its own is not accepted, and a `voice_id` on its own leaves the voice as it was. The other fields here apply independently.",
      +        "properties": {
      +          "model": {
      +            "description": "TTS model identifier. Only consumed when `provider` is\n`cartesia` (e.g. `sonic-3.5`). For ElevenLabs and other\nproviders the model is implied by `voice_id` and this\nfield is ignored.\n",
      +            "example": "sonic-3.5",
      +            "type": "string"
      +          },
      +          "provider": {
      +            "description": "The voice provider to use. The current catalog is returned by the TTS providers list. Send `voice_id` alongside it.",
      +            "enum": [
      +              "eleven_labs",
      +              "google",
      +              "cartesia",
      +              "sarvam"
      +            ],
      +            "example": "eleven_labs",
      +            "type": "string"
      +          },
      +          "speech_speed": {
      +            "default": 1,
      +            "description": "Playback speed multiplier for the agent's voice. 1.0 is normal speed.",
      +            "maximum": 2,
      +            "minimum": 0.5,
      +            "type": "number"
      +          },
      +          "voice_id": {
      +            "description": "The provider's voice identifier, returned in the `name` field of the voices list (not the numeric `id`). Takes effect when `provider` is sent alongside it.",
      +            "example": "JBFqnCBsd6RMkjVDRZzb",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "voicemail": {
      +        "description": "Voicemail / answering-machine handling for outbound calls. Set this with the nested object shown here; the agent object returns these values as the flat fields `voicemail_enabled` and `voicemail_message`. Voicemail detection is an access-gated feature. If it isn't enabled for your account, [request access](https://omnidim.io/contact-us?reason=product&lock=1).",
      +        "properties": {
      +          "enabled": {
      +            "description": "Detect voicemail and leave your message instead of speaking to a machine.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "Message to leave when voicemail is detected.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "web_search": {
      +        "description": "Configuration for web search capabilities.",
      +        "properties": {
      +          "enabled": {
      +            "description": "Enable or disable web search functionality.",
      +            "type": "boolean"
      +          },
      +          "provider": {
      +            "description": "The search provider to use.",
      +            "enum": [
      +              "DuckDuckGo"
      +            ],
      +            "example": "DuckDuckGo",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "welcome_message": {
      +        "description": "Initial message the agent will say when answering a call.",
      +        "example": "Hello! How can I help you today?",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "required": [
      +      "name",
      +      "welcome_message",
      +      "context_breakdown"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changedv0.9.2
    • changedInput schema / properties / requestBody / allOf
      Previous value: -[
      -  {
      -    "description": "Agent configuration.",
      -    "properties": {
      -      "background_track": {
      -        "description": "Ambient background noise that plays under the agent's voice.",
      -        "properties": {
      -          "enabled": {
      -            "description": "Whether to mix the ambient track under the agent's audio.",
      -            "type": "boolean"
      -          },
      -          "name": {
      -            "description": "Ambient track to mix under the agent.",
      -            "enum": [
      -              "call_center",
      -              "filler",
      -              "office",
      -              "office_1",
      -              "restaurant"
      -            ],
      -            "type": "string"
      -          },
      -          "tts_volume_reduction": {
      -            "description": "Amount to drop the agent's TTS volume while the ambient track plays, on a 0–1 scale. Helps the voice cut through without raising the overall mix.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "volume": {
      -            "default": 0.2,
      -            "description": "Volume level on a 0–1 scale. Default 0.2.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "call_type": {
      -        "description": "Call type of the assistant.",
      -        "enum": [
      -          "Incoming",
      -          "Outgoing"
      -        ],
      -        "type": "string"
      -      },
      -      "context_breakdown": {
      -        "description": "List of context breakdowns, each containing `title`, `body`, and optional `is_enabled`.",
      -        "items": {
      -          "properties": {
      -            "body": {
      -              "description": "Body of the breakdown, the detailed prompt content.",
      -              "example": "This agent helps customers with product inquiries and support issues.",
      -              "type": "string"
      -            },
      -            "is_enabled": {
      -              "default": true,
      -              "description": "Whether this section is included in the prompt.",
      -              "type": "boolean"
      -            },
      -            "title": {
      -              "description": "Title of the breakdown.",
      -              "example": "Purpose",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "title",
      -            "body"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "dynamic_variables": {
      -        "additionalProperties": {
      -          "type": "string"
      -        },
      -        "description": "Key/value map used to substitute placeholders in the agent's\nprompt and welcome message at call time. Reference a variable\nin your prompt with `{{variable_name}}`. Useful for\npersonalising the same agent across many calls.\n",
      -        "example": {
      -          "customer_name": "Jane Doe",
      -          "order_id": "ORD-12345"
      -        },
      -        "type": "object"
      -      },
      -      "end_call": {
      -        "description": "Hang up automatically when a condition is met.",
      -        "properties": {
      -          "condition": {
      -            "description": "Natural-language condition that triggers ending the call. Only evaluated when `enabled` is true.",
      -            "example": "End the call once the customer's issue is resolved.",
      -            "type": "string"
      -          },
      -          "enabled": {
      -            "type": "boolean"
      -          },
      -          "message": {
      -            "description": "What the agent says before hanging up.",
      -            "example": "Thank you for contacting us. Have a great day!",
      -            "type": "string"
      -          },
      -          "message_prompt": {
      -            "description": "LLM prompt used to generate the closing line when `message_type` is `prompt`.",
      -            "example": "End the call politely in the same language the user is speaking.",
      -            "type": "string"
      -          },
      -          "message_type": {
      -            "description": "`static` speaks `message` verbatim. `prompt` treats\n`message_prompt` as an LLM instruction and generates a\nfresh closing line each call (useful for matching the\ncaller's language and tone).\n",
      -            "enum": [
      -              "static",
      -              "prompt"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "initial_ringing_sound_enabled": {
      -        "description": "Plays a ringing tone after the call is picked up, until the agent starts speaking.",
      -        "type": "boolean"
      -      },
      -      "is_interruption_allowed": {
      -        "description": "Global toggle for whether the caller can interrupt the agent mid-sentence at any point in the call.",
      -        "type": "boolean"
      -      },
      -      "is_welcome_message_dynamic": {
      -        "description": "When true, the welcome message is treated as a directive the agent uses to generate a tailored greeting for each call, rather than being spoken word for word. When false, the welcome message is spoken exactly as written.",
      -        "type": "boolean"
      -      },
      -      "is_welcome_message_interruption": {
      -        "description": "Allow the caller to interrupt the welcome message. When false, the agent finishes speaking the welcome before listening.",
      -        "type": "boolean"
      -      },
      -      "languages": {
      -        "description": "Languages the agent should support. Pass each language as a display-name string exactly as it appears in the dashboard's language picker. Unrecognized names are skipped.",
      -        "example": [
      -          "English (India)",
      -          "Hindi"
      -        ],
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "model": {
      -        "description": "Configuration for the language model.",
      -        "properties": {
      -          "model": {
      -            "description": "The language model to use. The current catalog is returned by the LLM providers list.",
      -            "enum": [
      -              "azure-gpt-4.1-mini",
      -              "azure-gpt-4.1-nano",
      -              "azure-gpt-4o",
      -              "azure-gpt-4o-mini",
      -              "gemini-2.5-flash",
      -              "gemini-2.5-flash-lite",
      -              "gpt-3.5-turbo",
      -              "gpt-4.1-mini",
      -              "gpt-4.1-nano",
      -              "gpt-4o",
      -              "gpt-4o-mini",
      -              "gpt-5.1",
      -              "llama-3.3-70b-versatile"
      -            ],
      -            "example": "gpt-4.1-mini",
      -            "type": "string"
      -          },
      -          "temperature": {
      -            "description": "Controls randomness in the model's output (0.0 to 1.0).",
      -            "example": 0.7,
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "name": {
      -        "description": "Name for the agent.",
      -        "example": "Customer Support Agent",
      -        "type": "string"
      -      },
      -      "post_call_actions": {
      -        "description": "Side effects that fire once the call ends. Configure email, webhook, or both.",
      -        "properties": {
      -          "email": {
      -            "properties": {
      -              "enabled": {
      -                "type": "boolean"
      -              },
      -              "extracted_variables": {
      -                "description": "Variables the model should pull out of the conversation for the email.",
      -                "items": {
      -                  "properties": {
      -                    "key": {
      -                      "description": "Unique identifier for the variable in the post-call payload.",
      -                      "example": "customer_issue",
      -                      "type": "string"
      -                    },
      -                    "prompt": {
      -                      "description": "Instruction for the model on what to pull out of the conversation.",
      -                      "example": "Identify the main issue the customer is experiencing.",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "prompt"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "include": {
      -                "description": "Which sections to include in the email body.",
      -                "items": {
      -                  "enum": [
      -                    "summary",
      -                    "extracted_variables",
      -                    "fullConversation",
      -                    "sentiment"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "recipients": {
      -                "description": "Email addresses that should receive the notification.",
      -                "example": [
      -                  "support@example.com"
      -                ],
      -                "items": {
      -                  "format": "email",
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "trigger_call_statuses": {
      -                "description": "Call outcomes that should fire this action. Omit to\nuse the default (`completed`, `voicemail_detected`).\nPass an explicit list to also include failed calls,\nno-answers, busy signals, etc.\n",
      -                "example": [
      -                  "completed",
      -                  "voicemail_detected"
      -                ],
      -                "items": {
      -                  "enum": [
      -                    "completed",
      -                    "voicemail_detected",
      -                    "failed",
      -                    "no_answer",
      -                    "busy",
      -                    "cancelled"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "webhook": {
      -            "properties": {
      -              "enabled": {
      -                "type": "boolean"
      -              },
      -              "extracted_variables": {
      -                "description": "Variables the model should pull out of the conversation for the webhook.",
      -                "items": {
      -                  "properties": {
      -                    "key": {
      -                      "description": "Unique identifier for the variable in the post-call payload.",
      -                      "example": "customer_issue",
      -                      "type": "string"
      -                    },
      -                    "prompt": {
      -                      "description": "Instruction for the model on what to pull out of the conversation.",
      -                      "example": "Identify the main issue the customer is experiencing.",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "prompt"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "include": {
      -                "description": "Which sections to include in the webhook body.",
      -                "items": {
      -                  "enum": [
      -                    "summary",
      -                    "extracted_variables",
      -                    "fullConversation",
      -                    "sentiment"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "trigger_call_statuses": {
      -                "description": "Call outcomes that should fire this webhook. Omit to\nuse the default (`completed`, `voicemail_detected`).\n",
      -                "example": [
      -                  "completed",
      -                  "failed"
      -                ],
      -                "items": {
      -                  "enum": [
      -                    "completed",
      -                    "voicemail_detected",
      -                    "failed",
      -                    "no_answer",
      -                    "busy",
      -                    "cancelled"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "url": {
      -                "description": "Endpoint that receives a POST with the call payload.",
      -                "example": "https://your-webhook-endpoint.com/omnidim-callback",
      -                "format": "uri",
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "transcriber": {
      -        "description": "Configuration for the speech-to-text transcriber.",
      -        "properties": {
      -          "diarize": {
      -            "description": "Identify different speakers in the transcript.",
      -            "type": "boolean"
      -          },
      -          "first_ideal_message": {
      -            "description": "First nudge spoken when the caller goes silent past the\nidle threshold. Set `is_first_ideal_message_dynamic` to\n`true` to have the LLM regenerate this each time.\n",
      -            "type": "string"
      -          },
      -          "interruption_min_words": {
      -            "description": "Minimum number of words the caller must say before their speech is treated as an interruption.",
      -            "example": 2,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "is_first_ideal_message_dynamic": {
      -            "description": "When true, `first_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      -            "type": "boolean"
      -          },
      -          "is_second_ideal_message_dynamic": {
      -            "description": "When true, `second_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      -            "type": "boolean"
      -          },
      -          "language": {
      -            "description": "Language code for the transcriber. Format and supported\nvalues depend on the provider (e.g. `en-US` for Deepgram,\n`hi-IN` for Sarvam). Applies regardless of which\n`provider` is selected.\n",
      -            "example": "en-US",
      -            "type": "string"
      -          },
      -          "max_call_duration_in_sec": {
      -            "description": "Hard upper bound on call length in seconds. The agent will end the call once this is reached.",
      -            "example": 600,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "model": {
      -            "description": "The model to use for transcription (required when provider is `deepgram_stream`).",
      -            "enum": [
      -              "nova-3",
      -              "nova-2"
      -            ],
      -            "example": "nova-3",
      -            "type": "string"
      -          },
      -          "numerals": {
      -            "description": "Convert numbers from words to digits.",
      -            "type": "boolean"
      -          },
      -          "provider": {
      -            "description": "The speech-to-text provider to use.",
      -            "enum": [
      -              "deepgram_stream",
      -              "cartesia",
      -              "sarvam",
      -              "azure_stream",
      -              "soniox"
      -            ],
      -            "example": "deepgram_stream",
      -            "type": "string"
      -          },
      -          "punctuate": {
      -            "description": "Add punctuation to the transcript.",
      -            "type": "boolean"
      -          },
      -          "second_ideal_message": {
      -            "description": "Second nudge spoken if silence continues after the first.",
      -            "type": "string"
      -          },
      -          "should_apply_noise_reduction": {
      -            "description": "Reduce background noise on the inbound audio stream before transcription.",
      -            "type": "boolean"
      -          },
      -          "silence_timeout_ms": {
      -            "description": "Silence timeout in milliseconds.",
      -            "example": 400,
      -            "type": "integer"
      -          },
      -          "smart_format": {
      -            "description": "Apply smart formatting to the transcript.",
      -            "type": "boolean"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "transfer": {
      -        "description": "Conditional call transfer to a human agent or another number.",
      -        "properties": {
      -          "enabled": {
      -            "type": "boolean"
      -          },
      -          "transfer_options": {
      -            "description": "Where to transfer the call and under what condition. The first matching condition wins.",
      -            "items": {
      -              "properties": {
      -                "backup_numbers": {
      -                  "description": "Fallback numbers tried if the primary is unreachable.",
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                "number": {
      -                  "description": "Primary phone number to transfer to. Include country code with leading `+`.",
      -                  "example": "+15551234567",
      -                  "type": "string"
      -                },
      -                "transfer_condition": {
      -                  "description": "Natural-language condition that triggers this transfer option.",
      -                  "example": "Transfer if the customer asks to speak with a human.",
      -                  "type": "string"
      -                },
      -                "transfer_message": {
      -                  "description": "Message the agent says to the caller before executing the transfer.",
      -                  "example": "Please hold while I connect you to one of our agents.",
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "default": "static",
      -                  "description": "`static` transfers to `number`. `dynamic` lets the agent\npick a number at runtime based on the conversation.\n",
      -                  "enum": [
      -                    "static",
      -                    "dynamic"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "number",
      -                "transfer_condition",
      -                "transfer_message"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "voice": {
      -        "description": "Configuration for the text-to-speech voice.",
      -        "properties": {
      -          "model": {
      -            "description": "TTS model identifier. Only consumed when `provider` is\n`cartesia` (e.g. `sonic-3.5`). For ElevenLabs and other\nproviders the model is implied by `voice_id` and this\nfield is ignored.\n",
      -            "example": "sonic-3.5",
      -            "type": "string"
      -          },
      -          "provider": {
      -            "description": "The voice provider to use. The current catalog is returned by the TTS providers list.",
      -            "enum": [
      -              "eleven_labs",
      -              "google",
      -              "cartesia",
      -              "sarvam"
      -            ],
      -            "example": "eleven_labs",
      -            "type": "string"
      -          },
      -          "speech_speed": {
      -            "default": 1,
      -            "description": "Playback speed multiplier for the agent's voice. 1.0 is normal speed.",
      -            "maximum": 2,
      -            "minimum": 0.5,
      -            "type": "number"
      -          },
      -          "voice_id": {
      -            "description": "The provider's voice identifier, returned in the `name` field of the voices list (not the numeric `id`).",
      -            "example": "JBFqnCBsd6RMkjVDRZzb",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "voicemail": {
      -        "description": "Voicemail / answering-machine handling for outbound calls. Set this with the nested object shown here; the agent object returns these values as the flat fields `voicemail_enabled` and `voicemail_message`. Voicemail detection is an access-gated feature. If it isn't enabled for your account, [request access](https://omnidim.io/contact-us?reason=product&lock=1).",
      -        "properties": {
      -          "enabled": {
      -            "description": "Detect voicemail and leave your message instead of speaking to a machine.",
      -            "type": "boolean"
      -          },
      -          "message": {
      -            "description": "Message to leave when voicemail is detected.",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "web_search": {
      -        "description": "Configuration for web search capabilities.",
      -        "properties": {
      -          "enabled": {
      -            "description": "Enable or disable web search functionality.",
      -            "type": "boolean"
      -          },
      -          "provider": {
      -            "description": "The search provider to use.",
      -            "enum": [
      -              "DuckDuckGo"
      -            ],
      -            "example": "DuckDuckGo",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "welcome_message": {
      -        "description": "Initial message the agent will say when answering a call.",
      -        "example": "Hello! How can I help you today?",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "required": [
      -      "name",
      -      "welcome_message",
      -      "context_breakdown"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Agent configuration.",
      +    "properties": {
      +      "background_track": {
      +        "description": "Ambient background noise that plays under the agent's voice.",
      +        "properties": {
      +          "enabled": {
      +            "description": "Whether to mix the ambient track under the agent's audio.",
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "description": "Ambient track to mix under the agent.",
      +            "enum": [
      +              "call_center",
      +              "filler",
      +              "office",
      +              "office_1",
      +              "restaurant"
      +            ],
      +            "type": "string"
      +          },
      +          "tts_volume_reduction": {
      +            "description": "Amount to drop the agent's TTS volume while the ambient track plays, on a 0–1 scale. Helps the voice cut through without raising the overall mix.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "volume": {
      +            "default": 0.2,
      +            "description": "Volume level on a 0–1 scale. Default 0.2.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "call_type": {
      +        "description": "Call type of the assistant.",
      +        "enum": [
      +          "Incoming",
      +          "Outgoing"
      +        ],
      +        "type": "string"
      +      },
      +      "context_breakdown": {
      +        "description": "List of context breakdowns, each containing `title`, `body`, and optional `is_enabled`.",
      +        "items": {
      +          "properties": {
      +            "body": {
      +              "description": "Body of the breakdown, the detailed prompt content.",
      +              "example": "This agent helps customers with product inquiries and support issues.",
      +              "type": "string"
      +            },
      +            "is_enabled": {
      +              "default": true,
      +              "description": "Whether this section is included in the prompt.",
      +              "type": "boolean"
      +            },
      +            "title": {
      +              "description": "Title of the breakdown.",
      +              "example": "Purpose",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "title",
      +            "body"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "dynamic_variables": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "description": "Key/value map used to substitute placeholders in the agent's\nprompt and welcome message at call time. Reference a variable\nin your prompt with `{{variable_name}}`. Useful for\npersonalising the same agent across many calls.\n",
      +        "example": {
      +          "customer_name": "Jane Doe",
      +          "order_id": "ORD-12345"
      +        },
      +        "type": "object"
      +      },
      +      "end_call": {
      +        "description": "Hang up automatically when a condition is met.",
      +        "properties": {
      +          "condition": {
      +            "description": "Natural-language condition that triggers ending the call. Only evaluated when `enabled` is true.",
      +            "example": "End the call once the customer's issue is resolved.",
      +            "type": "string"
      +          },
      +          "enabled": {
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "What the agent says before hanging up.",
      +            "example": "Thank you for contacting us. Have a great day!",
      +            "type": "string"
      +          },
      +          "message_prompt": {
      +            "description": "LLM prompt used to generate the closing line when `message_type` is `prompt`.",
      +            "example": "End the call politely in the same language the user is speaking.",
      +            "type": "string"
      +          },
      +          "message_type": {
      +            "description": "`static` speaks `message` verbatim. `prompt` treats\n`message_prompt` as an LLM instruction and generates a\nfresh closing line each call (useful for matching the\ncaller's language and tone).\n",
      +            "enum": [
      +              "static",
      +              "prompt"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "initial_ringing_sound_enabled": {
      +        "description": "Plays a ringing tone after the call is picked up, until the agent starts speaking.",
      +        "type": "boolean"
      +      },
      +      "is_interruption_allowed": {
      +        "description": "Global toggle for whether the caller can interrupt the agent mid-sentence at any point in the call.",
      +        "type": "boolean"
      +      },
      +      "is_welcome_message_dynamic": {
      +        "description": "When true, the welcome message is treated as a directive the agent uses to generate a tailored greeting for each call, rather than being spoken word for word. When false, the welcome message is spoken exactly as written.",
      +        "type": "boolean"
      +      },
      +      "is_welcome_message_interruption": {
      +        "description": "Allow the caller to interrupt the welcome message. When false, the agent finishes speaking the welcome before listening.",
      +        "type": "boolean"
      +      },
      +      "languages": {
      +        "description": "Languages the agent should support. Pass each language as a display-name string exactly as it appears in the dashboard's language picker. Unrecognized names are skipped.",
      +        "example": [
      +          "English (India)",
      +          "Hindi"
      +        ],
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "model": {
      +        "description": "Configuration for the language model.",
      +        "properties": {
      +          "model": {
      +            "description": "The language model to use. The current catalog is returned by the LLM providers list.",
      +            "enum": [
      +              "azure-gpt-4.1-mini",
      +              "azure-gpt-4.1-nano",
      +              "azure-gpt-4o",
      +              "azure-gpt-4o-mini",
      +              "gemini-2.5-flash",
      +              "gemini-2.5-flash-lite",
      +              "gpt-3.5-turbo",
      +              "gpt-4.1-mini",
      +              "gpt-4.1-nano",
      +              "gpt-4o",
      +              "gpt-4o-mini",
      +              "gpt-5.1",
      +              "llama-3.3-70b-versatile"
      +            ],
      +            "example": "gpt-4.1-mini",
      +            "type": "string"
      +          },
      +          "temperature": {
      +            "description": "Controls randomness in the model's output (0.0 to 1.0).",
      +            "example": 0.7,
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "name": {
      +        "description": "Name for the agent.",
      +        "example": "Customer Support Agent",
      +        "type": "string"
      +      },
      +      "post_call_actions": {
      +        "description": "Side effects that fire once the call ends. Configure email, webhook, or both.",
      +        "properties": {
      +          "email": {
      +            "properties": {
      +              "enabled": {
      +                "type": "boolean"
      +              },
      +              "extracted_variables": {
      +                "description": "Variables the model should pull out of the conversation for the email.",
      +                "items": {
      +                  "properties": {
      +                    "key": {
      +                      "description": "Unique identifier for the variable in the post-call payload.",
      +                      "example": "customer_issue",
      +                      "type": "string"
      +                    },
      +                    "prompt": {
      +                      "description": "Instruction for the model on what to pull out of the conversation.",
      +                      "example": "Identify the main issue the customer is experiencing.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "prompt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "include": {
      +                "description": "Which sections to include in the email body.",
      +                "items": {
      +                  "enum": [
      +                    "summary",
      +                    "extracted_variables",
      +                    "fullConversation",
      +                    "sentiment"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "recipients": {
      +                "description": "Email addresses that should receive the notification.",
      +                "example": [
      +                  "support@example.com"
      +                ],
      +                "items": {
      +                  "format": "email",
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "trigger_call_statuses": {
      +                "description": "Call outcomes that should fire this action. Omit to\nuse the default (`completed`, `voicemail_detected`).\nPass an explicit list to also include failed calls,\nno-answers, busy signals, etc.\n",
      +                "example": [
      +                  "completed",
      +                  "voicemail_detected"
      +                ],
      +                "items": {
      +                  "enum": [
      +                    "completed",
      +                    "voicemail_detected",
      +                    "failed",
      +                    "no_answer",
      +                    "busy",
      +                    "cancelled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "webhook": {
      +            "properties": {
      +              "enabled": {
      +                "type": "boolean"
      +              },
      +              "extracted_variables": {
      +                "description": "Variables the model should pull out of the conversation for the webhook.",
      +                "items": {
      +                  "properties": {
      +                    "key": {
      +                      "description": "Unique identifier for the variable in the post-call payload.",
      +                      "example": "customer_issue",
      +                      "type": "string"
      +                    },
      +                    "prompt": {
      +                      "description": "Instruction for the model on what to pull out of the conversation.",
      +                      "example": "Identify the main issue the customer is experiencing.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "prompt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "include": {
      +                "description": "Which sections to include in the webhook body.",
      +                "items": {
      +                  "enum": [
      +                    "summary",
      +                    "extracted_variables",
      +                    "fullConversation",
      +                    "sentiment"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "trigger_call_statuses": {
      +                "description": "Call outcomes that should fire this webhook. Omit to\nuse the default (`completed`, `voicemail_detected`).\n",
      +                "example": [
      +                  "completed",
      +                  "failed"
      +                ],
      +                "items": {
      +                  "enum": [
      +                    "completed",
      +                    "voicemail_detected",
      +                    "failed",
      +                    "no_answer",
      +                    "busy",
      +                    "cancelled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "url": {
      +                "description": "Endpoint that receives a POST with the call payload.",
      +                "example": "https://your-webhook-endpoint.com/omnidim-callback",
      +                "format": "uri",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "transcriber": {
      +        "description": "Configuration for the speech-to-text transcriber.",
      +        "properties": {
      +          "diarize": {
      +            "description": "Identify different speakers in the transcript.",
      +            "type": "boolean"
      +          },
      +          "first_ideal_message": {
      +            "description": "First nudge spoken when the caller goes silent past the\nidle threshold. Set `is_first_ideal_message_dynamic` to\n`true` to have the LLM regenerate this each time.\n",
      +            "type": "string"
      +          },
      +          "interruption_min_words": {
      +            "description": "Minimum number of words the caller must say before their speech is treated as an interruption.",
      +            "example": 2,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "is_first_ideal_message_dynamic": {
      +            "description": "When true, `first_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      +            "type": "boolean"
      +          },
      +          "is_second_ideal_message_dynamic": {
      +            "description": "When true, `second_ideal_message` is treated as a prompt and the LLM generates a fresh nudge each call.",
      +            "type": "boolean"
      +          },
      +          "language": {
      +            "description": "Language code for the transcriber. Format and supported\nvalues depend on the provider (e.g. `en-US` for Deepgram,\n`hi-IN` for Sarvam). Applies regardless of which\n`provider` is selected.\n",
      +            "example": "en-US",
      +            "type": "string"
      +          },
      +          "max_call_duration_in_sec": {
      +            "description": "Hard upper bound on call length in seconds. The agent will end the call once this is reached.",
      +            "example": 600,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "model": {
      +            "description": "The model to use for transcription (required when provider is `deepgram_stream`).",
      +            "enum": [
      +              "nova-3",
      +              "nova-2"
      +            ],
      +            "example": "nova-3",
      +            "type": "string"
      +          },
      +          "numerals": {
      +            "description": "Convert numbers from words to digits.",
      +            "type": "boolean"
      +          },
      +          "provider": {
      +            "description": "The speech-to-text provider to use.",
      +            "enum": [
      +              "deepgram_stream",
      +              "cartesia",
      +              "sarvam",
      +              "azure_stream",
      +              "soniox"
      +            ],
      +            "example": "deepgram_stream",
      +            "type": "string"
      +          },
      +          "punctuate": {
      +            "description": "Add punctuation to the transcript.",
      +            "type": "boolean"
      +          },
      +          "second_ideal_message": {
      +            "description": "Second nudge spoken if silence continues after the first.",
      +            "type": "string"
      +          },
      +          "should_apply_noise_reduction": {
      +            "description": "Reduce background noise on the inbound audio stream before transcription.",
      +            "type": "boolean"
      +          },
      +          "silence_timeout_ms": {
      +            "description": "Silence timeout in milliseconds.",
      +            "example": 400,
      +            "type": "integer"
      +          },
      +          "smart_format": {
      +            "description": "Apply smart formatting to the transcript.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "transfer": {
      +        "description": "Conditional call transfer to a human agent or another number.",
      +        "properties": {
      +          "enabled": {
      +            "type": "boolean"
      +          },
      +          "transfer_options": {
      +            "description": "Where to transfer the call and under what condition. The first matching condition wins. In an agent update, sending this list replaces all saved options. Omit it to keep them unchanged, or send an empty array to clear them.",
      +            "items": {
      +              "properties": {
      +                "backup_numbers": {
      +                  "description": "Fallback numbers tried if the primary is unreachable.",
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "number": {
      +                  "description": "Primary phone number to transfer to. Include country code with leading `+`.",
      +                  "example": "+15551234567",
      +                  "type": "string"
      +                },
      +                "transfer_condition": {
      +                  "description": "Natural-language condition that triggers this transfer option.",
      +                  "example": "Transfer if the customer asks to speak with a human.",
      +                  "type": "string"
      +                },
      +                "transfer_message": {
      +                  "description": "Message the agent says to the caller before executing the transfer.",
      +                  "example": "Please hold while I connect you to one of our agents.",
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "default": "static",
      +                  "description": "`static` transfers to `number`. `dynamic` lets the agent\npick a number at runtime based on the conversation.\n",
      +                  "enum": [
      +                    "static",
      +                    "dynamic"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "number",
      +                "transfer_condition",
      +                "transfer_message"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "voice": {
      +        "dependentRequired": {
      +          "provider": [
      +            "voice_id"
      +          ]
      +        },
      +        "description": "Configuration for the text-to-speech voice. `provider` and `voice_id` identify the voice together, so send both to change it. `provider` on its own is not accepted, and a `voice_id` on its own leaves the voice as it was. The other fields here apply independently.",
      +        "properties": {
      +          "model": {
      +            "description": "TTS model identifier. Only consumed when `provider` is\n`cartesia` (e.g. `sonic-3.5`). For ElevenLabs and other\nproviders the model is implied by `voice_id` and this\nfield is ignored.\n",
      +            "example": "sonic-3.5",
      +            "type": "string"
      +          },
      +          "provider": {
      +            "description": "The voice provider to use. The current catalog is returned by the TTS providers list. Send `voice_id` alongside it.",
      +            "enum": [
      +              "eleven_labs",
      +              "google",
      +              "cartesia",
      +              "sarvam"
      +            ],
      +            "example": "eleven_labs",
      +            "type": "string"
      +          },
      +          "speech_speed": {
      +            "default": 1,
      +            "description": "Playback speed multiplier for the agent's voice. 1.0 is normal speed.",
      +            "maximum": 2,
      +            "minimum": 0.5,
      +            "type": "number"
      +          },
      +          "voice_id": {
      +            "description": "The provider's voice identifier, returned in the `name` field of the voices list (not the numeric `id`). Takes effect when `provider` is sent alongside it.",
      +            "example": "JBFqnCBsd6RMkjVDRZzb",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "voicemail": {
      +        "description": "Voicemail / answering-machine handling for outbound calls. Set this with the nested object shown here; the agent object returns these values as the flat fields `voicemail_enabled` and `voicemail_message`. Voicemail detection is an access-gated feature. If it isn't enabled for your account, [request access](https://omnidim.io/contact-us?reason=product&lock=1).",
      +        "properties": {
      +          "enabled": {
      +            "description": "Detect voicemail and leave your message instead of speaking to a machine.",
      +            "type": "boolean"
      +          },
      +          "message": {
      +            "description": "Message to leave when voicemail is detected.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "web_search": {
      +        "description": "Configuration for web search capabilities.",
      +        "properties": {
      +          "enabled": {
      +            "description": "Enable or disable web search functionality.",
      +            "type": "boolean"
      +          },
      +          "provider": {
      +            "description": "The search provider to use.",
      +            "enum": [
      +              "DuckDuckGo"
      +            ],
      +            "example": "DuckDuckGo",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "welcome_message": {
      +        "description": "Initial message the agent will say when answering a call.",
      +        "example": "Hello! How can I help you today?",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "required": [
      +      "name",
      +      "welcome_message",
      +      "context_breakdown"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. First observedv0.9.0

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the access-gating constraint on voicemail, which is useful context beyond the annotations, but says nothing about mutation side effects such as whether an existing agent with the same name is rejected, or the idempotency/safe-retry behavior. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, the capability list follows, and the access-gate caveat is placed after the relevant mention of voicemail. Slightly long given that the feature list duplicates the schema, but each part is readable and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a large create tool with a very rich nested schema and no output schema, the description usefully orients the caller by naming every major configuration area and flagging the one gated feature. It is close to complete; the missing piece is any note about required fields (name, context_breakdown) or conflict behavior, both of which the agent must infer from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across both parameters, so the schema already carries full parameter documentation (including the Idempotency-Key semantics). The description's enumeration of config areas mirrors the schema rather than adding format, required-field, or interaction detail beyond it. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new agent with the provided configuration') and then enumerates the configurable surface (transcriber, model, voice, web search, transfer, end-call, post-call actions, background track, ringing, multilingual). It never names or distinguishes itself from close siblings like updateAgent, createAgentVersion, or deleteAgent, so an agent gets a clear purpose but no routing signal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one genuine prerequisite (voicemail detection is access-gated on a per-account basis, request access before configuring the `voicemail` object), which is real usage guidance. It stops there: no statement of when to call this instead of updateAgent, whether name uniqueness is required, or what happens on conflict, so it is implied rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.