{"openapi":"3.1.0","info":{"title":"Atlassian Statuspage (BYOK) API","version":"0.1.0","description":"Atlassian Statuspage (BYOK) lets an AI assistant read your own Atlassian Statuspage data through the Atlassian Statuspage API with a key you supply (Statuspage API key). Read-only: 10 tools (list_pages, list_components, list_component_groups, get_component_uptime, list_incidents, list_unresolved_incidents, list_scheduled_maintenances, get_incident, list_metrics, count_subscribers). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-statuspage.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-statuspage/docs"},"termsOfService":"https://connectorbay.com/byok-statuspage/terms"},"servers":[{"url":"https://byok-statuspage.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-statuspage/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_pages":{"post":{"operationId":"list_pages","summary":"List the status pages of the account with name, subdomain, custom domain, URL, time zone and last update. The id is need","description":"List the status pages of the account with name, subdomain, custom domain, URL, time zone and last update. The id is needed by the other tools. Use for \"Which Statuspage status pages do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_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_components":{"post":{"operationId":"list_components","summary":"List the components of a status page (services shown on it) with current status: operational, under_maintenance, degrade","description":"List the components of a status page (services shown on it) with current status: operational, under_maintenance, degraded_performance, partial_outage or major_outage. Use for \"Is anything degraded on my Statuspage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["page_id"],"title":"list_componentsArguments","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_component_groups":{"post":{"operationId":"list_component_groups","summary":"List the component groups of a status page with name, description and the ids of their components. Use for \"How are my S","description":"List the component groups of a status page with name, description and the ids of their components. Use for \"How are my Statuspage components grouped\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["page_id"],"title":"list_component_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}},"/v1/tools/get_component_uptime":{"post":{"operationId":"get_component_uptime","summary":"Get the uptime percentage and outage minutes of one component over a date range (default: since its start date or the la","description":"Get the uptime percentage and outage minutes of one component over a date range (default: since its start date or the last 90 days). Use for \"What was the uptime of my Statuspage component last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"component_id":{"description":"Component id from list_components.","maxLength":40,"title":"Component Id","type":"string"},"start":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Start date (YYYY-MM-DD).","title":"Start"},"end":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"End date (YYYY-MM-DD).","title":"End"}},"required":["page_id","component_id"],"title":"get_component_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/list_incidents":{"post":{"operationId":"list_incidents","summary":"List incidents of a status page, newest first, with status (investigating, identified, monitoring, resolved), impact, ti","description":"List incidents of a status page, newest first, with status (investigating, identified, monitoring, resolved), impact, timestamps and short link. Optional text search; 100 per page at most. Use for \"What incidents did my Statuspage have recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"q":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search in incident names, status and postmortem.","title":"Q"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Incidents per page (1 to 100, default 100).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["page_id"],"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_unresolved_incidents":{"post":{"operationId":"list_unresolved_incidents","summary":"List incidents of a status page that are not resolved yet, with status, impact and timestamps. Use for \"Are there any op","description":"List incidents of a status page that are not resolved yet, with status, impact and timestamps. Use for \"Are there any open incidents on my Statuspage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["page_id"],"title":"list_unresolved_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_scheduled_maintenances":{"post":{"operationId":"list_scheduled_maintenances","summary":"List scheduled maintenances of a status page with planned start and end. Use for \"What maintenance is scheduled on my St","description":"List scheduled maintenances of a status page with planned start and end. Use for \"What maintenance is scheduled on my Statuspage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["page_id"],"title":"list_scheduled_maintenancesArguments","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_incident":{"post":{"operationId":"get_incident","summary":"Get one incident by id: name, status, impact, timestamps and short link. Use for \"Show Statuspage incident details\".","description":"Get one incident by id: name, status, impact, timestamps and short link. Use for \"Show Statuspage incident details\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"incident_id":{"description":"Incident id from list_incidents.","maxLength":40,"title":"Incident Id","type":"string"}},"required":["page_id","incident_id"],"title":"get_incidentArguments","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_metrics":{"post":{"operationId":"list_metrics","summary":"List the metrics shown on a status page with name, suffix, last data time and backfill state. Use for \"Which metrics doe","description":"List the metrics shown on a status page with name, suffix, last data time and backfill state. Use for \"Which metrics does my Statuspage show\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["page_id"],"title":"list_metricsArguments","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/count_subscribers":{"post":{"operationId":"count_subscribers","summary":"Count the subscribers of a status page by channel type (email, sms, slack, webhook, teams, integration_partner). Use for","description":"Count the subscribers of a status page by channel type (email, sms, slack, webhook, teams, integration_partner). Use for \"How many subscribers does my Statuspage have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Status page id from list_pages, for example 'gytm4qzbx9t6'.","maxLength":40,"title":"Page Id","type":"string"},"state":{"anyOf":[{"enum":["active","unconfirmed","quarantined","all"],"type":"string"},{"type":"null"}],"default":"active","description":"Which subscribers to count: active, unconfirmed, quarantined or all.","title":"State"}},"required":["page_id"],"title":"count_subscribersArguments","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}}}}