Skip to content

Add support for v3 schedules API #117

@FrancesCoronel

Description

@FrancesCoronel

Summary

The MCP server currently only supports classic (v2) schedules via the /schedules and /schedules/{id} REST API endpoints. PagerDuty's newer v3 schedules — which use the /v3/schedules/... API family — are completely invisible to the MCP server.

Problem

When a schedule is created using PagerDuty's newer scheduling system (v3), the MCP server cannot:

  • Read the schedule (get_schedule returns 404)
  • List it (list_schedules omits it entirely)
  • Update it (update_schedule fails)
  • Parse escalation policy references to it (the schedule_v3_reference type causes a Pydantic validation error in get_escalation_policy)

This means any organization using v3 schedules cannot manage them through the MCP server at all.

How to reproduce

  1. Create a schedule using PagerDuty's newer scheduling UI (which creates a v3 schedule)
  2. Try to access it via the MCP server's get_schedule tool — returns 404
  3. Try list_schedules — the schedule does not appear
  4. If the schedule is referenced in an escalation policy, get_escalation_policy fails with:
    Input should be 'user_reference' or 'schedule_reference'
    [type=literal_error, input_value='schedule_v3_reference', input_type=str]
    

Expected behavior

The MCP server should support v3 schedules, including:

  • Listing and reading v3 schedules
  • Creating and updating v3 schedules (with their rotations, events, custom shifts, overrides)
  • Properly handling schedule_v3_reference types in escalation policies

Context

  • The v3 schedule API lives at /v3/schedules/... with a different data model (schedules → rotations → events → custom shifts → overrides)
  • PagerDuty's Go client library (go-pagerduty/schedule_v3.go) fully implements the v3 API
  • PagerDuty's Terraform provider already supports v3 schedules via the pagerduty_schedulev2 resource
  • The v3 API appears stable and actively used

Workaround

Currently the only workaround is to recreate the schedule as a classic (v2) schedule, or manage v3 schedules manually through the PagerDuty UI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions