rotaproof.vercel.app
Plans a week of café shifts in the browser with an exact solver, and proves why a week is impossible when it is.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 4 · Act 8 · Transact 0 · Score: Not yet scored
Tool inspector
set_constraint
Adds a scheduling rule, or replaces an existing one when you reuse its id. Rules are the only way the roster changes; assignments are never edited directly, they are derived by solve_roster. Every rule needs kind, label and hardness. A hard rule must hold or the roster is impossible; a soft rule is priced into the objective with weight (default 1) and can be traded off. Fields by kind: coverage — shift, min, optional max, optional skill, optional day (a day index, or omit for every day). max_shifts / min_shifts — staff (or omit for everyone), max / min. one_shift_per_day — staff (or omit for everyone). min_rest — hours, staff optional. max_consecutive_days — max, staff optional. unavailable / must_work — staff, slots as [{day, shift}]. One keeps a person off those slots, the other pins them onto them. time_off — staff, slots, and status: requested | granted | declined. pair / anti_pair — a, b (two staff ids). preference — staff, slots, direction: want | avoid. Always soft. fairness — dimension: total | nights | weekends. Always soft. Adding a hard rule can make the week impossible. That is not an error: solve_roster will return infeasible and name the smallest set of rules that cannot coexist.
Page: /
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
id |
string | no | Reuse an existing id to replace that rule; omit to create one. |
kind |
string | yes | — |
label |
string | yes | How a manager would say this rule out loud. |
hardness |
string | no | Default hard. |
weight |
number | no | Objective weight for a soft rule. Default 1. |
staff |
string | no | A staff id, or omit to apply to everyone. |
a |
string | no | — |
b |
string | no | — |
day |
— | no | Day index, or omit for every day. |
shift |
string | no | — |
skill |
string | no | — |
min |
number | no | — |
max |
number | no | — |
hours |
number | no | — |
direction |
string | no | — |
dimension |
string | no | — |
status |
string | no | — |
slots |
array | no | — |
Raw JSON schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Reuse an existing id to replace that rule; omit to create one."
},
"kind": {
"type": "string",
"enum": [
"coverage",
"max_shifts",
"min_shifts",
"one_shift_per_day",
"min_rest",
"max_consecutive_days",
"unavailable",
"must_work",
"time_off",
"pair",
"anti_pair",
"preference",
"fairness"
]
},
"label": {
"type": "string",
"description": "How a manager would say this rule out loud."
},
"hardness": {
"type": "string",
"enum": [
"hard",
"soft"
],
"description": "Default hard."
},
"weight": {
"type": "number",
"description": "Objective weight for a soft rule. Default 1."
},
"staff": {
"type": "string",
"description": "A staff id, or omit to apply to everyone."
},
"a": {
"type": "string"
},
"b": {
"type": "string"
},
"day": {
"description": "Day index, or omit for every day."
},
"shift": {
"type": "string"
},
"skill": {
"type": "string"
},
"min": {
"type": "number"
},
"max": {
"type": "number"
},
"hours": {
"type": "number"
},
"direction": {
"type": "string",
"enum": [
"want",
"avoid"
]
},
"dimension": {
"type": "string",
"enum": [
"total",
"nights",
"weekends"
]
},
"status": {
"type": "string",
"enum": [
"requested",
"granted",
"declined"
]
},
"slots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"day": {
"type": "integer"
},
"shift": {
"type": "string"
}
},
"required": [
"day",
"shift"
]
}
}
},
"required": [
"kind",
"label"
],
"additionalProperties": false
}
Similar websites
econsor.de
German digital agency building portals, e-commerce sites and online marketing, combining strategy, design and AI to grow clients' visibility and customer base.
inkframe-eta.vercel.app
Browser-native Elah video editor for 9:16 and 16:9 exports
agentdesk-demo.vercel.app
Meridian Ops
eworker.ca
E-Worker is business infrastructure powered by AI, with focused apps and connected business work.