{"openapi":"3.1.0","info":{"title":"Meraki Sensors (BYOK) API","version":"0.1.0","description":"Meraki Sensors (BYOK) lets an AI assistant read your own Meraki Sensors data through the Meraki Sensors API with a key you supply (Meraki Dashboard API key (Organization > API & Webhooks)). Read-only: 7 tools (get_latest_readings, get_reading_history, get_current_alert_overview, get_alert_history_overview, list_alert_profiles, list_gateway_connections, list_sensor_relationships). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-meraki-sensor.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-meraki-sensor/docs"},"termsOfService":"https://connectorbay.com/byok-meraki-sensor/terms"},"servers":[{"url":"https://byok-meraki-sensor.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-meraki-sensor/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_latest_readings":{"post":{"operationId":"get_latest_readings","summary":"Get the latest reading of each metric (temperature, humidity, CO2, noise, door, water and more) from each sensor in an o","description":"Get the latest reading of each metric (temperature, humidity, CO2, noise, door, water and more) from each sensor in an organization, optionally for one network, sensor or metric. Use for \"What is the current temperature and humidity on my Meraki sensors\".","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 (a timestamp or id). Leave empty for the first page.","title":"Starting After"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only readings from this network id.","title":"Network Id"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only readings from the sensor with this serial, for example 'Q3CA-XXXX-XXXX'.","title":"Serial"},"metric":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only this reading type: temperature, humidity, co2, pm25, tvoc, noise, door, water, battery, indoorAirQuality, realPower, voltage, current and others.","title":"Metric"}},"required":["organization_id"],"title":"get_latest_readingsArguments","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_reading_history":{"post":{"operationId":"get_reading_history","summary":"Get historical sensor readings of an organization in a time window of up to 7 days, oldest first, optionally for one net","description":"Get historical sensor readings of an organization in a time window of up to 7 days, oldest first, optionally for one network, sensor or metric. Use for \"Show the temperature history of Meraki sensor Q3CA-AAAA-0001 for 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 (a timestamp or id). 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; 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, 604800); use instead of t0 and t1. Default is 2 hours.","title":"Timespan"},"network_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only readings from this network id.","title":"Network Id"},"serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only readings from the sensor with this serial, for example 'Q3CA-XXXX-XXXX'.","title":"Serial"},"metric":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only this reading type: temperature, humidity, co2, pm25, tvoc, noise, door, water, battery, indoorAirQuality, realPower, voltage, current and others.","title":"Metric"}},"required":["organization_id"],"title":"get_reading_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_current_alert_overview":{"post":{"operationId":"get_current_alert_overview","summary":"Count the sensors that are alerting right now in a network, per metric. Use for \"How many Meraki sensors in network L_64","description":"Count the sensors that are alerting right now in a network, per metric. Use for \"How many Meraki sensors in network L_646829496481105433 are alerting now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"network_id":{"description":"Network id, for example 'L_646829496481105433'.","maxLength":60,"title":"Network Id","type":"string"}},"required":["network_id"],"title":"get_current_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_history_overview":{"post":{"operationId":"get_alert_history_overview","summary":"Count sensor alert occurrences of a network per metric over a period, bucketed by an interval (15 minutes, 1 hour, 1 day","description":"Count sensor alert occurrences of a network per metric over a period, bucketed by an interval (15 minutes, 1 hour, 1 day, 1 week or 1 month). Use for \"How many Meraki sensor alerts fired per day last week in network L_646829496481105433\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"network_id":{"description":"Network id, for example 'L_646829496481105433'.","maxLength":60,"title":"Network Id","type":"string"},"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; at most 7 days after t0.","title":"T1"},"timespan":{"anyOf":[{"maximum":31622400,"minimum":1,"type":"number"},{"type":"null"}],"default":null,"description":"Window length in seconds (at most 366 days); use instead of t0 and t1.","title":"Timespan"},"interval":{"anyOf":[{"enum":[900,3600,86400,604800,2629746],"type":"integer"},{"type":"null"}],"default":null,"description":"Bucket size in seconds: 900, 3600, 86400, 604800 or 2629746 (default 604800).","title":"Interval"}},"required":["network_id"],"title":"get_alert_history_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_alert_profiles":{"post":{"operationId":"list_alert_profiles","summary":"List the sensor alert profiles of a network: name, conditions (metric, threshold, direction, duration), schedule and the","description":"List the sensor alert profiles of a network: name, conditions (metric, threshold, direction, duration), schedule and the sensor serials they cover. Recipient contact details are not returned. Use for \"Which alert rules do my Meraki sensors in network L_646829496481105433 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"network_id":{"description":"Network id, for example 'L_646829496481105433'.","maxLength":60,"title":"Network Id","type":"string"}},"required":["network_id"],"title":"list_alert_profilesArguments","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_gateway_connections":{"post":{"operationId":"list_gateway_connections","summary":"List the latest connection of each sensor to its gateway: last report time, signal strength (RSSI), and the sensor and g","description":"List the latest connection of each sensor to its gateway: last report time, signal strength (RSSI), and the sensor and gateway serials and names. Use for \"Which Meraki sensors have a weak link to their gateway\".","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 (a timestamp or id). Leave empty for the first page.","title":"Starting After"},"sensor_serial":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only connections of the sensor with this serial.","title":"Sensor Serial"}},"required":["organization_id"],"title":"list_gateway_connectionsArguments","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_sensor_relationships":{"post":{"operationId":"list_sensor_relationships","summary":"List the sensor roles of the sensor and camera devices in a network, such as which sensors relate to which camera for li","description":"List the sensor roles of the sensor and camera devices in a network, such as which sensors relate to which camera for live view. Use for \"How are the Meraki sensors in network L_646829496481105433 related to cameras\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"network_id":{"description":"Network id, for example 'L_646829496481105433'.","maxLength":60,"title":"Network Id","type":"string"}},"required":["network_id"],"title":"list_sensor_relationshipsArguments","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}}}}