# RotaCloud MCP Muse connector

From musedirectory.ai, the independent directory of Meta Muse connectors. Not affiliated with Meta.

## RotaCloud MCP

Manage employee shifts, leave, attendance and payroll from RotaCloud

- Record: https://musedirectory.ai/connector/rotacloud-mcp
- Category: Productivity
- Developer: usefulapi (https://usefulapi.io/rotacloud/)
- Muse status: Extra setup. Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
- Health: Working, 1956ms, checked 2026-10-29T10:31:21Z
- Endpoint: https://rotacloud.usefulapi.io/mcp
- Auth: No account needed; Pricing: unknown
- Screening: Screened, no issues found (2026-10-29T12:41:40Z)
- Source: Found in the official MCP Registry (io.usefulapi/rotacloud) https://registry.modelcontextprotocol.io/v0/servers?search=io.usefulapi%2Frotacloud

Read and manage RotaCloud rotas: view shifts, attendance, leave requests, availability and payroll data. Create shifts, approve or deny leave requests, and publish schedules to employees.

Example request: "Show me who's clocked in right now and approve the pending leave request from Sarah for next week"

How to connect: Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use RotaCloud MCP to help me. It is a free service with an MCP server at https://rotacloud.usefulapi.io/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Tools:
- rotacloud_list_accounts: The RotaCloud account(s) this API key belongs to: name, plan, time zone, employee count. GET /accounts.
- rotacloud_list_users: List employees (users) with their level, roles, locations, contact details and pay settings. Use it to map user ids in shifts, leave and attendance to names. GET /users.
- rotacloud_get_user: One employee by id. GET /users/{id}.
- rotacloud_list_locations: List locations (sites/branches) with address, time zone and managers. GET /locations.
- rotacloud_list_roles: List job roles (positions) with colour, default break and pay rate. GET /roles.
- rotacloud_list_shifts: List rota shifts in a time range: start/end times (Unix seconds), break, assigned user (null = open shift), location, role, notes, published and acknowledged state. Filter by users, locations, roles, open or published. GET /shifts.
- rotacloud_get_shift: One shift by id. GET /shifts/{id}.
- rotacloud_list_swap_requests: List shift swap requests with their status, the shifts and the users involved. GET /swap_requests.
- rotacloud_list_day_notes: List day notes (notices pinned to rota dates, e.g. events or deliveries), optionally for one location. GET /day_notes.
- rotacloud_list_attendance: List time & attendance records (clock-in/out times, breaks, minutes late, hours, approval state) in a time range. GET /attendance.
- rotacloud_list_clocked_in: Who is clocked in right now: user, location, role, clock-in time, minutes late and break state. GET /users_clocked_in.
- rotacloud_list_leave: List booked leave (holiday, sickness, etc.) with type, user, dates, hours and status. Filter by date range or leave year, users and leave types; pending/denied/expired requests are excluded unless asked for. GET /leave.
- rotacloud_list_leave_requests: List leave requests awaiting a decision (and past ones): user, leave type, dates, half days, the employee's message. GET /leave_requests.
- rotacloud_get_leave_request: One leave request by id, with the per-day breakdown. GET /leave_requests/{id}.
- rotacloud_list_leave_types: List leave types (Holiday, Sickness, Unpaid, ...) with id, short name and whether employees can request them. GET /leave_types.
- rotacloud_list_holiday_allowances: Every employee's holiday allowance for a leave year (default and custom allowance, unit, carried over). GET /holiday_allowances/{year}.
- rotacloud_get_availability: Employees' availability per date in a range (available / unavailable times). GET /availability.
- rotacloud_list_days_off: Employees' scheduled days off per date in a range. GET /days_off.
- rotacloud_list_pay_periods: List pay periods overlapping a date range (id, name, start/end date, locked). GET /pay_periods.
- rotacloud_get_payroll: Payroll for one pay period, per employee: pay settings, attendance worked, paid/unpaid leave, overtime and pay totals. Contains pay data. GET /pay_periods/{id}/payroll.
- rotacloud_create_shift: WRITE: create a shift on the rota. Leave user_id out for an open shift. Unpublished by default (employees see it once published). POST /shifts.
- rotacloud_update_shift: WRITE: change a shift's times, assignee, location, role, break, notes or published state. Only the fields you pass change. POST /shifts/{id}.
- rotacloud_publish_shifts: WRITE: publish shifts so the assigned employees see them (and get notified). POST /shifts_published.
- rotacloud_find_shifts: Find shifts in a time range by open/assigned state, published state, location, role and ELAPSED duration (end − start; the break is not subtracted). It reads page after page, so it is the way to select shifts for a bulk change such as rotacloud_delete_shifts: e.g. open shifts sho
- rotacloud_delete_shifts: WRITE — deletes shifts from the rota (assigned employees lose the shift). Delete 1-100 shifts by id; select them first with rotacloud_find_shifts. Without confirm it only previews: it reads each shift and deletes nothing. Show the preview to the user, then call again with confirm
- rotacloud_create_leave_request: WRITE: submit a leave request on behalf of an employee (sent as that user, for a manager to approve). POST /leave_requests with the User header.
- rotacloud_approve_leave_request: WRITE: approve a pending leave request (it becomes booked leave and the employee is notified). POST /leave_requests/{id}/approve.
- rotacloud_deny_leave_request: WRITE: deny a pending leave request (the employee is notified). POST /leave_requests/{id}/deny.

Screening checks:
- MCP handshake: pass (Answered in 119ms)
- Domain against threat feeds (Cloudflare security DNS): pass (rotacloud.usefulapi.io, usefulapi.io not flagged)
- Published packages against the OSV malicious-package database: n/a (No npm or PyPI package published)
- Hidden instructions or invisible characters in tool text: pass (28 tools read, nothing found)
- Inputs asking for passwords, card numbers or seed phrases: pass (None found)
- Domain and redirects: pass (No redirects off the domain)
- AI review of purpose and tool behavior: pass (No concerns)
