← WebMCP Directory

rotaproof.vercel.app

rotaproof.vercel.app

live Unverified (seed import) Productivity & Business 12 tools imperative implementation

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

act imperative

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

PropertyTypeRequiredDescription
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

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.

live Unverified Productivity & Business Transact tools
143 tools A0 / Act142 / T1 Not yet scored Seen 2026-11-05
econsor_click_search econsor_click_image econsor_click_menu econsor_click_burger_menu_icon econsor_click_previous_button
Inspect tools
inkframe-eta.vercel.app

inkframe-eta.vercel.app

Browser-native Elah video editor for 9:16 and 16:9 exports

live Unverified Productivity & Business Transact tools
87 tools A12 / Act71 / T4 Not yet scored Seen 2026-11-05
get_capabilities list_templates navigate_workspace open_template editor_inspect_video_moments
Inspect tools
agentdesk-demo.vercel.app

agentdesk-demo.vercel.app

Meridian Ops

live Unverified Productivity & Business Transact tools
83 tools A43 / Act24 / T16 Not yet scored Seen 2026-11-05
find_capabilities invoke_capability get_context get_action_status search_customers
Inspect tools
eworker.ca

eworker.ca

E-Worker is business infrastructure powered by AI, with focused apps and connected business work.

live Unverified Productivity & Business
73 tools A10 / Act63 / T0 Not yet scored Seen 2026-11-05
eworker_site_status eworker_list_apps eworker_resolve_app eworker_open_app ewdoc_status
Inspect tools

Related on Influzer