MCP server
When I Work MCP by usefulapi
io.usefulapi/when-i-work
Checked 26 Oct 2026, 08:29 UTC · Connected to it and listed its tools
Check shifts, time clock entries, time-off requests, swaps and availability, and manage shifts.
Working at last checkVerified publisher: usefulapi.ioAbout 5,840 tokens per request once connected21 tools
https://when-i-work.usefulapi.io/mcp
At a glance
- Type
- MCP server
- Publisher
- usefulapi.io (verified by the MCP Registry)
- Status
- Working at last check
- Tools
- 21
- Token cost
- About 5,840 tokens per request
- Sets up in
- Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, Antigravity, ChatGPT, OpenAI API, Grok
- Last checked
- 26 Oct 2026, 08:29 UTC
Connect it to your agent
Opens the app, which shows the server and asks you to confirm. For other apps, copy the setup below.
Claude Code
claude mcp add --transport http when-i-work https://when-i-work.usefulapi.io/mcp
Claude Desktop
Settings → Connectors → Add custom connector, and paste the URL.
Codex (config.toml)
[mcp_servers.when-i-work] url = "https://when-i-work.usefulapi.io/mcp"
Gemini CLI
{"mcpServers":{"when-i-work":{"httpUrl":"https://when-i-work.usefulapi.io/mcp"}}}
Cursor
{"mcpServers":{"when-i-work":{"url":"https://when-i-work.usefulapi.io/mcp"}}}
VS Code
{"servers":{"when-i-work":{"type":"http","url":"https://when-i-work.usefulapi.io/mcp"}}}
Antigravity
agy mcp add when-i-work https://when-i-work.usefulapi.io/mcp
ChatGPT
Settings → Apps & Connectors → Advanced settings: turn on Developer mode, then Create a connector and paste the URL. Which plans can do this varies.
OpenAI API (Responses tools)
{"type":"mcp","server_label":"when-i-work","server_url":"https://when-i-work.usefulapi.io/mcp","require_approval":"always"}
Grok (xAI API tools)
{"type":"mcp","server_label":"when-i-work","server_url":"https://when-i-work.usefulapi.io/mcp"}
Tools
wheniwork_create_shift~452 tokens
Create one shift on a schedule — assigned to a user, or open (user_id 0). Created as a draft unless published is true. Undo by editing it or unpublishing. When I Work: POST /2/shifts.wheniwork_create_time_off_request~296 tokens
Create a time-off request for a user (default the calling user). It starts pending; cancel it with wheniwork_update_time_off_request (status 1). Get type ids from wheniwork_list_time_off_types. When I Work: POST /2/requests.wheniwork_get_account~106 tokens
Fetch the When I Work account (workplace) the token acts on — company name, plan and settings; for a parent account also its child accounts. A cheap way to confirm the credentials work. When I Work: GET /2/account.wheniwork_get_shift~181 tokens
Fetch one shift by id, including its breaks and publish state. When I Work: GET /2/shifts/{id}.wheniwork_get_time_off_request~121 tokens
Fetch one time-off request by id, with its message thread and users. When I Work: GET /2/requests/{request_id}.wheniwork_get_user~109 tokens
Fetch one user by id — name, email, role, positions, schedules, wage. When I Work: GET /2/users/{id}.wheniwork_list_annotations~253 tokens
List schedule annotations — announcements, business-closed days and blackout dates when time off is not allowed. Defaults to today through one year out. When I Work: GET /2/annotations.wheniwork_list_availability~301 tokens
List availability events — when people said they can or cannot work, including recurring patterns that fall in the window. Defaults to the caller, from now to two weeks out. When I Work: GET /2/availabilityevents.wheniwork_list_eligible_users_for_shift~413 tokens
Find who could take an open shift — either an existing shift (shift_id) or a hypothetical one (start, end, position_id and location_id all required). When I Work: GET /2/shifts/eligible.wheniwork_list_locations~118 tokens
List the schedules in the account. The API calls a schedule a "location"; its id is the location_id every shift belongs to. When I Work: GET /2/locations.wheniwork_list_positions~98 tokens
List the positions (job roles such as Cashier or Dishwasher) in the account. When I Work: GET /2/positions.wheniwork_list_shift_swaps~486 tokens
List shift requests: swaps, drops and alerts, with the shifts and users involved. Status: 0 pending, 1 approved, 2 declined, 3 completed, 4 canceled, 5 expired. Type: 1 swap, 2 drop, 3 alert. start and end must be given together. When I Work: GET /2/swaps.wheniwork_list_shifts~600 tokens
List scheduled shifts in a time window — who works when, where and in which position — optionally including open shifts and unpublished drafts. Answers "who is on on Friday?" and "what open shifts are left?". When I Work: GET /2/shifts.wheniwork_list_time_off_requests~500 tokens
List time-off requests in a date range, with the requesting users. Status: 0 pending, 1 canceled, 2 accepted, 3 expired, 4 denied. When I Work: GET /2/requests.wheniwork_list_time_off_types~95 tokens
List the time-off types (e.g. Personal, Sick, Holiday) and whether each allows paid time. Their ids are the type_id for a new request. When I Work: GET /2/requesttypes.wheniwork_list_times~338 tokens
List clocked time entries — actual hours worked, clock-in/out times, length and approval state. Use only_open to see who is clocked in right now. When I Work: GET /2/times.wheniwork_list_users~285 tokens
List the employees, supervisors, managers and admins in the account, optionally limited to some schedules or searched by name/email. Role codes: 1 admin, 2 manager, 3 employee, 5 supervisor. When I Work: GET /2/users.wheniwork_publish_shiftsSends messages · ~147 tokens
Publish draft shifts so employees can see them. Publishing does not itself send notifications. Undo with wheniwork_unpublish_shifts. When I Work: POST /2/shifts/publish.wheniwork_unpublish_shifts~139 tokens
Return published shifts to draft, hiding them from employees. Undo with wheniwork_publish_shifts. When I Work: POST /2/shifts/unpublish.wheniwork_update_shift~537 tokens
Change a shift — reassign it, move it, change position or notes. When I Work requires start_time, end_time and location_id on every update, so fetch the shift first and pass them back. This tool never sends a breaks array; When I Work documents that breaks omitted from an update's breaks list are rewheniwork_update_time_off_request~265 tokens
Change a time-off request: set its status (0 pending, 1 canceled, 2 accepted/approved, 3 expired, 4 denied) and/or its dates or hours. Reversible — set the status back. start_time and end_time must be given together. When I Work: PUT /2/requests/{request_id}.
Browse
Related MCP servers
- Papershift MCP by usefulapi
Read Papershift absences, vacation, time tracking and shifts; request and review absences. - Connecteam MCP by usefulapi
Read Connecteam users, shifts, time clock, jobs, time off, tasks and forms; create shifts and tasks. - Boulevard MCP by usefulapi
Look up appointments, clients, services, staff and orders, and update clients in Boulevard. - Homebase MCP by usefulapi
Read Homebase locations, employees, shifts, timecards, labor costs and time clock status. - Shift Scheduler
Builds optimal 24/7 staff rosters with a real MILP solver: rest rules, skills, nights, fairness. - Perfect Clock
Find meeting times across time zones and compare working hours. - DeskMonitor
DeskMonitor: 24 workforce-intelligence MCP tools, OAuth 2.1, free demo key included. - RotaCloud MCP by usefulapi
Read RotaCloud shifts, attendance, leave, availability and payroll; create shifts and handle leave.
Badge for your README
[](https://aptlynx.net/servers/io.usefulapi/when-i-work)
Listing text is written by the maker; AptLynx lists tools and does not vouch for them. Find another tool · Browse by topic · For agents