PagerDuty On-Call — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited PagerDuty On-Call (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
PagerDuty's on-call system manages who receives pages for each service. Schedules define rotation layers (who is on-call when), and escalation policies define what happens if a page isn't acknowledged (Tier 1 → Tier 2 → Tier 3). For MSPs, PagerDuty on-call management typically covers internal SRE/IT rotations and can be configured per-customer if using multi-account setups.
| Tool | Description | Key Parameters |
|---|---|---|
list_oncalls | Who is currently on-call for each schedule | schedule_ids[], user_ids[], escalation_policy_ids[], since, until |
list_schedules | List all on-call schedules | query (name search), team_ids[] |
get_schedule | Get schedule with rotation layers and current on-call | id, since, until |
create_schedule | Create a new on-call schedule | name, time_zone, schedule_layers[] |
update_schedule | Update schedule details or layers | id |
delete_schedule | Delete a schedule | id |
list_schedule_overrides | List temporary overrides | id, since, until |
| Tool | Description | Key Parameters |
|---|---|---|
list_escalation_policies | List all escalation policies | query, team_ids[] |
get_escalation_policy | Get policy details and rules | id |
| Tool | Description |
|---|---|
list_teams | List all teams |
list_team_members | List members of a team |
add_team_member | Add a user to a team |
A PagerDuty schedule is composed of:
Tier 1: Primary on-call responder (5 min to ack)
↓ (if not acknowledged)
Tier 2: Secondary responder or team lead (10 min to ack)
↓ (if not acknowledged)
Tier 3: Engineering manager
↓ (if not acknowledged)
Tier 4: Repeat (or broadcast to whole team)Each tier targets either a schedule (on-call rotation) or specific users. The escalation timeout is configurable per tier.
| Field | Description |
|---|---|
start | When this layer starts |
rotation_type | daily / weekly / custom |
rotation_turn_length_seconds | How long each person is on-call |
users[] | Ordered list of responders in rotation |
restrictions[] | Active time windows for this layer |
list_oncalls with no filters to see all current on-call entriesschedule_ids[] or escalation_policy_ids[] to narrow to a specific service teamuser (who is on-call), schedule, and escalation_policy for each entrystart and end timestamps show when their shift endsget_schedule with id and since (now) / until (next 2 weeks)final_schedule.rendered_schedule_entries — the computed on-call assignmentsWhen someone is unavailable during their shift:
list_schedulesupdate_schedule or use the PagerDuty API directly:user: the covering responderstart / end: the override periodlist_schedule_overrides on the schedule IDBefore handing off to the incoming on-call:
list_oncalls to confirm the current and incoming responderslist_incidents with statuses[]=triggered&statuses[]=acknowledged to find open incidentslist_incident_notes to capture the current investigation statelist_escalation_policies to find the policy for the affected serviceget_escalation_policy with the IDWhen a rotation has a coverage gap (no one assigned):
list_schedule_overrides to see existing overrides during the gapget_schedule for the gap period| Field | Description |
|---|---|
escalation_policy.id | The escalation policy this on-call is part of |
schedule.id | The schedule driving this on-call entry |
user.id / user.name | The on-call responder |
start | When this person's on-call period started |
end | When their on-call period ends |
escalation_level | Which tier (1 = primary, 2 = secondary) |
| Error | Cause | Resolution |
|---|---|---|
| Schedule not found | Invalid schedule ID | List schedules with list_schedules to find valid IDs |
| User not in account | Invalid user ID for override | List users with list_users |
| Override conflict | Overlapping override exists | Check with list_schedule_overrides first |
| 401 Unauthorized | Wrong auth format | Use Token token=<key> not Bearer |
list_oncalls to confirm the right person is on-call~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.