{"openapi":"3.1.0","info":{"title":"Digital Ocean Uptime and Insights (BYOK) API","version":"0.1.0","description":"Digital Ocean Uptime and Insights (BYOK) lets an AI assistant read your own Digital Ocean Uptime and Insights data through the Digital Ocean Uptime and Insights API with a key you supply (personal access token with monitoring read scope). Read-only: 7 tools (list_checks, get_check, get_check_state, list_check_alerts, get_check_alert, list_alert_rules, list_alert_instances). The BYOK key travels...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-digitalocean-uptime-insights.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-digitalocean-uptime-insights/docs"},"termsOfService":"https://connectorbay.com/byok-digitalocean-uptime-insights/terms"},"servers":[{"url":"https://byok-digitalocean-uptime-insights.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-digitalocean-uptime-insights/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_checks":{"post":{"operationId":"list_checks","summary":"List Uptime checks with name, type (ping, http, https), target, probe regions and enabled flag. Use for \"Which uptime ch","description":"List Uptime checks with name, type (ping, http, https), target, probe regions and enabled flag. Use for \"Which uptime checks do I have on DigitalOcean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 200).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; meta.total says how many items exist.","title":"Page"}},"title":"list_checksArguments","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_check":{"post":{"operationId":"get_check","summary":"Get one Uptime check. Use for \"What does uptime check e1c4f7a2 monitor\".","description":"Get one Uptime check. Use for \"What does uptime check e1c4f7a2 monitor\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Uptime check id (UUID), as returned by list_checks.","maxLength":64,"title":"Check Id","type":"string"}},"required":["check_id"],"title":"get_checkArguments","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_check_state":{"post":{"operationId":"get_check_state","summary":"Get the current state of an Uptime check per region (UP, DOWN, CHECKING), status change time, 30-day uptime percent and ","description":"Get the current state of an Uptime check per region (UP, DOWN, CHECKING), status change time, 30-day uptime percent and the previous outage. Use for \"Is my website up right now and what was its uptime\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Uptime check id (UUID), as returned by list_checks.","maxLength":64,"title":"Check Id","type":"string"}},"required":["check_id"],"title":"get_check_stateArguments","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_check_alerts":{"post":{"operationId":"list_check_alerts","summary":"List the alerts of an Uptime check (latency, down, global down, SSL expiry) with threshold, comparison and period. Notif","description":"List the alerts of an Uptime check (latency, down, global down, SSL expiry) with threshold, comparison and period. Notification recipients are left out. Use for \"Which alerts are set on uptime check e1c4f7a2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Uptime check id (UUID), as returned by list_checks.","maxLength":64,"title":"Check Id","type":"string"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 200).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; meta.total says how many items exist.","title":"Page"}},"required":["check_id"],"title":"list_check_alertsArguments","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_check_alert":{"post":{"operationId":"get_check_alert","summary":"Get one Uptime alert: type, threshold, comparison and period. Use for \"What triggers alert a1b2c3d4\".","description":"Get one Uptime alert: type, threshold, comparison and period. Use for \"What triggers alert a1b2c3d4\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Uptime check id (UUID), as returned by list_checks.","maxLength":64,"title":"Check Id","type":"string"},"alert_id":{"description":"Uptime alert id (UUID), as returned by list_check_alerts.","maxLength":64,"title":"Alert Id","type":"string"}},"required":["check_id","alert_id"],"title":"get_check_alertArguments","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_rules":{"post":{"operationId":"list_alert_rules","summary":"List Insights alert rules with status, specification and dates. Use for \"Which Insights alert rules are active\".","description":"List Insights alert rules with status, specification and dates. Use for \"Which Insights alert rules are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"resource_urn":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules for this resource URN, for example do:droplet:3164444.","title":"Resource Urn"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 200).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; meta.total says how many items exist.","title":"Page"}},"title":"list_alert_rulesArguments","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_instances":{"post":{"operationId":"list_alert_instances","summary":"List Insights alert instances (firings) with rule, severity, status, resource, value and trigger and resolve times. Use ","description":"List Insights alert instances (firings) with rule, severity, status, resource, value and trigger and resolve times. Use for \"Which Insights alerts are firing now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["active","resolved"],"type":"string"},{"type":"null"}],"default":null,"description":"Only instances in this status.","title":"Status"},"rule_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only instances of this rule.","title":"Rule Id"},"resource_urn":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only instances for this resource URN.","title":"Resource Urn"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 200).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; meta.total says how many items exist.","title":"Page"}},"title":"list_alert_instancesArguments","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}}}}