{"openapi":"3.1.0","info":{"title":"Phare (BYOK) API","version":"0.1.0","description":"Phare (BYOK) lets an AI assistant read your own Phare data through the Phare API with a key you supply (project-scoped API key with read access (organization-scoped keys also need a project header, which this connector does not send)). Read-only: 10 tools (list_monitors, get_monitor, get_monitor_report, get_project_report, list_incidents, list_incident_updates, list_maintenance_windows,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-phare.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-phare/docs"},"termsOfService":"https://connectorbay.com/byok-phare/terms"},"servers":[{"url":"https://byok-phare.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-phare/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_monitors":{"post":{"operationId":"list_monitors","summary":"List the uptime monitors of the project with status, protocol, check interval, timeout, regions, tags and last check tim","description":"List the uptime monitors of the project with status, protocol, check interval, timeout, regions, tags and last check time. Use for \"Which of my Phare monitors are offline right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only monitors that carry this tag.","title":"Tag"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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's full configuration and current status, including request settings and success assertions. Use for \"Sho","description":"Get one monitor's full configuration and current status, including request settings and success assertions. Use for \"Show the settings of Phare monitor 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Numeric ID of the monitor, as returned by list_monitors.","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_report":{"post":{"operationId":"get_monitor_report","summary":"Uptime statistics for one monitor over a time window: availability, downtime, MTTR, MTBF and the incidents in that windo","description":"Uptime statistics for one monitor over a time window: availability, downtime, MTTR, MTBF and the incidents in that window. Use for \"What was the uptime of Phare monitor 12 over the last 30 days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Numeric ID of the monitor, as returned by list_monitors.","title":"Monitor Id","type":"integer"},"window_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the reporting window as an ISO 8601 time, for example 2026-09-01T00:00:00Z (default: 30 days ago). Required when window_end is given.","title":"Window Start"},"window_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the reporting window as an ISO 8601 time (default: now). Required when window_start is given. The window may span up to one year.","title":"Window End"}},"required":["monitor_id"],"title":"get_monitor_reportArguments","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_project_report":{"post":{"operationId":"get_project_report","summary":"Aggregated uptime statistics for all monitors of the project over a time window, with a per-monitor breakdown. Use for \"","description":"Aggregated uptime statistics for all monitors of the project over a time window, with a per-monitor breakdown. Use for \"What was my overall availability across all Phare monitors this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"window_start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the reporting window as an ISO 8601 time, for example 2026-09-01T00:00:00Z (default: 30 days ago). Required when window_end is given.","title":"Window Start"},"window_end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the reporting window as an ISO 8601 time (default: now). Required when window_start is given. The window may span up to one year.","title":"Window End"}},"title":"get_project_reportArguments","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 (automatic and manual) with impact, state, status, start and recovery time, optionally for one monitor or","description":"List incidents (automatic and manual) with impact, state, status, start and recovery time, optionally for one monitor or tag. Use for \"Which incidents did my Phare monitors have recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only incidents of this monitor ID.","title":"Monitor Id"},"tag":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents carrying this tag.","title":"Tag"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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_incident_updates":{"post":{"operationId":"list_incident_updates","summary":"List the published updates of one incident (state, text and publish time), oldest first as returned by the API. Use for ","description":"List the published updates of one incident (state, text and publish time), oldest first as returned by the API. Use for \"What updates were posted on Phare incident 5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"incident_id":{"description":"Numeric ID of the incident, as returned by list_incidents.","title":"Incident Id","type":"integer"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 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":["incident_id"],"title":"list_incident_updatesArguments","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 state, monitoring mode, schedule and the monitors and status pages they cover. Use for \"Ar","description":"List maintenance windows with state, monitoring mode, schedule and the monitors and status pages they cover. Use for \"Are any Phare maintenance windows scheduled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["scheduled","in_progress","completed","cancelled"],"type":"string"},{"type":"null"}],"default":null,"description":"Filter by state: scheduled, in_progress, completed or cancelled.","title":"State"},"monitor_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only windows covering this monitor ID.","title":"Monitor Id"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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 the project's status pages with name, subdomain, custom domain, privacy flag, timeframe and tags. Use for \"Which Ph","description":"List the project's status pages with name, subdomain, custom domain, privacy flag, timeframe and tags. Use for \"Which Phare status pages do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tag":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only status pages carrying this tag.","title":"Tag"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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/get_status_page_current_status":{"post":{"operationId":"get_status_page_current_status","summary":"Current status of one status page: overall impact, availability, component states and active incidents. Use for \"What is","description":"Current status of one status page: overall impact, availability, component states and active incidents. Use for \"What is the current status shown on Phare status page 3\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status_page_id":{"description":"Numeric ID of the status page, as returned by list_status_pages.","title":"Status Page Id","type":"integer"}},"required":["status_page_id"],"title":"get_status_page_current_statusArguments","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 alert rules: which event triggers which integration, with rate limit settings. Use for \"Which events send Phare ale","description":"List alert rules: which event triggers which integration, with rate limit settings. Use for \"Which events send Phare alerts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","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}}}}