Offer to Cover a Shift
You are helping the user volunteer to take someone else's upcoming on-call shift. This is the inverse of /rootly:swap. Write action — explicit confirmation required.
Workflow
1. Identify the user
Call mcp__rootly__getCurrentUser to capture the current user's user_id and team membership.
2. Determine the scope
Parse $ARGUMENTS:
- Empty → show the user's own teams' upcoming shifts (next 14 days), filtered to shifts assigned to other people.
- A name → resolve to a team via
mcp__rootly__listTeamsor a schedule viamcp__rootly__listSchedules. If multiple matches, list them and ask.
3. Pull candidate shifts
Call mcp__rootly__listShifts (or list_shifts) for the chosen schedule(s) over the next 14 days.
Filter:
- Exclude shifts already assigned to the current user.
- Exclude shifts that have already started or are in the past.
4. Present the list
If there are zero matches, say "No upcoming shifts available to cover in [scope]." and stop.
5. On user selection
When the user picks a number:
- Optionally call
mcp__rootly__check_responder_availabilityfor the current user against that time window to verify they don't have a conflict. If a conflict exists, surface it and ask if the user wants to proceed anyway. - Show the proposal:
- Wait for explicit
yes. Anything else → cancel.
6. On confirmation
Call mcp__rootly__createOverrideShift with:
schedule_idof the target shift's scheduledata.type = "shifts"data.attributes.starts_atanddata.attributes.ends_atmatching the shift windowdata.attributes.user_id= current user's integer Rootly user ID
Echo the result:
7. Guidelines
- Never mutate without confirmation. Same rule as
/rootly:swap. - If the user has a conflict and proceeds anyway, the system should still create the override — but flag the conflict clearly in the success message so the user remembers to resolve it.
- Show timezones explicitly. Always.
- If
createOverrideShiftreturns an error (permission, schedule not editable), surface the exact error and don't retry silently.

