Two agents, one limit, one refused.

Incidents integration

PagerDuty, in your agent's hands and under your limits.

Let an agent raise the alarm without letting it raise forty. It opens incidents under a daily ceiling, and resolving one can wait for a person, so an incident does not go quiet on an agent's say-so.

Connect

API key

bound to api.pagerduty.com

What you create

  • An API access key you create
  • Not read-only, because it opens and updates incidents
  1. 01In PagerDuty, open Integrations, API Access Keys, and create a key. Leave Read-only unticked.
  2. 02In Anlyon, open Actions, then Integrations, choose PagerDuty and paste the key.
  3. 03Anlyon checks the key with PagerDuty before storing it. It becomes a secret named PAGERDUTY, bound to api.pagerduty.com.
  4. 04Have a service id and the email of a PagerDuty user ready. Every write names the user it acts as.

Connecting allows nothing by itself. No API returns the credential afterwards, to you, to the console or to an agent, and Anlyon refuses to send it anywhere but api.pagerduty.com.

Operations

Each one is a named tool, off until you switch it on, and Anlyon makes every call with the credential your agent never sees. Reads return what PagerDuty answers and change nothing. Writes count against a limit you set, can wait for a person, and are read back from PagerDuty wherever it allows.

Reads

List incidents

pagerduty-list-incidents

List incidents, newest first, 25 per page: title, status, urgency, service and assignees. Without since/until PagerDuty searches the last month, and date_range all searches every date; filter by up to two statuses (pass triggered and acknowledged for every open incident), a service, an assigned user or an urgency. When the response says more is true, pass offset 25, 50 and so on for the next page.

Get incident

pagerduty-get-incident

Get one incident by its id or incident number: title, status, urgency, service, assignees, acknowledgements, pending actions and alert counts.

List incident notes

pagerduty-list-incident-notes

List the notes on one incident, newest first, with their author and time. PagerDuty returns every note in one response and has no pagination for notes, so a very long notes history is cut at 64 KB.

List incident log entries

pagerduty-list-incident-log-entries

List one incident's log entries (triggered, notified, acknowledged, assigned, annotated, snoozed, resolved and so on), 25 per page. is_overview true keeps only the most important changes. When more is true, pass offset 25, 50 and so on for the next page.

List incident alerts

pagerduty-list-incident-alerts

List the alerts grouped into one incident, 10 per page, including each alert's body and details from the monitoring tool that raised it. Incidents opened by hand have no alerts. When more is true, pass offset 10, 20 and so on for the next page.

List services

pagerduty-list-services

List services, by name, 25 per page: name, status, escalation policy and teams. Use it to find the service_id an incident is opened on. When more is true, pass offset 25, 50 and so on for the next page.

Get service

pagerduty-get-service

Get one service: name, description, status (active, warning, critical, maintenance or disabled), escalation policy, urgency rule and timeouts.

List oncalls

pagerduty-list-oncalls

List who is on call, 25 per page: each entry is a user, the escalation policy and level, the schedule, and the start and end of the shift. Without since/until it shows who is on call now; filter by escalation policy, schedule or user, and earliest true keeps only the next shift per user and level. When more is true, pass offset 25, 50 and so on for the next page.

List escalation policies

pagerduty-list-escalation-policies

List escalation policies, by name, 25 per page, each with its escalation rules and targets and the services that use it. When more is true, pass offset 25, 50 and so on for the next page.

List schedules

pagerduty-list-schedules

List on-call schedules, by name, 25 per page, with their time zone, users and escalation policies. When more is true, pass offset 25, 50 and so on for the next page.

List users

pagerduty-list-users

List users in the account, 25 per page, to find the user id to reassign an incident to: name, email, role, time zone. When more is true, pass offset 25, 50 and so on for the next page.

List maintenance windows

pagerduty-list-maintenance-windows

List maintenance windows, 25 per page: start and end time, description and the services they cover. filter picks past, future, ongoing, open (ongoing or future) or all. When more is true, pass offset 25, 50 and so on for the next page.

Writes

Create incident

pagerduty-create-incident

Open one incident on a service, which notifies whoever is on call for it.

fromservice_idtitle

Read back

Read back by incident id; the title must match.

Acknowledge incident

pagerduty-acknowledge-incident

Acknowledge one incident.

fromincident_id

Read back

Read back from the incident; its status must be acknowledged.

Resolve incident

pagerduty-resolve-incident

Resolve one incident, which stops its notifications.

fromincident_id

Read back

Read back from the incident; its status must be resolved.

Add note

pagerduty-add-note

Add a note to one incident's timeline, visible to everyone who can see the incident (at most 2000 notes per incident).

fromincident_idcontent

Read back

Read back from the incident's notes, newest first; the newest note must be this one, with this text, so a note added by someone else in between makes the read-back fail.

Reassign incident

pagerduty-reassign-incident

Reassign one open incident to one user, replacing its current assignees; PagerDuty notifies the new assignee.

fromincident_iduser_id

Read back

Read back from the incident; its first assignee must be that user.

Change incident urgency

pagerduty-change-incident-urgency

Change one incident's urgency to high or low, which changes how assignees are notified.

fromincident_idurgency

Read back

Read back from the incident; its urgency must match.

Snooze incident

pagerduty-snooze-incident

Snooze one acknowledged incident for a fixed time, after which it returns to triggered and notifies again; PagerDuty refuses to snooze an incident that is not acknowledged.

fromincident_idduration

Read back

Read back from the incident; it must still be acknowledged.

Merge incidents

pagerduty-merge-incidents

Merge one source incident into an open target incident: the target takes the source's alerts and the source is resolved. Only incidents with alerts, or opened by hand, can be merged, and the target must be open.

fromincident_idsource_incident_id

Read back

Read back from the source incident; it must be resolved with the target as its merge reason. Cannot be undone.

Create maintenance window

pagerduty-create-maintenance-window

Create a maintenance window on one service: between start_time and end_time PagerDuty opens no incidents on it, so nobody is paged for it.

fromservice_idstart_timeend_timedescription

Read back

Read back by the window's id; its description and service must match.

End maintenance window

pagerduty-end-maintenance-window

End one maintenance window: PagerDuty deletes a future window and ends an ongoing one now; a window that has already ended cannot be changed.

maintenance_window_id

Acknowledged

Sent once and acknowledged; not read back: a deleted future window is gone but an ended ongoing window stays readable, so no single read-back fits both.

The brake

Suggested limits

  • 20 incidents opened a day
  • 100 incidents acknowledged a day
  • 50 incidents resolved a day
  • 200 notes added a day
  • 50 incidents reassigned a day
  • 50 urgency changes a day
  • 50 incidents snoozed a day
  • 20 incidents merged a day
  • 5 maintenance windows created a day
  • 10 maintenance windows ended a day

Shared by every agent, session and key in the environment. You set the number.

Suggested approvals

  • A person approves resolving an incident
  • A person approves merging incidents
  • A person approves a maintenance window

Installed turned off. The reviewer sees the exact request, and the approved request is the one that runs.

Before you rely on it

  • Opening an incident pages a person. Keep the daily limit low.
  • A status read-back can match a change someone else made in the same moment.

Use it

1. Connect, from a terminal
npm install -g @anlyonhq/cli
anlyon auth login

# Shows where to create the key, then asks for it without echoing
anlyon connections add pagerduty --secret PAGERDUTY

# From a clone of github.com/AnlyonHQ/anlyon-platform:
# see what would be installed, then switch on one operation
anlyon packs plan ./packs/pagerduty
anlyon packs install ./packs/pagerduty --action create-incident --yes
2. Call it from your agent, TypeScript
import { Client } from "@anlyonhq/sdk";

const anlyon = new Client({ apiKey: process.env.ANLYON_AGENT_KEY! });

const { data } = await anlyon.actions.invoke(
  "pagerduty-create-incident",
  {
    "from": "oncall@example.com",
    "service_id": "PWIXJZS",
    "title": "Checkout error rate above 5%"
  },
);

if (data?.pendingApproval) {
  console.log("Waiting for a person", data.approvalId);
} else {
  console.log(data?.status, data?.responseStatus);
}
Or hand it to Claude Code over MCP
# Claude Code. Sign in with the browser, no key to paste.
claude mcp add --transport http anlyon https://api.anlyon.com/mcp

# Then ask in plain words. Each operation you switched on is a tool.

Prefer to click?

The console does all of it: connect, switch operations on, set the limit, and copy the setup for your agent.

Free tier, no credit card. One command if you use Claude or Cursor.

$ claude mcp add anlyon -- npx -y @anlyonhq/mcp-server