Square Staff Shifts & Timecards
Who is working Saturday, and did everyone clock out last night? For salons, cafes and shops on Square: draft and publish the staff rota as scheduled shifts, pull timecards with breaks for payroll checks, fix a missed clock-out, and look up team members, hourly wages and break rules per location.
Connect this API to an AI agent Browse all specs
What you can do with Square Staff Shifts & Timecards via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /v2/locations |
listLocations | List the seller's locations with their ids and time zones |
| POST | /v2/team-members/search |
searchTeamMembers | Find team members by location or status to get their ids |
| POST | /v2/labor/scheduled-shifts/search |
searchScheduledShifts | Find scheduled shifts by location, team member and date range |
| GET | /v2/labor/scheduled-shifts/{id} |
getScheduledShift | Get one scheduled shift with its draft and published details |
| PUT | /v2/labor/scheduled-shifts/{id} |
updateScheduledShift | Change a scheduled shift's draft time, location, job or assignee |
| POST | /v2/labor/scheduled-shifts |
createScheduledShift | Create a draft shift on the schedule for a team member |
| POST | /v2/labor/scheduled-shifts/{id}/publish |
publishScheduledShift | Publish a draft shift so the team member sees it |
| POST | /v2/labor/timecards/search |
searchTimecards | Find timecards (clock-in/out and breaks) by location, team member, status or date |
| GET | /v2/labor/timecards/{id} |
getTimecard | Get one timecard with its breaks, wage and status |
| PUT | /v2/labor/timecards/{id} |
updateTimecard | Fix a timecard, for example add a missed clock-out or break |
| POST | /v2/labor/timecards |
createTimecard | Add a timecard for hours a team member worked |
| GET | /v2/labor/break-types |
listBreakTypes | List the break types (paid or unpaid, length) set up per location |
| GET | /v2/labor/workweek-configs |
listWorkweekConfigs | Get the workweek start day and time used for overtime |
| GET | /v2/labor/team-member-wages |
listTeamMemberWages | List team members' job titles and hourly rates |
Authentication
square_token
Bearer token — sent as Authorization: Bearer <token>
Square access token, sent as Authorization: Bearer <token>.
How to get a credential
- Sign in to the Square Developer Console (https://developer.squareup.com/apps) with the seller's Square account.
- Create an application (or open an existing one).
- Switch to Production, open Credentials and copy the Production access token (it acts for your own seller account with full permissions).
- To act for other sellers, use OAuth instead and request the scopes below.
Permissions used
| OAuth scope | Operations |
|---|---|
EMPLOYEES_READ |
searchTeamMembers, listTeamMemberWages |
MERCHANT_PROFILE_READ |
listLocations |
TIMECARDS_READ |
searchScheduledShifts, getScheduledShift, searchTimecards, getTimecard, updateTimecard |
TIMECARDS_WRITE |
createScheduledShift, updateScheduledShift, publishScheduledShift, createTimecard, updateTimecard |
TIMECARDS_SETTINGS_READ |
listBreakTypes, listWorkweekConfigs |
Common errors
| Status | Meaning | Fix |
|---|---|---|
| 401 | Token missing, expired or a sandbox token | Use the production token; refresh OAuth tokens before they expire. |
| 403 | Missing scope or the seller has no access to Shifts | Request the scope above; the seller needs Square Team / Shifts enabled. |
| 400 | Invalid field or time | Send RFC 3339 times with offset and existing team member / location ids. |
| 409 | Version conflict | Re-read the shift or timecard and resend with its current version. |
| 429 | Rate limited | Wait and retry with backoff. |
Store the token as a VX Agents credential (Bearer token).
Usage guide
Setup
- Add the seller's Square production access token (or an OAuth token with the scopes in Authentication) as a VX Agents Bearer credential.
- Call
listLocationsonce and pin the shop'slocation_idin prompts or presets so shifts never land at the wrong branch. Note itstimezone. Square-Versionis fixed at2026-09-16.
Plan next week's rota
searchTeamMemberswithquery.filter(location_ids,status: ACTIVE) to get team member ids.searchScheduledShiftswithquery.filter.location_idsandworkday.date_range(start_date/end_dateasYYYY-MM-DD) to see what is already planned.- Confirm the shifts with the user, then
createScheduledShiftper shift:idempotency_key(new UUID) andscheduled_shift.draft_shift_details(team_member_id,location_id,start_at,end_at, optionaljob_id,notes). New shifts are drafts. - To change one,
updateScheduledShiftwith the newdraft_shift_detailsand the currentversion. - Publishing tells staff: confirm first, then
publishScheduledShiftwithidempotency_key,versionandscheduled_shift_notification_audience(ALL,AFFECTEDorNONE).
Check hours worked
searchTimecardswithquery.filter(location_ids,team_member_ids,statusOPEN/CLOSED,workday.date_range).OPENtimecards are people still clocked in.getTimecardfor the breaks, wage andversionof one timecard.- To fix a missed clock-out, confirm with the user, then
updateTimecardwith the fulltimecard(location_id,team_member_id,start_at, newend_at, existingbreaks,version). Breaks needbreak_type_idfromlistBreakTypes. createTimecardadds hours that were never clocked; send a newidempotency_keyso a retry does not add them twice.
Good to know
- Times are RFC 3339 with the location's offset, e.g.
2026-10-24T09:00:00-07:00. listTeamMemberWagesgives job titles andhourly_rate(money in the smallest unit, e.g. cents) for cost estimates;listWorkweekConfigsgives the overtime week start.- Search results page with
cursor; scheduled shifts default to 50 per page, timecards to 200. - A 409 or version error means someone else changed the record: read it again and retry with the new
version. - Deletes are not part of this spec.
Source: Square Labor API reference (https://developer.squareup.com/reference/square/labor-api), checked 2026-10-20.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Square Staff Shifts & Timecards” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.