{"openapi":"3.1.0","info":{"title":"Phone.com (BYOK) API","version":"0.1.0","description":"Phone.com (BYOK) lets an AI assistant read your own Phone.com data through the Phone.com API with a key you supply (Phone.com API access token (permanent token)). Read-only: 7 tools (list_accounts, list_phone_numbers, list_extensions, list_queues, list_menus, list_invoices, list_available_numbers). The BYOK key travels with each request, is used for that one call only and is never stored, logged...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-phone-com.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-phone-com/docs"},"termsOfService":"https://connectorbay.com/byok-phone-com/terms"},"servers":[{"url":"https://byok-phone-com.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-phone-com/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_accounts":{"post":{"operationId":"list_accounts","summary":"List the Phone.com accounts visible to the token, with optional filters by name, username, email or phone. The API does ","description":"List the Phone.com accounts visible to the token, with optional filters by name, username, email or phone. The API does not publish the per-account fields, so records are returned as sent. Use for \"Which Phone.com accounts can my token see\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip before the first returned item.","title":"Offset"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Number of items to return, 1 to 500.","title":"Limit"},"sort_id":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by id ascending or descending.","title":"Sort Id"},"mode":{"anyOf":[{"enum":["brief","full"],"type":"string"},{"type":"null"}],"default":"brief","description":"brief for a short record or full for every field.","title":"Mode"},"include_subaccounts":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"Send 1 to include subaccounts' data.","title":"Include Subaccounts"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by account or company name.","title":"Name"},"username":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by username.","title":"Username"}},"title":"list_accountsArguments","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 phone numbers on an account, with filters by name, number or DID. Records are returned as the API sends them. U","description":"List the phone numbers on an account, with filters by name, number or DID. Records are returned as the API sends them. Use for \"Which phone numbers are on my Phone.com account 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"voip_id":{"description":"Numeric Phone.com account id (the voip id), from list_accounts.","title":"Voip Id","type":"integer"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip before the first returned item.","title":"Offset"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Number of items to return, 1 to 500.","title":"Limit"},"sort_id":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by id ascending or descending.","title":"Sort Id"},"mode":{"anyOf":[{"enum":["brief","full"],"type":"string"},{"type":"null"}],"default":"brief","description":"brief for a short record or full for every field.","title":"Mode"},"include_subaccounts":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"Send 1 to include subaccounts' data.","title":"Include Subaccounts"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by number name.","title":"Name"},"number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by phone number.","title":"Number"},"did":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by DID.","title":"Did"},"name_or_did":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search by number name or DID.","title":"Name Or Did"}},"required":["voip_id"],"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_extensions":{"post":{"operationId":"list_extensions","summary":"List the extensions on an account (users, virtual, queue and other extensions) with filters by extension, name or role. ","description":"List the extensions on an account (users, virtual, queue and other extensions) with filters by extension, name or role. Use for \"What extensions exist on my Phone.com account 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"voip_id":{"description":"Numeric Phone.com account id (the voip id), from list_accounts.","title":"Voip Id","type":"integer"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip before the first returned item.","title":"Offset"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Number of items to return, 1 to 500.","title":"Limit"},"sort_id":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by id ascending or descending.","title":"Sort Id"},"mode":{"anyOf":[{"enum":["brief","full"],"type":"string"},{"type":"null"}],"default":"brief","description":"brief for a short record or full for every field.","title":"Mode"},"include_subaccounts":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"Send 1 to include subaccounts' data.","title":"Include Subaccounts"},"extension":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by extension number.","title":"Extension"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by name.","title":"Name"},"name_or_extension":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search by name or extension.","title":"Name Or Extension"},"virtual":{"anyOf":[{"enum":["1","0"],"type":"string"},{"type":"null"}],"default":null,"description":"1 for virtual extensions, 0 for non-virtual ones.","title":"Virtual"},"role":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Extension role such as device, virtual, company-inbox, nxt-user or common-area.","title":"Role"}},"required":["voip_id"],"title":"list_extensionsArguments","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_queues":{"post":{"operationId":"list_queues","summary":"List the call queues of an account, optionally only those used (or not used) by a route. Use for \"Which call queues does","description":"List the call queues of an account, optionally only those used (or not used) by a route. Use for \"Which call queues does my Phone.com account 12345 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"voip_id":{"description":"Numeric Phone.com account id (the voip id), from list_accounts.","title":"Voip Id","type":"integer"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip before the first returned item.","title":"Offset"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Number of items to return, 1 to 500.","title":"Limit"},"sort_id":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by id ascending or descending.","title":"Sort Id"},"mode":{"anyOf":[{"enum":["brief","full"],"type":"string"},{"type":"null"}],"default":"brief","description":"brief for a short record or full for every field.","title":"Mode"},"include_subaccounts":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"Send 1 to include subaccounts' data.","title":"Include Subaccounts"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by queue name.","title":"Name"},"in_use":{"anyOf":[{"enum":["1","0"],"type":"string"},{"type":"null"}],"default":null,"description":"1 for queues used by a route, 0 for unused queues.","title":"In Use"}},"required":["voip_id"],"title":"list_queuesArguments","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_menus":{"post":{"operationId":"list_menus","summary":"List the auto-attendant (IVR) menus of an account, optionally filtered by name. Use for \"What IVR menus are set up on Ph","description":"List the auto-attendant (IVR) menus of an account, optionally filtered by name. Use for \"What IVR menus are set up on Phone.com account 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"voip_id":{"description":"Numeric Phone.com account id (the voip id), from list_accounts.","title":"Voip Id","type":"integer"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip before the first returned item.","title":"Offset"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Number of items to return, 1 to 500.","title":"Limit"},"sort_id":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by id ascending or descending.","title":"Sort Id"},"mode":{"anyOf":[{"enum":["brief","full"],"type":"string"},{"type":"null"}],"default":"brief","description":"brief for a short record or full for every field.","title":"Mode"},"include_subaccounts":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"Send 1 to include subaccounts' data.","title":"Include Subaccounts"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by menu name.","title":"Name"}},"required":["voip_id"],"title":"list_menusArguments","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_invoices":{"post":{"operationId":"list_invoices","summary":"List the billing statements of an account. Use for \"What Phone.com invoices does account 12345 have\".","description":"List the billing statements of an account. Use for \"What Phone.com invoices does account 12345 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"voip_id":{"description":"Numeric Phone.com account id (the voip id), from list_accounts.","title":"Voip Id","type":"integer"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip before the first returned item.","title":"Offset"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Number of items to return, 1 to 500.","title":"Limit"},"sort_id":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by id ascending or descending.","title":"Sort Id"},"mode":{"anyOf":[{"enum":["brief","full"],"type":"string"},{"type":"null"}],"default":"brief","description":"brief for a short record or full for every field.","title":"Mode"},"include_subaccounts":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"Send 1 to include subaccounts' data.","title":"Include Subaccounts"}},"required":["voip_id"],"title":"list_invoicesArguments","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_available_numbers":{"post":{"operationId":"list_available_numbers","summary":"Search phone numbers available for purchase by country, state, city, area code, toll-free flag or digits it contains. Se","description":"Search phone numbers available for purchase by country, state, city, area code, toll-free flag or digits it contains. Searching does not buy anything. Use for \"Which toll-free numbers are available on Phone.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip before the first returned item.","title":"Offset"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Number of items to return, 1 to 500.","title":"Limit"},"sort_id":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by id ascending or descending.","title":"Sort Id"},"mode":{"anyOf":[{"enum":["brief","full"],"type":"string"},{"type":"null"}],"default":"brief","description":"brief for a short record or full for every field.","title":"Mode"},"country":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Country code such as US or CA.","title":"Country"},"province":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"State or province code such as NY or TX.","title":"Province"},"city":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"City name.","title":"City"},"npa":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"NANP area code (the NPA in +1-NPA-nxx-xxxx).","title":"Npa"},"is_toll_free":{"anyOf":[{"enum":["1","0"],"type":"string"},{"type":"null"}],"default":null,"description":"1 for toll-free numbers only, 0 for local numbers only.","title":"Is Toll Free"},"phone_number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Digits to match, or contains:1234 for numbers containing 1234.","title":"Phone Number"}},"title":"list_available_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}}}}