{"openapi":"3.1.0","info":{"title":"Twilio Event Streams (BYOK) API","version":"0.1.0","description":"Twilio Event Streams (BYOK) lets an AI assistant read your own Twilio Event Streams data through the Twilio Event Streams 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_event_types, get_event_type, get_schema, list_schema_versions, list_sinks, get_sink,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-twilio-events.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-twilio-events/docs"},"termsOfService":"https://connectorbay.com/byok-twilio-events/terms"},"servers":[{"url":"https://byok-twilio-events.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-twilio-events/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_event_types":{"post":{"operationId":"list_event_types","summary":"List the event types Twilio can stream, with schema, availability status and a documentation link. Use for \"Which events","description":"List the event types Twilio can stream, with schema, availability status and a documentation link. Use for \"Which events can I stream from Twilio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"schema_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only event types that use this schema ID, for example 'messaging.message'.","title":"Schema Id"},"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_event_typesArguments","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_event_type":{"post":{"operationId":"get_event_type","summary":"Get one event type by its name, for example 'com.twilio.messaging.message.delivered'. Use for \"What is the Twilio event ","description":"Get one event type by its name, for example 'com.twilio.messaging.message.delivered'. Use for \"What is the Twilio event type com.twilio.messaging.message.delivered\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"description":"The event type name, for example 'com.twilio.messaging.message.delivered'.","maxLength":120,"title":"Type","type":"string"}},"required":["type"],"title":"get_event_typeArguments","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_schema":{"post":{"operationId":"get_schema","summary":"Get an event schema by ID with its latest version number. Use for \"What is the latest version of the Twilio schema messa","description":"Get an event schema by ID with its latest version number. Use for \"What is the latest version of the Twilio schema messaging.message\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"The schema ID, for example 'messaging.message'.","maxLength":100,"title":"Id","type":"string"}},"required":["id"],"title":"get_schemaArguments","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_schema_versions":{"post":{"operationId":"list_schema_versions","summary":"List the versions of an event schema with their creation dates and a link to the raw schema. Use for \"Which versions of ","description":"List the versions of an event schema with their creation dates and a link to the raw schema. Use for \"Which versions of the schema messaging.message exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"The schema ID, for example 'messaging.message'.","maxLength":100,"title":"Id","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":["id"],"title":"list_schema_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_sinks":{"post":{"operationId":"list_sinks","summary":"List Event Streams sinks (where events are delivered) with type (kinesis, webhook, segment) and status. The sink configu","description":"List Event Streams sinks (where events are delivered) with type (kinesis, webhook, segment) and status. The sink configuration, which may hold credentials, is not returned. Use for \"Which event sinks do I have in Twilio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"in_use":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only sinks used by a subscription, false for unused ones.","title":"In Use"},"status":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only sinks with this status, for example initialized, validating, active or failed.","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_sinksArguments","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_sink":{"post":{"operationId":"get_sink","summary":"Get one sink: description, type and status. The configuration is not returned. Use for \"Is event sink DG... active\".","description":"Get one sink: description, type and status. The configuration is not returned. Use for \"Is event sink DG... active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sid":{"description":"The SID of the sink: 'DG' followed by 32 hex characters.","maxLength":34,"title":"Sid","type":"string"}},"required":["sid"],"title":"get_sinkArguments","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_subscriptions":{"post":{"operationId":"list_subscriptions","summary":"List Event Streams subscriptions with the sink each delivers to. Use for \"Which Twilio event subscriptions do I have\".","description":"List Event Streams subscriptions with the sink each delivers to. Use for \"Which Twilio event subscriptions do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sink_sid":{"anyOf":[{"maxLength":34,"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions delivering to this sink (DG followed by 32 hex characters).","title":"Sink Sid"},"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_subscriptionsArguments","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_subscription":{"post":{"operationId":"get_subscription","summary":"Get one subscription: description and its sink. Use for \"Which sink does event subscription DF... use\".","description":"Get one subscription: description and its sink. Use for \"Which sink does event subscription DF... use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sid":{"description":"The SID of the subscription: 'DF' followed by 32 hex characters.","maxLength":34,"title":"Sid","type":"string"}},"required":["sid"],"title":"get_subscriptionArguments","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_subscribed_events":{"post":{"operationId":"list_subscribed_events","summary":"List the event types a subscription receives with the schema version of each. Use for \"Which events does subscription DF","description":"List the event types a subscription receives with the schema version of each. Use for \"Which events does subscription DF... receive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subscription_sid":{"description":"The SID of the subscription: 'DF' followed by 32 hex characters.","maxLength":34,"title":"Subscription 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":["subscription_sid"],"title":"list_subscribed_eventsArguments","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}}}}