{"openapi":"3.1.0","info":{"title":"Sentry Monitors (BYOK) API","version":"0.1.0","description":"Sentry Monitors (BYOK) lets an AI assistant read your own Sentry Monitors data through the Sentry Monitors API with a key you supply (auth token (alerts:read and project:read scopes)). Read-only: 7 tools (list_cron_monitors, get_cron_monitor, list_cron_checkins, list_alert_monitors, get_alert_monitor, list_alert_workflows, get_alert_workflow). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sentry-monitors.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sentry-monitors/docs"},"termsOfService":"https://connectorbay.com/byok-sentry-monitors/terms"},"servers":[{"url":"https://byok-sentry-monitors.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sentry-monitors/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_cron_monitors":{"post":{"operationId":"list_cron_monitors","summary":"List cron monitors with status (ok, error, missed_checkin, timeout, disabled), schedule, margins, thresholds, project an","description":"List cron monitors with status (ok, error, missed_checkin, timeout, disabled), schedule, margins, thresholds, project and per-environment last and next check-in. Returns the first page only. Use for \"Which Sentry cron monitors are failing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"description":"Organization slug (the short name in your Sentry URL) or numeric ID, for example 'acme'.","maxLength":100,"title":"Organization","type":"string"},"project":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only monitors of this project id or slug (-1 for all projects).","title":"Project"},"environment":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only monitors with this environment name.","title":"Environment"}},"required":["organization"],"title":"list_cron_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_cron_monitor":{"post":{"operationId":"get_cron_monitor","summary":"Get one cron monitor by slug or id: status, schedule, thresholds, project and environments. Use for \"Show the Sentry cro","description":"Get one cron monitor by slug or id: status, schedule, thresholds, project and environments. Use for \"Show the Sentry cron monitor nightly-backup\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"description":"Organization slug (the short name in your Sentry URL) or numeric ID, for example 'acme'.","maxLength":100,"title":"Organization","type":"string"},"monitor":{"description":"Cron monitor slug or numeric id from list_cron_monitors.","maxLength":100,"title":"Monitor","type":"string"},"environment":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this environment name.","title":"Environment"}},"required":["organization","monitor"],"title":"get_cron_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/list_cron_checkins":{"post":{"operationId":"list_cron_checkins","summary":"List recent check-ins of a cron monitor: status (ok, error, in_progress, missed, timeout), environment, duration in mill","description":"List recent check-ins of a cron monitor: status (ok, error, in_progress, missed, timeout), environment, duration in milliseconds and expected time. Returns the first page only. Use for \"Did the Sentry nightly-backup cron run last night\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"description":"Organization slug (the short name in your Sentry URL) or numeric ID, for example 'acme'.","maxLength":100,"title":"Organization","type":"string"},"monitor":{"description":"Cron monitor slug or numeric id from list_cron_monitors.","maxLength":100,"title":"Monitor","type":"string"}},"required":["organization","monitor"],"title":"list_cron_checkinsArguments","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_monitors":{"post":{"operationId":"list_alert_monitors","summary":"List alert monitors (detectors) such as error, metric_issue and issue_stream monitors with name, type, enabled flag, pro","description":"List alert monitors (detectors) such as error, metric_issue and issue_stream monitors with name, type, enabled flag, project and linked workflow ids. Owners are left out. Returns the first page only. Use for \"Which Sentry alert monitors are enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"description":"Organization slug (the short name in your Sentry URL) or numeric ID, for example 'acme'.","maxLength":100,"title":"Organization","type":"string"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text over name and type, for example 'name:checkout' or 'type:error'.","title":"Query"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for enabled monitors only, false for disabled ones.","title":"Enabled"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Monitors per page (1 to 100).","title":"Per Page"}},"required":["organization"],"title":"list_alert_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_alert_monitor":{"post":{"operationId":"get_alert_monitor","summary":"Get one alert monitor (detector) by id: name, type, enabled flag, project, description and linked workflow ids. Use for ","description":"Get one alert monitor (detector) by id: name, type, enabled flag, project, description and linked workflow ids. Use for \"Show Sentry alert monitor d1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"description":"Organization slug (the short name in your Sentry URL) or numeric ID, for example 'acme'.","maxLength":100,"title":"Organization","type":"string"},"detector_id":{"description":"Alert monitor id from list_alert_monitors.","maxLength":40,"title":"Detector Id","type":"string"}},"required":["organization","detector_id"],"title":"get_alert_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/list_alert_workflows":{"post":{"operationId":"list_alert_workflows","summary":"List alert workflows (the notification rules attached to monitors) with name, enabled flag, environment, linked monitor ","description":"List alert workflows (the notification rules attached to monitors) with name, enabled flag, environment, linked monitor ids and last trigger time. Returns the first page only. Use for \"Which Sentry alerts have triggered recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"description":"Organization slug (the short name in your Sentry URL) or numeric ID, for example 'acme'.","maxLength":100,"title":"Organization","type":"string"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text over alert names.","title":"Query"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Alerts per page (1 to 100).","title":"Per Page"}},"required":["organization"],"title":"list_alert_workflowsArguments","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_alert_workflow":{"post":{"operationId":"get_alert_workflow","summary":"Get one alert workflow by id: name, enabled flag, environment, linked monitors and last trigger time. Use for \"Show Sent","description":"Get one alert workflow by id: name, enabled flag, environment, linked monitors and last trigger time. Use for \"Show Sentry alert workflow w1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"description":"Organization slug (the short name in your Sentry URL) or numeric ID, for example 'acme'.","maxLength":100,"title":"Organization","type":"string"},"workflow_id":{"description":"Workflow id from list_alert_workflows.","maxLength":40,"title":"Workflow Id","type":"string"}},"required":["organization","workflow_id"],"title":"get_alert_workflowArguments","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}}}}