naftiko: 1.0.0-alpha2 info: label: Workday Recruiting Interview and Screening description: Recruiter and hiring manager workflow for scheduling interviews, collecting and reviewing interviewer feedback, and running pre-hire background screening. Combines the Workday Recruiting interview and background check operations into a single hiring evaluation surface. tags: - Workday - Recruiting - Interviews - Background Checks - HCM created: '2026-05-03' modified: '2026-05-06' binds: - namespace: env keys: WORKDAY_RECRUITING_TOKEN: WORKDAY_RECRUITING_TOKEN WORKDAY_TENANT: WORKDAY_TENANT capability: consumes: - type: http namespace: recruiting baseUri: https://{{WORKDAY_TENANT}}.workday.com/ccx/api/recruiting/v41.2 description: Workday Recruiting REST API for managing the full hiring lifecycle. authentication: type: bearer token: '{{WORKDAY_RECRUITING_TOKEN}}' resources: - name: job-requisitions path: /jobRequisitions description: Job requisition collection operations: - name: list-job-requisitions method: GET description: Retrieve a collection of job requisitions with optional filters inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset - name: status in: query type: string required: false description: Filter by status (Open, Filled, Frozen, Closed, Draft) - name: supervisoryOrganization in: query type: string required: false description: Filter by supervisory organization Workday ID - name: updatedFrom in: query type: string required: false description: Return requisitions updated on or after this date-time outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-job-requisition method: POST description: Create a new job requisition for a position body: type: json data: title: '{{tools.title}}' jobProfile: '{{tools.jobProfile}}' position: '{{tools.position}}' supervisoryOrganization: '{{tools.supervisoryOrganization}}' hiringManager: '{{tools.hiringManager}}' recruiter: '{{tools.recruiter}}' numberOfOpenings: '{{tools.numberOfOpenings}}' location: '{{tools.location}}' workerType: '{{tools.workerType}}' timeType: '{{tools.timeType}}' targetHireDate: '{{tools.targetHireDate}}' jobDescription: '{{tools.jobDescription}}' qualifications: '{{tools.qualifications}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-requisition-by-id path: /jobRequisitions/{jobRequisitionId} description: Individual job requisition operations: - name: get-job-requisition method: GET description: Retrieve details of a specific job requisition inputParameters: - name: jobRequisitionId in: path type: string required: true description: Job requisition Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: edit-job-requisition method: PATCH description: Update an open job requisition inputParameters: - name: jobRequisitionId in: path type: string required: true description: Job requisition Workday ID body: type: json data: title: '{{tools.title}}' jobProfile: '{{tools.jobProfile}}' numberOfOpenings: '{{tools.numberOfOpenings}}' location: '{{tools.location}}' workerType: '{{tools.workerType}}' timeType: '{{tools.timeType}}' targetHireDate: '{{tools.targetHireDate}}' jobDescription: '{{tools.jobDescription}}' qualifications: '{{tools.qualifications}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-requisition-close path: /jobRequisitions/{jobRequisitionId}/close description: Close a job requisition operations: - name: close-job-requisition method: POST description: Close a job requisition that has no pending events inputParameters: - name: jobRequisitionId in: path type: string required: true description: Job requisition Workday ID body: type: json data: closeReason: '{{tools.closeReason}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-requisition-freeze path: /jobRequisitions/{jobRequisitionId}/freeze description: Freeze or unfreeze a job requisition operations: - name: manage-job-requisition-freeze method: POST description: Freeze or unfreeze a job requisition inputParameters: - name: jobRequisitionId in: path type: string required: true description: Job requisition Workday ID body: type: json data: freeze: '{{tools.freeze}}' reason: '{{tools.reason}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: evergreen-requisitions path: /evergreenRequisitions description: Evergreen requisition collection operations: - name: list-evergreen-requisitions method: GET description: Retrieve a collection of evergreen requisitions inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-evergreen-requisition method: POST description: Create a new evergreen requisition for ongoing hiring needs body: type: json data: title: '{{tools.title}}' jobProfile: '{{tools.jobProfile}}' supervisoryOrganization: '{{tools.supervisoryOrganization}}' hiringManager: '{{tools.hiringManager}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: evergreen-requisition-by-id path: /evergreenRequisitions/{evergreenRequisitionId} description: Individual evergreen requisition operations: - name: get-evergreen-requisition method: GET description: Retrieve details of a specific evergreen requisition inputParameters: - name: evergreenRequisitionId in: path type: string required: true description: Evergreen requisition Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: evergreen-requisition-close path: /evergreenRequisitions/{evergreenRequisitionId}/close description: Close an evergreen requisition operations: - name: close-evergreen-requisition method: POST description: Close an evergreen requisition with no pending events inputParameters: - name: evergreenRequisitionId in: path type: string required: true description: Evergreen requisition Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: candidates path: /candidates description: Candidate collection operations: - name: list-candidates method: GET description: Retrieve a collection of candidates with optional filters inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset - name: updatedFrom in: query type: string required: false description: Return candidates updated on or after this date-time - name: name in: query type: string required: false description: Filter candidates by name (partial match) - name: email in: query type: string required: false description: Filter candidates by email address outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-candidate method: POST description: Create a new candidate record body: type: json data: firstName: '{{tools.firstName}}' lastName: '{{tools.lastName}}' email: '{{tools.email}}' phone: '{{tools.phone}}' address: '{{tools.address}}' source: '{{tools.source}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: candidate-by-id path: /candidates/{candidateId} description: Individual candidate operations: - name: get-candidate method: GET description: Retrieve details of a specific candidate inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: update-candidate method: PATCH description: Update an existing candidate record inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID body: type: json data: firstName: '{{tools.firstName}}' lastName: '{{tools.lastName}}' email: '{{tools.email}}' phone: '{{tools.phone}}' address: '{{tools.address}}' source: '{{tools.source}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: candidate-attachments path: /candidates/{candidateId}/attachments description: Candidate attachments operations: - name: list-candidate-attachments method: GET description: Retrieve attachments for a candidate inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: add-candidate-attachment method: POST description: Upload an attachment to a candidate record inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID body: type: multipart data: file: '{{tools.file}}' category: '{{tools.category}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: candidate-photo path: /candidates/{candidateId}/photo description: Candidate photo operations: - name: get-candidate-photo method: GET description: Retrieve the candidate photo inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID outputRawFormat: binary outputParameters: - name: result type: object value: $. - name: update-candidate-photo method: PUT description: Upload or replace the candidate photo inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID body: type: binary data: file: '{{tools.file}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: candidate-assess path: /candidates/{candidateId}/assess description: Candidate assessment operations: - name: assess-candidate method: POST description: Create or modify a candidate assessment inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID body: type: json data: assessmentCategory: '{{tools.assessmentCategory}}' result: '{{tools.result}}' score: '{{tools.score}}' comments: '{{tools.comments}}' assessedOn: '{{tools.assessedOn}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: candidate-refer path: /candidates/{candidateId}/refer description: Candidate referral operations: - name: refer-candidate method: POST description: Submit a candidate referral from an existing worker inputParameters: - name: candidateId in: path type: string required: true description: Candidate Workday ID body: type: json data: jobRequisition: '{{tools.jobRequisition}}' referrer: '{{tools.referrer}}' referralComments: '{{tools.referralComments}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-applications path: /jobApplications description: Job application collection operations: - name: list-job-applications method: GET description: Retrieve a collection of job applications with optional filters inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset - name: jobRequisition in: query type: string required: false description: Filter by job requisition Workday ID - name: candidate in: query type: string required: false description: Filter by candidate Workday ID - name: stage in: query type: string required: false description: Filter by recruiting stage outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-application-by-id path: /jobApplications/{jobApplicationId} description: Individual job application operations: - name: get-job-application method: GET description: Retrieve details of a specific job application inputParameters: - name: jobApplicationId in: path type: string required: true description: Job application Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-application-move path: /jobApplications/{jobApplicationId}/move description: Move candidate to a different stage operations: - name: move-candidate-stage method: POST description: Move a candidate to a different recruiting or disposition stage inputParameters: - name: jobApplicationId in: path type: string required: true description: Job application Workday ID body: type: json data: stage: '{{tools.stage}}' reason: '{{tools.reason}}' comments: '{{tools.comments}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-application-offer path: /jobApplications/{jobApplicationId}/offer description: Initiate an employment offer operations: - name: initiate-offer method: POST description: Initiate an employment offer for a job application inputParameters: - name: jobApplicationId in: path type: string required: true description: Job application Workday ID body: type: json data: proposedStartDate: '{{tools.proposedStartDate}}' compensationAmount: '{{tools.compensationAmount}}' compensationFrequency: '{{tools.compensationFrequency}}' currency: '{{tools.currency}}' expirationDate: '{{tools.expirationDate}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-postings path: /jobPostings description: Job posting collection operations: - name: list-job-postings method: GET description: Retrieve a collection of job postings with optional filters inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset - name: jobRequisition in: query type: string required: false description: Filter by job requisition Workday ID - name: postingSite in: query type: string required: false description: Filter by posting site Workday ID - name: active in: query type: boolean required: false description: Filter by active posting status outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-posting-by-id path: /jobPostings/{jobPostingId} description: Individual job posting operations: - name: get-job-posting method: GET description: Retrieve details of a specific job posting inputParameters: - name: jobPostingId in: path type: string required: true description: Job posting Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: update-job-posting method: PATCH description: Update an existing job posting inputParameters: - name: jobPostingId in: path type: string required: true description: Job posting Workday ID body: type: json data: startDate: '{{tools.startDate}}' endDate: '{{tools.endDate}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-posting-post path: /jobPostings/{jobPostingId}/post description: Post a job to career sites operations: - name: post-job method: POST description: Post a job to internal and external career sites inputParameters: - name: jobPostingId in: path type: string required: true description: Job posting Workday ID body: type: json data: postingSites: '{{tools.postingSites}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-posting-unpost path: /jobPostings/{jobPostingId}/unpost description: Unpost a job from career sites operations: - name: unpost-job method: POST description: Remove a job posting from career sites inputParameters: - name: jobPostingId in: path type: string required: true description: Job posting Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: interviews path: /interviews description: Interview collection operations: - name: list-interviews method: GET description: Retrieve a collection of scheduled interviews with optional filters inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset - name: jobApplication in: query type: string required: false description: Filter by job application Workday ID - name: dateFrom in: query type: string required: false description: Return interviews scheduled on or after this date - name: dateTo in: query type: string required: false description: Return interviews scheduled on or before this date outputRawFormat: json outputParameters: - name: result type: object value: $. - name: schedule-interview method: POST description: Schedule a new interview for a job application body: type: json data: jobApplication: '{{tools.jobApplication}}' interviewType: '{{tools.interviewType}}' scheduledDate: '{{tools.scheduledDate}}' startTime: '{{tools.startTime}}' endTime: '{{tools.endTime}}' interviewers: '{{tools.interviewers}}' location: '{{tools.location}}' webConferenceUrl: '{{tools.webConferenceUrl}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: interview-by-id path: /interviews/{interviewId} description: Individual interview operations: - name: get-interview method: GET description: Retrieve details of a specific interview inputParameters: - name: interviewId in: path type: string required: true description: Interview Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: interview-feedback path: /interviews/{interviewId}/feedback description: Interview feedback operations: - name: list-interview-feedback method: GET description: Retrieve feedback submitted for an interview inputParameters: - name: interviewId in: path type: string required: true description: Interview Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: submit-interview-feedback method: POST description: Submit feedback for a completed interview inputParameters: - name: interviewId in: path type: string required: true description: Interview Workday ID body: type: json data: overallRating: '{{tools.overallRating}}' competencyRatings: '{{tools.competencyRatings}}' comments: '{{tools.comments}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: background-checks path: /backgroundChecks description: Background check collection operations: - name: list-background-checks method: GET description: Retrieve a collection of background check results inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset - name: candidate in: query type: string required: false description: Filter by candidate Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: submit-background-check method: POST description: Load background check results from an external provider body: type: json data: candidate: '{{tools.candidate}}' jobApplication: '{{tools.jobApplication}}' package: '{{tools.package}}' status: '{{tools.status}}' result: '{{tools.result}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: background-check-packages path: /backgroundCheckPackages description: Background check package collection operations: - name: list-background-check-packages method: GET description: Retrieve available background check packages inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: recruiting-agencies path: /recruitingAgencies description: Recruiting agency collection operations: - name: list-recruiting-agencies method: GET description: Retrieve a collection of recruiting agencies inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: recruiting-agency-by-id path: /recruitingAgencies/{recruitingAgencyId} description: Individual recruiting agency operations: - name: get-recruiting-agency method: GET description: Retrieve details of a specific recruiting agency inputParameters: - name: recruitingAgencyId in: path type: string required: true description: Recruiting agency Workday ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: recruiting-agency-candidates path: /recruitingAgencies/{recruitingAgencyId}/candidates description: Submit candidates from a recruiting agency operations: - name: submit-agency-candidate method: POST description: Submit a candidate from a recruiting agency for a job requisition inputParameters: - name: recruitingAgencyId in: path type: string required: true description: Recruiting agency Workday ID body: type: json data: candidate: '{{tools.candidate}}' jobRequisition: '{{tools.jobRequisition}}' agencyUser: '{{tools.agencyUser}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: applicants path: /applicants description: Applicant collection operations: - name: list-applicants method: GET description: Retrieve pre-hire and applicant records inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: applicants-import path: /applicants/import description: Bulk applicant import operations: - name: import-applicants method: POST description: High-volume applicant import for asynchronous bulk loading body: type: json data: applicants: '{{tools.applicants}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: positions path: /positions description: Position management operations: - name: list-positions method: GET description: Retrieve position management positions inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-position method: POST description: Create and open a new position body: type: json data: title: '{{tools.title}}' jobProfile: '{{tools.jobProfile}}' supervisoryOrganization: '{{tools.supervisoryOrganization}}' location: '{{tools.location}}' workerType: '{{tools.workerType}}' timeType: '{{tools.timeType}}' availableDate: '{{tools.availableDate}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: job-posting-sites path: /jobPostingSites description: Job posting site configuration operations: - name: list-job-posting-sites method: GET description: Retrieve available job posting sites inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: questionnaires path: /questionnaires description: Recruiting questionnaires operations: - name: list-questionnaires method: GET description: Retrieve recruiting questionnaires for screening and assessment inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: veteran-statuses path: /veteranStatuses description: Veteran status reference values operations: - name: list-veteran-statuses method: GET description: Retrieve veteran status reference values for EEO reporting inputParameters: - name: limit in: query type: integer required: false description: Maximum number of results - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest port: 8082 namespace: interview-and-screening-api description: Unified REST API for interview scheduling, feedback collection, and background screening. resources: - path: /v1/interviews name: interviews description: Interviews operations: - method: GET name: list-interviews description: List interviews call: recruiting.list-interviews outputParameters: - type: object mapping: $. - method: POST name: schedule-interview description: Schedule an interview call: recruiting.schedule-interview outputParameters: - type: object mapping: $. - path: /v1/interviews/{interviewId} name: interview-by-id description: Individual interview operations: - method: GET name: get-interview description: Get an interview call: recruiting.get-interview with: interviewId: rest.interviewId outputParameters: - type: object mapping: $. - path: /v1/interviews/{interviewId}/feedback name: interview-feedback description: Interview feedback operations: - method: GET name: list-interview-feedback description: List interview feedback call: recruiting.list-interview-feedback with: interviewId: rest.interviewId outputParameters: - type: object mapping: $. - method: POST name: submit-interview-feedback description: Submit interview feedback call: recruiting.submit-interview-feedback with: interviewId: rest.interviewId outputParameters: - type: object mapping: $. - path: /v1/background-checks name: background-checks description: Background checks operations: - method: GET name: list-background-checks description: List background checks call: recruiting.list-background-checks outputParameters: - type: object mapping: $. - method: POST name: submit-background-check description: Submit a background check call: recruiting.submit-background-check outputParameters: - type: object mapping: $. - path: /v1/background-check-packages name: background-check-packages description: Background check packages operations: - method: GET name: list-background-check-packages description: List background check packages call: recruiting.list-background-check-packages outputParameters: - type: object mapping: $. - type: mcp port: 9092 namespace: interview-and-screening-mcp transport: http description: MCP server for AI-assisted interview scheduling, feedback, and background screening. tools: - name: list-interviews description: List scheduled interviews with filters by application or date range hints: readOnly: true idempotent: true call: recruiting.list-interviews outputParameters: - type: object mapping: $. - name: schedule-interview description: Schedule a new interview for a job application hints: readOnly: false idempotent: false call: recruiting.schedule-interview outputParameters: - type: object mapping: $. - name: get-interview description: Get details of a specific interview hints: readOnly: true idempotent: true call: recruiting.get-interview with: interviewId: tools.interviewId outputParameters: - type: object mapping: $. - name: list-interview-feedback description: List feedback submitted by interviewers for a specific interview hints: readOnly: true idempotent: true call: recruiting.list-interview-feedback with: interviewId: tools.interviewId outputParameters: - type: object mapping: $. - name: submit-interview-feedback description: Submit overall rating, competency ratings, and hiring recommendation for an interview hints: readOnly: false idempotent: false call: recruiting.submit-interview-feedback with: interviewId: tools.interviewId outputParameters: - type: object mapping: $. - name: list-background-checks description: List background check results for candidates hints: readOnly: true idempotent: true call: recruiting.list-background-checks outputParameters: - type: object mapping: $. - name: submit-background-check description: Load background check results from an external screening provider hints: readOnly: false idempotent: false call: recruiting.submit-background-check outputParameters: - type: object mapping: $. - name: list-background-check-packages description: List available background check packages for screening hints: readOnly: true idempotent: true call: recruiting.list-background-check-packages outputParameters: - type: object mapping: $.