{"openapi":"3.1.0","info":{"title":"Assistable (BYOK) API","version":"0.1.0","description":"Assistable (BYOK) lets an AI assistant read your own Assistable data through the Assistable API with a key you supply (Assistable API key (ask_live_..., read scopes, one subaccount)). Read-only: 12 tools (list_assistants, list_assistant_versions, list_assistant_folders, list_voices, get_voice_library_stats, list_phone_numbers, list_number_pools, list_tools, list_knowledge_bases, list_tags,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-assistable.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-assistable/docs"},"termsOfService":"https://connectorbay.com/byok-assistable/terms"},"servers":[{"url":"https://byok-assistable.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-assistable/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/list_assistants":{"post":{"operationId":"list_assistants","summary":"List the voice and chat assistants with name, type, language, voice, model, enabled channels, folder, tags and archive s","description":"List the voice and chat assistants with name, type, language, voice, model, enabled channels, folder, tags and archive state. The prompt is not returned. Use for \"Which voice assistants do I have on Assistable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Limit"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Include archived items.","title":"Include Archived"}},"title":"list_assistantsArguments","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_assistant_versions":{"post":{"operationId":"list_assistant_versions","summary":"List the version history of one assistant with version number, change note and date. Prompt text is not returned. Use fo","description":"List the version history of one assistant with version number, change note and date. Prompt text is not returned. Use for \"How many versions has my Assistable assistant had\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Assistant id (from list_assistants).","maxLength":80,"title":"Id","type":"string"}},"required":["id"],"title":"list_assistant_versionsArguments","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_assistant_folders":{"post":{"operationId":"list_assistant_folders","summary":"List the assistant folders with name, colour, archive state and assistant counts. Use for \"How are my Assistable assista","description":"List the assistant folders with name, colour, archive state and assistant counts. Use for \"How are my Assistable assistants organised into folders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Include archived items.","title":"Include Archived"}},"title":"list_assistant_foldersArguments","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_voices":{"post":{"operationId":"list_voices","summary":"List the voices with provider, name, accent, gender, age, preview URL and whether they are custom. Use for \"Which female","description":"List the voices with provider, name, accent, gender, age, preview URL and whether they are custom. Use for \"Which female ElevenLabs voices can I use on Assistable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only voices matching this text.","title":"Search"},"provider":{"anyOf":[{"enum":["ELEVENLABS","OPENAI","DEEPGRAM","PLAYHT","CUSTOM","RIME","MINIMAX","ENSEMBLE","TELNYX","AZURE","AWS","INWORLD","RESEMBLE","XAI","FISHAUDIO","CARTESIA"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this voice provider.","title":"Provider"},"gender":{"anyOf":[{"enum":["MALE","FEMALE","NEUTRAL"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this gender.","title":"Gender"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Include archived items.","title":"Include Archived"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Limit"}},"title":"list_voicesArguments","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_voice_library_stats":{"post":{"operationId":"get_voice_library_stats","summary":"Get voice library counts: total, system and custom voices, and counts per provider. Use for \"How many voices are in my A","description":"Get voice library counts: total, system and custom voices, and counts per provider. Use for \"How many voices are in my Assistable voice library\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_voice_library_statsArguments","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_phone_numbers":{"post":{"operationId":"list_phone_numbers","summary":"List the owned phone numbers with name, type, SIP URI, assigned assistant, caller ID, answer wait time and HD voice flag","description":"List the owned phone numbers with name, type, SIP URI, assigned assistant, caller ID, answer wait time and HD voice flag. Use for \"Which phone numbers do I own on Assistable and which assistant answers each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_phone_numbersArguments","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_number_pools":{"post":{"operationId":"list_number_pools","summary":"List the number pools with name, how many numbers each holds and the numbers in it. Use for \"Which number pools do I hav","description":"List the number pools with name, how many numbers each holds and the numbers in it. Use for \"Which number pools do I have on Assistable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_number_poolsArguments","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_tools":{"post":{"operationId":"list_tools","summary":"List the tools assistants can call with name, description, category, type, HTTP method and URL. Headers and parameters a","description":"List the tools assistants can call with name, description, category, type, HTTP method and URL. Headers and parameters are not returned. Use for \"Which tools can my Assistable assistants call\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only this category.","title":"Category"},"tool_type":{"anyOf":[{"enum":["FUNCTION","CUSTOM","END_CALL","PRESS_DIGIT","TRANSFER_CALL"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this tool type.","title":"Tool Type"},"search":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only tools matching this text.","title":"Search"},"include_prebuilt":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include prebuilt tools.","title":"Include Prebuilt"},"assistant_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only tools attached to this assistant.","title":"Assistant Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's meta.next_cursor to get the next page.","title":"Cursor"}},"title":"list_toolsArguments","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_knowledge_bases":{"post":{"operationId":"list_knowledge_bases","summary":"List the knowledge bases with name, description, voice-enabled flag, folder and source count. Use for \"Which knowledge b","description":"List the knowledge bases with name, description, voice-enabled flag, folder and source count. Use for \"Which knowledge bases are set up on Assistable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only knowledge bases matching this text.","title":"Search"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Include archived items.","title":"Include Archived"}},"title":"list_knowledge_basesArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List the assistant tags with name, tag id, assistant and creation date. Use for \"Which tags are used on my Assistable as","description":"List the assistant tags with name, tag id, assistant and creation date. Use for \"Which tags are used on my Assistable assistants\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"assistant_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only tags of this assistant.","title":"Assistant Id"}},"title":"list_tagsArguments","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_monitor_rules":{"post":{"operationId":"list_monitor_rules","summary":"List the call monitor rules with category, trigger (call, chat or both), severity, threshold, cooldown and enabled state","description":"List the call monitor rules with category, trigger (call, chat or both), severity, threshold, cooldown and enabled state. Evaluator prompts and recipients are not returned. Use for \"Which monitoring rules are active on my Assistable assistants\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Limit"},"assistant_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules of this assistant.","title":"Assistant Id"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only enabled (true) or disabled (false) rules.","title":"Enabled"}},"title":"list_monitor_rulesArguments","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_subaccount_wallet":{"post":{"operationId":"get_subaccount_wallet","summary":"Get a subaccount's wallet and the workspace wallet balances in cents and dollars. Use for \"How much wallet balance is le","description":"Get a subaccount's wallet and the workspace wallet balances in cents and dollars. Use for \"How much wallet balance is left on my Assistable subaccount\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Subaccount id.","maxLength":80,"title":"Id","type":"string"}},"required":["id"],"title":"get_subaccount_walletArguments","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}}}}