{"openapi":"3.1.0","info":{"title":"Meraki Fleet Health (BYOK) API","version":"0.1.0","description":"Meraki Fleet Health (BYOK) lets an AI assistant read your own Meraki Fleet Health data through the Meraki Fleet Health API with a key you supply (Meraki Dashboard API key (Organization > API & Webhooks)). Read-only: 8 tools (get_device_counts_by_model, list_device_availabilities, list_availability_changes, list_provisioning_statuses, list_power_module_statuses, get_wan_loss_and_latency,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-meraki-fleet-health.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-meraki-fleet-health/docs"},"termsOfService":"https://connectorbay.com/byok-meraki-fleet-health/terms"},"servers":[{"url":"https://byok-meraki-fleet-health.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-meraki-fleet-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/get_device_counts_by_model":{"post":{"operationId":"get_device_counts_by_model","summary":"Count the devices of an organization per hardware model, optionally for one network or device family. Use for \"How many ","description":"Count the devices of an organization per hardware model, optionally for one network or device family. Use for \"How many of each Meraki hardware model do we run\".","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"},"product_type":{"anyOf":[{"enum":["appliance","camera","campusGateway","cellularGateway","secureConnect","sensor","switch","systemsManager","wireless","wirelessController"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this device family: appliance, camera, campusGateway, cellularGateway, secureConnect, sensor, switch, systemsManager, wireless or wirelessController.","title":"Product Type"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices of this network id.","title":"Network Id"},"model":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only this model, for example 'MR46'.","title":"Model"}},"required":["organization_id"],"title":"get_device_counts_by_modelArguments","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_device_availabilities":{"post":{"operationId":"list_device_availabilities","summary":"List the availability (online, alerting, offline or dormant) of devices in an organization with name, MAC, serial, netwo","description":"List the availability (online, alerting, offline or dormant) of devices in an organization with name, MAC, serial, network, device family and tags. Use for \"Which Meraki devices are currently offline\".","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"},"product_type":{"anyOf":[{"enum":["appliance","camera","campusGateway","cellularGateway","secureConnect","sensor","switch","systemsManager","wireless","wirelessController"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this device family: appliance, camera, campusGateway, cellularGateway, secureConnect, sensor, switch, systemsManager, wireless or wirelessController.","title":"Product Type"},"status":{"anyOf":[{"enum":["online","alerting","offline","dormant"],"type":"string"},{"type":"null"}],"default":null,"description":"Only devices with this status: online, alerting, offline or dormant.","title":"Status"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices of this network id.","title":"Network Id"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only the device with this serial.","title":"Serial"}},"required":["organization_id"],"title":"list_device_availabilitiesArguments","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_availability_changes":{"post":{"operationId":"list_availability_changes","summary":"List availability change events of devices (went offline, came back) in a time window with device, network and the old a","description":"List availability change events of devices (went offline, came back) in a time window with device, network and the old and new status. Use for \"Which Meraki devices went offline in the last day\".","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"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the time window as ISO 8601, for example 2026-10-01T00:00:00Z.","title":"T0"},"t1":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the time window as ISO 8601.","title":"T1"},"timespan":{"anyOf":[{"maximum":31622400,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds; use instead of t0 and t1.","title":"Timespan"},"product_type":{"anyOf":[{"enum":["appliance","camera","campusGateway","cellularGateway","secureConnect","sensor","switch","systemsManager","wireless","wirelessController"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this device family: appliance, camera, campusGateway, cellularGateway, secureConnect, sensor, switch, systemsManager, wireless or wirelessController.","title":"Product Type"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only the device with this serial.","title":"Serial"},"status":{"anyOf":[{"enum":["online","alerting","offline","dormant"],"type":"string"},{"type":"null"}],"default":null,"description":"Only changes to this status: online, alerting, offline or dormant.","title":"Status"}},"required":["organization_id"],"title":"list_availability_changesArguments","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_provisioning_statuses":{"post":{"operationId":"list_provisioning_statuses","summary":"List the provisioning status (complete, incomplete or unprovisioned) of devices in an organization. Use for \"Which Merak","description":"List the provisioning status (complete, incomplete or unprovisioned) of devices in an organization. Use for \"Which Meraki devices are not fully provisioned\".","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"},"product_type":{"anyOf":[{"enum":["appliance","camera","campusGateway","cellularGateway","secureConnect","sensor","switch","systemsManager","wireless","wirelessController"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this device family: appliance, camera, campusGateway, cellularGateway, secureConnect, sensor, switch, systemsManager, wireless or wirelessController.","title":"Product Type"},"status":{"anyOf":[{"enum":["complete","incomplete","unprovisioned"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this status: complete, incomplete or unprovisioned.","title":"Status"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices of this network id.","title":"Network Id"}},"required":["organization_id"],"title":"list_provisioning_statusesArguments","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_power_module_statuses":{"post":{"operationId":"list_power_module_statuses","summary":"List the latest power module status of rackmount MX and MS devices: device name, serial, network and the module slots wi","description":"List the latest power module status of rackmount MX and MS devices: device name, serial, network and the module slots with their state. Use for \"Are any power supplies failing on my Meraki switches\".","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"},"product_type":{"anyOf":[{"enum":["appliance","camera","campusGateway","cellularGateway","secureConnect","sensor","switch","systemsManager","wireless","wirelessController"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this device family: appliance, camera, campusGateway, cellularGateway, secureConnect, sensor, switch, systemsManager, wireless or wirelessController.","title":"Product Type"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only devices of this network id.","title":"Network Id"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only the device with this serial.","title":"Serial"}},"required":["organization_id"],"title":"list_power_module_statusesArguments","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_wan_loss_and_latency":{"post":{"operationId":"get_wan_loss_and_latency","summary":"Get the uplink packet loss and latency time series of every MX appliance for a window of at most 5 minutes ending at lea","description":"Get the uplink packet loss and latency time series of every MX appliance for a window of at most 5 minutes ending at least 2 minutes ago, per uplink and probe IP. Use for \"What is the WAN latency and packet loss on my Meraki MX appliances\".","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"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as ISO 8601; at most 60 days back.","title":"T0"},"t1":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as ISO 8601; at most 5 minutes after t0 and at least 2 minutes in the past.","title":"T1"},"timespan":{"anyOf":[{"maximum":300,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds (at most 300); use instead of t0 and t1.","title":"Timespan"},"uplink":{"anyOf":[{"enum":["wan1","wan2","wan3","cellular"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this uplink: wan1, wan2, wan3 or cellular.","title":"Uplink"},"ip":{"anyOf":[{"maxLength":45,"type":"string"},{"type":"null"}],"default":null,"description":"Only probes to this destination IP address.","title":"Ip"}},"required":["organization_id"],"title":"get_wan_loss_and_latencyArguments","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_license_overview":{"post":{"operationId":"get_license_overview","summary":"Get the license state of an organization: overall status, expiration date, license count, counts by state (active, expir","description":"Get the license state of an organization: overall status, expiration date, license count, counts by state (active, expired, expiring, unused) and by license type. License keys are not returned. Use for \"When do my Meraki licenses expire\".","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":"get_license_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_end_of_life_overview":{"post":{"operationId":"get_end_of_life_overview","summary":"Summarize how many devices of the inventory are end-of-sale, end-of-support or near end-of-support. Use for \"How many of","description":"Summarize how many devices of the inventory are end-of-sale, end-of-support or near end-of-support. Use for \"How many of my Meraki devices are near end of 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":"get_end_of_life_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}}}}