# 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).