PagerDuty Incident Management
Overview
Incidents are the core resource in PagerDuty — created automatically from alert rules, event orchestrations, or manually by responders. They represent an active service disruption that requires acknowledgment and resolution. For MSPs, PagerDuty incidents typically represent internal infrastructure issues or customer-impacting events routed from monitoring integrations (Datadog, CloudWatch, Nagios, etc.).
PagerDuty has 14 MCP tools for incident management — more than any other domain.
Anti-triggers
"Incident" names three different objects across this marketplace, and the
routing test is what the operator does next: page a responder (this
skill), approve a remediation on a compromised endpoint, or answer a
customer under an SLA clock.
- A confirmed security incident — malware, intrusion, a host to
contain. That object carries a SOC-recommended remediation to approve,
not a responder to page; use
huntress-incidents, or
sentinelone-alerts for raw EDR detections.
- A customer ticket typed "Incident" — ITIL ticket classification
inside a PSA or helpdesk, where the deliverable is an SLA-timed
response and a billable time entry rather than a page; use
freshdesk-ticketing, halopsa-tickets, connectwise-psa-tickets,
or autotask-tickets.
- A Rootly incident — a different vendor with a different lifecycle
(
detected → in_triage → mitigated → resolved → closed, not
triggered → acknowledged → resolved); use rootly-incidents.
- Who would be paged, rather than what fired — schedules, escalation
policies, and overrides are
pagerduty-oncall.
- The raw monitoring signal itself — dedup keys, grouping modes, and
Events API payloads are
pagerduty-alerts.
- A monitoring or uptime incident — an incident opened by a failing
health check and published to a status page never enters a PagerDuty
escalation policy; use
betterstack-incidents.
MCP Tools
Core Incident Tools
| Tool |
Description |
Key Parameters |
list_incidents |
List incidents with filters |
statuses[], urgencies[], service_ids[], team_ids[], since, until |
get_incident |
Get full incident details |
id (required) |
create_incident |
Create a new incident |
title, service.id, urgency, body.details |
update_incident |
Update incident fields |
id, status, priority, urgency, title, assignments[] |
merge_incidents |
Merge duplicate incidents |
id (target), source_incidents[] |
snooze_incident |
Snooze for a duration |
id, duration (seconds) |
manage_incidents |
Bulk update multiple incidents |
incidents[] with individual update payloads |
Investigation Tools
| Tool |
Description |
Key Parameters |
list_incident_alerts |
Alerts that triggered this incident |
id |
list_incident_notes |
Comments and notes on the incident |
id |
create_incident_note |
Add a note to an incident |
id, note.content |
list_incident_log_entries |
Full audit trail of events |
id, include[] |
list_past_incidents |
Find historically similar incidents |
id (finds similar to this incident) |
Custom Fields
| Tool |
Description |
get_incident_field_values |
Read custom field values |
set_incident_field_values |
Write custom field values |
Key Concepts
Incident Lifecycle
┌───────────┐ Alert fires ┌──────────────┐ Responder acts ┌───────────┐
│ triggered │ ──────────────> │ acknowledged │ ──────────────────> │ resolved │
└───────────┘ └──────────────┘ └───────────┘
│
│ Nobody acks within escalation timeout
▼
[Escalates to next layer in escalation policy]
| Status |
Description |
triggered |
Alert fired; awaiting acknowledgment |
acknowledged |
Responder is working on it; escalation paused |
resolved |
Incident is over; service restored |
Urgency Levels
| Urgency |
Description |
Notification Behavior |
high |
Critical service impact; requires immediate response |
Phone, SMS, push |
low |
Non-critical; informational or degraded state |
Email, push only |
Priority
Priorities are account-configured (P1–P5 is common). Priority is separate from urgency:
- Urgency — controls notification escalation behavior
- Priority — business classification of impact severity
Alerts vs. Incidents
- Alert — Raw signal from a monitoring integration (many per incident)
- Incident — The grouped, actionable work item (one or more alerts)
list_incident_alerts shows you which monitoring signals triggered an incident.
Field Reference
| Field |
Type |
Description |
id |
string |
Unique incident ID |
incident_number |
integer |
Human-readable number (#342) |
title |
string |
Short summary of the incident |
status |
string |
triggered / acknowledged / resolved |
urgency |
string |
high / low |
priority |
object |
Account-configured priority (P1–P5) |
service |
object |
The service this incident belongs to |
assignments |
array |
Responders currently assigned |
escalation_policy |
object |
Escalation policy in effect |
created_at |
datetime |
When the incident was created |
resolved_at |
datetime |
When it was resolved (null if open) |
body.details |
string |
Incident description/details |
alert_counts.triggered |
integer |
Number of triggered alerts |
Common Workflows
Triage Open Incidents
- Call
list_incidents with statuses[]=triggered&statuses[]=acknowledged, sorted by created_at desc
- Group by urgency:
high urgency first
- For each critical incident, call
get_incident for full details
- Call
list_incident_alerts to understand the triggering signal
- Call
list_past_incidents on the incident ID to find similar historical events
- Add acknowledgment note via
create_incident_note with your investigation steps
Investigate a Triggered Incident
- Call
get_incident to get full details (service, escalation policy, assignments)
- Call
list_incident_alerts to see what monitoring signals fired
- Call
list_past_incidents — this uses AI to find similar past incidents and their resolutions
- Call
list_incident_log_entries for the full audit trail of notifications and escalations
- Acknowledge via
update_incident with status=acknowledged
Bulk Resolve After Maintenance
After a maintenance window resolves multiple incidents:
- Call
list_incidents with statuses[]=triggered&statuses[]=acknowledged filtered to the affected service
- Call
manage_incidents with all incident IDs and status=resolved
- Add a resolution note to each with
create_incident_note
Cross-Vendor PSA Ticket Correlation
PagerDuty incidents often need to be tracked in a PSA for billing/SLA reporting:
- When a high-urgency PagerDuty incident is created, create a corresponding PSA ticket
- Store the PagerDuty incident number (
#342) in the PSA ticket body for cross-reference
- Map PagerDuty urgency → PSA priority:
high → Critical/High, low → Medium/Low
- When the PagerDuty incident resolves, update the PSA ticket with the resolution timestamp
- Use
list_incident_log_entries to extract total response time for SLA tracking
Merge Duplicate Incidents
When the same root cause fires multiple incidents:
- Identify the primary incident (earliest or highest urgency)
- Call
merge_incidents with the primary incident id and the IDs of the duplicates in source_incidents[]
- PagerDuty merges all alerts and log entries into the primary incident
- The secondary incidents are automatically resolved
Error Handling
| Error |
HTTP Code |
Resolution |
| Invalid token |
401 |
Use Token token=<key> format — NOT Bearer |
| Incident not found |
404 |
Verify ID; use list_incidents to find valid IDs |
| Service not found |
404 |
Verify service ID with list_services |
| Status conflict |
409 |
Incident may already be resolved; check current status |
| Rate limited |
429 |
Back off 60 seconds; PagerDuty limits 900 req/min |
Best Practices
- Use
list_past_incidents — PagerDuty's AI similarity search often surfaces the exact runbook needed
- Filter by service and team — Always scope incident queries to relevant services to avoid noise
- Acknowledge before investigating — Stops escalation clock while you triage
- Add notes as you go —
create_incident_note builds a shared investigation timeline
- Merge duplicates immediately — Reduces responder confusion during active incidents
- Use
since/until for reports — Unbounded queries on large accounts are slow
Related Skills
1---2name: pagerduty-incidents3description: PagerDuty incident lifecycle (triggered/acknowledged/resolved), urgency vs. priority, alerts-to-incident grouping, the 14 incident MCP tools, incident fields, notes, log entries, past-incident similarity search, merge and snooze semantics, and cross-vendor PSA ticket correlation for MSPs.4---56# PagerDuty Incident Management78## Overview910Incidents are the core resource in PagerDuty — created automatically from alert rules, event orchestrations, or manually by responders. They represent an active service disruption that requires acknowledgment and resolution. For MSPs, PagerDuty incidents typically represent internal infrastructure issues or customer-impacting events routed from monitoring integrations (Datadog, CloudWatch, Nagios, etc.).1112PagerDuty has 14 MCP tools for incident management — more than any other domain.1314## Anti-triggers1516"Incident" names three different objects across this marketplace, and the17routing test is what the operator does next: page a responder (this18skill), approve a remediation on a compromised endpoint, or answer a19customer under an SLA clock.2021- **A confirmed security incident** — malware, intrusion, a host to22 contain. That object carries a SOC-recommended remediation to approve,23 not a responder to page; use `huntress-incidents`, or24 `sentinelone-alerts` for raw EDR detections.25- **A customer ticket typed "Incident"** — ITIL ticket classification26 inside a PSA or helpdesk, where the deliverable is an SLA-timed27 response and a billable time entry rather than a page; use28 `freshdesk-ticketing`, `halopsa-tickets`, `connectwise-psa-tickets`,29 or `autotask-tickets`.30- **A Rootly incident** — a different vendor with a different lifecycle31 (`detected → in_triage → mitigated → resolved → closed`, not32 `triggered → acknowledged → resolved`); use `rootly-incidents`.33- **Who would be paged, rather than what fired** — schedules, escalation34 policies, and overrides are `pagerduty-oncall`.35- **The raw monitoring signal itself** — dedup keys, grouping modes, and36 Events API payloads are `pagerduty-alerts`.37- **A monitoring or uptime incident** — an incident opened by a failing38 health check and published to a status page never enters a PagerDuty39 escalation policy; use `betterstack-incidents`.4041## MCP Tools4243### Core Incident Tools4445| Tool | Description | Key Parameters |46|------|-------------|----------------|47| `list_incidents` | List incidents with filters | `statuses[]`, `urgencies[]`, `service_ids[]`, `team_ids[]`, `since`, `until` |48| `get_incident` | Get full incident details | `id` (required) |49| `create_incident` | Create a new incident | `title`, `service.id`, `urgency`, `body.details` |50| `update_incident` | Update incident fields | `id`, `status`, `priority`, `urgency`, `title`, `assignments[]` |51| `merge_incidents` | Merge duplicate incidents | `id` (target), `source_incidents[]` |52| `snooze_incident` | Snooze for a duration | `id`, `duration` (seconds) |53| `manage_incidents` | Bulk update multiple incidents | `incidents[]` with individual update payloads |5455### Investigation Tools5657| Tool | Description | Key Parameters |58|------|-------------|----------------|59| `list_incident_alerts` | Alerts that triggered this incident | `id` |60| `list_incident_notes` | Comments and notes on the incident | `id` |61| `create_incident_note` | Add a note to an incident | `id`, `note.content` |62| `list_incident_log_entries` | Full audit trail of events | `id`, `include[]` |63| `list_past_incidents` | Find historically similar incidents | `id` (finds similar to this incident) |6465### Custom Fields6667| Tool | Description |68|------|-------------|69| `get_incident_field_values` | Read custom field values |70| `set_incident_field_values` | Write custom field values |7172## Key Concepts7374### Incident Lifecycle7576```77┌───────────┐ Alert fires ┌──────────────┐ Responder acts ┌───────────┐78│ triggered │ ──────────────> │ acknowledged │ ──────────────────> │ resolved │79└───────────┘ └──────────────┘ └───────────┘80 │81 │ Nobody acks within escalation timeout82 ▼83 [Escalates to next layer in escalation policy]84```8586| Status | Description |87|--------|-------------|88| `triggered` | Alert fired; awaiting acknowledgment |89| `acknowledged` | Responder is working on it; escalation paused |90| `resolved` | Incident is over; service restored |9192### Urgency Levels9394| Urgency | Description | Notification Behavior |95|---------|-------------|----------------------|96| `high` | Critical service impact; requires immediate response | Phone, SMS, push |97| `low` | Non-critical; informational or degraded state | Email, push only |9899### Priority100101Priorities are account-configured (P1–P5 is common). Priority is separate from urgency:102- **Urgency** — controls notification escalation behavior103- **Priority** — business classification of impact severity104105### Alerts vs. Incidents106107- **Alert** — Raw signal from a monitoring integration (many per incident)108- **Incident** — The grouped, actionable work item (one or more alerts)109110`list_incident_alerts` shows you which monitoring signals triggered an incident.111112## Field Reference113114| Field | Type | Description |115|-------|------|-------------|116| `id` | string | Unique incident ID |117| `incident_number` | integer | Human-readable number (#342) |118| `title` | string | Short summary of the incident |119| `status` | string | triggered / acknowledged / resolved |120| `urgency` | string | high / low |121| `priority` | object | Account-configured priority (P1–P5) |122| `service` | object | The service this incident belongs to |123| `assignments` | array | Responders currently assigned |124| `escalation_policy` | object | Escalation policy in effect |125| `created_at` | datetime | When the incident was created |126| `resolved_at` | datetime | When it was resolved (null if open) |127| `body.details` | string | Incident description/details |128| `alert_counts.triggered` | integer | Number of triggered alerts |129130## Common Workflows131132### Triage Open Incidents1331341. Call `list_incidents` with `statuses[]=triggered&statuses[]=acknowledged`, sorted by created_at desc1352. Group by urgency: `high` urgency first1363. For each critical incident, call `get_incident` for full details1374. Call `list_incident_alerts` to understand the triggering signal1385. Call `list_past_incidents` on the incident ID to find similar historical events1396. Add acknowledgment note via `create_incident_note` with your investigation steps140141### Investigate a Triggered Incident1421431. Call `get_incident` to get full details (service, escalation policy, assignments)1442. Call `list_incident_alerts` to see what monitoring signals fired1453. Call `list_past_incidents` — this uses AI to find similar past incidents and their resolutions1464. Call `list_incident_log_entries` for the full audit trail of notifications and escalations1475. Acknowledge via `update_incident` with `status=acknowledged`148149### Bulk Resolve After Maintenance150151After a maintenance window resolves multiple incidents:1521. Call `list_incidents` with `statuses[]=triggered&statuses[]=acknowledged` filtered to the affected service1532. Call `manage_incidents` with all incident IDs and `status=resolved`1543. Add a resolution note to each with `create_incident_note`155156### Cross-Vendor PSA Ticket Correlation157158PagerDuty incidents often need to be tracked in a PSA for billing/SLA reporting:1591601. When a high-urgency PagerDuty incident is created, create a corresponding PSA ticket1612. Store the PagerDuty incident number (`#342`) in the PSA ticket body for cross-reference1623. Map PagerDuty urgency → PSA priority: `high` → Critical/High, `low` → Medium/Low1634. When the PagerDuty incident resolves, update the PSA ticket with the resolution timestamp1645. Use `list_incident_log_entries` to extract total response time for SLA tracking165166### Merge Duplicate Incidents167168When the same root cause fires multiple incidents:1691701. Identify the primary incident (earliest or highest urgency)1712. Call `merge_incidents` with the primary incident `id` and the IDs of the duplicates in `source_incidents[]`1723. PagerDuty merges all alerts and log entries into the primary incident1734. The secondary incidents are automatically resolved174175## Error Handling176177| Error | HTTP Code | Resolution |178|-------|-----------|------------|179| Invalid token | 401 | Use `Token token=<key>` format — NOT `Bearer` |180| Incident not found | 404 | Verify ID; use `list_incidents` to find valid IDs |181| Service not found | 404 | Verify service ID with `list_services` |182| Status conflict | 409 | Incident may already be resolved; check current status |183| Rate limited | 429 | Back off 60 seconds; PagerDuty limits 900 req/min |184185## Best Practices1861871. **Use `list_past_incidents`** — PagerDuty's AI similarity search often surfaces the exact runbook needed1882. **Filter by service and team** — Always scope incident queries to relevant services to avoid noise1893. **Acknowledge before investigating** — Stops escalation clock while you triage1904. **Add notes as you go** — `create_incident_note` builds a shared investigation timeline1915. **Merge duplicates immediately** — Reduces responder confusion during active incidents1926. **Use `since`/`until` for reports** — Unbounded queries on large accounts are slow193194## Related Skills195196- [On-Call Management](../oncall/SKILL.md) — Who is on-call, escalation policies, overrides197- [API Patterns](../api-patterns/SKILL.md) — Token format, 66-tool reference, pagination