naftiko: "1.0.0-alpha1" info: label: "Workday Time Tracking" description: "API for managing employee time blocks, timesheets, time clock events, work schedule assignments, and time requests in the Workday platform." tags: - Workday - Time Tracking - Timesheets - Workforce Management created: "2026-05-03" modified: "2026-05-03" binds: - namespace: env keys: WORKDAY_BEARER_TOKEN: WORKDAY_BEARER_TOKEN WORKDAY_TENANT: WORKDAY_TENANT capability: consumes: - type: http namespace: workday-time-tracking baseUri: "https://{{WORKDAY_TENANT}}.workday.com/api/time-tracking/v1" description: "Workday Time Tracking REST API for managing employee time data" authentication: type: bearer token: "{{WORKDAY_BEARER_TOKEN}}" resources: - name: time-blocks path: /workers/{workerId}/timeBlocks description: "Time blocks for a specific worker" operations: - name: list-time-blocks method: GET description: "List time blocks for a worker in a date range" inputParameters: - name: workerId in: path type: string required: true description: "The Workday ID of the worker" - name: startDate in: query type: string required: false description: "Start date (YYYY-MM-DD)" - name: endDate in: query type: string required: false description: "End date (YYYY-MM-DD)" - name: status in: query type: string required: false description: "Filter by status" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: create-time-block method: POST description: "Create a new reported time block for a worker" inputParameters: - name: workerId in: path type: string required: true description: "The Workday ID of the worker" body: type: json data: date: "{{tools.date}}" hours: "{{tools.hours}}" type: "{{tools.type}}" startTime: "{{tools.startTime}}" endTime: "{{tools.endTime}}" comment: "{{tools.comment}}" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: time-block-by-id path: /workers/{workerId}/timeBlocks/{timeBlockId} description: "A specific time block" operations: - name: get-time-block method: GET description: "Get a specific time block by ID" inputParameters: - name: workerId in: path type: string required: true description: "The Workday ID of the worker" - name: timeBlockId in: path type: string required: true description: "The Workday ID of the time block" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: update-time-block method: PUT description: "Update an existing time block" inputParameters: - name: workerId in: path type: string required: true description: "The Workday ID of the worker" - name: timeBlockId in: path type: string required: true description: "The time block ID" body: type: json data: date: "{{tools.date}}" hours: "{{tools.hours}}" type: "{{tools.type}}" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: delete-time-block method: DELETE description: "Delete a reported time block" inputParameters: - name: workerId in: path type: string required: true description: "The Workday ID of the worker" - name: timeBlockId in: path type: string required: true description: "The time block ID" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: time-clock-events path: /workers/{workerId}/timeClockEvents description: "Time clock events for a worker" operations: - name: list-time-clock-events method: GET description: "List time clock events for a worker" inputParameters: - name: workerId in: path type: string required: true description: "Worker ID" - name: startDate in: query type: string required: false description: "Start date filter" - name: endDate in: query type: string required: false description: "End date filter" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: create-time-clock-event method: POST description: "Record a time clock event (punch-in or punch-out)" inputParameters: - name: workerId in: path type: string required: true description: "Worker ID" body: type: json data: eventType: "{{tools.eventType}}" eventDateTime: "{{tools.eventDateTime}}" deviceId: "{{tools.deviceId}}" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: work-schedule path: /workers/{workerId}/workSchedule description: "Work schedule for a worker" operations: - name: get-work-schedule method: GET description: "Get the work schedule for a worker" inputParameters: - name: workerId in: path type: string required: true description: "Worker ID" - name: asOfDate in: query type: string required: false description: "Effective date for the schedule" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: assign-work-schedule method: PUT description: "Assign a work schedule to a worker" inputParameters: - name: workerId in: path type: string required: true description: "Worker ID" body: type: json data: scheduleId: "{{tools.scheduleId}}" effectiveDate: "{{tools.effectiveDate}}" outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: timesheets path: /workers/{workerId}/timesheets description: "Timesheets for a worker" operations: - name: list-timesheets method: GET description: "List timesheets for a worker" inputParameters: - name: workerId in: path type: string required: true description: "Worker ID" - name: startDate in: query type: string required: false description: "Start date filter" - name: endDate in: query type: string required: false description: "End date filter" outputRawFormat: json outputParameters: - name: result type: object value: "$." exposes: - type: rest port: 8100 namespace: workday-time-tracking-api resources: - path: /v1/workers/{workerId}/time-blocks name: time-blocks description: "Worker time blocks" operations: - method: GET name: list-time-blocks description: "List time blocks for a worker" call: "workday-time-tracking.list-time-blocks" with: workerId: "rest.workerId" startDate: "rest.startDate" endDate: "rest.endDate" outputParameters: - type: object mapping: "$." - method: POST name: create-time-block description: "Create a time block for a worker" call: "workday-time-tracking.create-time-block" with: workerId: "rest.workerId" outputParameters: - type: object mapping: "$." - path: /v1/workers/{workerId}/timesheets name: timesheets description: "Worker timesheets" operations: - method: GET name: list-timesheets description: "List timesheets for a worker" call: "workday-time-tracking.list-timesheets" with: workerId: "rest.workerId" outputParameters: - type: object mapping: "$." - type: mcp port: 9100 namespace: workday-time-tracking-mcp transport: http tools: - name: list-time-blocks description: "List time blocks for a Workday worker in a date range" hints: readOnly: true openWorld: true call: "workday-time-tracking.list-time-blocks" with: workerId: "tools.workerId" startDate: "tools.startDate" endDate: "tools.endDate" outputParameters: - type: object mapping: "$." - name: create-time-block description: "Create a new time block entry for a worker" hints: readOnly: false call: "workday-time-tracking.create-time-block" with: workerId: "tools.workerId" outputParameters: - type: object mapping: "$." - name: get-time-block description: "Get a specific time block by ID" hints: readOnly: true openWorld: true call: "workday-time-tracking.get-time-block" with: workerId: "tools.workerId" timeBlockId: "tools.timeBlockId" outputParameters: - type: object mapping: "$." - name: update-time-block description: "Update an existing time block" hints: readOnly: false idempotent: true call: "workday-time-tracking.update-time-block" with: workerId: "tools.workerId" timeBlockId: "tools.timeBlockId" outputParameters: - type: object mapping: "$." - name: delete-time-block description: "Delete a reported time block" hints: readOnly: false destructive: true idempotent: true call: "workday-time-tracking.delete-time-block" with: workerId: "tools.workerId" timeBlockId: "tools.timeBlockId" outputParameters: - type: object mapping: "$." - name: list-time-clock-events description: "List time clock events for a worker" hints: readOnly: true openWorld: true call: "workday-time-tracking.list-time-clock-events" with: workerId: "tools.workerId" startDate: "tools.startDate" endDate: "tools.endDate" outputParameters: - type: object mapping: "$." - name: create-time-clock-event description: "Record a clock-in or clock-out event" hints: readOnly: false call: "workday-time-tracking.create-time-clock-event" with: workerId: "tools.workerId" outputParameters: - type: object mapping: "$." - name: get-work-schedule description: "Get the current work schedule for a worker" hints: readOnly: true openWorld: true call: "workday-time-tracking.get-work-schedule" with: workerId: "tools.workerId" asOfDate: "tools.asOfDate" outputParameters: - type: object mapping: "$." - name: assign-work-schedule description: "Assign a work schedule to a worker" hints: readOnly: false idempotent: true call: "workday-time-tracking.assign-work-schedule" with: workerId: "tools.workerId" outputParameters: - type: object mapping: "$." - name: list-timesheets description: "List timesheets for a worker" hints: readOnly: true openWorld: true call: "workday-time-tracking.list-timesheets" with: workerId: "tools.workerId" startDate: "tools.startDate" endDate: "tools.endDate" outputParameters: - type: object mapping: "$."