{"openapi":"3.1.0","info":{"title":"Twilio Verify (BYOK) API","version":"0.1.0","description":"Twilio Verify (BYOK) lets an AI assistant read your own Twilio Verify data through the Twilio Verify 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: 9 tools (list_services, get_service, list_rate_limits, list_rate_limit_buckets, list_service_webhooks, list_messaging_configurations,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-twilio-verify.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-twilio-verify/docs"},"termsOfService":"https://connectorbay.com/byok-twilio-verify/terms"},"servers":[{"url":"https://byok-twilio-verify.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-twilio-verify/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_services":{"post":{"operationId":"list_services","summary":"List the Verify services of the account with code length, lookup and PSD2 settings and the default template. Use for \"Wh","description":"List the Verify services of the account with code length, lookup and PSD2 settings and the default template. Use for \"Which Twilio Verify services do I have\".","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_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_service":{"post":{"operationId":"get_service","summary":"Get one Verify service: friendly name, code length, lookup, PSD2, landline skipping, custom code and warning settings. U","description":"Get one Verify service: friendly name, code length, lookup, PSD2, landline skipping, custom code and warning settings. Use for \"How long are the codes of my Verify service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_sid":{"description":"The SID of the Verify service: 'VA' followed by 32 hex characters.","maxLength":34,"title":"Service Sid","type":"string"}},"required":["service_sid"],"title":"get_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_rate_limits":{"post":{"operationId":"list_rate_limits","summary":"List the custom rate limits of a Verify service by unique name and description. Use for \"Which rate limits does my Verif","description":"List the custom rate limits of a Verify service by unique name and description. Use for \"Which rate limits does my Verify service have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_sid":{"description":"The SID of the Verify service: 'VA' followed by 32 hex characters.","maxLength":34,"title":"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":["service_sid"],"title":"list_rate_limitsArguments","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_rate_limit_buckets":{"post":{"operationId":"list_rate_limit_buckets","summary":"List the buckets of one rate limit: the maximum number of requests per interval in seconds. Use for \"How strict is the u","description":"List the buckets of one rate limit: the maximum number of requests per interval in seconds. Use for \"How strict is the user_ip rate limit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_sid":{"description":"The SID of the Verify service: 'VA' followed by 32 hex characters.","maxLength":34,"title":"Service Sid","type":"string"},"rate_limit_sid":{"description":"The SID of the rate limit: 'KA' followed by 32 hex characters.","maxLength":34,"title":"Rate Limit 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":["service_sid","rate_limit_sid"],"title":"list_rate_limit_bucketsArguments","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_webhooks":{"post":{"operationId":"list_service_webhooks","summary":"List the webhooks of a Verify service with subscribed event types, status and target URL. Use for \"Which webhooks fire f","description":"List the webhooks of a Verify service with subscribed event types, status and target URL. Use for \"Which webhooks fire for my Verify service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_sid":{"description":"The SID of the Verify service: 'VA' followed by 32 hex characters.","maxLength":34,"title":"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":["service_sid"],"title":"list_service_webhooksArguments","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_messaging_configurations":{"post":{"operationId":"list_messaging_configurations","summary":"List per-country Messaging Service overrides of a Verify service. Use for \"Which countries use a custom messaging servic","description":"List per-country Messaging Service overrides of a Verify service. Use for \"Which countries use a custom messaging service for Verify\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_sid":{"description":"The SID of the Verify service: 'VA' followed by 32 hex characters.","maxLength":34,"title":"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":["service_sid"],"title":"list_messaging_configurationsArguments","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_templates":{"post":{"operationId":"list_templates","summary":"List the Verify message templates available to the account with their channels. Use for \"Which Verify templates can I us","description":"List the Verify message templates available to the account with their channels. Use for \"Which Verify templates can I use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"friendly_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates with this name.","title":"Friendly Name"},"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_templatesArguments","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_verification_attempts":{"post":{"operationId":"list_verification_attempts","summary":"List verification attempts with channel, conversion status and time. Phone numbers and prices are not returned. Use for ","description":"List verification attempts with channel, conversion status and time. Phone numbers and prices are not returned. Use for \"How many Verify attempts failed to convert this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts created after this ISO 8601 GMT time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts created before this ISO 8601 GMT time.","title":"Date Created Before"},"channel":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts on this channel, for example sms, call, email or whatsapp.","title":"Channel"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts to this destination country (ISO code).","title":"Country"},"verify_service_sid":{"anyOf":[{"maxLength":34,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts of this Verify service.","title":"Verify Service Sid"},"status":{"anyOf":[{"enum":["CONVERTED","UNCONVERTED"],"type":"string"},{"type":"null"}],"default":null,"description":"Only converted or unconverted attempts.","title":"Status"},"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_verification_attemptsArguments","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_attempts_summary":{"post":{"operationId":"get_attempts_summary","summary":"Get totals for verification attempts in a period: attempts, converted, unconverted and the conversion rate in percent. U","description":"Get totals for verification attempts in a period: attempts, converted, unconverted and the conversion rate in percent. Use for \"What is my Verify conversion rate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"verify_service_sid":{"anyOf":[{"maxLength":34,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts of this Verify service.","title":"Verify Service Sid"},"date_created_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts created after this ISO 8601 GMT time, for example 2026-01-01T00:00:00Z.","title":"Date Created After"},"date_created_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts created before this ISO 8601 GMT time.","title":"Date Created Before"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts to this destination country (ISO code).","title":"Country"},"channel":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts on this channel, for example sms, call, email or whatsapp.","title":"Channel"},"destination_prefix":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only attempts whose phone number starts with this prefix (E.164, for example +49).","title":"Destination Prefix"}},"title":"get_attempts_summaryArguments","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}}}}