MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Payments & trading

RotaCloud MCP by usefulapi

Read RotaCloud shifts, attendance, leave, availability and payroll; create shifts and handle leave.

Checks passed
14 / 22

0 failed · 8 not measured

Median response
148 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
28

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Outdated check

Last connection measurement is over 24 hours old. Current availability is unknown.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 148 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name rotacloud-mcp.

  • Pass
    Lists tools

    tools/list returned 28 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 148 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 148 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    127 of 127 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-11-10T23:33:48.815433Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using RotaCloud MCP by usefulapi

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http rotacloud-mcp-by-usefulapi https://rotacloud.usefulapi.io/mcp

Capabilities

Tools 28

rotacloud_approve_leave_request

WRITE: approve a pending leave request (it becomes booked leave and the employee is notified). POST /leave_requests/{id}/approve.

Discovered
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.

Discovered
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.

Discovered
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: true. Guards re-check each shift right before its delete and skip it if it no longer qualifies: require_open (skip assigned shifts), require_shorter_than_minutes (skip shifts whose elapsed duration is not strictly less). After each delete the shift is read again to verify it is gone. DELETE /shifts/{id}.

Discovered
rotacloud_deny_leave_request

WRITE: deny a pending leave request (the employee is notified). POST /leave_requests/{id}/deny.

Discovered
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 shorter than 3 hours = open: true, shorter_than_minutes: 180 (a shift of exactly 180 minutes does not match). Deleted shifts never match. Returns up to max_results matches (shift_ids plus a summary each: UTC times, elapsed_minutes, user, location, role, published). complete: true = the whole range was read. Otherwise pass next_offset as offset to continue — but after deleting or changing shifts, search again from offset 0, because the list positions move. GET /shifts.

Discovered
rotacloud_get_availability

Employees' availability per date in a range (available / unavailable times). GET /availability.

Discovered
rotacloud_get_leave_request

One leave request by id, with the per-day breakdown. GET /leave_requests/{id}.

Discovered
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.

Discovered
rotacloud_get_shift

One shift by id. GET /shifts/{id}.

Discovered
rotacloud_get_user

One employee by id. GET /users/{id}.

Discovered
rotacloud_list_accounts

The RotaCloud account(s) this API key belongs to: name, plan, time zone, employee count. GET /accounts.

Discovered
rotacloud_list_attendance

List time & attendance records (clock-in/out times, breaks, minutes late, hours, approval state) in a time range. GET /attendance.

Discovered
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.

Discovered
rotacloud_list_day_notes

List day notes (notices pinned to rota dates, e.g. events or deliveries), optionally for one location. GET /day_notes.

Discovered
rotacloud_list_days_off

Employees' scheduled days off per date in a range. GET /days_off.

Discovered
rotacloud_list_holiday_allowances

Every employee's holiday allowance for a leave year (default and custom allowance, unit, carried over). GET /holiday_allowances/{year}.

Discovered
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.

Discovered
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.

Discovered
rotacloud_list_leave_types

List leave types (Holiday, Sickness, Unpaid, ...) with id, short name and whether employees can request them. GET /leave_types.

Discovered
rotacloud_list_locations

List locations (sites/branches) with address, time zone and managers. GET /locations.

Discovered
rotacloud_list_pay_periods

List pay periods overlapping a date range (id, name, start/end date, locked). GET /pay_periods.

Discovered
rotacloud_list_roles

List job roles (positions) with colour, default break and pay rate. GET /roles.

Discovered
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.

Discovered
rotacloud_list_swap_requests

List shift swap requests with their status, the shifts and the users involved. GET /swap_requests.

Discovered
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.

Discovered
rotacloud_publish_shifts

WRITE: publish shifts so the assigned employees see them (and get notified). POST /shifts_published.

Discovered
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}.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected148 ms28