{"openapi":"3.1.0","info":{"title":"Segment Sync and Delivery Health (BYOK) API","version":"0.1.0","description":"Segment Sync and Delivery Health (BYOK) lets an AI assistant read your own Segment Sync and Delivery Health data through the Segment Sync and Delivery Health API with a key you supply (Segment Public API access token (read-only role is enough; US region)). Read-only: 10 tools (list_reverse_etl_models, list_reverse_etl_syncs, get_reverse_etl_sync, list_warehouse_syncs,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-segment-sync-health.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-segment-sync-health/docs"},"termsOfService":"https://connectorbay.com/byok-segment-sync-health/terms"},"servers":[{"url":"https://byok-segment-sync-health.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-segment-sync-health/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_reverse_etl_models":{"post":{"operationId":"list_reverse_etl_models","summary":"List Reverse ETL models (SQL queries that read rows from a warehouse to send to destinations) with name, description, en","description":"List Reverse ETL models (SQL queries that read rows from a warehouse to send to destinations) with name, description, enabled flag, source id and the query text. Alpha endpoint. Use for \"Which Reverse ETL models do we have in Segment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return per page (1 to 100).","title":"Count"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Opaque cursor from the previous answer's data.pagination.next to fetch the following page.","title":"Cursor"}},"title":"list_reverse_etl_modelsArguments","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_reverse_etl_syncs":{"post":{"operationId":"list_reverse_etl_syncs","summary":"List the sync runs of one Reverse ETL mapping (model plus destination subscription) with status, duration, rows extracte","description":"List the sync runs of one Reverse ETL mapping (model plus destination subscription) with status, duration, rows extracted and delivered, failure counts and error codes. Alpha endpoint. Use for \"Did the latest Reverse ETL syncs in Segment succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"model_id":{"description":"Reverse ETL model id from list_reverse_etl_models.","maxLength":255,"title":"Model Id","type":"string"},"subscription_id":{"description":"Id of the destination subscription (mapping) the model feeds.","maxLength":255,"title":"Subscription Id","type":"string"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return per page (1 to 100).","title":"Count"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Opaque cursor from the previous answer's data.pagination.next to fetch the following page.","title":"Cursor"}},"required":["model_id","subscription_id"],"title":"list_reverse_etl_syncsArguments","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_reverse_etl_sync":{"post":{"operationId":"get_reverse_etl_sync","summary":"Get one Reverse ETL sync run: status, duration, extract and load phase counts (added, updated, deleted, delivered, faile","description":"Get one Reverse ETL sync run: status, duration, extract and load phase counts (added, updated, deleted, delivered, failed) and error. Alpha endpoint. Use for \"What happened in Reverse ETL sync sync_1 in Segment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"model_id":{"description":"Reverse ETL model id from list_reverse_etl_models.","maxLength":255,"title":"Model Id","type":"string"},"sync_id":{"description":"Sync run id from list_reverse_etl_syncs.","maxLength":255,"title":"Sync Id","type":"string"}},"required":["model_id","sync_id"],"title":"get_reverse_etl_syncArguments","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_warehouse_syncs":{"post":{"operationId":"list_warehouse_syncs","summary":"List recent sync reports of every source connected to a warehouse: source, start and end, status, duration, record count","description":"List recent sync reports of every source connected to a warehouse: source, start and end, status, duration, record count and any notices. Rate limited to 2 requests per minute. Use for \"Are my Segment warehouse syncs healthy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"warehouse_id":{"description":"Warehouse id from your Segment workspace.","maxLength":255,"title":"Warehouse Id","type":"string"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return per page (1 to 100).","title":"Count"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Opaque cursor from the previous answer's data.pagination.next to fetch the following page.","title":"Cursor"}},"required":["warehouse_id"],"title":"list_warehouse_syncsArguments","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_warehouse_connection_state":{"post":{"operationId":"get_warehouse_connection_state","summary":"Check whether Segment can currently connect to a warehouse with its saved settings: CONNECTED or FAILED. Credentials are","description":"Check whether Segment can currently connect to a warehouse with its saved settings: CONNECTED or FAILED. Credentials are not returned. Use for \"Is the Segment connection to warehouse wh_1 working\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"warehouse_id":{"description":"Warehouse id from your Segment workspace.","maxLength":255,"title":"Warehouse Id","type":"string"}},"required":["warehouse_id"],"title":"get_warehouse_connection_stateArguments","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_destination_delivery_metrics":{"post":{"operationId":"get_destination_delivery_metrics","summary":"Get an event delivery summary for one destination: totals per metric (for example successes, failures, retries) with bre","description":"Get an event delivery summary for one destination: totals per metric (for example successes, failures, retries) with breakdowns, for a source and time window. Beta endpoint. Use for \"How many events did Segment deliver to destination dst_1 in the last hour\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"destination_id":{"description":"Destination id from your Segment workspace.","maxLength":255,"title":"Destination Id","type":"string"},"source_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the Segment source to look at (from the Segment connector list_sources or your workspace).","title":"Source Id"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as an ISO 8601 timestamp, inclusive, for example 2026-10-18T00:00:00Z.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as an ISO 8601 timestamp, exclusive.","title":"End Time"},"granularity":{"anyOf":[{"enum":["DAY","HOUR","MINUTE"],"type":"string"},{"type":"null"}],"default":null,"description":"Bucket size: DAY, HOUR or MINUTE. Minute buckets allow at most 4 hours of range, hour buckets a shorter range than day buckets.","title":"Granularity"}},"required":["destination_id"],"title":"get_destination_delivery_metricsArguments","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_events_received":{"post":{"operationId":"get_events_received","summary":"Get events successfully received by Segment for a source over a time window: totals and a time series per event name, ev","description":"Get events successfully received by Segment for a source over a time window: totals and a time series per event name, event type and app version. Beta endpoint. Use for \"How many events did Segment receive from source src_1 today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"source_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the Segment source to look at (from the Segment connector list_sources or your workspace).","title":"Source Id"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as an ISO 8601 timestamp, inclusive, for example 2026-10-18T00:00:00Z.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as an ISO 8601 timestamp, exclusive.","title":"End Time"},"granularity":{"anyOf":[{"enum":["DAY","HOUR","MINUTE"],"type":"string"},{"type":"null"}],"default":null,"description":"Bucket size: DAY, HOUR or MINUTE. Minute buckets allow at most 4 hours of range, hour buckets a shorter range than day buckets.","title":"Granularity"}},"title":"get_events_receivedArguments","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_events_failed_on_ingest":{"post":{"operationId":"get_events_failed_on_ingest","summary":"Get events that failed on ingest for a source over a time window: totals and a time series per event name, event type, d","description":"Get events that failed on ingest for a source over a time window: totals and a time series per event name, event type, discard reason and app version. Beta endpoint. Use for \"Did Segment discard any events from source src_1 yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"source_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the Segment source to look at (from the Segment connector list_sources or your workspace).","title":"Source Id"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as an ISO 8601 timestamp, inclusive, for example 2026-10-18T00:00:00Z.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as an ISO 8601 timestamp, exclusive.","title":"End Time"},"granularity":{"anyOf":[{"enum":["DAY","HOUR","MINUTE"],"type":"string"},{"type":"null"}],"default":null,"description":"Bucket size: DAY, HOUR or MINUTE. Minute buckets allow at most 4 hours of range, hour buckets a shorter range than day buckets.","title":"Granularity"}},"title":"get_events_failed_on_ingestArguments","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_events_delivered_to_destination":{"post":{"operationId":"get_events_delivered_to_destination","summary":"Get events successfully delivered to a destination over a time window: totals and a time series per event name and type.","description":"Get events successfully delivered to a destination over a time window: totals and a time series per event name and type. Beta endpoint. Use for \"How many events reached destination dst_1 from source src_1 this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"source_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the Segment source to look at (from the Segment connector list_sources or your workspace).","title":"Source Id"},"destination_config_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the workspace destination (destination instance) to look at.","title":"Destination Config Id"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as an ISO 8601 timestamp, inclusive, for example 2026-10-18T00:00:00Z.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as an ISO 8601 timestamp, exclusive.","title":"End Time"},"granularity":{"anyOf":[{"enum":["DAY","HOUR","MINUTE"],"type":"string"},{"type":"null"}],"default":null,"description":"Bucket size: DAY, HOUR or MINUTE. Minute buckets allow at most 4 hours of range, hour buckets a shorter range than day buckets.","title":"Granularity"}},"title":"get_events_delivered_to_destinationArguments","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_events_failed_delivery":{"post":{"operationId":"get_events_failed_delivery","summary":"Get events that failed to be delivered to a destination over a time window: totals, retries and discard reasons per even","description":"Get events that failed to be delivered to a destination over a time window: totals, retries and discard reasons per event name. Beta endpoint. Use for \"Which events failed to reach destination dst_1 today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"source_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the Segment source to look at (from the Segment connector list_sources or your workspace).","title":"Source Id"},"destination_config_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the workspace destination (destination instance) to look at.","title":"Destination Config Id"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as an ISO 8601 timestamp, inclusive, for example 2026-10-18T00:00:00Z.","title":"Start Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as an ISO 8601 timestamp, exclusive.","title":"End Time"},"granularity":{"anyOf":[{"enum":["DAY","HOUR","MINUTE"],"type":"string"},{"type":"null"}],"default":null,"description":"Bucket size: DAY, HOUR or MINUTE. Minute buckets allow at most 4 hours of range, hour buckets a shorter range than day buckets.","title":"Granularity"}},"title":"get_events_failed_deliveryArguments","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}}}}