{"openapi":"3.1.0","info":{"title":"Microsoft 365 Service Health (BYOK) API","version":"0.1.0","description":"Microsoft 365 Service Health (BYOK) lets an AI assistant read your own Microsoft 365 Service Health data through the Microsoft 365 Service Health API with a key you supply (Microsoft Graph access token (an OAuth token valid for about an hour)). Read-only: 6 tools (list_service_health, get_service_health, list_service_issues, get_service_issue, list_message_center, get_message_center_post). The...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-graph-service-health.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-graph-service-health/docs"},"termsOfService":"https://connectorbay.com/byok-graph-service-health/terms"},"servers":[{"url":"https://byok-graph-service-health.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-graph-service-health/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_service_health":{"post":{"operationId":"list_service_health","summary":"List the current health status of each Microsoft 365 service in the tenant (for example Exchange Online: serviceOperatio","description":"List the current health status of each Microsoft 365 service in the tenant (for example Exchange Online: serviceOperational or serviceDegradation). Needs ServiceHealth.Read.All. Use for \"Are any Microsoft 365 services degraded right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_service_healthArguments","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_service_health":{"post":{"operationId":"get_service_health","summary":"Get one service's health status together with its open and recent issues. Needs ServiceHealth.Read.All. Use for \"What is","description":"Get one service's health status together with its open and recent issues. Needs ServiceHealth.Read.All. Use for \"What is the health of Exchange Online and what issues does it have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"Service id from list_service_health, for example 'Exchange' or 'MicrosoftTeams'.","maxLength":200,"title":"Service Id","type":"string"},"expand":{"anyOf":[{"const":"issues","type":"string"},{"type":"null"}],"default":"issues","description":"Include the service's issues (keep 'issues').","title":"Expand"}},"required":["service_id"],"title":"get_service_healthArguments","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_service_issues":{"post":{"operationId":"list_service_issues","summary":"List service health issues (incidents and advisories) for the tenant with service, classification, status, times and imp","description":"List service health issues (incidents and advisories) for the tenant with service, classification, status, times and impact summary. Needs ServiceHealth.Read.All. Use for \"Which Microsoft 365 incidents are open at the moment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"top":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100). Only the first page is returned.","title":"Top"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional OData $filter expression, for example \"isResolved eq false\".","title":"Filter"},"orderby":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Optional sort, for example 'startDateTime desc'.","title":"Orderby"}},"title":"list_service_issuesArguments","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_service_issue":{"post":{"operationId":"get_service_issue","summary":"Get one service health issue by id (for example EX123456) with status, impact description and timing. Needs ServiceHealt","description":"Get one service health issue by id (for example EX123456) with status, impact description and timing. Needs ServiceHealth.Read.All. Use for \"What is the status of Microsoft 365 issue EX123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"issue_id":{"description":"Issue id such as 'EX123456'.","maxLength":200,"title":"Issue Id","type":"string"}},"required":["issue_id"],"title":"get_service_issueArguments","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_message_center":{"post":{"operationId":"list_message_center","summary":"List Message center announcements (planned changes, retirements, prevent-or-fix notices) with category, severity, affect","description":"List Message center announcements (planned changes, retirements, prevent-or-fix notices) with category, severity, affected services, dates and action-required date. Needs ServiceMessage.Read.All. Use for \"Which Microsoft 365 changes need action in the next weeks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"top":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100). Only the first page is returned.","title":"Top"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional OData $filter expression, for example \"services/any(s:s eq 'Microsoft Teams')\".","title":"Filter"},"orderby":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Optional sort, for example 'startDateTime desc'.","title":"Orderby"}},"title":"list_message_centerArguments","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_message_center_post":{"post":{"operationId":"get_message_center_post","summary":"Get one Message center announcement by id (for example MC123456) with its dates, severity, affected services and body te","description":"Get one Message center announcement by id (for example MC123456) with its dates, severity, affected services and body text. Needs ServiceMessage.Read.All. Use for \"What does Message center post MC123456 say\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"message_id":{"description":"Message id such as 'MC123456'.","maxLength":200,"title":"Message Id","type":"string"}},"required":["message_id"],"title":"get_message_center_postArguments","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}}}}