# PagerDuty
import ToolInfo from "@/app/_components/tool-info";
import Badges from "@/app/_components/badges";
import TabbedCodeBlock from "@/app/_components/tabbed-code-block";
import TableOfContents from "@/app/_components/table-of-contents";
import ToolFooter from "@/app/_components/tool-footer";
import { Callout } from "nextra/components";
The PagerDuty MCP Server lets agents list and inspect incidents, on-calls, services, teams, users, schedules, log entries, and escalation policies. Follows the Linear-style docs with code snippets in Python and JavaScript.
Arcade supports Classic PagerDuty apps. Select **read-only** access; all tools
in this MCP Server only read data. (Use read/write only if you add custom
write tools.) See [PagerDuty OAuth
functionality](https://developer.pagerduty.com/docs/oauth-functionality).
Configure PagerDuty OAuth in the [PagerDuty auth
provider](/references/auth-providers/pagerduty) before using these tools.
## Available tools
If you need a tool that's not listed, [contact us](mailto:contact@arcade.dev)
or [build your own](/guides/create-tools/tool-basics/build-mcp-server).
- `readOnlyHint` — reads data only - `openWorldHint` — calls PagerDuty's
external API - `destructiveHint` — none of these tools delete data -
`idempotentHint` — repeating the same read call returns the same data
---
## User context
### PagerDuty.WhoAmI
Get the authenticated user's profile plus current on-call info.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
None.
**API calls:** GET `/users/me`, GET `/oncalls`
---
## Incident tools
### PagerDuty.ListIncidents
List incidents with filters (status, urgency, services, teams, time window).
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **status** (`enum`, _optional_) Filter by status.
- **urgency** (`enum`, _optional_) Filter by urgency.
- **service_ids** (`array`, _optional_) Filter by service IDs.
- **team_ids** (`array`, _optional_) Filter by team IDs.
- **since** / **until** (`string`, _optional_) ISO-8601 time range.
- **limit** (`integer`, _optional_) 1-50, default 10.
- **offset** (`integer`, _optional_) Pagination offset.
**API calls:** GET `/incidents`
---
### PagerDuty.GetIncident
Get a single incident by ID.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **incident_id** (`string`, **required**) Incident ID.
**API calls:** GET `/incidents/{id}`
---
### PagerDuty.ListLogEntries
List account log entries (activity feed).
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **since** / **until** (`string`, _optional_) ISO-8601 time range.
- **team_ids** (`array`, _optional_) Filter by team IDs.
- **time_zone** (`string`, _optional_) IANA time zone.
- **is_overview** (`boolean`, _optional_) Compact mode. Default: `true`.
- **limit** (`integer`, _optional_) 1-50. Default: 10.
- **offset** (`integer`, _optional_) Pagination offset.
**API calls:** GET `/log_entries`
---
## Escalation policy tools
### PagerDuty.ListEscalationPolicies
List escalation policies.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **limit** (`integer`, _optional_) 1-50. Default: 10.
- **offset** (`integer`, _optional_) Pagination offset.
**API calls:** GET `/escalation_policies`
---
### PagerDuty.GetEscalationPolicy
Get escalation policy details.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **escalation_policy_id** (`string`, **required**) Escalation policy ID.
**API calls:** GET `/escalation_policies/{id}`
---
## Service tools
### PagerDuty.ListServices
List services (optional name search).
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **query** (`string`, _optional_) Search by name.
- **limit** (`integer`, _optional_) 1-50. Default: 10.
- **offset** (`integer`, _optional_) Pagination offset.
**API calls:** GET `/services`
---
### PagerDuty.GetService
Get service details.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **service_id** (`string`, **required**) Service ID.
**API calls:** GET `/services/{id}`
---
## Schedule tools
### PagerDuty.ListSchedules
List schedules with optional time zone and pagination.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **limit** (`integer`, _optional_) 1-50. Default: 10.
- **offset** (`integer`, _optional_) Pagination offset.
- **time_zone** (`string`, _optional_) IANA time zone.
**API calls:** GET `/schedules`
---
## On-call tools
### PagerDuty.ListOnCalls
List on-call entries with filters (schedule, escalation policy, team, time).
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **schedule_ids** (`array`, _optional_) Filter by schedules.
- **escalation_policy_ids** (`array`, _optional_) Filter by escalation policies.
- **team_ids** (`array`, _optional_) Filter by teams.
- **time_zone** (`string`, _optional_) IANA time zone.
- **since** / **until** (`string`, _optional_) ISO times.
- **limit** (`integer`, _optional_) 1-50. Default: 10.
- **offset** (`integer`, _optional_) Pagination offset.
**API calls:** GET `/oncalls`
---
## User tools
### PagerDuty.ListUsers
List users with pagination.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **limit** (`integer`, _optional_) 1-50. Default: 10.
- **offset** (`integer`, _optional_) Pagination offset.
**API calls:** GET `/users`
---
### PagerDuty.SearchUsers
Search users by name/email (fuzzy).
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **query** (`string`, **required**) Name or email fragment.
- **auto_accept_matches** (`boolean`, _optional_) Auto-accept above confidence threshold. Default: `false`.
**API calls:** GET `/users` (fuzzy match locally)
---
## Team tools
### PagerDuty.ListTeams
List teams with pagination.
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **limit** (`integer`, _optional_) 1-50. Default: 10.
- **offset** (`integer`, _optional_) Pagination offset.
**API calls:** GET `/teams`
---
### PagerDuty.GetTeam
Get team details (members, linked services/policies).
- `readOnlyHint: true` — reads data only - `openWorldHint: true` — calls
PagerDuty’s external API - `destructiveHint: false` — no destructive
operations - `idempotentHint: true` — same request returns same data
**Parameters**
- **team_id** (`string`, **required**) Team ID.
**API calls:** GET `/teams/{id}`
---
## Auth
PagerDuty requires OAuth2. Configure the PagerDuty auth provider and request the scopes shown above per tool. Tokens are passed as Bearer auth:
```
Authorization: Bearer
```
See PagerDuty auth docs: [PagerDuty API Authentication](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTYz-authentication).