API key for authentication. Generate API keys from the RevRing dashboard. A key is either full access or read-only; a read-only key is refused with 403 read_only_key on any request that creates, changes or deletes.
How the agent treats the webhook call. sync: the agent waits for your webhook's response (up to the tool timeout) and can use it in the conversation. async: the agent acknowledges the tool call immediately and keeps the conversation going while your webhook is delivered in the background; the response is not used. Use async for side effects such as logging, CRM updates or notifications.
A line the agent says while a slow sync tool runs, for example "One moment while I check that." The agent answers from the real result when it arrives. Empty or null: the agent waits without speaking.
Extra attempts after a connection error or an HTTP 429, 502, 503 or 504 response, within the tool's time limit. A request that times out is not retried.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"RevRing AI Documentation","colors":{"primary":"#005cdd","light":"#5b9efa","dark":"#005cdd"},"logo":{"light":"https://mintcdn.com/revringinc/4zfe2kVVWVYo-Rox/logo/light.svg?fit=max\u0026auto=format\u0026n=4zfe2kVVWVYo-Rox\u0026q=85\u0026s=e28235c04eceefff5b3adb1cb7c33353","dark":"https://mintcdn.com/revringinc/4zfe2kVVWVYo-Rox/logo/dark.svg?fit=max\u0026auto=format\u0026n=4zfe2kVVWVYo-Rox\u0026q=85\u0026s=0ceef80328d53157b1b3a45914fb58a1"},"favicon":"https://mintcdn.com/revringinc/4zfe2kVVWVYo-Rox/favicon.svg?fit=max\u0026auto=format\u0026n=4zfe2kVVWVYo-Rox\u0026q=85\u0026s=3161414ca314cb968d3be90385506fbb","navbar":{"links":[{"href":"mailto:contact@revring.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.revring.ai"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/revring"}},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"revringinc","hasAudioNarration":false,"actualSubdomain":"revringinc","customDomains":["docs.revring.ai"],"gitSource":{"type":"github","owner":"revringai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6accccd3f03b0dc1b4aaf120","collectionId":"aa92e730-203f-4efe-931c-075be62f32cc","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6accccd3f03b0dc1b4aaf120"},"entitlements":{},"buildId":"6accccd3f03b0dc1b4aaf120","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":148},{"language":"default","tag":"Guides","count":26},{"language":"default","tag":"Platform","count":22},{"language":"default","tag":"Campaigns","count":11},{"language":"default","tag":"Agents","count":10},{"language":"default","tag":"Calls","count":10},{"language":"default","tag":"Voices","count":10},{"language":"default","tag":"Alerts","count":8},{"language":"default","tag":"SIP Trunks","count":8},{"language":"default","tag":"Test Runs","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/agents/create-custom-tool","slug":"/api-reference/agents/create-custom-tool","pageMetadata":{"title":"Create Custom Tool","openapi":"POST /agents/{id}/custom-tools","description":"Add a custom tool that the agent can invoke via function calling","href":"/api-reference/agents/create-custom-tool"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Add a custom tool that the agent can invoke via function calling\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create Custom Tool","openapi":"POST /agents/{id}/custom-tools","description":"Add a custom tool that the agent can invoke via function calling","href":"/api-reference/agents/create-custom-tool"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create Custom Tool","description":"Add a custom tool that the agent can invoke via function calling","operationId":"createAgentCustomTool","tags":["Agents"],"requestBody":"bfa58e9b-87e7-4248-9e17-fe61731344f8","responses":{"201":"9f824e49-3fcc-4c80-aa55-356b153f4ba6","400":"0c153141-d03d-49d3-baa2-897157a0c47c","401":"4ccbe018-0960-46ba-84ee-a63005b7cc45","402":"7b5279b0-a0b5-46da-8696-013e468d3a66","404":"81049791-8c4a-4da5-bb07-cf6223716d7c"},"method":"post","type":"path","servers":["9d0997fe-7397-47d9-a3af-b8c62abb4b63"],"security":["6fa6cbe6-9d37-480e-b7e5-09d33fd7b619"],"path":"/agents/{id}/custom-tools","baseUrlOptions":["https://api.revring.ai/v1"],"title":"Create Custom Tool","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"563f0f72-d3d0-4988-81ed-cf018a407555":{"name":"id","in":"path","required":true,"description":"Agent ID","schema":{"type":"string","format":"uuid","isRequired":true,"description":"Agent ID","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":64,"isRequired":true,"uniqueKey":"name","typeLabel":"string"},"webhookUrl":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"webhookUrl","typeLabel":"string\u003curi>"},"enabled":{"type":"boolean","default":true,"uniqueKey":"enabled","typeLabel":"boolean"},"schema":{"type":"object","description":"Function definition: type `function`, a name, a description and JSON Schema parameters","uniqueKey":"schema","typeLabel":"object"},"httpMethod":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"HTTP method used when calling the webhook. Defaults to `POST`.","uniqueKey":"httpMethod","typeLabel":"enum\u003cstring>"},"headers":{"oneOf":[{"type":"array","description":"Custom HTTP headers to include in webhook requests","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name","isRequired":true,"uniqueKey":"headers.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Header or parameter value","isRequired":true,"uniqueKey":"headers.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"headers.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"headers.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Custom HTTP headers to include in webhook requests","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name"},"value":{"type":"string","description":"Header or parameter value"}},"required":["key","value"]},"uniqueKey":"headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"headers","typeLabel":"object[] | null"},"queryParams":{"oneOf":[{"type":"array","description":"Custom query parameters appended to the webhook URL","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name","isRequired":true,"uniqueKey":"queryParams.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Header or parameter value","isRequired":true,"uniqueKey":"queryParams.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"queryParams.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"queryParams.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Custom query parameters appended to the webhook URL","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name"},"value":{"type":"string","description":"Header or parameter value"}},"required":["key","value"]},"uniqueKey":"queryParams.oneOf.1","typeLabel":"null"}],"uniqueKey":"queryParams","typeLabel":"object[] | null"},"sendRawRequestBody":{"type":"boolean","description":"When true, sends tool arguments directly as the request body instead of the default wrapper","uniqueKey":"sendRawRequestBody","typeLabel":"boolean"},"responseMode":{"type":"string","enum":["sync","async"],"default":"sync","description":"How the agent treats the webhook call. `sync`: the agent waits for your webhook's response (up to the tool timeout) and can use it in the conversation. `async`: the agent acknowledges the tool call immediately and keeps the conversation going while your webhook is delivered in the background; the response is not used. Use `async` for side effects such as logging, CRM updates or notifications.","uniqueKey":"responseMode","typeLabel":"enum\u003cstring>"},"timeoutSeconds":{"oneOf":[{"type":"integer","minimum":1,"maximum":120,"description":"Seconds a `sync` tool waits for the webhook before the agent moves on. Default 8.","uniqueKey":"timeoutSeconds.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":120,"description":"Seconds a `sync` tool waits for the webhook before the agent moves on. Default 8.","uniqueKey":"timeoutSeconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"timeoutSeconds","typeLabel":"integer | null"},"executionMessage":{"oneOf":[{"type":"string","maxLength":300,"description":"A line the agent says while a slow `sync` tool runs, for example \"One moment while I check that.\" The agent answers from the real result when it arrives. Empty or null: the agent waits without speaking.","uniqueKey":"executionMessage.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":300,"description":"A line the agent says while a slow `sync` tool runs, for example \"One moment while I check that.\" The agent answers from the real result when it arrives. Empty or null: the agent waits without speaking.","uniqueKey":"executionMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"executionMessage","typeLabel":"string | null"},"responseVariables":{"oneOf":[{"type":"array","maxItems":20,"description":"Fields of a successful JSON response saved as call variables for later tools, by name and response path (for example `order.id`).","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name: letters, digits and underscores","isRequired":true,"uniqueKey":"responseVariables.oneOf.0.items.[INDEX].name","typeLabel":"string"},"path":{"type":"string","description":"Path in the JSON response, such as `order.id` or `items[0].sku`","isRequired":true,"uniqueKey":"responseVariables.oneOf.0.items.[INDEX].path","typeLabel":"string"}},"required":["name","path"],"uniqueKey":"responseVariables.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"responseVariables.oneOf.0","typeLabel":"object[]"},{"type":"null","maxItems":20,"description":"Fields of a successful JSON response saved as call variables for later tools, by name and response path (for example `order.id`).","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name: letters, digits and underscores"},"path":{"type":"string","description":"Path in the JSON response, such as `order.id` or `items[0].sku`"}},"required":["name","path"]},"uniqueKey":"responseVariables.oneOf.1","typeLabel":"null"}],"uniqueKey":"responseVariables","typeLabel":"object[] | null"},"speakAfterResult":{"type":"boolean","default":true,"description":"When false, the agent does not reply to the tool's result and keeps listening. Only for `sync` tools.","uniqueKey":"speakAfterResult","typeLabel":"boolean"},"maxRetries":{"type":"integer","default":0,"minimum":0,"maximum":3,"description":"Extra attempts after a connection error or an HTTP 429, 502, 503 or 504 response, within the tool's time limit. A request that times out is not retried.","uniqueKey":"maxRetries","typeLabel":"integer"}},"required":["name","webhookUrl"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","webhookUrl":"\u003cstring>","enabled":true,"schema":{},"headers":[{"key":"\u003cstring>","value":"\u003cstring>"}],"queryParams":[{"key":"\u003cstring>","value":"\u003cstring>"}],"sendRawRequestBody":true,"responseMode":"sync","timeoutSeconds":60,"executionMessage":"\u003cstring>","responseVariables":[{"name":"\u003cstring>","path":"\u003cstring>"}],"speakAfterResult":true,"maxRetries":0}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"9f824e49-3fcc-4c80-aa55-356b153f4ba6":{"description":"Custom tool created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Custom function calling tool for agents","properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","description":"Tool name (used in function calls)","isRequired":true,"uniqueKey":"data.name","typeLabel":"string"},"webhookUrl":{"type":"string","format":"uri","description":"Webhook URL to invoke","isRequired":true,"uniqueKey":"data.webhookUrl","typeLabel":"string\u003curi>"},"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"data.enabled","typeLabel":"boolean"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.updatedAt","typeLabel":"string\u003cdate-time>"},"schema":{"type":"object","description":"Function definition: type `function`, a name, a description and JSON Schema parameters","uniqueKey":"data.schema","typeLabel":"object"},"httpMethod":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"HTTP method used when calling the webhook. Defaults to `POST`.","uniqueKey":"data.httpMethod","typeLabel":"enum\u003cstring>"},"headers":{"oneOf":[{"type":"array","description":"Custom HTTP headers to include in webhook requests","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name","isRequired":true,"uniqueKey":"data.headers.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Header or parameter value","isRequired":true,"uniqueKey":"data.headers.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"data.headers.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.headers.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Custom HTTP headers to include in webhook requests","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name"},"value":{"type":"string","description":"Header or parameter value"}},"required":["key","value"]},"uniqueKey":"data.headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.headers","typeLabel":"object[] | null"},"queryParams":{"oneOf":[{"type":"array","description":"Custom query parameters appended to the webhook URL","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name","isRequired":true,"uniqueKey":"data.queryParams.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","description":"Header or parameter value","isRequired":true,"uniqueKey":"data.queryParams.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"required":["key","value"],"uniqueKey":"data.queryParams.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.queryParams.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Custom query parameters appended to the webhook URL","items":{"type":"object","description":"A key-value pair","properties":{"key":{"type":"string","description":"Header or parameter name"},"value":{"type":"string","description":"Header or parameter value"}},"required":["key","value"]},"uniqueKey":"data.queryParams.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.queryParams","typeLabel":"object[] | null"},"sendRawRequestBody":{"type":"boolean","description":"When true, sends tool arguments directly as the request body instead of the default wrapper","uniqueKey":"data.sendRawRequestBody","typeLabel":"boolean"},"responseMode":{"type":"string","enum":["sync","async"],"default":"sync","description":"How the agent treats the webhook call. `sync`: the agent waits for your webhook's response (up to the tool timeout) and can use it in the conversation. `async`: the agent acknowledges the tool call immediately and keeps the conversation going while your webhook is delivered in the background; the response is not used. Use `async` for side effects such as logging, CRM updates or notifications.","uniqueKey":"data.responseMode","typeLabel":"enum\u003cstring>"},"timeoutSeconds":{"oneOf":[{"type":"integer","minimum":1,"maximum":120,"description":"Seconds a `sync` tool waits for the webhook before the agent moves on. Default 8.","uniqueKey":"data.timeoutSeconds.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":120,"description":"Seconds a `sync` tool waits for the webhook before the agent moves on. Default 8.","uniqueKey":"data.timeoutSeconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.timeoutSeconds","typeLabel":"integer | null"},"executionMessage":{"oneOf":[{"type":"string","maxLength":300,"description":"A line the agent says while a slow `sync` tool runs, for example \"One moment while I check that.\" The agent answers from the real result when it arrives. Empty or null: the agent waits without speaking.","uniqueKey":"data.executionMessage.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":300,"description":"A line the agent says while a slow `sync` tool runs, for example \"One moment while I check that.\" The agent answers from the real result when it arrives. Empty or null: the agent waits without speaking.","uniqueKey":"data.executionMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.executionMessage","typeLabel":"string | null"},"responseVariables":{"oneOf":[{"type":"array","maxItems":20,"description":"Fields of a successful JSON response saved as call variables for later tools, by name and response path (for example `order.id`).","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name: letters, digits and underscores","isRequired":true,"uniqueKey":"data.responseVariables.oneOf.0.items.[INDEX].name","typeLabel":"string"},"path":{"type":"string","description":"Path in the JSON response, such as `order.id` or `items[0].sku`","isRequired":true,"uniqueKey":"data.responseVariables.oneOf.0.items.[INDEX].path","typeLabel":"string"}},"required":["name","path"],"uniqueKey":"data.responseVariables.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.responseVariables.oneOf.0","typeLabel":"object[]"},{"type":"null","maxItems":20,"description":"Fields of a successful JSON response saved as call variables for later tools, by name and response path (for example `order.id`).","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name: letters, digits and underscores"},"path":{"type":"string","description":"Path in the JSON response, such as `order.id` or `items[0].sku`"}},"required":["name","path"]},"uniqueKey":"data.responseVariables.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.responseVariables","typeLabel":"object[] | null"},"speakAfterResult":{"type":"boolean","default":true,"description":"When false, the agent does not reply to the tool's result and keeps listening. Only for `sync` tools.","uniqueKey":"data.speakAfterResult","typeLabel":"boolean"},"maxRetries":{"type":"integer","default":0,"minimum":0,"maximum":3,"description":"Extra attempts after a connection error or an HTTP 429, 502, 503 or 504 response, within the tool's time limit. A request that times out is not retried.","uniqueKey":"data.maxRetries","typeLabel":"integer"}},"required":["id","name","webhookUrl","enabled","createdAt","updatedAt"],"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","webhookUrl":"\u003cstring>","enabled":true,"createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","schema":{},"httpMethod":"GET","headers":[{"key":"\u003cstring>","value":"\u003cstring>"}],"queryParams":[{"key":"\u003cstring>","value":"\u003cstring>"}],"sendRawRequestBody":true,"responseMode":"sync","timeoutSeconds":60,"executionMessage":"\u003cstring>","responseVariables":[{"name":"\u003cstring>","path":"\u003cstring>"}],"speakAfterResult":true,"maxRetries":0}}}},"exampleType":"generated"}},"exampleType":"generated"},"0c153141-d03d-49d3-baa2-897157a0c47c":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"invalid_body","uniqueKey":"error","typeLabel":"string"},"details":{"type":"object","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"invalid_body","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"4ccbe018-0960-46ba-84ee-a63005b7cc45":{"description":"Authentication required or API key invalid","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"unauthorized","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"unauthorized"}}},"exampleType":"generated"}},"exampleType":"generated"},"7b5279b0-a0b5-46da-8696-013e468d3a66":{"description":"Subscription inactive or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"billing_inactive","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"billing_inactive"}}},"exampleType":"generated"}},"exampleType":"generated"},"81049791-8c4a-4da5-bb07-cf6223716d7c":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"not_found","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"not_found"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6fa6cbe6-9d37-480e-b7e5-09d33fd7b619":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key for authentication. Generate API keys from the RevRing dashboard. A key is either full access or read-only; a read-only key is refused with 403 read_only_key on any request that creates, changes or deletes.","scopes":[],"schemeName":"apiKeyAuth"}}},"servers":{"9d0997fe-7397-47d9-a3af-b8c62abb4b63":{"url":"https://api.revring.ai/v1","description":"Production API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key for authentication. Generate API keys from the RevRing dashboard. A key is either full access or read-only; a read-only key is refused with 403 read_only_key on any request that creates, changes or deletes.","scopes":[],"schemeName":"apiKeyAuth"},"schema":{"title":"x-api-key","type":"string","description":"API key for authentication. Generate API keys from the RevRing dashboard. A key is either full access or read-only; a read-only key is refused with 403 read_only_key on any request that creates, changes or deletes.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyAuth","name":"x-api-key"}],"title":"apiKeyAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"revringinc","siteName":"RevRing AI Documentation","title":"Create Custom Tool - RevRing AI Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-21T23:37:38.153Z","originalFileLocation":"api-reference/agents/create-custom-tool.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Add a custom tool that the agent can invoke via function calling\">\u003cmeta data-mint-head name=\"application-name\" content=\"RevRing AI Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Custom Tool - RevRing AI Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add a custom tool that the agent can invoke via function calling\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"RevRing AI Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.revring.ai/api-reference/agents/create-custom-tool\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://revringinc.mintlify.app/_mintlify/api/og/v2?division=Agent+Custom+Tools\u0026amp;title=Create+Custom+Tool\u0026amp;description=Add+a+custom+tool+that+the+agent+can+invoke+via+function+calling\u0026amp;theme=68a631265e6b2f240c8578e4\u0026amp;signature=b527e6ca4923cf437bf56010fbe1f656d9052fca653e8f704647761140b5cdbb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create Custom Tool - RevRing AI Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add a custom tool that the agent can invoke via function calling\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://revringinc.mintlify.app/_mintlify/api/og/v2?division=Agent+Custom+Tools\u0026amp;title=Create+Custom+Tool\u0026amp;description=Add+a+custom+tool+that+the+agent+can+invoke+via+function+calling\u0026amp;theme=68a631265e6b2f240c8578e4\u0026amp;signature=b527e6ca4923cf437bf56010fbe1f656d9052fca653e8f704647761140b5cdbb\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/revringinc/yhLN44bkToDzQihq/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"RevRing AI Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#005cdd\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.revring.ai/api-reference/agents/create-custom-tool\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/agents/create-custom-tool.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.revring.ai/#organization\",\"name\":\"RevRing AI Documentation\",\"url\":\"https://docs.revring.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/revringinc/4zfe2kVVWVYo-Rox/logo/light.svg?fit=max\u0026auto=format\u0026n=4zfe2kVVWVYo-Rox\u0026q=85\u0026s=e28235c04eceefff5b3adb1cb7c33353\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.revring.ai#website\",\"name\":\"RevRing AI Documentation\",\"url\":\"https://docs.revring.ai\",\"publisher\":{\"@id\":\"https://docs.revring.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool#webpage\",\"url\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool\",\"name\":\"Create Custom Tool\",\"description\":\"Add a custom tool that the agent can invoke via function calling\",\"dateModified\":\"2026-08-21T23:37:38.153Z\",\"isPartOf\":{\"@id\":\"https://docs.revring.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Agent Custom Tools\",\"item\":\"https://docs.revring.ai/api-reference/agents/list-custom-tools\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Custom Tool\",\"item\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool#apireference\",\"headline\":\"Create Custom Tool\",\"name\":\"Create Custom Tool\",\"description\":\"Add a custom tool that the agent can invoke via function calling\",\"url\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool\",\"mainEntityOfPage\":{\"@id\":\"https://docs.revring.ai/api-reference/agents/create-custom-tool#webpage\"},\"dateModified\":\"2026-08-21T23:37:38.153Z\",\"publisher\":{\"@id\":\"https://docs.revring.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.revring.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"RevRing AI Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"RevRing AI Documentation","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"API documentation","pages":[{"title":"Introduction","href":"/api-reference/introduction"}]},{"group":"Agents","pages":[{"title":"List Agents","openapi":"GET /agents","href":"/api-reference/agents/list"},{"title":"Get Agent","openapi":"GET /agents/{id}","href":"/api-reference/agents/get"},{"title":"Batch Get Agents","openapi":"POST /agents/batch-get","href":"/api-reference/agents/batch-get"},{"title":"Create Agent","openapi":"POST /agents","href":"/api-reference/agents/create"},{"title":"Draft an Agent From a Description","openapi":"POST /agents/draft","href":"/api-reference/agents/draft"},{"title":"Update Agent","openapi":"PATCH /agents/{id}","href":"/api-reference/agents/update"},{"title":"Chat With an Agent","openapi":"POST /agents/{id}/test-chat","href":"/api-reference/agents/test-chat"},{"title":"Talk to an Agent From a Browser","openapi":"POST /agents/{id}/test-call","href":"/api-reference/agents/test-call"},{"title":"Duplicate Agent","openapi":"POST /agents/{id}/duplicate","href":"/api-reference/agents/duplicate"},{"title":"Delete Agent","openapi":"DELETE /agents/{id}","href":"/api-reference/agents/delete"}]},{"group":"Agent Versions","pages":[{"title":"List Agent Versions","openapi":"GET /agents/{id}/revisions","href":"/api-reference/agents/list-revisions"},{"title":"Get Agent Version","openapi":"GET /agents/{id}/revisions/{revision}","href":"/api-reference/agents/get-revision"},{"title":"Restore Agent Version","openapi":"POST /agents/{id}/revisions/{revision}/restore","href":"/api-reference/agents/restore-revision"},{"title":"Publish Agent","openapi":"POST /agents/{id}/publish","href":"/api-reference/agents/publish"},{"title":"List Agent Environments","openapi":"GET /agents/{id}/environments","href":"/api-reference/agents/list-environments"},{"title":"Create or Update Environment","openapi":"PUT /agents/{id}/environments/{name}","href":"/api-reference/agents/upsert-environment"},{"title":"Delete Environment","openapi":"DELETE /agents/{id}/environments/{name}","href":"/api-reference/agents/delete-environment"}]},{"group":"Agent Phone Numbers","pages":[{"title":"List Agent Phone Numbers","openapi":"GET /agents/{id}/phone-numbers","href":"/api-reference/agents/list-phone-numbers"},{"title":"Add Phone Number","openapi":"POST /agents/{id}/phone-numbers","href":"/api-reference/agents/add-phone-number"},{"title":"Remove Phone Number","openapi":"DELETE /agents/{id}/phone-numbers/{phoneId}","href":"/api-reference/agents/remove-phone-number"},{"title":"Update Phone Number","openapi":"PATCH /agents/{id}/phone-numbers/{phoneId}","href":"/api-reference/agents/update-phone-number"}]},{"group":"Agent Custom Tools","pages":[{"title":"List Custom Tools","openapi":"GET /agents/{id}/custom-tools","description":"Get custom tools configured for an agent","href":"/api-reference/agents/list-custom-tools"},{"title":"Create Custom Tool","openapi":"POST /agents/{id}/custom-tools","href":"/api-reference/agents/create-custom-tool"},{"title":"Update Custom Tool","openapi":"PATCH /agents/{id}/custom-tools/{toolId}","description":"Update custom tool configuration","href":"/api-reference/agents/update-custom-tool"},{"title":"Delete Custom Tool","openapi":"DELETE /agents/{id}/custom-tools/{toolId}","href":"/api-reference/agents/delete-custom-tool"},{"title":"Test MCP Server","openapi":"POST /agents/mcp-servers/test","href":"/api-reference/agents/test-mcp-server"}]},{"group":"Agent Knowledge Bases","pages":[{"title":"List Agent Knowledge Bases","openapi":"GET /agents/{id}/knowledge-bases","href":"/api-reference/agents/list-knowledge-bases"},{"title":"Link Knowledge Base","openapi":"POST /agents/{id}/knowledge-bases","href":"/api-reference/agents/link-knowledge-base"},{"title":"Unlink Knowledge Base","openapi":"DELETE /agents/{id}/knowledge-bases/{kbId}","href":"/api-reference/agents/unlink-knowledge-base"}]},{"group":"Agent Folders","pages":[{"title":"List Agent Folders","openapi":"GET /agent-folders","href":"/api-reference/agent-folders/list"},{"title":"Create Agent Folder","openapi":"POST /agent-folders","href":"/api-reference/agent-folders/create"},{"title":"Update Agent Folder","openapi":"PATCH /agent-folders/{id}","href":"/api-reference/agent-folders/update"},{"title":"Delete Agent Folder","openapi":"DELETE /agent-folders/{id}","href":"/api-reference/agent-folders/delete"}]},{"group":"Imports","pages":[{"title":"List Source Agents","openapi":"POST /imports/agents","href":"/api-reference/imports/list-agents"},{"title":"Import Agents","openapi":"POST /imports","href":"/api-reference/imports/import"}]},{"group":"SIP Trunks","pages":[{"title":"List SIP Trunks","openapi":"GET /sip-trunks","href":"/api-reference/sip-trunks/list"},{"title":"Get SIP Trunk","openapi":"GET /sip-trunks/{id}","href":"/api-reference/sip-trunks/get"},{"title":"List Available Phone Numbers","openapi":"GET /sip-trunks/{id}/available-numbers","href":"/api-reference/sip-trunks/list-available-numbers"},{"title":"Create SIP Trunk","openapi":"POST /sip-trunks","href":"/api-reference/sip-trunks/create"},{"title":"Update SIP Trunk","openapi":"PATCH /sip-trunks/{id}","href":"/api-reference/sip-trunks/update"},{"title":"Delete SIP Trunk","openapi":"DELETE /sip-trunks/{id}","href":"/api-reference/sip-trunks/delete"},{"title":"List Twilio Numbers","openapi":"POST /sip-trunks/connect/twilio/numbers","href":"/api-reference/sip-trunks/list-twilio-numbers"},{"title":"Connect Twilio","openapi":"POST /sip-trunks/connect/twilio","href":"/api-reference/sip-trunks/connect-twilio"}]},{"group":"Calls","pages":[{"title":"List Calls","openapi":"GET /calls","href":"/api-reference/calls/list"},{"title":"Get Call","openapi":"GET /calls/{id}","href":"/api-reference/calls/get"},{"title":"Batch Get Calls","openapi":"POST /calls/batch-get","href":"/api-reference/calls/batch-get"},{"title":"Send Call","openapi":"POST /calls","href":"/api-reference/calls/send"},{"title":"Cancel Call","openapi":"POST /calls/{id}/cancel","href":"/api-reference/calls/cancel"},{"title":"Send Instruction","openapi":"POST /calls/{id}/instructions","href":"/api-reference/calls/send-instruction"},{"title":"End Call","openapi":"POST /calls/{id}/end","href":"/api-reference/calls/end"},{"title":"Re-run Analysis","openapi":"POST /calls/{id}/reanalyze","href":"/api-reference/calls/reanalyze"},{"title":"Re-run Analysis (bulk)","openapi":"POST /calls/reanalyze","href":"/api-reference/calls/reanalyze-bulk"},{"title":"Export Calls","openapi":"GET /calls/export","href":"/api-reference/calls/export"}]},{"group":"Campaigns","pages":[{"title":"Create Campaign","openapi":"POST /campaigns","href":"/api-reference/campaigns/create"},{"title":"List Campaigns","openapi":"GET /campaigns","href":"/api-reference/campaigns/list"},{"title":"Get Campaign","openapi":"GET /campaigns/{id}","href":"/api-reference/campaigns/get"},{"title":"Update Campaign","openapi":"PATCH /campaigns/{id}","href":"/api-reference/campaigns/update"},{"title":"Delete Campaign","openapi":"DELETE /campaigns/{id}","href":"/api-reference/campaigns/delete"},{"title":"Add Campaign Contacts","openapi":"POST /campaigns/{id}/contacts","href":"/api-reference/campaigns/add-contacts"},{"title":"List Campaign Contacts","openapi":"GET /campaigns/{id}/contacts","href":"/api-reference/campaigns/list-contacts"},{"title":"Start Campaign","openapi":"POST /campaigns/{id}/start","href":"/api-reference/campaigns/start"},{"title":"Pause Campaign","openapi":"POST /campaigns/{id}/pause","href":"/api-reference/campaigns/pause"},{"title":"Cancel Campaign","openapi":"POST /campaigns/{id}/cancel","href":"/api-reference/campaigns/cancel"},{"title":"Export Campaign Results","openapi":"GET /campaigns/{id}/export","href":"/api-reference/campaigns/export"}]},{"group":"Alerts","pages":[{"title":"List Alert Rules","openapi":"GET /alert-rules","href":"/api-reference/alerts/list"},{"title":"Create Alert Rule","openapi":"POST /alert-rules","href":"/api-reference/alerts/create"},{"title":"Get Alert Rule","openapi":"GET /alert-rules/{id}","href":"/api-reference/alerts/get"},{"title":"Update Alert Rule","openapi":"PATCH /alert-rules/{id}","href":"/api-reference/alerts/update"},{"title":"Delete Alert Rule","openapi":"DELETE /alert-rules/{id}","href":"/api-reference/alerts/delete"},{"title":"List Alert Events","openapi":"GET /alert-rules/{id}/events","href":"/api-reference/alerts/events"},{"title":"Get Alert Value","openapi":"GET /alert-rules/{id}/value","href":"/api-reference/alerts/value"},{"title":"Send Test Alert","openapi":"POST /alert-rules/{id}/test","href":"/api-reference/alerts/test"}]},{"group":"Do Not Call","pages":[{"title":"List Do-Not-Call Numbers","openapi":"GET /do-not-call","href":"/api-reference/do-not-call/list"},{"title":"Add Do-Not-Call Numbers","openapi":"POST /do-not-call","href":"/api-reference/do-not-call/add"},{"title":"Remove Do-Not-Call Number","openapi":"DELETE /do-not-call/{e164}","href":"/api-reference/do-not-call/remove"}]},{"group":"Contacts","pages":[{"title":"List Contact Memories","openapi":"GET /contacts/memories","href":"/api-reference/contacts/list-memories"},{"title":"Get Contact Memory","openapi":"GET /contacts/{phoneNumber}/memory","href":"/api-reference/contacts/get-memory"},{"title":"Set Contact Memory","openapi":"PUT /contacts/{phoneNumber}/memory","href":"/api-reference/contacts/set-memory"},{"title":"Delete Contact Memory","openapi":"DELETE /contacts/{phoneNumber}/memory","href":"/api-reference/contacts/delete-memory"}]},{"group":"Integrations","pages":[{"title":"List Integrations","openapi":"GET /integrations","href":"/api-reference/integrations/list"},{"title":"Connect Integration","openapi":"POST /integrations","href":"/api-reference/integrations/connect"},{"title":"List Calendars","openapi":"GET /integrations/{id}/calendars","href":"/api-reference/integrations/calendars"},{"title":"Test Integration","openapi":"POST /integrations/{id}/test","href":"/api-reference/integrations/test"},{"title":"Update Integration","openapi":"PATCH /integrations/{id}","href":"/api-reference/integrations/update"},{"title":"Disconnect Integration","openapi":"DELETE /integrations/{id}","href":"/api-reference/integrations/delete"}]},{"group":"Knowledge Bases","pages":[{"title":"List Knowledge Bases","openapi":"GET /knowledge-bases","href":"/api-reference/knowledge-bases/list"},{"title":"Get Knowledge Base","openapi":"GET /knowledge-bases/{id}","href":"/api-reference/knowledge-bases/get"},{"title":"Create Knowledge Base","openapi":"POST /knowledge-bases","href":"/api-reference/knowledge-bases/create"},{"title":"Update Knowledge Base","openapi":"PATCH /knowledge-bases/{id}","href":"/api-reference/knowledge-bases/update"},{"title":"Delete Knowledge Base","openapi":"DELETE /knowledge-bases/{id}","href":"/api-reference/knowledge-bases/delete"}]},{"group":"Knowledge Base Sources","pages":[{"title":"Add Source","openapi":"POST /knowledge-bases/{id}/sources","href":"/api-reference/knowledge-bases/add-source"},{"title":"Get Source","openapi":"GET /knowledge-bases/{id}/sources/{sourceId}","href":"/api-reference/knowledge-bases/get-source"},{"title":"Refresh Source","openapi":"POST /knowledge-bases/{id}/sources/{sourceId}/refresh","href":"/api-reference/knowledge-bases/refresh-source"},{"title":"Delete Source","openapi":"DELETE /knowledge-bases/{id}/sources/{sourceId}","href":"/api-reference/knowledge-bases/delete-source"}]},{"group":"Voices","pages":[{"title":"List Voices","openapi":"GET /voices","href":"/api-reference/voices/list"},{"title":"Get Voice","openapi":"GET /voices/{id}","href":"/api-reference/voices/get"},{"title":"Preview Voice","openapi":"GET /voices/{id}/preview","href":"/api-reference/voices/preview"},{"title":"Create Voice","openapi":"POST /voices","href":"/api-reference/voices/create"},{"title":"Design Voices","openapi":"POST /voices/design","href":"/api-reference/voices/design"},{"title":"Search Studio Library","openapi":"GET /voices/studio/library","href":"/api-reference/voices/studio-library"},{"title":"Preview Studio Voice","openapi":"GET /voices/studio/library/{voiceId}/preview","href":"/api-reference/voices/studio-preview"},{"title":"Add Studio Voice","openapi":"POST /voices/studio","href":"/api-reference/voices/studio-add"},{"title":"Rename Voice","openapi":"PATCH /voices/{id}","href":"/api-reference/voices/rename"},{"title":"Delete Voice","openapi":"DELETE /voices/{id}","href":"/api-reference/voices/delete"}]},{"group":"Activity","pages":[{"title":"List Activity","openapi":"GET /activity","href":"/api-reference/activity/list"}]},{"group":"Analytics","pages":[{"title":"Get Analytics Overview","openapi":"GET /analytics/overview","href":"/api-reference/analytics/overview"},{"title":"Get Active Calls Count","openapi":"GET /analytics/active","href":"/api-reference/analytics/active"},{"title":"Compare Versions","openapi":"GET /analytics/versions","href":"/api-reference/analytics/versions"},{"title":"Get Agent Reply Times","openapi":"GET /analytics/reply-times","href":"/api-reference/analytics/reply-times"},{"title":"Get Agent Activity","openapi":"GET /analytics/agents","href":"/api-reference/analytics/agent-activity"}]},{"group":"Test Suites","pages":[{"title":"List Test Suites","openapi":"GET /test-suites","href":"/api-reference/test-suites/list"},{"title":"Get Test Suite","openapi":"GET /test-suites/{id}","href":"/api-reference/test-suites/get"},{"title":"Create Test Suite","openapi":"POST /test-suites","href":"/api-reference/test-suites/create"},{"title":"Update Test Suite","openapi":"PATCH /test-suites/{id}","href":"/api-reference/test-suites/update"},{"title":"Delete Test Suite","openapi":"DELETE /test-suites/{id}","href":"/api-reference/test-suites/delete"},{"title":"Create Test From Call","openapi":"POST /test-suites/{id}/tests/from-call","href":"/api-reference/test-suites/create-test-from-call"},{"title":"Create Suite From Failing Calls","openapi":"POST /test-suites/from-failing-calls","href":"/api-reference/test-suites/from-failing-calls"}]},{"group":"Test Cases","pages":[{"title":"List Test Cases","openapi":"GET /test-suites/{id}/tests","href":"/api-reference/test-suites/list-tests"},{"title":"Get Test Case","openapi":"GET /test-suites/{id}/tests/{testId}","href":"/api-reference/test-suites/get-test"},{"title":"Create Test Case","openapi":"POST /test-suites/{id}/tests","href":"/api-reference/test-suites/create-test"},{"title":"Update Test Case","openapi":"PATCH /test-suites/{id}/tests/{testId}","href":"/api-reference/test-suites/update-test"},{"title":"Delete Test Case","openapi":"DELETE /test-suites/{id}/tests/{testId}","href":"/api-reference/test-suites/delete-test"},{"title":"Generate Test Cases","openapi":"POST /test-suites/{id}/generate-tests","href":"/api-reference/test-suites/generate-tests"}]},{"group":"Test Runs","pages":[{"title":"List Test Runs","openapi":"GET /test-suites/{id}/runs","href":"/api-reference/test-suites/list-runs"},{"title":"Get Test Run","openapi":"GET /test-suites/{id}/runs/{runId}","href":"/api-reference/test-suites/get-run"},{"title":"Start Test Run","openapi":"POST /test-suites/{id}/runs","href":"/api-reference/test-suites/start-run"},{"title":"Cancel Test Run","openapi":"POST /test-suites/{id}/runs/{runId}/cancel","href":"/api-reference/test-suites/cancel-run"},{"title":"Suggest a Fix","openapi":"POST /test-suites/{id}/attempts/{attemptId}/suggest-fix","href":"/api-reference/test-suites/suggest-fix"},{"title":"Get Suggested Fix","openapi":"GET /test-suites/{id}/attempts/{attemptId}/suggest-fix","href":"/api-reference/test-suites/get-suggested-fix"},{"title":"Suggest a Fix for a Run","openapi":"POST /test-suites/{id}/runs/{runId}/suggest-fix","href":"/api-reference/test-suites/suggest-run-fix"},{"title":"Get Suggested Fix for a Run","openapi":"GET /test-suites/{id}/runs/{runId}/suggest-fix","href":"/api-reference/test-suites/get-run-suggested-fix"}]},{"group":"Messaging Connections","pages":[{"title":"List Messaging Connections","openapi":"GET /messaging-connections","href":"/api-reference/messaging-connections/list"},{"title":"Get Messaging Connection","openapi":"GET /messaging-connections/{id}","href":"/api-reference/messaging-connections/get"},{"title":"Create Messaging Connection","openapi":"POST /messaging-connections","href":"/api-reference/messaging-connections/create"},{"title":"Update Messaging Connection","openapi":"PATCH /messaging-connections/{id}","href":"/api-reference/messaging-connections/update"},{"title":"Delete Messaging Connection","openapi":"DELETE /messaging-connections/{id}","href":"/api-reference/messaging-connections/delete"}]},{"group":"Messages","pages":[{"title":"Send Message","openapi":"POST /messages","href":"/api-reference/messages/send"},{"title":"List Messages","openapi":"GET /messages","href":"/api-reference/messages/list"},{"title":"Get Message","openapi":"GET /messages/{id}","href":"/api-reference/messages/get"}]},{"group":"Conversations","pages":[{"title":"List Conversations","openapi":"GET /conversations","href":"/api-reference/conversations/list"},{"title":"Delete Conversation","openapi":"DELETE /conversations/{id}","href":"/api-reference/conversations/delete"}]},{"group":"Webhooks","pages":[{"title":"Pre-Call Webhook","openapi":"webhook pre-call","href":"/api-reference/webhooks/pre-call"},{"title":"Post-Call Webhook","openapi":"webhook post-call","href":"/api-reference/webhooks/post-call"},{"title":"Webhook Signing Secret","openapi":"POST /webhooks/signing-secret","href":"/api-reference/webhooks/signing-secret"},{"title":"Get Webhook Signing State","openapi":"GET /webhooks/signing-secret","href":"/api-reference/webhooks/signing-state"},{"title":"Disable Webhook Signing","openapi":"DELETE /webhooks/signing-secret","href":"/api-reference/webhooks/signing-disable"},{"title":"Inbound Message Webhook","openapi":"webhook message-received","href":"/api-reference/webhooks/message-received"}]}]}]},"basePath":"","title":"Create Custom Tool - RevRing AI Documentation","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}