Connect-MCP

Shiftbase MCP by usefulapi

io.usefulapi/shiftbase · v1.2.1

Read Shiftbase rosters, timesheets, absences and availability; schedule shifts and review absences.

MCPremoteno credentialsJobs & HRMessaging

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 22 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

B 88/100

What it does: 22 tools · 18 read, 4 write (incl. delete/pay) · Messaging

Test call shiftbase_get_account: needs a key: HTTP 401 (1,005 ms)

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +15
  • Parameter descriptions: +10
  • Read/write annotations: +5
  • Safe test call: +8
  • More than 80 tools: 0

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://shiftbase.usefulapi.io/mcp

Tools

22 tools listed at last check
  • shiftbase_get_account The Shiftbase account this API key belongs to: company, country, time zone, working-day start/end, plan facts. GET /accounts.
  • shiftbase_list_users List employees (users) with their teams and departments, contact details, employee number, start/end dates and plus-min hours balance. Use it to map user ids in schedules, timesheets and absences to names. Identity, bank and birth data are never returned. GET /users.
  • shiftbase_get_user One employee by user id or email address, with teams and departments. GET /users/{identifier}.
  • shiftbase_list_departments List departments (sites/branches that own teams, shifts and schedules) with address and timesheet/clocking settings. GET /departments.
  • shiftbase_list_teams List teams (the rows of the schedule within a department), optionally for one department. GET /teams.
  • shiftbase_list_locations List active locations (addresses that group departments). GET /locations.
  • shiftbase_list_shift_types List shift types (the templates a scheduled shift uses: name, short name, default start/end time and break), optionally for one department. Their ids are the shift_id for shiftbase_create_roster. GET /shifts.
  • shiftbase_list_rosters List the schedule (rosters = shifts assigned to employees) for a date range of at most 62 days: date, start/end time, break, employee, team, shift type, department, published state, hours and cost. Each item's occurrence_id identifies it for shiftbase_get_roster and shiftbase_update_roster. GET /ros
  • shiftbase_get_roster One scheduled shift by its occurrence_id, with the employee, shift type, team and who created/changed it. GET /rosters/{occurrenceId}.
  • shiftbase_list_open_shifts List open (unassigned) shifts that employees can pick up, for a date range of at most 62 days (default: today). Needs the Basic plan or higher. GET /open_shifts.
  • shiftbase_get_availability Employee availability (available / unavailable, all day or from a time) for a date range of at most 62 days, from Shiftbase's availability report. Needs the Basic plan and the "View reports" permission. POST /reports/availability (export json; reads only).
  • shiftbase_list_timesheets List timesheets (worked hours: clock in/out, breaks, total, status Approved/Declined/Pending, wage and surcharges) for a date range of at most 62 days. GET /timesheets.
  • shiftbase_get_timesheet One timesheet by id, with its clocked breaks. GET /timesheets/{timesheetId}.
  • shiftbase_list_clocked_in Who is clocked in right now: employee, since when, their scheduled shift, team, department and location. GET /timesheets/clock.
  • shiftbase_list_absences List absences (leave, sick leave, other time off) overlapping a date range of at most 366 days: employee, absence type, start/end date, hours or days, status Approved/Declined/Pending and who reviewed it. Needs the Basic plan. GET /absentees.
  • shiftbase_get_absence One absence by id, with the per-day hours and who reviewed it. GET /absentees/{absenteeId}.
  • shiftbase_list_absence_types List absence types (e.g. Holiday, Sick, Unpaid leave): name, unit (hours or days), whether it costs leave hours, colour. Their ids are the absence_type_id for absences. GET /absentee_options.
  • shiftbase_get_expected_absence_hours How many hours an absence would cost for an employee, per day and in total (from the schedule or the contract, per the absence policy), for a period of at most 366 days. Changes nothing. POST /absentees/expected.
  • shiftbase_create_roster WRITE: put one employee on the schedule for one date (a single, non-recurring shift) in a team, with a shift type, start/end time and break. The employee is notified only when notify is true. POST /rosters.
  • shiftbase_update_roster WRITE: change a scheduled shift: move it to another date, time, employee, team or shift type, or change its break or note. Reads the shift first and sends it back with your changes. For a recurring shift, scope says what changes: "occurrence" (this date only), "sequence" (this date and all later one
  • shiftbase_request_absence WRITE: add an absence (leave/time-off request) for an employee. By default it is a Pending request for a manager to review; status Approved books it directly (needs the approve-absence permission). The hours per day come from Shiftbase's own expected-hours calculation (the same as shiftbase_get_expe
  • shiftbase_review_absence WRITE: approve or decline an absence request. Reads the absence first and sends it back unchanged except for the status (needs the approve-absence permission). PUT /absentees/{absenteeId}.

Badge

Connect-MCP badge for io.usefulapi/shiftbase

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/io.usefulapi/shiftbase.svg)](https://clawy.uk/mcp/s/io.usefulapi/shiftbase)