{"openapi":"3.1.0","info":{"title":"UptimeRobot (BYOK) API","version":"0.1.0","description":"UptimeRobot (BYOK) lets an AI assistant read your own UptimeRobot data through the UptimeRobot API with a key you supply (UptimeRobot API key). Read-only: 10 tools (get_user, list_monitors, get_monitor, get_monitor_uptime, get_monitor_response_time, get_uptime_summary, list_incidents, list_maintenance_windows, list_status_pages, list_monitor_groups). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-uptimerobot.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-uptimerobot/docs"},"termsOfService":"https://connectorbay.com/byok-uptimerobot/terms"},"servers":[{"url":"https://byok-uptimerobot.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-uptimerobot/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_user":{"post":{"operationId":"get_user","summary":"Show the UptimeRobot account: email, name, monitor count and limit, and the active plan. Use for \"How many monitors do I","description":"Show the UptimeRobot account: email, name, monitor count and limit, and the active plan. Use for \"How many monitors do I use on my UptimeRobot plan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_userArguments","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_monitors":{"post":{"operationId":"list_monitors","summary":"List monitors with status, URL, type and check interval; filter by name, URL, status, tag or group; page with cursor fro","description":"List monitors with status, URL, type and check interval; filter by name, URL, status, tag or group; page with cursor from nextLink. Use for \"Which of my UptimeRobot monitors are down\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 200, default 50).","title":"Limit"},"status":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses to include, for example 'DOWN,PAUSED'.","title":"Status"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive part of the monitor name.","title":"Name"},"url":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive part of the monitored URL.","title":"Url"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag names (any match).","title":"Tags"},"group_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only monitors of this monitor group id.","title":"Group Id"},"cursor":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor taken from nextLink of the previous answer.","title":"Cursor"}},"title":"list_monitorsArguments","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_monitor":{"post":{"operationId":"get_monitor","summary":"Get one monitor: name, URL, type, status, interval, tags, last incident id and how long it has been in its current state","description":"Get one monitor: name, URL, type, status, interval, tags, last incident id and how long it has been in its current state. Use for \"Is UptimeRobot monitor 123456 up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Numeric monitor id, from list_monitors.","minimum":1,"title":"Monitor Id","type":"integer"}},"required":["monitor_id"],"title":"get_monitorArguments","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_monitor_uptime":{"post":{"operationId":"get_monitor_uptime","summary":"Get a monitor's uptime percentage, total downtime seconds, incident count and mean time between failures for a period. U","description":"Get a monitor's uptime percentage, total downtime seconds, incident count and mean time between failures for a period. Use for \"What was the uptime of UptimeRobot monitor 123456 this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Numeric monitor id, from list_monitors.","minimum":1,"title":"Monitor Id","type":"integer"},"from_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period, ISO 8601 (default: 24 hours ago).","title":"From Time"},"to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period, ISO 8601 (default: now).","title":"To"}},"required":["monitor_id"],"title":"get_monitor_uptimeArguments","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_monitor_response_time":{"post":{"operationId":"get_monitor_response_time","summary":"Get minimum, maximum and average response time of a monitor for a period, optionally for one region. Use for \"How fast d","description":"Get minimum, maximum and average response time of a monitor for a period, optionally for one region. Use for \"How fast does UptimeRobot monitor 123456 respond\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Numeric monitor id, from list_monitors.","minimum":1,"title":"Monitor Id","type":"integer"},"from_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the period, ISO 8601 (default: 24 hours ago).","title":"From Time"},"to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period, ISO 8601 (default: now).","title":"To"},"region":{"anyOf":[{"enum":["na","eu","as","oc","all"],"type":"string"},{"type":"null"}],"default":null,"description":"Region code: na, eu, as, oc or all.","title":"Region"}},"required":["monitor_id"],"title":"get_monitor_response_timeArguments","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_uptime_summary":{"post":{"operationId":"get_uptime_summary","summary":"Get account-wide uptime, number of incidents and affected monitors for a time frame. Use for \"What was my overall uptime","description":"Get account-wide uptime, number of incidents and affected monitors for a time frame. Use for \"What was my overall uptime on UptimeRobot over the last 30 days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"time_frame":{"description":"Time frame: DAY, WEEK, MONTH, DAYS_30, YEAR or ALL.","enum":["DAY","WEEK","MONTH","DAYS_30","YEAR","ALL"],"title":"Time Frame","type":"string"},"log_limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many log entries to include (1 to 500).","title":"Log Limit"}},"required":["time_frame"],"title":"get_uptime_summaryArguments","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_incidents":{"post":{"operationId":"list_incidents","summary":"List incidents with the monitor, cause, start and resolve time and duration; filter by monitor, name, dates or open ones","description":"List incidents with the monitor, cause, start and resolve time and duration; filter by monitor, name, dates or open ones only. Use for \"Which UptimeRobot incidents are open right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"const":"open","type":"string"},{"type":"null"}],"default":null,"description":"Set to open to return only ongoing incidents.","title":"Status"},"monitor_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only incidents of this monitor id.","title":"Monitor Id"},"monitor_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Part of the monitor name.","title":"Monitor Name"},"started_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents started after this ISO 8601 time.","title":"Started After"},"started_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents started before this ISO 8601 time.","title":"Started Before"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from nextLink of the previous answer.","title":"Cursor"}},"title":"list_incidentsArguments","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_maintenance_windows":{"post":{"operationId":"list_maintenance_windows","summary":"List maintenance windows with schedule, duration and the monitors they cover. Use for \"Which maintenance windows are sch","description":"List maintenance windows with schedule, duration and the monitors they cover. Use for \"Which maintenance windows are scheduled in UptimeRobot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 200, default 50).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from nextLink of the previous answer.","title":"Cursor"}},"title":"list_maintenance_windowsArguments","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_status_pages":{"post":{"operationId":"list_status_pages","summary":"List public status pages with name, custom domain, link and number of monitors. Use for \"Which UptimeRobot status pages ","description":"List public status pages with name, custom domain, link and number of monitors. Use for \"Which UptimeRobot status pages do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 200, default 50).","title":"Limit"},"cursor":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor.","title":"Cursor"}},"title":"list_status_pagesArguments","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_monitor_groups":{"post":{"operationId":"list_monitor_groups","summary":"List monitor groups with id and name. Use for \"What monitor groups do I have in UptimeRobot\".","description":"List monitor groups with id and name. Use for \"What monitor groups do I have in UptimeRobot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 200, default 50).","title":"Limit"},"cursor":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Pagination cursor (id of the last item of the previous page).","title":"Cursor"}},"title":"list_monitor_groupsArguments","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}}}}