Authenticate and obtain a Bearer token as described in the Deputy OAuth flow.
POST to /resource/Roster/QUERY with a date-range filter and optionally a location or employee filter to retrieve roster (shift) objects.
Each Roster record includes fields for employee, start/end datetime, location, position, and published status; filter for published=true to exclude draft shifts.
Map Deputy employee IDs to your downstream system's user identifiers using the Employee resource (GET /resource/Employee/{id}) as needed.
Write the transformed shift records to your target system via its API, handling deduplication by tracking the Deputy Roster ID.
Subscribe to Deputy webhooks for roster events to receive real-time push notifications of schedule changes rather than polling.
Known gotchas
Roster records represent scheduled shifts; Timesheet records represent actual worked time—these are distinct objects and should not be conflated.
By default the roster API returns shifts within approximately the next 36 hours and previous 12 hours; explicit date filters in the query body are required for broader ranges.
Deputy's pagination limit is 500 records per response; large location-wide queries covering many employees over long periods require multiple paginated requests.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp