> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# टूल अपडेट करें

PATCH https://api.elevenlabs.io/v1/convai/tools/{tool_id}
Content-Type: application/json

वर्कस्पेस में उपलब्ध टूल अपडेट करें।

Reference: https://elevenlabs.io/docs/api-reference/tools/update

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Path parameters

- `tool_id` (string, required) — मांगे गए टूल की ID।

### Body (application/json)

This endpoint expects a ToolRequestModel.

- `tool_config` (ToolRequestModelToolConfig, required) — टूल के लिए कॉन्फ़िगरेशन
- `response_mocks` (list of ToolResponseMockConfig-Input, optional, nullable) — वैकल्पिक पैरामीटर शर्तों वाले मॉक जवाब। ऊपर से नीचे तक मूल्यांकन होता है; पहला मैच चुना जाता है।

## Response

### 200

सफल रिस्पॉन्स

- `id` (string, required)
- `tool_config` (ToolResponseModelToolConfig, required) — टूल का टाइप
- `access_info` (ResourceAccessInfo, required)
- `usage_stats` (ToolUsageStatsResponseModel, required)
- `response_mocks` (list of ToolResponseMockConfig-Output, optional, nullable) — वैकल्पिक पैरामीटर शर्तों वाले मॉक जवाब। ऊपर से नीचे तक मूल्यांकन होता है; पहला मैच चुना जाता है।

## Errors

### 422 Unprocessable Entity Error

वैलिडेशन एरर

- `detail` (list of ValidationError, optional)

## Types

### ToolRequestModelToolConfig

टूल के लिए कॉन्फ़िगरेशन

- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण।
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `dynamic_variables` (DynamicVariablesConfig, optional) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
  - `execution_mode` (enum, optional, default: immediate) — यह तय करता है कि टूल कब और कैसे चले: 'immediate', LLM के अनुरोध पर टूल को तुरंत चलाता है; 'post_tool_speech', एजेंट के बोलना पूरा करने तक इंतज़ार करता है; 'async', बिना ब्लॉक किए टूल को बैकग्राउंड में चलाता है — लंबे समय तक चलने वाले ऑपरेशंस के लिए सबसे अच्छा।
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — अगर true है, तो इस टूल को कॉल करने पर बातचीत तब तक रुकेगी जब तक क्लाइंट कोई जवाब नहीं देता, जो llm को भेजा जाता है। अगर false है, तो हम क्लाइंट के जवाब का इंतज़ार किए बिना बातचीत जारी रखेंगे। यह यूज़र को कंटेंट दिखाने के लिए उपयोगी है, बिना बातचीत रोके।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Input, optional, nullable) — क्लाइंट को भेजे जाने वाले किसी भी पैरामीटर का स्कीमा
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल पूरा होने की प्रतीक्षा करने का अधिकतम समय, सेकंड में। यह 1 से 120 सेकंड (दोनों शामिल) के बीच होना चाहिए, या क्लाइंट के जवाब की अनिश्चितकाल तक प्रतीक्षा करने के लिए -1 होना चाहिए (इसके लिए expects_response आवश्यक है)।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।
- `type`: `mcp` (mcp)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolRequestModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `description` (string, optional, default: ) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण। उस डिफ़ॉल्ट विवरण का इस्तेमाल करने के लिए इसे खाली छोड़ें जो खास टूल प्रकार के लिए ऑप्टिमाइज़ किया गया है।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Input, required) — आउटगोइंग वेबहुक का स्कीमा, जिसमें पैरामीटर्स और URL विनिर्देशन शामिल हैं
  - `description` (string, required) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण।
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `dynamic_variables` (DynamicVariablesConfig, optional) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
  - `execution_mode` (enum, optional, default: immediate) — यह तय करता है कि टूल कब और कैसे चले: 'immediate', LLM के अनुरोध पर टूल को तुरंत चलाता है; 'post_tool_speech', एजेंट के बोलना पूरा करने तक इंतज़ार करता है; 'async', बिना ब्लॉक किए टूल को बैकग्राउंड में चलाता है — लंबे समय तक चलने वाले ऑपरेशंस के लिए सबसे अच्छा।
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — एंडपॉइंट से रीडायरेक्ट को रिज़ॉल्व करके अंतिम रिस्पॉन्स लौटाना है या नहीं। एक रीडायरेक्ट को, रिक्वेस्ट बॉडी के बिना GET के रूप में फ़ॉलो किया जाता है; इस टूल पर कॉन्फ़िगर की गई कोई भी चीज़ (हेडर, ऑथेंटिकेशन, क्लाइंट सर्टिफ़िकेट) रीडायरेक्ट टारगेट को नहीं भेजी जाती। एंडपॉइंट और रीडायरेक्ट टारगेट, दोनों को HTTPS का इस्तेमाल करना चाहिए। API इंटीग्रेशन टूल्स के लिए समर्थित नहीं है।
  - `follow_redirects_allowed_domains` (list of string, optional) — वे डोमेन जिन पर रीडायरेक्ट पॉइंट कर सकता है, जैसे 'test.example.com'। रीडायरेक्ट फ़ॉलो करते समय आवश्यक; सूची के बाहर के टारगेट को अस्वीकार कर दिया जाता है।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में। यह 5 से 300 सेकंड (दोनों सहित) के बीच होना चाहिए।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।

### ToolResponseMockConfig-Input

- `mock_result` (string, required) — इस मॉक के सक्रिय होने पर LLM को दिखने वाली रिटर्न वैल्यू।
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — अगर सूची खाली है, तो mock हमेशा सक्रिय होगा।
- `is_error` (boolean, optional, default: false) — अगर true है, तो mock परिणाम को सफल परिणाम के बजाय टूल त्रुटि के रूप में LLM को दिखाया जाता है।

### ToolResponseModelToolConfig

टूल का टाइप

- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण।
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `dynamic_variables` (DynamicVariablesConfig, optional) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
  - `execution_mode` (enum, optional, default: immediate) — यह तय करता है कि टूल कब और कैसे चले: 'immediate', LLM के अनुरोध पर टूल को तुरंत चलाता है; 'post_tool_speech', एजेंट के बोलना पूरा करने तक इंतज़ार करता है; 'async', बिना ब्लॉक किए टूल को बैकग्राउंड में चलाता है — लंबे समय तक चलने वाले ऑपरेशंस के लिए सबसे अच्छा।
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — अगर true है, तो इस टूल को कॉल करने पर बातचीत तब तक रुकेगी जब तक क्लाइंट कोई जवाब नहीं देता, जो llm को भेजा जाता है। अगर false है, तो हम क्लाइंट के जवाब का इंतज़ार किए बिना बातचीत जारी रखेंगे। यह यूज़र को कंटेंट दिखाने के लिए उपयोगी है, बिना बातचीत रोके।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Output, optional, nullable) — क्लाइंट को भेजे जाने वाले किसी भी पैरामीटर का स्कीमा
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल पूरा होने की प्रतीक्षा करने का अधिकतम समय, सेकंड में। यह 1 से 120 सेकंड (दोनों शामिल) के बीच होना चाहिए, या क्लाइंट के जवाब की अनिश्चितकाल तक प्रतीक्षा करने के लिए -1 होना चाहिए (इसके लिए expects_response आवश्यक है)।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।
- `type`: `mcp` (mcp)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolResponseModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `description` (string, optional, default: ) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण। उस डिफ़ॉल्ट विवरण का इस्तेमाल करने के लिए इसे खाली छोड़ें जो खास टूल प्रकार के लिए ऑप्टिमाइज़ किया गया है।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Output, required) — आउटगोइंग वेबहुक का स्कीमा, जिसमें पैरामीटर्स और URL विनिर्देशन शामिल हैं
  - `description` (string, required) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण।
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `dynamic_variables` (DynamicVariablesConfig, optional) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
  - `execution_mode` (enum, optional, default: immediate) — यह तय करता है कि टूल कब और कैसे चले: 'immediate', LLM के अनुरोध पर टूल को तुरंत चलाता है; 'post_tool_speech', एजेंट के बोलना पूरा करने तक इंतज़ार करता है; 'async', बिना ब्लॉक किए टूल को बैकग्राउंड में चलाता है — लंबे समय तक चलने वाले ऑपरेशंस के लिए सबसे अच्छा।
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — एंडपॉइंट से रीडायरेक्ट को रिज़ॉल्व करके अंतिम रिस्पॉन्स लौटाना है या नहीं। एक रीडायरेक्ट को, रिक्वेस्ट बॉडी के बिना GET के रूप में फ़ॉलो किया जाता है; इस टूल पर कॉन्फ़िगर की गई कोई भी चीज़ (हेडर, ऑथेंटिकेशन, क्लाइंट सर्टिफ़िकेट) रीडायरेक्ट टारगेट को नहीं भेजी जाती। एंडपॉइंट और रीडायरेक्ट टारगेट, दोनों को HTTPS का इस्तेमाल करना चाहिए। API इंटीग्रेशन टूल्स के लिए समर्थित नहीं है।
  - `follow_redirects_allowed_domains` (list of string, optional) — वे डोमेन जिन पर रीडायरेक्ट पॉइंट कर सकता है, जैसे 'test.example.com'। रीडायरेक्ट फ़ॉलो करते समय आवश्यक; सूची के बाहर के टारगेट को अस्वीकार कर दिया जाता है।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में। यह 5 से 300 सेकंड (दोनों सहित) के बीच होना चाहिए।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।

### ResourceAccessInfo

- `is_creator` (boolean, required) — क्या अनुरोध करने वाला यूज़र एजेंट का निर्माता है
- `creator_name` (string, required) — एजेंट के निर्माता का नाम
- `creator_email` (string, required) — एजेंट के निर्माता का ईमेल
- `role` (enum, required) — रिक्वेस्ट करने वाले यूज़र की भूमिका
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `anonymous_access_level_override` (enum, optional, nullable) — अनाम यूज़र्स के लिए एक्सेस लेवल। यदि None है, तो रिसोर्स सार्वजनिक रूप से शेयर नहीं किया गया है।
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `access_source` (enum, optional, nullable) — रिक्वेस्ट करने वाले यूज़र के पास इस रिसोर्स का एक्सेस क्यों है। 'creator' = कॉलर मालिक है। 'explicit' = कॉलर (या उसके किसी वर्कस्पेस ग्रुप) को वर्कस्पेस-व्यापी everyone ग्रुप के अलावा role_to_group_ids में सूचीबद्ध किया गया है। 'workspace_default' = वर्कस्पेस-व्यापी everyone ग्रुप role_to_group_ids में सूचीबद्ध है (एडमिन समेत हर गैर-अनाम वर्कस्पेस सदस्य इस रिसोर्स को देखता है)। 'workspace_admin' = कॉलर वर्कस्पेस एडमिन है और एडमिन सीट ही एक्सेस का *एकमात्र* रास्ता है; यह उन दस्तावेज़ों के लिए आरक्षित है जिन्हें कोई और नहीं देख सकता। इससे UI बता पाता है कि एडमिन-बायपास व्यूअर को वह दस्तावेज़ क्यों दिख रहा है जो उसके साथ स्पष्ट रूप से शेयर नहीं किया गया था।
  - Allowed values: `creator`, `explicit`, `workspace_admin`, `workspace_default`

### ToolUsageStatsResponseModel

- `avg_latency_secs` (double, required)
- `total_calls` (integer, optional, default: 0) — टूल को की गई कॉल की कुल संख्या

### ToolResponseMockConfig-Output

- `mock_result` (string, required) — इस मॉक के सक्रिय होने पर LLM को दिखने वाली रिटर्न वैल्यू।
- `parameter_conditions` (list of UnitTestToolCallParameter, optional) — अगर सूची खाली है, तो mock हमेशा सक्रिय होगा।
- `is_error` (boolean, optional, default: false) — अगर true है, तो mock परिणाम को सफल परिणाम के बजाय टूल त्रुटि के रूप में LLM को दिखाया जाता है।

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### DynamicVariableAssignment

टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन।

- `dynamic_variable` (string, required) — निकाली गई वैल्यू असाइन करने के लिए dynamic variable का नाम
- `value_path` (string, required) — सोर्स से मान निकालने के लिए डॉट नोटेशन पाथ (जैसे, 'user.name' या 'data.0.id')
- `source` ("response", optional, default: response) — वह स्रोत जिससे वैल्यू निकाली जाएगी। फ़िलहाल केवल 'response' समर्थित है।
- `sanitize` (boolean, optional, default: false) — अगर true है, तो इस असाइनमेंट का मान LLM और ट्रांसक्रिप्ट को भेजने से पहले टूल रिस्पॉन्स से हटा दिया जाएगा, लेकिन वेरिएबल असाइनमेंट के लिए फिर भी प्रोसेस किया जाएगा।
- `preserve_native_type` (boolean, optional, default: false) — अगर true है, तो टूल रिस्पॉन्स से निकाले गए नॉन-स्केलर मानों (सूचियों, ऑब्जेक्ट्स) को JSON स्ट्रिंग में बदलने के बजाय उनके मूल प्रकार में स्टोर किया जाता है। निकाले गए arrays को सीधे सूची dynamic variables के रूप में इस्तेमाल करने के लिए इसे सक्षम करें।

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — dynamic variable placeholders और उनके मानों का शब्दकोश।

### ObjectJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: object)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — सेट होने पर, पूरा parameter रनटाइम पर इस dynamic variable से भरा जाता है। यह description (LLM-प्रदत्त मान), constant_value और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `constant_value` (map from string to any, optional, nullable) — सेट होने पर, पूरा object रनटाइम पर इस स्थिर JSON मान का उपयोग करता है। यह description (LLM-प्रदत्त object), dynamic_variable और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable और constant_value के साथ परस्पर अनन्य है।
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyInput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — ज़रूरी फ़ील्ड्स तक सीमित anyOf/allOf कंपोज़िशन कंस्ट्रेंट्स के लिए रैपर।

### ToolRequestModelToolConfigDiscriminatorMappingSystemParams

- `system_tool_type`: `end_call` (EndCallToolConfig)
- `system_tool_type`: `end_procedure` (EndProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures, optional)
- `system_tool_type`: `knowledge_base` (KnowledgeBaseToolConfig)
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag` (KnowledgeBaseRagToolConfig)
- `system_tool_type`: `language_detection` (LanguageDetectionToolConfig)
  - `only_at_conversation_start` (boolean, optional, default: false) — अगर यूज़र के पहले 2 टर्न में भाषा नहीं बदलती, तो बाद के प्रयास विफल होंगे और बातचीत मौजूदा भाषा में रहेगी। अगर उन टर्न के दौरान भाषा बदलती है, तो बाद में भाषा बदलना उपलब्ध रहेगा। गलत भाषा-परिवर्तन की संभावना कम करने के लिए इसे सक्षम करें।
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — अगर true है, तो DTMF टोन चलाने के बाद एजेंट आगे कोई स्पीच जनरेट नहीं करेगा। इससे एजेंट की स्पीच IVR सिस्टम में बाधा नहीं डालेगी।
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — in-band audio के बजाय DTMF tones को out-of-band RTP events (RFC 4733) के रूप में भेजें। केवल SIP trunk imported numbers के लिए प्रभावी है।
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — skip_turn के बाद एजेंट द्वारा संदर्भानुकूल चेक-इन जनरेट करने से पहले प्रतीक्षा के सेकंड। प्रतीक्षा के दौरान "End conversation after silence" टाइमर रुका रहता है। -1 प्रतीक्षा को निष्क्रिय करता है: skip_turn के बाद एजेंट कॉलर के बोलने तक चुप रहता है और वह टाइमर चलता रहता है। केवल वॉइस बातचीत पर लागू होता है।
- `system_tool_type`: `start_procedure` (StartProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures, optional)
- `system_tool_type`: `transfer_to_agent` (TransferToAgentToolConfig)
  - `transfers` (list of AgentTransfer-Input, required)
- `system_tool_type`: `transfer_to_number` (TransferToNumberToolConfig)
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — क्या ट्रांसफ़र की प्रतीक्षा के दौरान क्लाइंट को एक मैसेज चलाना है। बैकवर्ड कंपैटिबिलिटी के लिए डिफ़ॉल्ट रूप से true है।
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — voicemail का पता चलने पर छोड़ने के लिए वैकल्पिक message। न दिए जाने पर voicemail का पता चलते ही call समाप्त हो जाएगी। dynamic variables समर्थित हैं (जैसे, \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}})।

### WebhookToolApiSchemaConfig-Input

- `url` (string, required) — वह URL जिस पर वेबहुक भेजा जाएगा। इसमें पाथ पैरामीटर शामिल हो सकते हैं, जैसे [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigInputRequestHeaders, optional) — रिक्वेस्ट में शामिल किए जाने वाले हेडर
- `method` (enum, optional, default: GET) — वेबहुक के लिए इस्तेमाल की जाने वाली HTTP विधि
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — यदि कोई path parameters हों, तो उनके लिए स्कीमा। keys को URL के placeholders से मेल खाना चाहिए।
- `query_params_schema` (QueryParamsJsonSchema-Input, optional, nullable) — यदि कोई query params हों, तो उनके लिए स्कीमा। इन्हें URL के अंत में query params के रूप में जोड़ा जाएगा। ध्यान दें: query param में सभी properties literal types की होनी चाहिए
- `request_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — यदि कोई body parameters हों, तो उनके लिए स्कीमा। POST/PATCH/PUT requests के लिए इस्तेमाल होता है। स्कीमा एक object होना चाहिए, जिसे json body के रूप में भेजा जाएगा
- `response_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — अपेक्षित रिस्पॉन्स बॉडी संरचना बताने वाला स्कीमा। केवल डॉक्यूमेंटेशन के लिए; LLM को नहीं दिखाया जाता।
- `response_filter` (ResponseFilter, optional, nullable) — LLM के देखने से पहले response पर लागू होने वाला वैकल्पिक allow-list filter, ताकि बड़े responses context को प्रभावित न करें। डिफ़ॉल्ट रूप से पूरा response होता है।
- `content_type` (enum, optional, default: application/json) — रिक्वेस्ट बॉडी के लिए कॉन्टेंट टाइप। केवल POST/PUT/PATCH रिक्वेस्ट पर लागू होता है।
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — path_params_schema के बजाय auth कनेक्शन से रिज़ॉल्व किए गए URL प्लेसहोल्डर (जैसे UrlSecretAuthConnection से डाले गए secrets)।
- `auth_connection` (WebhookToolApiSchemaConfigInputAuthConnection, optional, nullable) — इस webhook के साथ authentication के लिए इस्तेमाल होने वाला वैकल्पिक auth connection

### UnitTestToolCallParameter

- `eval` (UnitTestToolCallParameterEval, required)
- `path` (string, required)

### ObjectJsonSchemaProperty-Output

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — सेट होने पर, पूरा parameter रनटाइम पर इस dynamic variable से भरा जाता है। यह description (LLM-प्रदत्त मान), constant_value और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `constant_value` (map from string to any, optional, nullable) — सेट होने पर, पूरा object रनटाइम पर इस स्थिर JSON मान का उपयोग करता है। यह description (LLM-प्रदत्त object), dynamic_variable और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable और constant_value के साथ परस्पर अनन्य है।
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyOutput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — ज़रूरी फ़ील्ड्स तक सीमित anyOf/allOf कंपोज़िशन कंस्ट्रेंट्स के लिए रैपर।

### ToolResponseModelToolConfigDiscriminatorMappingSystemParams

- `system_tool_type`: `end_call` (EndCallToolConfig)
- `system_tool_type`: `end_procedure` (EndProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures, optional)
- `system_tool_type`: `knowledge_base` (KnowledgeBaseToolConfig)
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag` (KnowledgeBaseRagToolConfig)
- `system_tool_type`: `language_detection` (LanguageDetectionToolConfig)
  - `only_at_conversation_start` (boolean, optional, default: false) — अगर यूज़र के पहले 2 टर्न में भाषा नहीं बदलती, तो बाद के प्रयास विफल होंगे और बातचीत मौजूदा भाषा में रहेगी। अगर उन टर्न के दौरान भाषा बदलती है, तो बाद में भाषा बदलना उपलब्ध रहेगा। गलत भाषा-परिवर्तन की संभावना कम करने के लिए इसे सक्षम करें।
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — अगर true है, तो DTMF टोन चलाने के बाद एजेंट आगे कोई स्पीच जनरेट नहीं करेगा। इससे एजेंट की स्पीच IVR सिस्टम में बाधा नहीं डालेगी।
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — in-band audio के बजाय DTMF tones को out-of-band RTP events (RFC 4733) के रूप में भेजें। केवल SIP trunk imported numbers के लिए प्रभावी है।
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — skip_turn के बाद एजेंट द्वारा संदर्भानुकूल चेक-इन जनरेट करने से पहले प्रतीक्षा के सेकंड। प्रतीक्षा के दौरान "End conversation after silence" टाइमर रुका रहता है। -1 प्रतीक्षा को निष्क्रिय करता है: skip_turn के बाद एजेंट कॉलर के बोलने तक चुप रहता है और वह टाइमर चलता रहता है। केवल वॉइस बातचीत पर लागू होता है।
- `system_tool_type`: `start_procedure` (StartProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures, optional)
- `system_tool_type`: `transfer_to_agent` (TransferToAgentToolConfig)
  - `transfers` (list of AgentTransfer-Output, required)
- `system_tool_type`: `transfer_to_number` (TransferToNumberToolConfig)
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — क्या ट्रांसफ़र की प्रतीक्षा के दौरान क्लाइंट को एक मैसेज चलाना है। बैकवर्ड कंपैटिबिलिटी के लिए डिफ़ॉल्ट रूप से true है।
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — voicemail का पता चलने पर छोड़ने के लिए वैकल्पिक message। न दिए जाने पर voicemail का पता चलते ही call समाप्त हो जाएगी। dynamic variables समर्थित हैं (जैसे, \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}})।

### WebhookToolApiSchemaConfig-Output

- `url` (string, required) — वह URL जिस पर वेबहुक भेजा जाएगा। इसमें पाथ पैरामीटर शामिल हो सकते हैं, जैसे [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigOutputRequestHeaders, optional) — रिक्वेस्ट में शामिल किए जाने वाले हेडर
- `method` (enum, optional, default: GET) — वेबहुक के लिए इस्तेमाल की जाने वाली HTTP विधि
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — यदि कोई path parameters हों, तो उनके लिए स्कीमा। keys को URL के placeholders से मेल खाना चाहिए।
- `query_params_schema` (QueryParamsJsonSchema-Output, optional, nullable) — यदि कोई query params हों, तो उनके लिए स्कीमा। इन्हें URL के अंत में query params के रूप में जोड़ा जाएगा। ध्यान दें: query param में सभी properties literal types की होनी चाहिए
- `request_body_schema` (ObjectJsonSchemaProperty-Output, optional, nullable) — यदि कोई body parameters हों, तो उनके लिए स्कीमा। POST/PATCH/PUT requests के लिए इस्तेमाल होता है। स्कीमा एक object होना चाहिए, जिसे json body के रूप में भेजा जाएगा
- `response_body_schema` (ObjectJsonSchemaProperty-Output, optional, nullable) — अपेक्षित रिस्पॉन्स बॉडी संरचना बताने वाला स्कीमा। केवल डॉक्यूमेंटेशन के लिए; LLM को नहीं दिखाया जाता।
- `response_filter` (ResponseFilter, optional, nullable) — LLM के देखने से पहले response पर लागू होने वाला वैकल्पिक allow-list filter, ताकि बड़े responses context को प्रभावित न करें। डिफ़ॉल्ट रूप से पूरा response होता है।
- `content_type` (enum, optional, default: application/json) — रिक्वेस्ट बॉडी के लिए कॉन्टेंट टाइप। केवल POST/PUT/PATCH रिक्वेस्ट पर लागू होता है।
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — path_params_schema के बजाय auth कनेक्शन से रिज़ॉल्व किए गए URL प्लेसहोल्डर (जैसे UrlSecretAuthConnection से डाले गए secrets)।
- `auth_connection` (WebhookToolApiSchemaConfigOutputAuthConnection, optional, nullable) — इस webhook के साथ authentication के लिए इस्तेमाल होने वाला वैकल्पिक auth connection

### ValidationErrorLocItems

### ObjectJsonSchemaPropertyInput

### RequiredConstraints

ज़रूरी फ़ील्ड्स तक सीमित anyOf/allOf कंपोज़िशन कंस्ट्रेंट्स के लिए रैपर।

- `any_of` (list of RequiredConstraint, optional)
- `all_of` (list of RequiredConstraint, optional)

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures

### AgentTransfer-Input

- `condition` (string, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `node_id` (string, optional, nullable)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional, nullable)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — तय करता है कि TTS क्लाइंट ओवरराइड्स को ट्रांसफ़र किए गए एजेंट पर लागू रखा जाए या नहीं।
- `preserve_voice_settings` (boolean, optional, default: false) — निर्धारित करता है कि बेस वॉइस, TTS मॉडल और वॉइस सेटिंग्स ट्रांसफ़र किए गए एजेंट में ले जानी चाहिए या नहीं।

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItems, optional) — कॉल ट्रांसफ़र करते समय शामिल किए जाने वाले कस्टम SIP हेडर। हर हेडर स्टैटिक वैल्यू या डायनेमिक वेरिएबल रेफ़रेंस हो सकता है।
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — True होने पर, SIP REFER ट्रांसफ़र पूरा होने तक मूल कॉल लेग पर रिंगिंग टोन बजती है। टोन RTP के ज़रिए REFER निष्पादित करने वाले SIP peer तक भेजी जाती है, इसलिए अगर रिसीविंग सिस्टम (जैसे SBC या कॉन्टैक्ट सेंटर) को यह नहीं सुननी चाहिए तो इसे बंद करें। बंद होने पर, ट्रांसफ़र पूरा होने तक कॉलर को सन्नाटा सुनाई देता है। केवल SIP REFER ट्रांसफ़र के लिए।
- `uui` (UUITransferConfig, optional, nullable) — SIP REFER ट्रांसफ़र के साथ अटैच करने के लिए User-to-User Information (RFC 7433)। यह ट्रांसफ़र सीमा के पार CRM आइडेंटिफ़ायर या एस्केलेशन कारण जैसे कॉल कॉन्टेक्स्ट को ले जाता है।
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional, nullable) — कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')। यह स्थिर मान या डायनामिक वेरिएबल रेफ़रेंस हो सकता है। 0.5 सेकंड के पॉज़ के लिए 'w' का इस्तेमाल करें। केवल Twilio ट्रांसफ़र के लिए सपोर्टेड है।
- `phone_number` (string, optional, nullable, deprecated)

### WebhookToolApiSchemaConfigInputRequestHeaders

### LiteralJsonSchemaProperty

literal JSON types के लिए schema property। ज़रूरी: इनमें से केवल एक field सेट की जा सकती है: description (LLM value देता है), dynamic_variable (variable से value), is_system_provided (system value देता है), constant_value (fixed value), या is_omitted (parameter छोड़ा गया है)। ये परस्पर अनन्य हैं।

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — प्रॉपर्टी का विवरण। सेट होने पर, LLM इस विवरण के आधार पर मान देगा। यह dynamic_variable, is_system_provided, constant_value और is_omitted के साथ परस्पर अनन्य है।
- `enum` (list of string, optional, nullable) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — अगर true है, तो सिस्टम रनटाइम पर मान भर देगा। टेम्पलेटिंग के लिए API Integration Webhook टूल द्वारा उपयोग किया जाता है। description, dynamic_variable, constant_value और is_omitted के साथ परस्पर अनन्य है।
- `dynamic_variable` (string, optional, default: ) — इस प्रॉपर्टी की वैल्यू के लिए इस्तेमाल किए जाने वाले dynamic variable का नाम। description, is_system_provided, constant_value और is_omitted के साथ परस्पर अनन्य।
- `allowed_values` (AllowedValues, optional, nullable) — LLM द्वारा दी गई value के लिए server-side rejection guard: runtime इस object के बताए permitted set से बाहर की हर value को अस्वीकार करता है और यह set LLM को enum के रूप में नहीं बताया जाता। केवल तब समर्थित है, जब value source `description` हो; इसे dynamic_variable, is_system_provided, constant_value या is_omitted के साथ मिलाने पर अस्वीकार कर दिया जाता है।
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional, nullable, default: ) — इस प्रॉपर्टी के लिए इस्तेमाल किया जाने वाला स्थिर मान। description, dynamic_variable, is_system_provided और is_omitted के साथ परस्पर अनन्य है।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable, is_system_provided और constant_value के साथ परस्पर अनन्य है।
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — डीप्रिकेटेड: इसके बजाय `allowed_values` इस्तेमाल करें। सेट होने पर LLM वैल्यू देता है, लेकिन रनटाइम इस डायनेमिक वेरिएबल की सूची में मौजूद न होने वाली किसी भी वैल्यू को अस्वीकार करता है (यह ["ws_alpha", "ws_beta"] जैसा JSON ऐरे होना चाहिए)। LLM को सर्वर-वेरिफ़ाइड सेट से चुनने देने के लिए इस्तेमाल करें (जैसे वे ID जिन्हें वर्तमान यूज़र एक्सेस कर सकता है)। description आवश्यक है; dynamic_variable, is_system_provided, constant_value और is_omitted के साथ परस्पर अनन्य है।

### QueryParamsJsonSchema-Input

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### ResponseFilter

टूल रिस्पॉन्स को एजेंट के लिए दिखने से पहले फ़िल्टर करने की कॉन्फ़िगरेशन।

- `mode` (enum, optional, default: all) — टूल के रिस्पॉन्स को कैसे फ़िल्टर किया जाए, यह नियंत्रित करता है। 'all' पूरा रिस्पॉन्स लौटाता है, 'allow' सिर्फ़ तय किए गए पथ लौटाता है और 'hide_all' पूरा रिस्पॉन्स छिपा देता है।
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — मोड 'allow' होने पर शामिल किए जाने वाले डॉट नोटेशन पाथ (जैसे, ['ticket.id', 'ticket.status'])।
- `content_type` ("application/json", optional, default: application/json) — रिस्पॉन्स फ़िल्टरिंग के लिए कॉन्टेंट टाइप। केवल 'application/json' रिस्पॉन्स फ़िल्टर किए जाते हैं।

### WebhookToolApiSchemaConfigInputAuthConnection

इस webhook के साथ authentication के लिए इस्तेमाल होने वाला वैकल्पिक auth connection

### UnitTestToolCallParameterEval

- `type`: `anything` (MatchAnythingParameterEvaluationStrategy)
- `type`: `exact` (ExactParameterEvaluationStrategy)
  - `expected_value` (string, required) — वह सटीक स्ट्रिंग मान जिससे पैरामीटर का मिलना ज़रूरी है।
- `type`: `llm` (LLMParameterEvaluationStrategy)
  - `description` (string, required) — टेस्ट के लिए इस्तेमाल की जाने वाली मूल्यांकन रणनीति का विवरण।
- `type`: `regex` (RegexParameterEvaluationStrategy)
  - `pattern` (string, required) — एजेंट के जवाब से मिलान करने के लिए एक regex पैटर्न।

### ObjectJsonSchemaPropertyOutput

### AgentTransfer-Output

- `condition` (string, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `node_id` (string, optional, nullable)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional, nullable)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — तय करता है कि TTS क्लाइंट ओवरराइड्स को ट्रांसफ़र किए गए एजेंट पर लागू रखा जाए या नहीं।
- `preserve_voice_settings` (boolean, optional, default: false) — निर्धारित करता है कि बेस वॉइस, TTS मॉडल और वॉइस सेटिंग्स ट्रांसफ़र किए गए एजेंट में ले जानी चाहिए या नहीं।

### WebhookToolApiSchemaConfigOutputRequestHeaders

### QueryParamsJsonSchema-Output

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### WebhookToolApiSchemaConfigOutputAuthConnection

इस webhook के साथ authentication के लिए इस्तेमाल होने वाला वैकल्पिक auth connection

### ArrayJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: array)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — सेट होने पर, पूरा parameter रनटाइम पर इस dynamic variable से भरा जाता है। यह description (LLM-प्रदत्त मान), constant_value और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `constant_value` (list of any, optional, nullable) — सेट होने पर, पूरा array रनटाइम पर इस स्थिर मान का उपयोग करता है। यह description (LLM-प्रदत्त array), dynamic_variable और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable और constant_value के साथ परस्पर अनन्य है।
- `type` ("array", optional, default: array)
- `items` (ArrayJsonSchemaPropertyInputItems, optional, default: {"allowed_values_dynamic_variable":"","constant_value":"","description":"Array element","dynamic_variable":"","is_omitted":false,"is_system_provided":false,"type":"string"}) — array elements के लिए स्कीमा।

### RequiredConstraint

फ़ील्ड्स का एक सेट, जिन सभी का मौजूद होना इस बाध्यता को पूरा करने के लिए ज़रूरी है।

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — Procedure ID
- `version_id` (string, required) — procedure वर्ज़न की वर्ज़न ID।

### ProcedureDraftRef

- `procedure_id` (string, required) — Procedure ID
- `version_id` (any, optional)

### PhoneNumberTransferTransferDestination

- `type`: `phone` (PhoneNumberTransferDestination)
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable` (PhoneNumberDynamicVariableTransferDestination)
  - `phone_number` (string, required)
- `type`: `sip_uri` (SIPUriTransferDestination)
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable` (SIPUriDynamicVariableTransferDestination)
  - `sip_uri` (string, required)

### PhoneNumberTransferCustomSipHeadersItems

- `type`: `dynamic` (CustomSIPHeaderWithDynamicVariable)
  - `key` (string, required) — SIP हेडर का नाम (जैसे, 'X-Customer-ID')
  - `value` (string, required) — रिज़ॉल्व किए जाने वाले डायनामिक वेरिएबल का नाम
- `type`: `static` (CustomSIPHeader)
  - `key` (string, required) — SIP हेडर का नाम (जैसे, 'X-Customer-ID')
  - `value` (string, required) — हेडर वैल्यू

### UUITransferConfig

SIP REFER ट्रांसफ़र के लिए User-to-User Information envelope (RFC 7433)। आउटबाउंड payloads hex-encoded होते हैं (RFC 7433 में परिभाषित एकमात्र encoding)। protocol discriminator axis की मदद से हर प्लेटफ़ॉर्म के फ़ॉर्मैट (Talkdesk, Genesys, ...) बिखरे हुए ट्रांसफ़र फ़्लैग्स की जगह कॉन्फ़िगरेशन से व्यक्त किए जा सकते हैं। अतिरिक्त axes (ASCII encoding, header name, purpose/content parameters) को ट्रांसफ़र मॉडल में बदलाव किए बिना यहां जोड़ा जा सकता है।

- `data` (string, required) — SIP REFER ट्रांसफ़र पर भेजने के लिए UUI payload। इनलाइन डायनामिक वेरिएबल समर्थित हैं और ट्रांसफ़र के समय इसे hex-encoded किया जाता है।
- `protocol_discriminator` (string, optional, nullable) — वैकल्पिक one-octet protocol discriminator (दो hex digits, जैसे '00')। Genesys Cloud जैसे platforms के लिए आवश्यक है, जो अन्यथा payload का पहला octet हटा देते हैं। bare hex payload अपेक्षित करने वाले Talkdesk जैसे platforms के लिए इसे सेट न करें।
- `protocol_discriminator_mode` (enum, optional, default: prefix) — protocol\_discriminator कैसे अटैच करना है। 'prefix' ऑक्टेट को hex पेलोड के आगे जोड़ता है (User-to-User=XX\<hex>;encoding=hex)। 'pd\_parameter' इसे अलग पैरामीटर के रूप में भेजता है (User-to-User=\<hex>;pd=XX;encoding=hex)। protocol\_discriminator सेट न होने पर इसे अनदेखा किया जाता है।
  - Allowed values: `prefix`, `pd_parameter`

### PhoneNumberTransferPostDialDigits

कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')। यह स्थिर मान या डायनामिक वेरिएबल रेफ़रेंस हो सकता है। 0.5 सेकंड के पॉज़ के लिए 'w' का इस्तेमाल करें। केवल Twilio ट्रांसफ़र के लिए सपोर्टेड है।

- `type`: `dynamic` (PostDialDigitsDynamicVariable)
  - `value` (string, required) — रिज़ॉल्व किए जाने वाले डायनामिक वेरिएबल का नाम
- `type`: `static` (PostDialDigitsStatic)
  - `value` (string, required) — कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')

### ConvAISecretLocator

एजेंट के secret store में मौजूद secret को रेफ़र करने के लिए इस्तेमाल होता है।

- `secret_id` (string, required)

### ConvAIDynamicVariable

डायनामिक वेरिएबल को रेफ़र करने के लिए इस्तेमाल होता है।

- `variable_name` (string, required)

### ConvAIEnvVarLocator

लेबल से environment variable को रेफ़र करने के लिए इस्तेमाल होता है।

- `env_var_label` (string, required)

### LiteralJsonSchemaPropertyType

### AllowedValues

- `dynamic_variable` (string, required) — उस डायनामिक वेरिएबल का नाम जिसका मान अनुमत मानों की JSON ऐरे में बदलना चाहिए, जैसे ["ws_alpha", "ws_beta"]। सिस्टम वेरिएबल केवल सूची में बदलने पर काम करते हैं।

### LiteralJsonSchemaPropertyConstantValue

इस प्रॉपर्टी के लिए इस्तेमाल किया जाने वाला स्थिर मान। description, dynamic_variable, is_system_provided और is_omitted के साथ परस्पर अनन्य है।

### AuthConnectionLocator

वर्कस्पेस के auth कनेक्शन store से auth कनेक्शन को रेफ़र करने के लिए इस्तेमाल होता है।

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

लेबल के ज़रिए 'auth_connection' टाइप के environment variable को रेफ़र करता है। रनटाइम पर, मौजूदा environment के लिए auth connection निर्धारित करता है, और न मिलने पर default environment इस्तेमाल करता है।

- `env_var_label` (string, required)

### ArrayJsonSchemaProperty-Output

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — सेट होने पर, पूरा parameter रनटाइम पर इस dynamic variable से भरा जाता है। यह description (LLM-प्रदत्त मान), constant_value और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `constant_value` (list of any, optional, nullable) — सेट होने पर, पूरा array रनटाइम पर इस स्थिर मान का उपयोग करता है। यह description (LLM-प्रदत्त array), dynamic_variable और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable और constant_value के साथ परस्पर अनन्य है।
- `type` ("array", optional, default: array)
- `items` (ArrayJsonSchemaPropertyOutputItems, optional, default: {"allowed_values_dynamic_variable":"","constant_value":"","description":"Array element","dynamic_variable":"","is_omitted":false,"is_system_provided":false,"type":"string"}) — array elements के लिए स्कीमा।

### ArrayJsonSchemaPropertyInputItems

array elements के लिए स्कीमा।

### ArrayJsonSchemaPropertyOutputItems

array elements के लिए स्कीमा।

## Examples

**Request**

```json
{
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  }
}
```

**Response**

```json
{
  "id": "string",
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  },
  "access_info": {
    "is_creator": true,
    "creator_name": "John Doe",
    "creator_email": "john.doe@example.com",
    "role": "admin",
    "access_source": "creator"
  },
  "usage_stats": {
    "avg_latency_secs": 1.1,
    "total_calls": 0
  },
  "response_mocks": [
    {
      "mock_result": "string",
      "parameter_conditions": [
        {
          "eval": {
            "description": "string",
            "type": "string"
          },
          "path": "string"
        }
      ],
      "is_error": false
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/tools/tool_id"

payload = { "tool_config": {
        "type": "system",
        "name": "end_call",
        "params": { "system_tool_type": "end_call" },
        "description": ""
    } }
headers = {"Content-Type": "application/json"}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/tools/tool_id';
const options = {
  method: 'PATCH',
  headers: {'Content-Type': 'application/json'},
  body: '{"tool_config":{"type":"system","name":"end_call","params":{"system_tool_type":"end_call"},"description":""}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/convai/tools/tool_id"

	payload := strings.NewReader("{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/convai/tools/tool_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.elevenlabs.io/v1/convai/tools/tool_id")
  .header("Content-Type", "application/json")
  .body("{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.elevenlabs.io/v1/convai/tools/tool_id', [
  'body' => '{
  "tool_config": {
    "type": "system",
    "name": "end_call",
    "params": {
      "system_tool_type": "end_call"
    },
    "description": ""
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/tools/tool_id");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"tool_config\": {\n    \"type\": \"system\",\n    \"name\": \"end_call\",\n    \"params\": {\n      \"system_tool_type\": \"end_call\"\n    },\n    \"description\": \"\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["tool_config": [
    "type": "system",
    "name": "end_call",
    "params": ["system_tool_type": "end_call"],
    "description": ""
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/tools/tool_id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```