Skip to main content
Glama
Omnidim

@omnidim-ai/mcp-server

by Omnidim

updateAgent

Modify an existing voice agent's configuration by sending only the fields you want to change, so you can adjust prompts, voice, model, and post-call actions without overwriting the rest.

Instructions

Update an existing agent. Send only the fields you want to change.

post_call_actions replaces the agent's email, webhook, Omni CRM, Cloud WhatsApp and workflow actions as one set, but only when you send at least one of those types. Google Sheets, Slack, Salesforce, HubSpot and Zoho Bigin actions are replaced only when their key is sent, and kept otherwise. If a sent action gives a variable key a new prompt, kept actions that use the same key take the new prompt too. To add, change or remove one action without touching the others, use /agents/{agent_id}/post-call-actions.

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 below. (Tags: Agents)

Input Schema

NameRequiredDescriptionDefault
agent_idYesThe ID of the agent.
requestBodyYesAgent configuration.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changedv0.14.0
    • changedInput schema / properties / requestBody / properties / post_call_actions / description
      Previous value: -"Side effects that fire once the call ends. Configure email, webhook, or both."New value: +"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"
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / cloud_whatsapp
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • changedInput schema / properties / requestBody / properties / post_call_actions / properties / email / properties / trigger_call_statuses / items / enum
      Previous value: -[
      -  "completed",
      -  "voicemail_detected",
      -  "failed",
      -  "no_answer",
      -  "busy",
      -  "cancelled"
      -]New value: +[
      +  "completed",
      +  "voicemail_detected",
      +  "failed",
      +  "no-answer",
      +  "busy",
      +  "canceled"
      +]
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / google_sheets
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / hubspot
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / omni_crm
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / salesforce
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / slack
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • changedInput schema / properties / requestBody / properties / post_call_actions / properties / webhook / properties / trigger_call_statuses / items / enum
      Previous value: -[
      -  "completed",
      -  "voicemail_detected",
      -  "failed",
      -  "no_answer",
      -  "busy",
      -  "cancelled"
      -]New value: +[
      +  "completed",
      +  "voicemail_detected",
      +  "failed",
      +  "no-answer",
      +  "busy",
      +  "canceled"
      +]
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / workflow
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • addedInput schema / properties / requestBody / properties / post_call_actions / properties / zoho_bigin
      Added value: +{
      +  "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"
      +    }
      +  ]
      +}
    • changedInput schema / properties / requestBody / properties / transcriber / properties / model / description
      Previous value: -"The model to use for transcription (required when provider is `deepgram_stream`)."New value: +"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"
    • removedInput schema / properties / requestBody / properties / transcriber / properties / model / enum
      Removed value: -[
      -  "nova-3",
      -  "nova-2"
      -]
    • removedInput schema / properties / requestBody / properties / voice / properties / model
      Removed value: -{
      -  "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",
      -  "type": "string"
      -}
    • changedInput schema / properties / requestBody / properties / web_search / properties / provider / enum
      Previous value: -[
      -  "DuckDuckGo"
      -]New value: +[
      +  "DuckDuckGo",
      +  "openAI"
      +]
  2. Changed1 schema field changedv0.12.0
    • addedInput schema / properties / requestBody / properties / timezone
      Added value: +{
      +  "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.",
      +  "type": "string"
      +}
  3. Changed5 schema fields changedv0.9.2
    • changedInput schema / properties / requestBody / properties / transfer / properties / transfer_options / description
      Previous value: -"Where to transfer the call and under what condition. The first matching condition wins."New value: +"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."
    • addedInput schema / properties / requestBody / properties / voice / dependentRequired
      Added value: +{
      +  "provider": [
      +    "voice_id"
      +  ]
      +}
    • changedInput schema / properties / requestBody / properties / voice / description
      Previous value: -"Configuration for the text-to-speech voice."New value: +"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."
    • changedInput schema / properties / requestBody / properties / voice / properties / provider / description
      Previous value: -"The voice provider to use. The current catalog is returned by the TTS providers list."New value: +"The voice provider to use. The current catalog is returned by the TTS providers list. Send `voice_id` alongside it."
    • changedInput schema / properties / requestBody / properties / voice / properties / voice_id / description
      Previous value: -"The provider's voice identifier, returned in the `name` field of the voices list (not the numeric `id`)."New value: +"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."
  4. First observedv0.9.0

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the annotations (which only declare readOnly=false/destructive=false), the description discloses genuinely important behavior: post_call_actions replaces a whole set of action types as a unit, individual integrations are replaced only when their key is sent, and a new prompt on a shared variable key propagates to kept actions. It also flags voicemail detection as access-gated. This is exactly the kind of hidden side-effect detail the schema alone would not convey.

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?

Front-loaded with the core action and patch rule, then dense but necessary detail on the tricky post_call_actions behavior. The voicemail access-gate note is somewhat duplicated (it also appears in the schema), a minor redundancy.

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 heavily nested mutation tool, the description covers the highest-risk behavior (action-set replacement semantics) and the access-gated voicemail caveat. With no output schema it does not describe the return payload, but that is a minor gap for an update operation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds cross-field semantics the schema does not express (the all-or-nothing replacement grouping of post_call_actions and the shared-variable-key prompt propagation). That elevates it above the schema baseline.

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?

The opening states a specific verb+resource ('Update an existing agent') and immediately clarifies the patch nature ('Send only the fields you want to change'). This clearly separates it from createAgent/deleteAgent/getAgent siblings, though it never names those alternatives explicitly.

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

Usage Guidelines4/5

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

It gives a concrete usage rule (send only changed fields) and routes the agent to an alternative endpoint ('/agents/{agent_id}/post-call-actions') for granular single-action edits. That is real when-to-use-this-vs-that guidance, but it lacks broader exclusions or prerequisites.

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