{"openapi":"3.1.0","info":{"title":"StatusCake (BYOK) API","version":"0.1.0","description":"StatusCake (BYOK) lets an AI assistant read your own StatusCake data through the StatusCake API with a key you supply (API key). Read-only: 9 tools (list_uptime_tests, get_uptime_test, get_uptime_history, get_uptime_periods, get_uptime_alerts, list_ssl_tests, list_pagespeed_tests, list_maintenance_windows, list_contact_groups). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-statuscake.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-statuscake/docs"},"termsOfService":"https://connectorbay.com/byok-statuscake/terms"},"servers":[{"url":"https://byok-statuscake.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-statuscake/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_uptime_tests":{"post":{"operationId":"list_uptime_tests","summary":"List your StatusCake uptime tests with name, URL, type, check interval, status, tags and uptime percentage. Can filter b","description":"List your StatusCake uptime tests with name, URL, type, check interval, status, tags and uptime percentage. Can filter by up or down. Use for \"Which of my monitored sites are down right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["up","down"],"type":"string"},{"type":"null"}],"default":null,"description":"Only tests that are currently up or down.","title":"Status"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tags a test must have.","title":"Tags"},"matchany":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to match tests having any of the tags, false to require all.","title":"Matchany"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"}},"title":"list_uptime_testsArguments","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_test":{"post":{"operationId":"get_uptime_test","summary":"Get the full settings and current state of one uptime test: URL, type, check interval, timeout, status codes, last check","description":"Get the full settings and current state of one uptime test: URL, type, check interval, timeout, status codes, last check and uptime. Use for \"Show the settings of StatusCake test 123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"test_id":{"description":"Id of the uptime test, as shown by list_uptime_tests (for example '123456').","maxLength":20,"title":"Test Id","type":"string"}},"required":["test_id"],"title":"get_uptime_testArguments","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_history":{"post":{"operationId":"get_uptime_history","summary":"Get the individual check results of an uptime test (newest first): time, location, status code and response time. Use fo","description":"Get the individual check results of an uptime test (newest first): time, location, status code and response time. Use for \"How fast did my home page respond in recent checks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"test_id":{"description":"Id of the uptime test, as shown by list_uptime_tests (for example '123456').","maxLength":20,"title":"Test Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"before":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries before this UNIX timestamp in seconds.","title":"Before"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries after this UNIX timestamp in seconds.","title":"After"}},"required":["test_id"],"title":"get_uptime_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_uptime_periods":{"post":{"operationId":"get_uptime_periods","summary":"Get the up and down periods of an uptime test: when each began or ended, how long it lasted and its status. Use it to fi","description":"Get the up and down periods of an uptime test: when each began or ended, how long it lasted and its status. Use it to find outages. Use for \"When was my site down in the last few days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"test_id":{"description":"Id of the uptime test, as shown by list_uptime_tests (for example '123456').","maxLength":20,"title":"Test Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"before":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries before this UNIX timestamp in seconds.","title":"Before"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries after this UNIX timestamp in seconds.","title":"After"}},"required":["test_id"],"title":"get_uptime_periodsArguments","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_alerts":{"post":{"operationId":"get_uptime_alerts","summary":"Get the alerts sent for an uptime test: alert id, status, status code and when it triggered. Use for \"What alerts did St","description":"Get the alerts sent for an uptime test: alert id, status, status code and when it triggered. Use for \"What alerts did StatusCake raise for test 123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"test_id":{"description":"Id of the uptime test, as shown by list_uptime_tests (for example '123456').","maxLength":20,"title":"Test Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"before":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries before this UNIX timestamp in seconds.","title":"Before"},"after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only entries after this UNIX timestamp in seconds.","title":"After"}},"required":["test_id"],"title":"get_uptime_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/list_ssl_tests":{"post":{"operationId":"list_ssl_tests","summary":"List your SSL certificate tests with hostname, certificate status and score, issuer and validity dates. Use for \"Which o","description":"List your SSL certificate tests with hostname, certificate status and score, issuer and validity dates. Use for \"Which of my SSL certificates expire soon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"}},"title":"list_ssl_testsArguments","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_pagespeed_tests":{"post":{"operationId":"list_pagespeed_tests","summary":"List your page speed tests with URL, check interval, location, alert thresholds and the latest load statistics. Use for ","description":"List your page speed tests with URL, check interval, location, alert thresholds and the latest load statistics. Use for \"How fast does my website load according to StatusCake\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"}},"title":"list_pagespeed_testsArguments","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 your maintenance windows (periods when alerts are paused) with start, end, repeat interval, timezone and affected t","description":"List your maintenance windows (periods when alerts are paused) with start, end, repeat interval, timezone and affected tests. Use for \"Do I have any maintenance windows planned in StatusCake\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["active","paused","pending"],"type":"string"},{"type":"null"}],"default":null,"description":"Only windows in this state: active, paused or pending.","title":"State"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"}},"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_contact_groups":{"post":{"operationId":"list_contact_groups","summary":"List your alert contact groups with name, email addresses, mobile numbers, integrations and ping URL. Use for \"Who gets ","description":"List your alert contact groups with name, email addresses, mobile numbers, integrations and ping URL. Use for \"Who gets alerted when a StatusCake test fails\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"}},"title":"list_contact_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}}}}