{"openapi":"3.1.0","info":{"title":"incident.io (BYOK) API","version":"0.1.0","description":"incident.io (BYOK) lets an AI assistant read your own incident.io data through the incident.io API with a key you supply (incident.io API key (Settings > API keys; view scopes are enough)). Read-only: 12 tools (list_incidents, get_incident, list_incident_updates, list_severities, list_incident_statuses, list_incident_roles, list_incident_types, list_actions, list_follow_ups, list_users,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-incidentio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-incidentio/docs"},"termsOfService":"https://connectorbay.com/byok-incidentio/terms"},"servers":[{"url":"https://byok-incidentio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-incidentio/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_incidents":{"post":{"operationId":"list_incidents","summary":"List incidents (newest first by default) with reference, name, summary, link, status and category, severity, type and ti","description":"List incidents (newest first by default) with reference, name, summary, link, status and category, severity, type and timestamps. Filter by status category, severity ids or creation date; cursor-paged. Use for \"What incidents are live in incident.io right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 250).","title":"Page Size"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last incident on the previous page (pagination_meta.after); leave out for the first page.","title":"After"},"sort_by":{"anyOf":[{"enum":["created_at_newest_first","created_at_oldest_first"],"type":"string"},{"type":"null"}],"default":"created_at_newest_first","description":"Order of results.","title":"Sort By"},"status_category":{"anyOf":[{"enum":["triage","live","learning","paused","closed","declined","canceled","merged"],"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents whose status is in this category.","title":"Status Category"},"severity_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents with this severity id (see list_severities).","title":"Severity Id"},"created_after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents created on or after this date, for example 2026-10-01.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents created on or before this date, for example 2026-10-15.","title":"Created Before"}},"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/get_incident":{"post":{"operationId":"get_incident","summary":"Get one incident by id with name, summary, status, severity, type, role assignments, timestamps and links. Use for \"Show","description":"Get one incident by id with name, summary, status, severity, type, role assignments, timestamps and links. Use for \"Show the details of incident.io incident 01FCNDV6P870EA6S7TK1DSYDG0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Incident id (the id field from list_incidents).","maxLength":60,"title":"Id","type":"string"}},"required":["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_incident_updates":{"post":{"operationId":"list_incident_updates","summary":"List incident updates (status posts) with message, new status and severity and who posted it, optionally for one inciden","description":"List incident updates (status posts) with message, new status and severity and who posted it, optionally for one incident; cursor-paged. Use for \"What updates were posted on incident 01FCNDV6P870EA6S7TK1DSYDG0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"incident_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only updates of this incident id.","title":"Incident Id"},"page_size":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 250).","title":"Page Size"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last update on the previous page (pagination_meta.after); leave out for the first page.","title":"After"}},"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_severities":{"post":{"operationId":"list_severities","summary":"List the severity levels with name, description and rank. Use for \"What severity levels does incident.io have\".","description":"List the severity levels with name, description and rank. Use for \"What severity levels does incident.io have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_severitiesArguments","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_statuses":{"post":{"operationId":"list_incident_statuses","summary":"List the incident statuses with name, category (triage, live, learning, paused, closed, declined, canceled, merged) and ","description":"List the incident statuses with name, category (triage, live, learning, paused, closed, declined, canceled, merged) and rank. Use for \"What incident statuses are configured in incident.io\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_incident_statusesArguments","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_roles":{"post":{"operationId":"list_incident_roles","summary":"List incident roles (for example lead and reporter) with name, short form, type and instructions. Use for \"Which inciden","description":"List incident roles (for example lead and reporter) with name, short form, type and instructions. Use for \"Which incident roles are defined in incident.io\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_incident_rolesArguments","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_types":{"post":{"operationId":"list_incident_types","summary":"List incident types with name, description, default flag and whether they start in triage. Use for \"Which incident types","description":"List incident types with name, description, default flag and whether they start in triage. Use for \"Which incident types exist in incident.io\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_incident_typesArguments","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_actions":{"post":{"operationId":"list_actions","summary":"List incident actions (tasks) with description, status (outstanding, completed, deleted, not_doing), assignee and comple","description":"List incident actions (tasks) with description, status (outstanding, completed, deleted, not_doing), assignee and completion time, optionally for one incident. Use for \"Which incident actions are still outstanding\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"incident_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only actions of this incident id.","title":"Incident Id"}},"title":"list_actionsArguments","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_follow_ups":{"post":{"operationId":"list_follow_ups","summary":"List follow-ups with title, status, priority, assignee, labels and completion time, optionally for one incident or one a","description":"List follow-ups with title, status, priority, assignee, labels and completion time, optionally for one incident or one assignee team. Use for \"What follow-ups are open after our incidents\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"incident_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only follow-ups of this incident id.","title":"Incident Id"},"assignee_team_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only follow-ups assigned to this team id.","title":"Assignee Team Id"}},"title":"list_follow_upsArguments","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_users":{"post":{"operationId":"list_users","summary":"List users with name, email, role, whether active and Slack id; filter by email; cursor-paged. Use for \"Who has an incid","description":"List users with name, email, role, whether active and Slack id; filter by email; cursor-paged. Use for \"Who has an incident.io account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the user with this email address.","title":"Email"},"include_inactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also list deactivated or not-yet-active users.","title":"Include Inactive"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (1 to 500).","title":"Page Size"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last user on the previous page (pagination_meta.after); leave out for the first page.","title":"After"}},"title":"list_usersArguments","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_schedules":{"post":{"operationId":"list_schedules","summary":"List on-call schedules with name, time zone, team ids, who is on call now and rotations. Upcoming shifts are included on","description":"List on-call schedules with name, time zone, team ids, who is on call now and rotations. Upcoming shifts are included only for page sizes of 25 or less. Use for \"Who is on call in incident.io right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 100).","title":"Page Size"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last schedule on the previous page (pagination_meta.after); leave out for the first page.","title":"After"}},"title":"list_schedulesArguments","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_alerts":{"post":{"operationId":"list_alerts","summary":"List alerts with title, status (firing or resolved), description, source link, tags and times; filter by status or creat","description":"List alerts with title, status (firing or resolved), description, source link, tags and times; filter by status or creation time; cursor-paged. Use for \"Which incident.io alerts are firing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 50).","title":"Page Size"},"after":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last alert on the previous page (pagination_meta.after); leave out for the first page.","title":"After"},"status":{"anyOf":[{"enum":["firing","resolved"],"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts with this status.","title":"Status"},"created_after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts created on or after this date, for example 2026-10-01.","title":"Created After"}},"title":"list_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}}}}