{"openapi":"3.1.0","info":{"title":"Meraki Health Alerts (BYOK) API","version":"0.1.0","description":"Meraki Health Alerts (BYOK) lets an AI assistant read your own Meraki Health Alerts data through the Meraki Health Alerts API with a key you supply (Meraki Dashboard API key (Organization > API & Webhooks)). Read-only: 8 tools (list_health_alerts, get_health_alert, get_alert_overview, get_alert_overview_by_type, get_alert_overview_by_network, get_alert_overview_history, list_alert_types,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-meraki-assurance.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-meraki-assurance/docs"},"termsOfService":"https://connectorbay.com/byok-meraki-assurance/terms"},"servers":[{"url":"https://byok-meraki-assurance.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-meraki-assurance/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_health_alerts":{"post":{"operationId":"list_health_alerts","summary":"List the health alerts of an organization with network, category, type, title, severity, start, resolution and dismissal","description":"List the health alerts of an organization with network, category, type, title, severity, start, resolution and dismissal time. Filter by network, severity, category, type or whether still active. Use for \"What critical Meraki health alerts are active right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"},"per_page":{"anyOf":[{"maximum":300,"minimum":3,"type":"integer"},{"type":"null"}],"default":30,"description":"How many entries to return, 3 to 300. Only the first page is returned unless starting_after is given.","title":"Per Page"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the value the previous page ended with (an id, serial or timestamp). Leave empty for the first page.","title":"Starting After"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this network id.","title":"Network Id"},"severity":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this severity, for example critical, warning or informational.","title":"Severity"},"category":{"anyOf":[{"enum":["configuration","connectivity","device_health","experience_metrics","insights"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this category: configuration, connectivity, device_health, experience_metrics or insights.","title":"Category"},"alert_type":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only this alert type, as listed by list_alert_types, for example 'power_supply_down'.","title":"Alert Type"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active alerts only, false for the others.","title":"Active"},"sort_by":{"anyOf":[{"enum":["category","dismissedAt","resolvedAt","severity","startedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by category, dismissedAt, resolvedAt, severity or startedAt.","title":"Sort By"},"sort_order":{"anyOf":[{"enum":["ascending","descending"],"type":"string"},{"type":"null"}],"default":null,"description":"ascending or descending.","title":"Sort Order"}},"required":["organization_id"],"title":"list_health_alertsArguments","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_health_alert":{"post":{"operationId":"get_health_alert","summary":"Get one health alert by id with network, type, title, description, severity, timing and the affected devices, applicatio","description":"Get one health alert by id with network, type, title, description, severity, timing and the affected devices, applications and peers. Use for \"Show Meraki health alert 123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"},"id":{"description":"Alert id from list_health_alerts.","maxLength":80,"title":"Id","type":"string"}},"required":["organization_id","id"],"title":"get_health_alertArguments","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_alert_overview":{"post":{"operationId":"get_alert_overview","summary":"Count the health alerts of an organization in total and by severity, with optional filters. Use for \"How many Meraki hea","description":"Count the health alerts of an organization in total and by severity, with optional filters. Use for \"How many Meraki health alerts are active by severity\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this network id.","title":"Network Id"},"severity":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this severity, for example critical, warning or informational.","title":"Severity"},"category":{"anyOf":[{"enum":["configuration","connectivity","device_health","experience_metrics","insights"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this category: configuration, connectivity, device_health, experience_metrics or insights.","title":"Category"},"alert_type":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only this alert type, as listed by list_alert_types, for example 'power_supply_down'.","title":"Alert Type"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active alerts only, false for the others.","title":"Active"}},"required":["organization_id"],"title":"get_alert_overviewArguments","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_alert_overview_by_type":{"post":{"operationId":"get_alert_overview_by_type","summary":"Summarize health alerts grouped by alert type and severity: count, number of networks, last alert and last resolution ti","description":"Summarize health alerts grouped by alert type and severity: count, number of networks, last alert and last resolution time. Use for \"Which Meraki alert types fire most often\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"},"per_page":{"anyOf":[{"maximum":1000,"minimum":3,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return, 3 to 1000. Only the first page is returned unless starting_after is given.","title":"Per Page"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the value the previous page ended with (an id, serial or timestamp). Leave empty for the first page.","title":"Starting After"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this network id.","title":"Network Id"},"severity":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this severity, for example critical, warning or informational.","title":"Severity"},"category":{"anyOf":[{"enum":["configuration","connectivity","device_health","experience_metrics","insights"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this category: configuration, connectivity, device_health, experience_metrics or insights.","title":"Category"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active alerts only, false for the others.","title":"Active"}},"required":["organization_id"],"title":"get_alert_overview_by_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_alert_overview_by_network":{"post":{"operationId":"get_alert_overview_by_network","summary":"Summarize health alerts grouped by network: alert count, last alert time and counts per severity. Use for \"Which of my M","description":"Summarize health alerts grouped by network: alert count, last alert time and counts per severity. Use for \"Which of my Meraki networks have the most health alerts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"},"per_page":{"anyOf":[{"maximum":1000,"minimum":3,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return, 3 to 1000. Only the first page is returned unless starting_after is given.","title":"Per Page"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the value the previous page ended with (an id, serial or timestamp). Leave empty for the first page.","title":"Starting After"},"severity":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this severity, for example critical, warning or informational.","title":"Severity"},"category":{"anyOf":[{"enum":["configuration","connectivity","device_health","experience_metrics","insights"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this category: configuration, connectivity, device_health, experience_metrics or insights.","title":"Category"},"alert_type":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only this alert type, as listed by list_alert_types, for example 'power_supply_down'.","title":"Alert Type"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active alerts only, false for the others.","title":"Active"}},"required":["organization_id"],"title":"get_alert_overview_by_networkArguments","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_alert_overview_history":{"post":{"operationId":"get_alert_overview_history","summary":"Get historical health alert totals per time segment, with a breakdown by alert type. segment_duration and ts_start are r","description":"Get historical health alert totals per time segment, with a breakdown by alert type. segment_duration and ts_start are required. Use for \"How many Meraki health alerts were there per day in the last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"},"segment_duration":{"description":"Length of each time segment in seconds, for example 86400 for one day.","maximum":31622400,"minimum":60,"title":"Segment Duration","type":"integer"},"ts_start":{"description":"Start of the period as ISO 8601, for example 2026-10-12T00:00:00Z.","maxLength":40,"title":"Ts Start","type":"string"},"ts_end":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period as ISO 8601.","title":"Ts End"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this network id.","title":"Network Id"},"severity":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this severity, for example critical, warning or informational.","title":"Severity"},"category":{"anyOf":[{"enum":["configuration","connectivity","device_health","experience_metrics","insights"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this category: configuration, connectivity, device_health, experience_metrics or insights.","title":"Category"}},"required":["organization_id","segment_duration","ts_start"],"title":"get_alert_overview_historyArguments","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_alert_types":{"post":{"operationId":"list_alert_types","summary":"List all health alert types known to the organization with title, category, severities and applicable device types. Use ","description":"List all health alert types known to the organization with title, category, severities and applicable device types. Use for \"Which health alert types does Meraki support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"}},"required":["organization_id"],"title":"list_alert_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/list_alert_categories":{"post":{"operationId":"list_alert_categories","summary":"List the health alert category types with their titles. Use for \"What health alert categories does Meraki use\".","description":"List the health alert category types with their titles. Use for \"What health alert categories does Meraki use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Organization id from the Meraki organizations list, for example '549236'.","maxLength":40,"title":"Organization Id","type":"string"}},"required":["organization_id"],"title":"list_alert_categoriesArguments","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}}}}