{"openapi":"3.1.0","info":{"title":"Ultravox Operations (BYOK) API","version":"0.1.0","description":"Ultravox Operations (BYOK) lets an AI assistant read your own Ultravox Operations data through the Ultravox Operations API with a key you supply (Ultravox API key). Read-only: 8 tools (get_concurrency_usage, list_call_throttles, get_call_throttle, list_scheduled_call_batches, get_scheduled_call_batch, get_corpus, list_corpus_sources, list_corpus_source_documents). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ultravox-operations.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ultravox-operations/docs"},"termsOfService":"https://connectorbay.com/byok-ultravox-operations/terms"},"servers":[{"url":"https://byok-ultravox-operations.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ultravox-operations/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_concurrency_usage":{"post":{"operationId":"get_concurrency_usage","summary":"Get historical call concurrency as a time series with peak and average total and joined calls per bucket (minute, 5 minu","description":"Get historical call concurrency as a time series with peak and average total and joined calls per bucket (minute, 5 minutes, hour or day). Use for \"What was my peak number of simultaneous Ultravox calls yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bucket":{"anyOf":[{"enum":["minute","5min","hour","day"],"type":"string"},{"type":"null"}],"default":"hour","description":"Bucket size of the time series.","title":"Bucket"},"start":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start datetime in ISO 8601 (default 24 hours before end).","title":"Start"},"end":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End datetime in ISO 8601 (default now).","title":"End"}},"title":"get_concurrency_usageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_call_throttles":{"post":{"operationId":"list_call_throttles","summary":"List call throttles with id, name, creation time and the rules (maximum calls per sliding window in seconds). Use for \"W","description":"List call throttles with id, name, creation time and the rules (maximum calls per sliding window in seconds). Use for \"Which call throttles limit my Ultravox outbound calling\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"title":"list_call_throttlesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_call_throttle":{"post":{"operationId":"get_call_throttle","summary":"Get one call throttle with its name, creation time and rules (maxCalls per windowSeconds). Use for \"How many calls per m","description":"Get one call throttle with its name, creation time and rules (maxCalls per windowSeconds). Use for \"How many calls per minute does my Ultravox throttle allow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"throttle_id":{"description":"Throttle id from list_call_throttles.","maxLength":64,"title":"Throttle Id","type":"string"}},"required":["throttle_id"],"title":"get_call_throttleArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_scheduled_call_batches":{"post":{"operationId":"list_scheduled_call_batches","summary":"List the scheduled call batches of an agent with creation time, call window, throttle, paused flag, total and completed ","description":"List the scheduled call batches of an agent with creation time, call window, throttle, paused flag, total and completed call counts and end time. Use for \"Which Ultravox call batches are still running for my agent\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agent_id":{"description":"Agent id from list_agents in the Ultravox connector.","maxLength":64,"title":"Agent Id","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"required":["agent_id"],"title":"list_scheduled_call_batchesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_scheduled_call_batch":{"post":{"operationId":"get_scheduled_call_batch","summary":"Get one scheduled call batch with its window, throttle, paused flag, total and completed counts and end time (webhook se","description":"Get one scheduled call batch with its window, throttle, paused flag, total and completed counts and end time (webhook secret and recipients are not returned). Use for \"How far along is my Ultravox call batch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"agent_id":{"description":"Agent id from list_agents in the Ultravox connector.","maxLength":64,"title":"Agent Id","type":"string"},"batch_id":{"description":"Batch id from list_scheduled_call_batches.","maxLength":64,"title":"Batch Id","type":"string"}},"required":["agent_id","batch_id"],"title":"get_scheduled_call_batchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_corpus":{"post":{"operationId":"get_corpus","summary":"Get one knowledge corpus with name, description, status (empty, initializing, ready, updating) and document, chunk and v","description":"Get one knowledge corpus with name, description, status (empty, initializing, ready, updating) and document, chunk and vector counts. Use for \"Is my Ultravox knowledge corpus ready and how many documents does it hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"corpus_id":{"description":"Corpus id from list_corpora in the Ultravox connector.","maxLength":64,"title":"Corpus Id","type":"string"}},"required":["corpus_id"],"title":"get_corpusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_corpus_sources":{"post":{"operationId":"list_corpus_sources","summary":"List the sources of a corpus with name, description, status (initializing, ready, updating), document count and last upd","description":"List the sources of a corpus with name, description, status (initializing, ready, updating), document count and last update. Use for \"Which sources feed my Ultravox knowledge corpus and are they up to date\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"corpus_id":{"description":"Corpus id from list_corpora in the Ultravox connector.","maxLength":64,"title":"Corpus Id","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"required":["corpus_id"],"title":"list_corpus_sourcesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_corpus_source_documents":{"post":{"operationId":"list_corpus_source_documents","summary":"List the documents of a corpus source with MIME type, size in bytes, title and language (document contents are not retur","description":"List the documents of a corpus source with MIME type, size in bytes, title and language (document contents are not returned). Use for \"Which documents are loaded in this Ultravox corpus source and how big are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"corpus_id":{"description":"Corpus id from list_corpora in the Ultravox connector.","maxLength":64,"title":"Corpus Id","type":"string"},"source_id":{"description":"Source id from list_corpus_sources.","maxLength":64,"title":"Source Id","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many results to return per page.","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the next field of the previous answer, to get the next page.","title":"Cursor"}},"required":["corpus_id","source_id"],"title":"list_corpus_source_documentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}