{"openapi":"3.1.0","info":{"title":"Bandwidth 10DLC (BYOK) API","version":"0.1.0","description":"Bandwidth 10DLC (BYOK) lets an AI assistant read your own Bandwidth 10DLC data through the Bandwidth 10DLC API with a key you supply (API username). Read-only: 9 tools (list_10dlc_numbers, get_10dlc_number, list_10dlc_brands, list_brand_vettings, list_10dlc_campaigns, get_10dlc_campaign, list_campaign_numbers, get_toll_free_verification, list_toll_free_use_cases). 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-bandwidth-10dlc.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-bandwidth-10dlc/docs"},"termsOfService":"https://connectorbay.com/byok-bandwidth-10dlc/terms"},"servers":[{"url":"https://byok-bandwidth-10dlc.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-bandwidth-10dlc/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_10dlc_numbers":{"post":{"operationId":"list_10dlc_numbers","summary":"List phone numbers registered for 10DLC A2P traffic under the account, with campaign, brand, registration status (PROCES","description":"List phone numbers registered for 10DLC A2P traffic under the account, with campaign, brand, registration status (PROCESSING, SUCCESS, FAILURE) and dates. Use for \"Which of my numbers are registered for 10DLC and is the registration done\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 250, default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, from 0.","title":"Offset"}},"required":["account_id"],"title":"list_10dlc_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/get_10dlc_number":{"post":{"operationId":"get_10dlc_number","summary":"Get the 10DLC registration status of one phone number. Use for \"Is +19195551234 registered for 10DLC\".","description":"Get the 10DLC registration status of one phone number. Use for \"Is +19195551234 registered for 10DLC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"phone_number":{"description":"Phone number in full E.164 format, for example +19195551234.","maxLength":200,"title":"Phone Number","type":"string"}},"required":["account_id","phone_number"],"title":"get_10dlc_numberArguments","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_10dlc_brands":{"post":{"operationId":"list_10dlc_brands","summary":"List 10DLC brands of the account with brand type, identity and authentication status, company and display name, website ","description":"List 10DLC brands of the account with brand type, identity and authentication status, company and display name, website and dates. Use for \"What 10DLC brands do I have and are they verified\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 250, default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, from 0.","title":"Offset"}},"required":["account_id"],"title":"list_10dlc_brandsArguments","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_brand_vettings":{"post":{"operationId":"list_brand_vettings","summary":"List external vettings done for a brand: provider, class, status, score and reasons. Use for \"Has my 10DLC brand BABC123","description":"List external vettings done for a brand: provider, class, status, score and reasons. Use for \"Has my 10DLC brand BABC123 passed vetting\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"brand_id":{"description":"TCR brand id, Bandwidth brand id or customer profile id.","maxLength":200,"title":"Brand Id","type":"string"}},"required":["account_id","brand_id"],"title":"list_brand_vettingsArguments","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_10dlc_campaigns":{"post":{"operationId":"list_10dlc_campaigns","summary":"List 10DLC campaigns with name, registration status, vetting status, use case, brand and dates. Use for \"Which 10DLC cam","description":"List 10DLC campaigns with name, registration status, vetting status, use case, brand and dates. Use for \"Which 10DLC campaigns are registered or declined\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"brand_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns of this TCR brand id.","title":"Brand Id"},"campaign_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns with this name.","title":"Campaign Name"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 250, default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, from 0.","title":"Offset"}},"required":["account_id"],"title":"list_10dlc_campaignsArguments","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_10dlc_campaign":{"post":{"operationId":"get_10dlc_campaign","summary":"Get one 10DLC campaign with its per-carrier approvals (decision, reason, message class, throughput, brand tier). Use for","description":"Get one 10DLC campaign with its per-carrier approvals (decision, reason, message class, throughput, brand tier). Use for \"Did AT&T and T-Mobile approve campaign CABC123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"campaign_id":{"description":"TCR campaign id or Bandwidth campaign id.","maxLength":200,"title":"Campaign Id","type":"string"}},"required":["account_id","campaign_id"],"title":"get_10dlc_campaignArguments","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_campaign_numbers":{"post":{"operationId":"list_campaign_numbers","summary":"List the phone numbers attached to one 10DLC campaign with their provisioning status. Use for \"Which numbers are on 10DL","description":"List the phone numbers attached to one 10DLC campaign with their provisioning status. Use for \"Which numbers are on 10DLC campaign CABC123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"campaign_id":{"description":"TCR campaign id or Bandwidth campaign id.","maxLength":200,"title":"Campaign Id","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 250, default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, from 0.","title":"Offset"}},"required":["account_id","campaign_id"],"title":"list_campaign_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/get_toll_free_verification":{"post":{"operationId":"get_toll_free_verification","summary":"Get the verification status of a toll-free number (VERIFIED, UNVERIFIED, PENDING) with decline reasons, resubmit flag an","description":"Get the verification status of a toll-free number (VERIFIED, UNVERIFIED, PENDING) with decline reasons, resubmit flag and dates. Submission details are not returned. Use for \"Is my toll-free number +18005550100 verified for texting\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Bandwidth account id (the number shown in the Bandwidth app), for example 9900000.","maxLength":200,"title":"Account Id","type":"string"},"phone_number":{"description":"Toll-free number in E.164 format.","maxLength":200,"title":"Phone Number","type":"string"}},"required":["account_id","phone_number"],"title":"get_toll_free_verificationArguments","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_toll_free_use_cases":{"post":{"operationId":"list_toll_free_use_cases","summary":"List the valid toll-free verification use cases. Use for \"Which use cases can I choose for toll-free verification\".","description":"List the valid toll-free verification use cases. Use for \"Which use cases can I choose for toll-free verification\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_toll_free_use_casesArguments","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}}}}