Skip to main content
Glama
Omnidim

@omnidim-ai/mcp-server

by Omnidim

createSession

Reserve a short-lived voice session for a live chat with your agent, returning a single-use ws_url that clients connect to over WebSocket.

Instructions

Create a voice Session: a short-lived, single-conversation reservation that lets a client hold a live voice chat with your agent. This is step 1 of 2. Creating the Session does not start any audio on its own; it returns a ws_url that a client then connects to over WebSocket to actually talk.

Call this endpoint from your server with your API key, and return only the ws_url to your client. The API key must never reach the browser. The ws_url is the only thing the client needs, and it is safe to hand out because it is single-use and expires. For how to connect and talk, see "Connect the client and talk" below the request details.

(Tags: Sessions)

Input Schema

NameRequiredDescriptionDefault
requestBodyYesThe JSON request body.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.14.0
    • changedInput schema / properties / requestBody / properties / custom_variables / description
      Previous value: -"Per-session variables that personalize the conversation.\nSet server-side, so visitors cannot tamper with them.\n"New value: +"Per-session variables that personalize the conversation.\nSet server-side, so visitors cannot tamper with them.\nTwo reserved keys are read as instructions for this session\nand never reach the agent: `__languages` and\n`__post_call_actions`.\n"
    • addedInput schema / properties / requestBody / properties / custom_variables / properties
      Added value: +{
      +  "__languages": {
      +    "description": "Languages this session runs in, replacing the agent's\nconfigured list. The first entry is the language the\nvisitor is greeted in. Send an array, or a pipe-separated\nstring such as `Hindi|English`.\n",
      +    "oneOf": [
      +      {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  "__post_call_actions": {
      +    "allOf": [
      +      {
      +        "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"
      +      }
      +    ],
      +    "description": "Post-call actions for this session only, in the same shape\nas `post_call_actions` on agent create. Email and webhook\nonly. They replace the agent's own post-call actions for\nthis session. Items that cannot be used are skipped and\nlisted in `post_call_actions_ignored`.\n"
      +  }
      +}
  2. Changed1 schema field changedv0.11.1
    • addedInput schema / properties / requestBody / properties / type / default
      Added value: +"voice"
  3. Changed1 schema field changedv0.10.1
    • addedInput schema / properties / requestBody / properties / metadata
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Key-value pairs stored on the session for your own\ntracking (e.g. CRM or lead IDs). Not shared with the\nagent; echoed back as `metadata` in the post-call\nwebhook so you can correlate results with your records.\n",
      +  "type": "object"
      +}
  4. First observedv0.9.0

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (write operation, non-destructive, closed-world), the description discloses lifecycle traits (short-lived, single-use, expires), what is returned (`ws_url`), what is not triggered (no audio), and a security constraint (API key must never reach the browser). This is substantial behavioral context an agent cannot derive from the annotation block.

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?

The paragraph is front-loaded with the core definition and return contract, and each sentence carries weight (lifecycle, return value, server-side handling, security). The trailing pointer to 'Connect the client and talk' refers to documentation outside this definition, which is slightly wasteful, but the structure is otherwise efficient.

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?

With no output schema, the description carries the return-value burden and does so by naming `ws_url`. Combined with a fully documented input schema and clear role/security guidance, it is nearly complete; only minor gaps remain (e.g., how long the session lives before expiring, error behavior).

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% and the single nested `requestBody` is documented exhaustively in the schema itself, so the baseline is 3. The description adds no parameter-level detail (agent_id, metadata, custom_variables, post_call_actions) beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific verb and resource ('Create a voice Session') and immediately defines what a session is: a short-lived, single-conversation reservation. It also positions the tool in the flow ('step 1 of 2') and clarifies what it does NOT do ('does not start any audio on its own'), which cleanly separates it from any call-dispatching sibling.

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 clear context for use ('Call this endpoint from your server with your API key') and the sequencing ('step 1 of 2'), which tells an agent when this tool applies. However, it names no explicit alternative or when-not-to-use condition, so it falls short of a 5.

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