Opsgenie shuts down April 2027 - migrate to Pagerly in one click
PagerlyPagerly

Developer docs

MCP server

Connect Claude, Cursor or any MCP client to Pagerly. An agent can look up who is on call, manage rotations and overrides, declare and update incidents, and drive your status page.

Pagerly ships a remote Model Context Protocol server. Point any MCP client at one URL, sign in with your Pagerly login, and the agent discovers 41 tools.

Endpoint https://api.pagerly.io/mcp
Transport Streamable HTTP (JSON-RPC 2.0 over POST)
Sign-in OAuth 2.1 with PKCE — no API key, no client ID to paste
Scopes mcp:read, mcp:write, mcp:admin
Tools 41, listed below and at https://api.pagerly.io/mcp/tools

Connect a client

Claude Code

claude mcp add --transport http pagerly https://api.pagerly.io/mcp

Then type /mcp inside Claude Code to sign in.

Claude Desktop and claude.ai — Settings → Connectors → Add custom connector → paste the endpoint. Sign in with your Pagerly login when the browser tab opens.

Cursor — add to .cursor/mcp.json:

{ "mcpServers": { "pagerly": { "url": "https://api.pagerly.io/mcp" } } }

Any other client — give it the URL. The first call answers 401 with a WWW-Authenticate header that points at the OAuth discovery documents, and a compliant client takes it from there.

How sign-in works

  1. Your client registers itself with Pagerly (dynamic client registration — nothing to configure).
  2. It opens a browser tab to Pagerly, where you sign in with your dashboard login and approve the connection.
  3. Pagerly hands back a short-lived access token and a refresh token. The client refreshes silently.
  4. Every call runs as you, in your workspace. Tools that need an org admin or a team admin check exactly as the dashboard does — see Permissions.

Discovery documents, if your client asks: /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource on api.pagerly.io.

Scopes

A call needs the right scope on the token and the right role for the person. Scopes are what the consent screen hands the agent.

Scope Lets the agent call Granted to
mcp:read every get_* and list_* tool, incident stats, alert-noise analysis anyone who approves
mcp:write every other tool except the four admin tools anyone who approves
mcp:admin create_team, delete_team, upsert_user, delete_user org admins only — and only if they tick “Allow admin actions” when approving

So an org admin can connect an agent with plain read/write, and that agent cannot delete a team however senior the admin is. If a tool needs a scope the connection wasn’t granted, the agent gets ERROR: insufficient_scope … explaining how to reconnect.

Tool reference

* marks a required argument. W writes to your workspace. P is publicly visible on your status page. G needs a team admin on teams that have an access list. A needs the mcp:admin scope and an org admin.

Every team-scoped tool takes either team_name (case-insensitive) or team_id; team_id wins.

Who is on call

Tool Arguments What it does
pagerly_get_oncall team_name Who is on call right now, across every schedule or for one team.
pagerly_get_schedule team_name, team_id Current and upcoming rotation with overrides already applied.
pagerly_get_rotation team_name, team_id The rotation definition: roster order, handover frequency, day, time, timezone.
pagerly_get_overrides team_name, team_id Overrides currently configured on a team.

Teams and rotations

Tool Arguments What it does
pagerly_get_account_info Workspace name, team count, subscription status, connected integrations.
pagerly_get_teams include_deleted, name_filter Every team with current on-call, timezone, channel, reminder, linked external schedule.
pagerly_get_team team_name, team_id One team in full, including overrides and reminder config.
pagerly_create_team W A name*, users*, frequency*, timezone*, day, time, start_date, slack_channel New team with a round-robin rotation in the order given.
pagerly_update_team W G team_name, team_id, new_name, timezone, slack_channel, manager_id, automated_reply, custom_slack_message, daily_msg_time, jira_board, pagerduty_id, update_slack_topic, show_change_notification Team settings only; omitted fields are untouched.
pagerly_update_schedule W G team_name, team_id, frequency, day, time, timezone, start_date Handover timing; omitted fields are untouched.
pagerly_update_rotation_users W G team_name, team_id, users* Replace the roster. Order given is on-call order.
pagerly_add_rotation_user W G team_name, team_id, user_id*, position Add one person without disturbing the order.
pagerly_remove_rotation_user W G team_name, team_id, user_id* Remove one person. The last person cannot be removed.
pagerly_set_permanent_user W G team_name, team_id, user_id* Move someone to the front so they hold the current slot.
pagerly_set_user_group W G team_name, team_id, user_group, enabled Drive who is paged from a Slack user group’s membership.
pagerly_delete_team W A team_name, team_id, confirm* Soft-delete. Requires confirm=true. Recoverable.

Overrides and cover

Tool Arguments What it does
pagerly_create_override W G team_name, team_id, user_id*, start*, end* One person covers a window, replacing whoever the rotation would put on call.
pagerly_delete_override W G team_name, team_id, start*, user_id Remove an override.
pagerly_swap_shifts W G team_name, team_id, user_one*, user_one_start*, user_one_end*, user_two*, user_two_start*, user_two_end* Two people trade windows.
pagerly_set_reminder W G team_name, team_id, type*, day, time, timezone, message_template, target, channel_list Shift reminder: Daily, Weekly, Custom or Every Rotation.
pagerly_remove_reminder W G team_name, team_id Remove the shift reminder.

Incidents

Tool Arguments What it does
pagerly_list_incidents team_name, team_id, status, severity, unresolved_only, days, search, limit Individual incidents with title, severity, status, timestamps.
pagerly_get_incident incident_id* One incident in full: responders, timeline, services, Slack thread, AI summaries.
pagerly_create_incident W title*, description, severity, service_id Declare an incident: Slack channel, severity P1–P4, commander.
pagerly_update_incident W incident_id*, status, severity Change status or severity.
pagerly_get_ai_investigation incident_id*, service_id, run_new Fetch or trigger the SRE AI investigation.
pagerly_incident_stats days MTTR, severity and status distributions, recurring root-cause themes.
pagerly_alert_noise_analysis days Alert volume, incident conversion ratio, noisiest integrations, off-hours page %.

Action items

Tool Arguments What it does
pagerly_list_action_items incident_id, assignee_email, status, open_only Follow-ups, filterable by incident, assignee, status.
pagerly_create_action_item W title*, incident_id, description, assignee_email, due_date, status New follow-up, optionally linked to an incident.
pagerly_update_action_item W action_item_id*, title, description, assignee_email, due_date, status Change status, reassign, edit.

Status page

Tool Arguments What it does
pagerly_get_statuspage Page name, public URL, every component with its status.
pagerly_list_statuspage_components status_filter Components with status and grouping.
pagerly_list_statuspage_incidents unresolved_only, impact, search, limit Published incidents, newest first.
pagerly_get_statuspage_incident incident_id* One published incident with its full timeline.
pagerly_update_statuspage_component W P component_name*, status* Change a component’s public status.
pagerly_create_statuspage_incident W P title*, message, impact, status Publish an incident to the public page.

User directory

Tool Arguments What it does
pagerly_list_users search, role, missing_phone_only Everyone Pagerly can page: email, phone, country code, role.
pagerly_get_user email* One person, including the number Pagerly would dial.
pagerly_upsert_user W A email*, name, phone_number, country_code, role Create or update; omitted fields are untouched.
pagerly_delete_user W A email* Remove from the directory. Does not touch rotation rosters.

Updated 11 September 2026

Put your on-call where your team already is.

Install in two minutes. Import your existing schedule. Page someone tonight.