{"openapi":"3.1.0","info":{"title":"Meraki Switches (BYOK) API","version":"0.1.0","description":"Meraki Switches (BYOK) lets an AI assistant read your own Meraki Switches data through the Meraki Switches API with a key you supply (Meraki Dashboard API key (Organization > API & Webhooks)). Read-only: 7 tools (list_switch_ports, list_switch_port_statuses, get_switch_ports_overview, list_switch_port_client_counts, list_switch_port_neighbors, get_switch_port_usage_history,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-meraki-switch.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-meraki-switch/docs"},"termsOfService":"https://connectorbay.com/byok-meraki-switch/terms"},"servers":[{"url":"https://byok-meraki-switch.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-meraki-switch/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_switch_ports":{"post":{"operationId":"list_switch_ports","summary":"List the switch ports of an organization grouped by switch: switch name, serial, MAC, network, model and the ports with ","description":"List the switch ports of an organization grouped by switch: switch name, serial, MAC, network, model and the ports with their configuration. Use for \"What is the port configuration of 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":50,"minimum":3,"type":"integer"},{"type":"null"}],"default":20,"description":"How many entries to return, 3 to 50. 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"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches whose name contains this text.","title":"Name"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of the device with this serial, for example 'Q2XX-XXXX-XXXX'.","title":"Serial"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of this network id.","title":"Network Id"}},"required":["organization_id"],"title":"list_switch_portsArguments","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_switch_port_statuses":{"post":{"operationId":"list_switch_port_statuses","summary":"List the live status of each switch port per switch: link state, speed, duplex, PoE power, errors and warnings. Use for ","description":"List the live status of each switch port per switch: link state, speed, duplex, PoE power, errors and warnings. Use for \"Which ports on my Meraki switches are down or have errors\".","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":20,"minimum":3,"type":"integer"},{"type":"null"}],"default":10,"description":"How many entries to return, 3 to 20. 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"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches whose name contains this text.","title":"Name"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of the device with this serial, for example 'Q2XX-XXXX-XXXX'.","title":"Serial"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of this network id.","title":"Network Id"}},"required":["organization_id"],"title":"list_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/get_switch_ports_overview":{"post":{"operationId":"get_switch_ports_overview","summary":"Count the active and inactive switch ports of an organization over a period, grouped by link speed. Use for \"How many of","description":"Count the active and inactive switch ports of an organization over a period, grouped by link speed. Use for \"How many of my Meraki switch ports are active\".","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.","title":"T0"},"t1":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as ISO 8601; at most 186 days after t0.","title":"T1"},"timespan":{"anyOf":[{"maximum":16070400,"minimum":43200,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds, 12 hours to 186 days. Default 1 day.","title":"Timespan"}},"required":["organization_id"],"title":"get_switch_ports_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/list_switch_port_client_counts":{"post":{"operationId":"list_switch_port_client_counts","summary":"List the number of clients on each switch port that had at least one online client in a period (counts only, no client d","description":"List the number of clients on each switch port that had at least one online client in a period (counts only, no client details). Use for \"How many clients are plugged into each Meraki switch port\".","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":20,"minimum":3,"type":"integer"},{"type":"null"}],"default":20,"description":"How many entries to return, 3 to 20. 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 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"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches whose name contains this text.","title":"Name"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of the device with this serial, for example 'Q2XX-XXXX-XXXX'.","title":"Serial"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of this network id.","title":"Network Id"}},"required":["organization_id"],"title":"list_switch_port_client_countsArguments","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_switch_port_neighbors":{"post":{"operationId":"list_switch_port_neighbors","summary":"List the most recently seen LLDP and CDP neighbor information per switch port: which devices are connected to which port","description":"List the most recently seen LLDP and CDP neighbor information per switch port: which devices are connected to which port. Use for \"What devices are connected to my Meraki switch ports according to LLDP\".","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":20,"minimum":3,"type":"integer"},{"type":"null"}],"default":10,"description":"How many entries to return, 3 to 20. 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 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"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches whose name contains this text.","title":"Name"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of the device with this serial, for example 'Q2XX-XXXX-XXXX'.","title":"Serial"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of this network id.","title":"Network Id"}},"required":["organization_id"],"title":"list_switch_port_neighborsArguments","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_switch_port_usage_history":{"post":{"operationId":"get_switch_port_usage_history","summary":"List historical traffic and usage of switch ports per switch over a window, bucketed by an interval. Use for \"How much t","description":"List historical traffic and usage of switch ports per switch over a window, bucketed by an interval. Use for \"How much traffic did my Meraki switch ports carry yesterday\".","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":50,"minimum":3,"type":"integer"},{"type":"null"}],"default":10,"description":"How many entries to return, 3 to 50. 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 window as ISO 8601; at most 31 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). Default 1 day.","title":"Timespan"},"interval":{"anyOf":[{"enum":[300,1200,14400,86400],"type":"integer"},{"type":"null"}],"default":null,"description":"Bucket size in seconds: 300, 1200, 14400 or 86400 (default 1200).","title":"Interval"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches whose name contains this text.","title":"Name"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of the device with this serial, for example 'Q2XX-XXXX-XXXX'.","title":"Serial"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only switches of this network id.","title":"Network Id"}},"required":["organization_id"],"title":"get_switch_port_usage_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/get_switch_poe_history":{"post":{"operationId":"get_switch_poe_history","summary":"Get the total PoE power draw of all switch ports in an organization over a window as a time series in watts. Use for \"Ho","description":"Get the total PoE power draw of all switch ports in an organization over a window as a time series in watts. Use for \"How much PoE power did my Meraki switches draw over 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"},"t0":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the window as ISO 8601.","title":"T0"},"t1":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the window as ISO 8601; at most 186 days after t0.","title":"T1"},"timespan":{"anyOf":[{"maximum":16070400,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds, at most 186 days. Default 1 day.","title":"Timespan"}},"required":["organization_id"],"title":"get_switch_poe_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}}}}