{"openapi":"3.1.0","info":{"title":"Mux Data (BYOK) API","version":"0.1.0","description":"Mux Data (BYOK) lets an AI assistant read your own Mux Data data through the Mux Data API with a key you supply (access token ID). Read-only: 11 tools (get_metric_overall, get_metric_timeseries, list_metric_breakdown, get_metric_insights, list_all_metric_values, list_dimensions, list_dimension_values, list_errors, list_incidents, list_annotations, get_realtime_breakdown). The BYOK key travels...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-mux-data.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mux-data/docs"},"termsOfService":"https://connectorbay.com/byok-mux-data/terms"},"servers":[{"url":"https://byok-mux-data.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mux-data/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/get_metric_overall":{"post":{"operationId":"get_metric_overall","summary":"Get the overall value of one Mux Data metric over a time window with total views, watch time and playing time. Aggregate","description":"Get the overall value of one Mux Data metric over a time window with total views, watch time and playing time. Aggregated, no viewer rows. Use for \"What was my median video startup time over the last 7 days in Mux\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"metric_id":{"description":"Metric ID, for example video_startup_time, rebuffer_percentage, playback_failure_percentage, viewer_experience_score, views, unique_viewers or playing_time.","maxLength":64,"title":"Metric Id","type":"string"},"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"},"measurement":{"anyOf":[{"enum":["95th","median","avg","count","sum"],"type":"string"},{"type":"null"}],"default":null,"description":"How to aggregate the metric: 95th, median, avg, count or sum. Each metric has its own default.","title":"Measurement"}},"required":["metric_id"],"title":"get_metric_overallArguments","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_metric_timeseries":{"post":{"operationId":"get_metric_timeseries","summary":"Get one metric as a timeseries. Each data row is [timestamp, value, views]. Choose minute, ten_minutes, hour or day gran","description":"Get one metric as a timeseries. Each data row is [timestamp, value, views]. Choose minute, ten_minutes, hour or day granularity. Use for \"Show my Mux rebuffer percentage per day over the last 7 days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"metric_id":{"description":"Metric ID, for example video_startup_time, rebuffer_percentage, playback_failure_percentage, viewer_experience_score, views, unique_viewers or playing_time.","maxLength":64,"title":"Metric Id","type":"string"},"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"},"measurement":{"anyOf":[{"enum":["95th","median","avg","count","sum"],"type":"string"},{"type":"null"}],"default":null,"description":"How to aggregate the metric: 95th, median, avg, count or sum. Each metric has its own default.","title":"Measurement"},"group_by":{"anyOf":[{"enum":["minute","ten_minutes","hour","day"],"type":"string"},{"type":"null"}],"default":null,"description":"Time granularity: minute, ten_minutes, hour or day (a default is chosen from the window if empty).","title":"Group By"},"order_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: asc or desc.","title":"Order Direction"}},"required":["metric_id"],"title":"get_metric_timeseriesArguments","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_metric_breakdown":{"post":{"operationId":"list_metric_breakdown","summary":"Break one metric down by a dimension (country, browser, video title, CDN and so on), with value, views, watch time and n","description":"Break one metric down by a dimension (country, browser, video title, CDN and so on), with value, views, watch time and negative impact per row. Use for \"Which countries have the worst video startup time in Mux this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"metric_id":{"description":"Metric ID, for example video_startup_time, rebuffer_percentage, playback_failure_percentage, viewer_experience_score, views, unique_viewers or playing_time.","maxLength":64,"title":"Metric Id","type":"string"},"group_by":{"description":"Dimension to group by, for example country, browser, video_title or cdn.","enum":["asn","asset_id","browser","cdn","continent_code","country","live_stream_id","operating_system","page_type","playback_id","player_name","player_software","player_version","region","source_hostname","source_type","stream_type","sub_property_id","video_id","video_series","video_title","viewer_connection_type","viewer_device_category","viewer_device_manufacturer","viewer_device_name","player_error_code","video_content_type"],"title":"Group By","type":"string"},"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"},"measurement":{"anyOf":[{"enum":["95th","median","avg","count","sum"],"type":"string"},{"type":"null"}],"default":null,"description":"How to aggregate the metric: 95th, median, avg, count or sum. Each metric has its own default.","title":"Measurement"},"order_by":{"anyOf":[{"enum":["negative_impact","value","views","field"],"type":"string"},{"type":"null"}],"default":null,"description":"Order rows by negative_impact, value, views or field.","title":"Order By"},"order_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: asc or desc.","title":"Order Direction"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many rows to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["metric_id","group_by"],"title":"list_metric_breakdownArguments","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_metric_insights":{"post":{"operationId":"get_metric_insights","summary":"List the dimension values that hurt a metric most: filter column, value, metric value, negative impact score and views. ","description":"List the dimension values that hurt a metric most: filter column, value, metric value, negative impact score and views. Use for \"What is dragging down my Mux video startup time\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"metric_id":{"description":"Metric ID, for example video_startup_time, rebuffer_percentage, playback_failure_percentage, viewer_experience_score, views, unique_viewers or playing_time.","maxLength":64,"title":"Metric Id","type":"string"},"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"},"measurement":{"anyOf":[{"enum":["95th","median","avg","count","sum"],"type":"string"},{"type":"null"}],"default":null,"description":"How to aggregate the metric: 95th, median, avg, count or sum. Each metric has its own default.","title":"Measurement"},"order_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: asc or desc.","title":"Order Direction"}},"required":["metric_id"],"title":"get_metric_insightsArguments","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_all_metric_values":{"post":{"operationId":"list_all_metric_values","summary":"List the values of all metrics at once for the whole property, or for one dimension value (for example country=US). Use ","description":"List the values of all metrics at once for the whole property, or for one dimension value (for example country=US). Use for \"Give me all my Mux Data metrics for the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dimension":{"anyOf":[{"enum":["asn","asset_id","browser","cdn","continent_code","country","live_stream_id","operating_system","page_type","playback_id","player_name","player_software","player_version","region","source_hostname","source_type","stream_type","sub_property_id","video_id","video_series","video_title","viewer_connection_type","viewer_device_category","viewer_device_manufacturer","viewer_device_name","player_error_code","video_content_type"],"type":"string"},{"type":"null"}],"default":null,"description":"Dimension the value belongs to, for example country, browser or video_title. Use together with value.","title":"Dimension"},"value":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The dimension value to show all metrics for, for example US.","title":"Value"},"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"}},"title":"list_all_metric_valuesArguments","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_dimensions":{"post":{"operationId":"list_dimensions","summary":"List the dimensions that Mux Data supports, split into basic and advanced ones. Use for \"Which dimensions can I break Mu","description":"List the dimensions that Mux Data supports, split into basic and advanced ones. Use for \"Which dimensions can I break Mux Data metrics down by\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_dimensionsArguments","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_dimension_values":{"post":{"operationId":"list_dimension_values","summary":"List the values seen for one dimension with the number of views for each value. Use for \"What video titles appear in my ","description":"List the values seen for one dimension with the number of views for each value. Use for \"What video titles appear in my Mux Data this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dimension_id":{"description":"Dimension ID from list_dimensions, for example country, browser or video_title.","maxLength":64,"title":"Dimension Id","type":"string"},"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many rows to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["dimension_id"],"title":"list_dimension_valuesArguments","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_errors":{"post":{"operationId":"list_errors","summary":"List playback errors seen in a time window: Mux error code, player error code, message, count, share of views and last s","description":"List playback errors seen in a time window: Mux error code, player error code, message, count, share of views and last seen time. Use for \"What playback errors happened in Mux in the last 24 hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"}},"title":"list_errorsArguments","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_incidents":{"post":{"operationId":"list_incidents","summary":"List Mux Data incidents (alerts) with status, severity, impact, affected views, start and resolve time. Use for \"Are the","description":"List Mux Data incidents (alerts) with status, severity, impact, affected views, start and resolve time. Use for \"Are there any open Mux Data incidents\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["open","closed","expired"],"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents with this status.","title":"Status"},"severity":{"anyOf":[{"enum":["warning","alert"],"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents with this severity.","title":"Severity"},"order_by":{"anyOf":[{"enum":["negative_impact","value","views","field"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by negative_impact, value, views or field.","title":"Order By"},"order_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: asc or desc.","title":"Order Direction"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many rows to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_incidentsArguments","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_annotations":{"post":{"operationId":"list_annotations","summary":"List the notes (annotations) that were added to Mux Data charts, with date and note text. Use for \"What annotations did ","description":"List the notes (annotations) that were added to Mux Data charts, with date and note text. Use for \"What annotations did I add to my Mux Data charts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"timeframe":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"24:hours","description":"Time window: a duration such as 24:hours or 7:days (default for the API is the last 24 hours), sent as a single timeframe[] value.","title":"Timeframe"},"order_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: asc or desc.","title":"Order Direction"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many rows to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_annotationsArguments","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_realtime_breakdown":{"post":{"operationId":"get_realtime_breakdown","summary":"Get live (last minutes) numbers for one real-time metric broken down by a dimension, with concurrent viewers per value. ","description":"Get live (last minutes) numbers for one real-time metric broken down by a dimension, with concurrent viewers per value. Use for \"How many people are watching right now in Mux, by country\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"realtime_metric_id":{"description":"Real-time metric: current-concurrent-viewers, current-rebuffering-percentage, exits-before-video-start, playback-failure-percentage or current-average-bitrate.","enum":["current-concurrent-viewers","current-rebuffering-percentage","exits-before-video-start","playback-failure-percentage","current-average-bitrate"],"title":"Realtime Metric Id","type":"string"},"dimension":{"anyOf":[{"enum":["asn","cdn","country","operating_system","player_name","region","stream_type","sub_property_id","video_series","video_title"],"type":"string"},{"type":"null"}],"default":null,"description":"Dimension to break down by.","title":"Dimension"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"One filter as dimension:value, for example country:US, or !country:US to exclude. Leave empty for no filter.","title":"Filter"},"order_by":{"anyOf":[{"enum":["negative_impact","value","views","field"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by negative_impact, value, views or field.","title":"Order By"},"order_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order: asc or desc.","title":"Order Direction"}},"required":["realtime_metric_id"],"title":"get_realtime_breakdownArguments","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}}}}