
Get aggregated incident metrics across the account. Filter by date range, urgency, service, or team. Returns MTTA, MTTR, incident counts.
Get aggregated metrics broken down by service. Filter by date range, urgency, service, or team. Returns per-service MTTA, MTTR, incident counts.
List escalation policies with optional filters. Escalation policies define who to notify and in what order. Supports pagination.
Get an escalation policy by ID. Returns full policy details including escalation rules and targets.
Create an escalation policy. Requires name and escalationrules with targets (users/schedules) and delays. Use listusers or list_schedules to find target IDs.
Update an escalation policy. Change name, description, rules, or loop count.
Delete an escalation policy by ID. This is permanent. Ensure no services reference this policy first.
List incidents with optional filters for status, urgency, service, date range. Supports pagination via offset/limit.
Get a specific incident by ID. Returns full incident details including status, assignments, and priority.
Create a new incident. Requires title and serviceid. Use listservices to find valid service IDs. Optionally set urgency, priority, and assignments.
Update an incident. Change status (acknowledge/resolve), urgency, priority, or reassign. Use list_priorities for valid priority IDs.
List notes on an incident. Notes are timestamped comments added by responders during incident lifecycle.
Add a note to an incident. Notes help document incident response activities and findings.
List alerts for an incident. Alerts are the underlying triggers that created or were grouped into the incident.
List log entries for an incident. Shows the timeline of actions taken during incident response.
List priority levels configured in PagerDuty. Priorities are used when creating or updating incidents.
List tags with optional name filter. Tags can be attached to users, teams, and escalation policies for organization.
Create a new tag. Tags help organize users, teams, and escalation policies.
List log entries across the account. Log entries record all actions in PagerDuty (triggers, acknowledgements, escalations, etc.).
List maintenance windows. Maintenance windows temporarily disable incident creation for specified services.
Get a maintenance window by ID. Returns full details including services and time range.
Create a maintenance window. Temporarily disables incident creation for specified services during the time range.
Update a maintenance window. Change time range, description, or services.
Delete a maintenance window by ID. This is permanent and cannot be undone.
List audit records across the account. Tracks changes to all PagerDuty resources for compliance and security review.
List who is currently on-call. Filter by schedule, escalation policy, user, or time range. Use to find current responders.
List on-call schedules with optional name filter. Schedules define who is on-call at any given time. Supports pagination.
Get a schedule by ID with rendered on-call entries. Optionally specify since/until for the rendered time range.
Create an on-call schedule. Requires name, timezone, and schedulelayers. Each layer defines a rotation with users, start time, and turn length.
Update a schedule. Change name, description, time zone, or schedule layers.
Delete a schedule by ID. This is permanent. Ensure no escalation policies reference this schedule first.
List services with optional filters. Services represent applications or components that generate incidents. Supports pagination via offset/limit.
Get a specific service by ID. Returns full service details including escalation policy and alert settings.
Create a new service. Requires name and escalationpolicyid. Use listescalationpolicies to find valid IDs.
Update a service. Change name, description, escalation policy, or alert settings.
Delete a service by ID. This is permanent and cannot be undone. All associated incidents will remain.
List teams with optional name filter. Teams group users for incident assignment and escalation. Supports pagination.
Get a specific team by ID. Returns team details including parent team relationship.
Create a new team. Requires a name. Optionally set description and parent team for nesting.
Update a team. Change name, description, or parent team.
Delete a team by ID. This is permanent. Reassign users and escalation policies before deleting.
List users with optional filters by name, email, or team. Supports pagination via offset/limit.
Get a specific user by ID. Returns full user details including role, teams, and contact methods.
Create a new user. Requires name and email. Optionally set role, time zone, and job title.
Update a user. Change name, email, role, time zone, or other profile fields.
Delete a user by ID. This is permanent. The user must not be on-call or have pending incidents.
Validate PagerDuty credentials by testing API access. Used during credential setup to verify authentication is working correctly.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It's an MCP server that connects your agents to PagerDuty via tools. Your agents can invoke these tools to create and manage incidents, check on-call schedules, update escalation policies, track response metrics, and more.
PagerDuty offers an official MCP server, but you can also use one from a third-party platform, like Merge Agent Handler.
The use cases naturally depend on the agent you've built, but here are a few common ones:
create_incident</code> to open a new PagerDuty incident pre-populated with the alert details, assigns it according to the relevant escalation policy, and posts the incident link to the team's Slack channellist_oncalls</code> to identify the incoming responder, calls <code class="blog_inline-code">list_incidents</code> filtered to open status, and posts a structured summary of active incidents and their current severity to the on-call Slack channelupdate_incident</code> to raise its urgency and calls <code class="blog_inline-code">create_incident_note</code> to log the escalation, ensuring the right team is looped in before the issue compoundslist_incident_log_entries</code> to retrieve the full response timeline and calls <code class="blog_inline-code">get_incident_analytics</code> for MTTA and MTTR metrics, giving the on-call team structured data to kick off a postmortem without manually pulling recordsHere are some of the most commonly used tools:
<code class="blog_inline-code">list_incidents</code> retrieves incidents filterable by status, urgency, service, or team. Good for agents that need a current view of active incidents before taking an action or generating a shift briefing<code class="blog_inline-code">create_incident</code> opens a new incident in PagerDuty with a specified title, service, urgency, and escalation policy. Use this when an agent needs to programmatically trigger incident response from an alert or anomaly detected in another system<code class="blog_inline-code">update_incident</code> modifies an existing incident's status, urgency, or assigned responder. Call this when an agent needs to escalate, acknowledge, or resolve an incident in response to a condition met outside PagerDuty<code class="blog_inline-code">create_incident_note</code> appends a note to an incident's activity timeline. Helpful when an agent needs to log what it observed, what action it took, or what context it gathered from another tool during an active response<code class="blog_inline-code">list_oncalls</code> returns who is currently on call across one or more schedules. Use this when an agent needs to identify the right responder before routing an alert, creating an incident, or sending a notification<code class="blog_inline-code">get_incident_analytics</code> retrieves aggregated response metrics like MTTA and MTTR for a service or team over a time range. Useful for agents generating weekly reliability reports or tracking whether on-call response times are trending in the right directionHere is what distinguishes Merge Agent Handler's PagerDuty MCP server from building your own or relying on a standalone option:
You can take the following steps:
1. Create or log into your Merge Agent Handler account and navigate to Tool Packs (collections of connector tools scoped to a specific use case).
2. Create a new Tool Pack, then find and enable the PagerDuty connector. Choose which tools to include: enable read tools like <code class="blog_inline-code">list_incidents</code> and <code class="blog_inline-code">list_oncalls</code> for monitoring use cases, or add write tools like <code class="blog_inline-code">create_incident</code> and <code class="blog_inline-code">update_incident</code> if your agent needs to open or escalate incidents.
3. Add a Registered User inside the Tool Pack. This is the identity context under which your agent operates. Merge generates a unique MCP URL scoped to this user once it's created.
4. From the Registered User detail page, authenticate PagerDuty by completing the OAuth flow. Merge stores and manages the credentials going forward.
5. Copy the MCP URL from the Tool Pack detail page and generate an API key from Settings. You'll need both to connect your agent.
6. Add the MCP server to your agent or IDE using the MCP URL and API key. Your PagerDuty tools are now accessible through that endpoint.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now