Check a shift schedule
check_scheduleUse this when the user already has a work schedule and wants it checked against scheduling rules: "check this schedule", "does anyone have a clopening", "is anyone over 40 hours", "fix this schedule, Sam cannot work Mondays". Takes the shifts with the people on them (typed, or an attached schedule CSV/XLSX grid or list) plus optional staff rules (roles, max hours, unavailable days) and reports each problem it finds: overlapping or double-booked shifts, less rest than the rule between shifts, too many shifts per day or days in a row, over max hours or overtime, wrong role, unavailable times, and shifts below headcount. Returns hours per person and a PDF, Excel and per-employee calendar files of the checked schedule. Does not change the schedule itself (generate_shift_schedule builds a corrected one) and does not give legal advice on scheduling laws.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "check_schedule"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| staff | No | Optional staff rules to check against (roles, max hours, unavailable days), same format as generate_shift_schedule, e.g. [{"name":"Sam","unavailable":["Mon"]}]. | |
| time_zone | No | The business's time zone, IANA or US name, e.g. "America/Chicago", "Pacific". Default America/New_York. Used for daylight-saving weeks and calendar files. | |
| week_start | No | First day of the week to schedule, e.g. "2026-10-05". Default: next Monday. Dates pin calendar files and daylight-saving weeks to real hours. | |
| assignments | No | The schedule to check, one item per shift with its people, e.g. [{"day":"Fri","start":"16:00","end":"23:00","staff":["Sam"]},{"day":"Sat","start":"07:00","end":"15:00","staff":["Sam"]}]. | |
| business_name | No | Optional name printed on the PDF, e.g. "Blue Door Cafe". | |
| schedule_file | No | Optional existing schedule the user attached (CSV or .xlsx): a grid with a Name column and day columns (Mon..Sun) holding "07:00-15:00 cook" or "off", or a list with Employee, Day, Start, End, Role columns, e.g. week41.xlsx. | |
| allow_overtime | No | false (default): nobody is scheduled past overtime_after_hours. true: overtime is allowed when needed for coverage, kept as low as possible, and flagged. | |
| min_rest_hours | No | Minimum hours off between two shifts of the same person (the "clopening" rule), default 10, e.g. 8 or 11. 0 only blocks overlaps. | |
| max_shifts_per_day | No | Default shifts per person per day, default 1. Use 2 to allow split shifts (same-day shifts need no rest gap, only no overlap). | |
| max_consecutive_days | No | Most days in a row anyone may work in this week, default 6, e.g. 5. | |
| overtime_after_hours | No | Weekly hours after which time counts as overtime, default 40 (US federal FLSA workweek), e.g. 40. 0 turns overtime tracking off. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| week | Yes | ||
| notes | Yes | ||
| rules | Yes | ||
| staff | Yes | ||
| valid | Yes | ||
| problems | Yes | ||
| downloads | Yes | ||
| assumptions | Yes | ||
| open_shifts | Yes | ||
| problem_count | Yes | ||
| problems_by_rule | Yes | ||
| open_shifts_not_shown | No |