{"openapi":"3.1.0","info":{"title":"Meraki Device Diagnostics (BYOK) API","version":"0.1.0","description":"Meraki Device Diagnostics (BYOK) lets an AI assistant read your own Meraki Device Diagnostics data through the Meraki Device Diagnostics API with a key you supply (Meraki Dashboard API key (Organization > API & Webhooks)). Read-only: 8 tools (get_lldp_cdp, get_loss_and_latency_history, list_device_switch_port_statuses, list_device_switch_port_packets, get_access_point_status,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-meraki-device-diagnostics.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-meraki-device-diagnostics/docs"},"termsOfService":"https://connectorbay.com/byok-meraki-device-diagnostics/terms"},"servers":[{"url":"https://byok-meraki-device-diagnostics.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-meraki-device-diagnostics/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_lldp_cdp":{"post":{"operationId":"get_lldp_cdp","summary":"Get the LLDP and CDP neighbor information a device has seen on each of its ports, with the device's source MAC. Use for ","description":"Get the LLDP and CDP neighbor information a device has seen on each of its ports, with the device's source MAC. Use for \"What neighbors does Meraki device Q2XX-XXXX-XXXX see over LLDP or CDP\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"}},"required":["serial"],"title":"get_lldp_cdpArguments","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_loss_and_latency_history":{"post":{"operationId":"get_loss_and_latency_history","summary":"Get the uplink packet loss, latency, jitter and goodput of an appliance towards a destination IP over time. The destinat","description":"Get the uplink packet loss, latency, jitter and goodput of an appliance towards a destination IP over time. The destination ip is required. Use for \"What was the latency from Meraki appliance Q2XX-XXXX-XXXX to 8.8.8.8 yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"},"ip":{"description":"Destination IP address probed by the appliance, for example 8.8.8.8.","maxLength":45,"title":"Ip","type":"string"},"uplink":{"anyOf":[{"enum":["wan1","wan2","wan3","wan4","cellular"],"type":"string"},{"type":"null"}],"default":null,"description":"WAN uplink: wan1, wan2, wan3, wan4 or cellular (default wan1).","title":"Uplink"},"resolution":{"anyOf":[{"enum":[60,600,3600,86400],"type":"integer"},{"type":"null"}],"default":null,"description":"Seconds per data point: 60, 600, 3600 or 86400 (default 60).","title":"Resolution"},"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 31 days after t0.","title":"T1"},"timespan":{"anyOf":[{"maximum":2678400,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds (at most 31 days); use instead of t0 and t1. Default 1 day.","title":"Timespan"}},"required":["serial","ip"],"title":"get_loss_and_latency_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_device_switch_port_statuses":{"post":{"operationId":"list_device_switch_port_statuses","summary":"List the status of every port of one switch: link state, speed, duplex, uplink flag, errors, warnings, PoE allocation an","description":"List the status of every port of one switch: link state, speed, duplex, uplink flag, errors, warnings, PoE allocation and traffic in kilobytes. Use for \"Which ports on Meraki switch Q2XX-XXXX-XXXX are connected and at what speed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as ISO 8601; at most 31 days back.","title":"T0"},"timespan":{"anyOf":[{"maximum":2678400,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds (at most 31 days). Default 1 day.","title":"Timespan"}},"required":["serial"],"title":"list_device_switch_port_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_device_switch_port_packets":{"post":{"operationId":"list_device_switch_port_packets","summary":"List the packet counters (by type, with rates) of every port of one switch over a period. Use for \"How many packets did ","description":"List the packet counters (by type, with rates) of every port of one switch over a period. Use for \"How many packets did each port of Meraki switch Q2XX-XXXX-XXXX carry\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as ISO 8601; the API snaps the elapsed time to 5 minutes, 15 minutes, 1 hour or 1 day.","title":"T0"},"timespan":{"anyOf":[{"maximum":86400,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds (at most 1 day).","title":"Timespan"}},"required":["serial"],"title":"list_device_switch_port_packetsArguments","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_access_point_status":{"post":{"operationId":"get_access_point_status","summary":"Get the SSID and BSSID status of one access point: SSID name and number, enabled, band, BSSID, channel, width, power, vi","description":"Get the SSID and BSSID status of one access point: SSID name and number, enabled, band, BSSID, channel, width, power, visibility and broadcast state. Use for \"Which SSIDs and channels is Meraki access point Q2XX-XXXX-XXXX using\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"}},"required":["serial"],"title":"get_access_point_statusArguments","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_access_point_connection_stats":{"post":{"operationId":"get_access_point_connection_stats","summary":"Get aggregated client connection results of one access point over a period: association, authentication, DHCP, DNS failu","description":"Get aggregated client connection results of one access point over a period: association, authentication, DHCP, DNS failures and successes. Use for \"How many Wi-Fi connections failed at Meraki access point Q2XX-XXXX-XXXX\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"},"band":{"anyOf":[{"enum":["2.4","5","6"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this radio band: 2.4, 5 or 6.","title":"Band"},"ssid":{"anyOf":[{"maximum":14,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this SSID number (0 to 14).","title":"Ssid"},"ap_tag":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only access points with this tag.","title":"Ap Tag"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as ISO 8601; at most 180 days back.","title":"T0"},"t1":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as ISO 8601; at most 7 days after t0.","title":"T1"},"timespan":{"anyOf":[{"maximum":604800,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds (at most 7 days); use instead of t0 and t1.","title":"Timespan"}},"required":["serial"],"title":"get_access_point_connection_statsArguments","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_access_point_latency_stats":{"post":{"operationId":"get_access_point_latency_stats","summary":"Get aggregated wireless latency of one access point per traffic class (background, best effort, video, voice) over a per","description":"Get aggregated wireless latency of one access point per traffic class (background, best effort, video, voice) over a period. Use for \"What is the Wi-Fi latency of Meraki access point Q2XX-XXXX-XXXX for voice traffic\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"},"band":{"anyOf":[{"enum":["2.4","5","6"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this radio band: 2.4, 5 or 6.","title":"Band"},"ssid":{"anyOf":[{"maximum":14,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this SSID number (0 to 14).","title":"Ssid"},"vlan":{"anyOf":[{"maximum":4094,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this VLAN id.","title":"Vlan"},"fields":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated subset of fields to return: rawDistribution, avg (default both).","title":"Fields"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as ISO 8601; at most 180 days back.","title":"T0"},"t1":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as ISO 8601; at most 7 days after t0.","title":"T1"},"timespan":{"anyOf":[{"maximum":604800,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds (at most 7 days); use instead of t0 and t1.","title":"Timespan"}},"required":["serial"],"title":"get_access_point_latency_statsArguments","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_appliance_performance":{"post":{"operationId":"get_appliance_performance","summary":"Get the performance score of one MX appliance or Secure Router over a period (device utilization as a number). Use for \"","description":"Get the performance score of one MX appliance or Secure Router over a period (device utilization as a number). Use for \"How loaded is Meraki appliance Q2XX-XXXX-XXXX\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"serial":{"description":"Device serial number, for example 'Q2XX-XXXX-XXXX'.","maxLength":40,"title":"Serial","type":"string"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as ISO 8601; at most 30 days back.","title":"T0"},"timespan":{"anyOf":[{"maximum":1209600,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds, 30 minutes to 14 days. Default 30 minutes.","title":"Timespan"}},"required":["serial"],"title":"get_appliance_performanceArguments","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}}}}