{"openapi":"3.1.0","info":{"title":"Twilio Messaging (BYOK) API","version":"0.1.0","description":"Twilio Messaging (BYOK) lets an AI assistant read your own Twilio Messaging data through the Twilio Messaging API with a key you supply (Account SID or API key SID (use a restricted API key, SID starts with SK, rather than the main Auth Token where possible)). Read-only: 10 tools (list_messaging_services, get_messaging_service, list_service_phone_numbers, list_service_short_codes,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-twilio-messaging.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-twilio-messaging/docs"},"termsOfService":"https://connectorbay.com/byok-twilio-messaging/terms"},"servers":[{"url":"https://byok-twilio-messaging.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-twilio-messaging/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_messaging_services":{"post":{"operationId":"list_messaging_services","summary":"List the Messaging Services of the account with webhook URLs, sticky sender and smart encoding settings and A2P registra","description":"List the Messaging Services of the account with webhook URLs, sticky sender and smart encoding settings and A2P registration flag. Use for \"Which Twilio Messaging Services do I have and are they A2P registered\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"title":"list_messaging_servicesArguments","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_messaging_service":{"post":{"operationId":"get_messaging_service","summary":"Get one Messaging Service: webhooks, sticky sender, smart encoding, geomatch, validity period, use case and A2P registra","description":"Get one Messaging Service: webhooks, sticky sender, smart encoding, geomatch, validity period, use case and A2P registration. Use for \"How is my Notifications messaging service configured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"messaging_service_sid":{"description":"The SID of the messaging service: 'MG' followed by 32 hex characters.","maxLength":34,"title":"Messaging Service Sid","type":"string"}},"required":["messaging_service_sid"],"title":"get_messaging_serviceArguments","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_service_phone_numbers":{"post":{"operationId":"list_service_phone_numbers","summary":"List the phone numbers in a Messaging Service sender pool with country and capabilities. Use for \"Which phone numbers se","description":"List the phone numbers in a Messaging Service sender pool with country and capabilities. Use for \"Which phone numbers send for my Notifications messaging service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"messaging_service_sid":{"description":"The SID of the messaging service: 'MG' followed by 32 hex characters.","maxLength":34,"title":"Messaging Service Sid","type":"string"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["messaging_service_sid"],"title":"list_service_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_service_short_codes":{"post":{"operationId":"list_service_short_codes","summary":"List the short codes in a Messaging Service sender pool with country and capabilities. Use for \"Which short codes belong","description":"List the short codes in a Messaging Service sender pool with country and capabilities. Use for \"Which short codes belong to my messaging service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"messaging_service_sid":{"description":"The SID of the messaging service: 'MG' followed by 32 hex characters.","maxLength":34,"title":"Messaging Service Sid","type":"string"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["messaging_service_sid"],"title":"list_service_short_codesArguments","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_service_alpha_senders":{"post":{"operationId":"list_service_alpha_senders","summary":"List the alphanumeric sender IDs in a Messaging Service with their capabilities. Use for \"Which alphanumeric sender IDs ","description":"List the alphanumeric sender IDs in a Messaging Service with their capabilities. Use for \"Which alphanumeric sender IDs does my messaging service use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"messaging_service_sid":{"description":"The SID of the messaging service: 'MG' followed by 32 hex characters.","maxLength":34,"title":"Messaging Service Sid","type":"string"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["messaging_service_sid"],"title":"list_service_alpha_sendersArguments","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_channel_senders":{"post":{"operationId":"list_channel_senders","summary":"List the channel senders (WhatsApp, RCS and similar) attached to a Messaging Service. Use for \"Which WhatsApp senders ar","description":"List the channel senders (WhatsApp, RCS and similar) attached to a Messaging Service. Use for \"Which WhatsApp senders are attached to my messaging service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"messaging_service_sid":{"description":"The SID of the messaging service: 'MG' followed by 32 hex characters.","maxLength":34,"title":"Messaging Service Sid","type":"string"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["messaging_service_sid"],"title":"list_channel_sendersArguments","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_a2p_brand_registrations":{"post":{"operationId":"list_a2p_brand_registrations","summary":"List your A2P 10DLC brand registrations with status, brand type, trust score and failure reason. Use for \"Is my A2P 10DL","description":"List your A2P 10DLC brand registrations with status, brand type, trust score and failure reason. Use for \"Is my A2P 10DLC brand registration approved\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"title":"list_a2p_brand_registrationsArguments","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_a2p_brand_registration":{"post":{"operationId":"get_a2p_brand_registration","summary":"Get one A2P 10DLC brand registration: status, trust score, identity status, failure reason and entity flags. Use for \"Wh","description":"Get one A2P 10DLC brand registration: status, trust score, identity status, failure reason and entity flags. Use for \"Why was my A2P brand registration rejected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"brand_sid":{"description":"The brand registration SID: 'BN' followed by 32 hex characters.","maxLength":34,"title":"Brand Sid","type":"string"}},"required":["brand_sid"],"title":"get_a2p_brand_registrationArguments","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 the external vetting records (for example Aegis or Campaign Verify) of a brand registration with their status. Use ","description":"List the external vetting records (for example Aegis or Campaign Verify) of a brand registration with their status. Use for \"Has my A2P brand passed external vetting\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"brand_sid":{"description":"The SID of the A2P brand registration: 'BN' followed by 32 hex characters.","maxLength":34,"title":"Brand Sid","type":"string"},"vetting_provider":{"anyOf":[{"enum":["campaign-verify","aegis"],"type":"string"},{"type":"null"}],"default":null,"description":"Only vettings from this provider.","title":"Vetting Provider"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["brand_sid"],"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_tollfree_verifications":{"post":{"operationId":"list_tollfree_verifications","summary":"List toll-free number verification requests with status and rejection reason. Business contact details are not returned.","description":"List toll-free number verification requests with status and rejection reason. Business contact details are not returned. Use for \"Which of my toll-free numbers are verified\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["PENDING_REVIEW","IN_REVIEW","TWILIO_APPROVED","TWILIO_REJECTED"],"type":"string"},{"type":"null"}],"default":null,"description":"Only requests in this state.","title":"Status"},"tollfree_phone_number_sid":{"anyOf":[{"maxLength":34,"type":"string"},{"type":"null"}],"default":null,"description":"Only requests for this toll-free number SID.","title":"Tollfree Phone Number Sid"},"include_sub_accounts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include verifications of subaccounts.","title":"Include Sub Accounts"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the PageToken value inside meta.next_page_url from the previous answer (leave empty for the first page).","title":"Page Token"}},"title":"list_tollfree_verificationsArguments","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}}}}