이 MCP로 할 수 있는 일
Supports a talent marketplace with job search, candidate matching, applications, invitations, hiring workflows, interviews, and explainable recruiting decisions.
도구
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'status': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'reused': {'type': 'boolean'}, 'status': {'type': 'string'}, 'applicationId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'status': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'applications': {'type': 'array', 'items': {'type': 'object', 'properties': {'job': {'type': 'object'}, 'jobId': {'type': 'string'}, 'status': {'type': 'string'}, 'appliedAt': {'type': 'string', 'format': 'date-time'}, 'withdrawnAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'interviewScore': {'type': ['number', 'null']}, 'interviewEvaluationStatus': {'type': ['string', 'null']}}, 'additionalProperties': False}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'job': {'type': 'object'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'savedJobs': {'type': 'array', 'items': {'type': 'object', 'properties': {'jobId': {'type': 'string'}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'jobType': {'type': 'string'}, 'savedAt': {'type': 'string', 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'seniority': {'type': 'string'}, 'workModel': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string'}, 'tier': {'enum': ['best', 'good', 'weak'], 'type': 'string', 'description': 'Match-quality band. Omit for the full ranked list. START with tier:"best" (strongest fits), cascade to "good"/"weak" only if you need more; read tierCounts to decide. Ignored on a free-text q / no-interview browse (no bands).'}, 'limit': {'type': 'number'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}, 'offset': {'type': 'number'}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'jobs': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'jobId': {'type': 'string'}, 'title': {'type': 'string'}, 'matchScore': {'type': ['number', 'null']}, 'matchReasons': {'type': 'array', 'items': {'type': 'string'}}, 'seniorityFit': {'type': 'string'}, 'matchExplanation': {'type': 'object', 'properties': {'score': {'type': 'number', 'description': 'The 0-100 job-fit score (same as matchScore).'}, 'rationale': {'type': 'string', 'description': 'A ready-to-quote plain-English sentence narrating the score (coverage, proof, any haircut).'}, 'web3Bonus': {'type': 'number'}, 'similarity': {'type': 'number', 'description': 'Calibrated semantic similarity to the role (0-100).'}, 'matchedMust': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required skills the candidate HAS.'}, 'matchedNice': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Nice-to-have skills the candidate has.'}, 'missingMust': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required skills the candidate is MISSING â\x80\x94 the gaps to probe.'}, 'missingNice': {'type': 'array', 'items': {'type': 'string'}}, 'reliability': {'type': 'number', 'description': 'How trustworthy the evidence is (0-100): a verified interview + corroborating GitHub/LinkedIn lift it.'}, 'mustCoverage': {'type': 'number', 'description': "Fraction (0-1) of the job's REQUIRED skills the candidate covers."}, 'niceCoverage': {'type': 'number'}, 'interviewScore': {'type': ['number', 'null'], 'description': 'Their overall interview score (0-100); null = no evaluated interview (use this, not verifiedSkills, to tell if they interviewed).'}, 'verifiedSkills': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Job-relevant skills the candidate PROVED in their interview â\x80\x94 the strongest signal; lead your explanation with these. Empty if none of their proven skills overlap THIS job (not the same as no interview â\x80\x94 check interviewScore).'}, 'verifiedUplift': {'type': 'number', 'description': 'Points the verified interview skills added to the score.'}, 'reliabilityValue': {'type': 'number', 'description': 'The winning spine value (0-100) before corroboration.'}, 'matchedNiceGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Satisfied N-of-M nice-to-have groups, one label per coverage unit.'}, 'missingNiceGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Unsatisfied N-of-M nice-to-have groups, one label per coverage unit.'}, 'reliabilitySource': {'type': 'string', 'description': "Which proof carried the reliability spine (e.g. 'interview', 'github')."}, 'interviewCompleted': {'type': 'boolean', 'description': 'false = the interview score comes from a partial/abandoned (early-exit) interview, already haircut-discounted â\x80\x94 flag it when justifying.'}}, 'description': 'White-box explanation of WHY this candidate ranks here â\x80\x94 quote it to justify your shortlist on our data, not a black box.'}, 'matchedMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'missingMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'matchedNiceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}}}}, 'page': {'type': 'object'}, 'filters': {'type': 'object'}, 'tierCounts': {'type': 'object', 'properties': {'best': {'type': 'number'}, 'good': {'type': 'number'}, 'weak': {'type': 'number'}, 'matched': {'type': 'number'}, 'unmatched': {'type': 'number'}}, 'description': "Band sizes for a tier cascade: matched = jobs covering >=1 required skill, unmatched = none; best/good/weak split the matched pool (all bands 0 on a free-text q / no-interview browse). Start at tier:'best', cascade if needed."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId', 'saved'], 'properties': {'jobId': {'type': 'string'}, 'saved': {'type': 'boolean', 'description': 'Desired saved state. true bookmarks the job, false removes the bookmark. Idempotent â\x80\x94 a retry never flips the state.'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'saved': {'type': 'boolean'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'status': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'job': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'status': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'company': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}}}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'closedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'rawInput': {'type': ['string', 'null']}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'viewCount': {'type': 'number'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'dataSource': {'enum': ['USER_EDITED', 'AI_PARSED'], 'type': 'string'}, 'employerId': {'type': 'string'}, 'hiredCount': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'publishedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'referralBonus': {'type': ['number', 'null']}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'applicationCount': {'type': 'number'}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId', 'candidateUserId'], 'properties': {'jobId': {'type': 'string', 'description': 'The job the invitation belongs to'}, 'apiKey': {'type': 'string', 'description': 'Employer MCP API key'}, 'candidateUserId': {'type': 'string', 'description': 'The candidate whose invitation to cancel'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'jobId': {'type': 'string'}, 'candidateUserId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'job': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'status': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'company': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}}}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'closedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'rawInput': {'type': ['string', 'null']}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'viewCount': {'type': 'number'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'dataSource': {'enum': ['USER_EDITED', 'AI_PARSED'], 'type': 'string'}, 'employerId': {'type': 'string'}, 'hiredCount': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'publishedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'referralBonus': {'type': ['number', 'null']}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'applicationCount': {'type': 'number'}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['rawText'], 'properties': {'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}, 'rawText': {'type': 'string', 'description': 'Free-form job description (up to 10000 characters). Parsed by Gemini AI; the call typically takes 5-30 seconds. On a client-side timeout, recover by calling employer.list_jobs with status=DRAFT and pick the most recent row.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'job': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'status': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'company': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}}}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'closedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'rawInput': {'type': ['string', 'null']}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'viewCount': {'type': 'number'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'dataSource': {'enum': ['USER_EDITED', 'AI_PARSED'], 'type': 'string'}, 'employerId': {'type': 'string'}, 'hiredCount': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'publishedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'referralBonus': {'type': ['number', 'null']}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'applicationCount': {'type': 'number'}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'jobId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['applicationId'], 'properties': {'apiKey': {'type': 'string'}, 'applicationId': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'detail': {'type': 'object', 'properties': {'jobId': {'type': 'string'}, 'github': {'type': ['object', 'null'], 'description': 'GitHub profile analysis blob from the WorkorAI profile-analyzer (~40 fields incl. repo summaries, language distribution, contribution stats). Treat as opaque; consult the workorai-agent-kit catalog or surface fields on demand.'}, 'resume': {'type': 'object', 'properties': {'awards': {'type': 'array', 'items': {'type': 'object', 'properties': {'title': {'type': 'string'}, 'issuer': {'type': 'string'}, 'awardDate': {'type': 'string'}, 'description': {'type': 'string'}}}}, 'skills': {'type': 'array', 'items': {'type': 'object', 'properties': {'skillName': {'type': 'string'}, 'proficiencyLevel': {'type': 'string'}}}}, 'projects': {'type': 'array', 'items': {'type': 'object', 'properties': {'projectUrl': {'type': 'string'}, 'description': {'type': 'string'}, 'projectName': {'type': 'string'}}}}, 'education': {'type': 'array', 'items': {'type': 'object', 'properties': {'grade': {'type': 'string'}, 'degree': {'type': 'string'}, 'endDate': {'type': 'string'}, 'startDate': {'type': 'string'}, 'schoolName': {'type': 'string'}, 'fieldOfStudy': {'type': 'string'}}}}, 'languages': {'type': 'array', 'items': {'type': 'object', 'properties': {'proficiency': {'type': 'string'}, 'languageName': {'type': 'string'}}}}, 'personalInfo': {'type': 'object', 'properties': {'city': {'type': 'string'}, 'email': {'type': 'string'}, 'phone': {'type': 'string'}, 'country': {'type': 'string'}, 'summary': {'type': 'string'}, 'headline': {'type': 'string'}, 'lastName': {'type': 'string'}, 'firstName': {'type': 'string'}, 'githubUrl': {'type': 'string'}, 'websiteUrl': {'type': 'string'}, 'linkedinUrl': {'type': 'string'}}, 'description': 'Contact fields (email, phone, linkedinUrl, githubUrl, websiteUrl) are blank strings when reviewStatus is below SHORTLISTED. firstName/lastName/city/country/headline/summary are always populated when present on the source resume.'}, 'publications': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'publisher': {'type': 'string'}, 'description': {'type': 'string'}, 'publicationDate': {'type': 'string'}}}}, 'certifications': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'issueDate': {'type': 'string'}, 'credentialUrl': {'type': 'string'}, 'expirationDate': {'type': 'string'}, 'issuingOrganization': {'type': 'string'}}}}, 'workExperience': {'type': 'array', 'items': {'type': 'object', 'properties': {'endDate': {'type': 'string'}, 'jobTitle': {'type': 'string'}, 'startDate': {'type': 'string'}, 'companyName': {'type': 'string'}, 'description': {'type': 'string'}, 'isCurrentRole': {'type': 'boolean'}}}}}, 'description': 'Resume data sanitized to remove server-local paths and internal flags. The personalInfo contact fields (email, phone, linkedinUrl, githubUrl, websiteUrl) are blanked when reviewStatus is below SHORTLISTED â\x80\x94 same contact-gating rule as the contact field on list_applicants.'}, 'status': {'enum': ['INVITED', 'APPLIED', 'WITHDRAWN', 'DECLINED'], 'type': 'string'}, 'jobTitle': {'type': 'string'}, 'linkedin': {'type': ['object', 'null'], 'description': 'LinkedIn profile analysis blob from the WorkorAI profile-analyzer (~30 fields incl. headline, experience entries, skill endorsements). Treat as opaque; consult the workorai-agent-kit catalog or surface fields on demand.'}, 'appliedAt': {'type': 'string', 'format': 'date-time'}, 'interview': {'type': ['object', 'null'], 'properties': {'facts': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'number'}, 'qas': {'type': 'array', 'items': {'type': 'object', 'properties': {'notes': {'type': ['string', 'null']}, 'score': {'type': ['number', 'null']}, 'answer': {'type': 'string'}, 'question': {'type': 'string'}}}}, 'name': {'type': 'string'}, 'notes': {'type': ['string', 'null']}, 'score': {'type': ['number', 'null']}, 'summary': {'type': 'string'}, 'expectedAnswer': {'type': 'string'}}}}, 'summary': {'type': ['string', 'null']}, 'completed': {'type': 'boolean', 'description': 'false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal'}, 'overallScore': {'type': ['number', 'null']}}, 'description': 'Interview overview minus transcript. Use employer.get_applicant_transcript for the verbatim conversation.'}, 'reviewStatus': {'enum': ['NEW', 'REVIEWING', 'SHORTLISTED', 'REJECTED', 'HIRED'], 'type': 'string'}, 'applicationId': {'type': 'string'}, 'resumeAvailable': {'type': 'boolean'}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['applicationId'], 'properties': {'apiKey': {'type': 'string'}, 'applicationId': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'transcript': {'type': 'array', 'items': {'type': 'object', 'properties': {'role': {'enum': ['assistant', 'user'], 'type': 'string'}, 'text': {'type': 'string'}}}}, 'applicationId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['userId'], 'properties': {'apiKey': {'type': 'string'}, 'userId': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'candidate': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'skills': {'type': 'array', 'items': {'type': 'string'}}, 'summary': {'type': ['string', 'null']}, 'headline': {'type': ['string', 'null']}, 'location': {'type': ['string', 'null']}, 'avatarUrl': {'type': ['string', 'null']}, 'interview': {'type': ['object', 'null'], 'properties': {'summary': {'type': ['string', 'null']}, 'completed': {'type': 'boolean', 'description': 'false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal'}, 'completedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'evaluatedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'overallScore': {'type': ['number', 'null']}}}, 'invitedAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL', None], 'type': ['string', 'null']}, 'matchScore': {'type': 'number'}, 'displayName': {'type': 'string'}, 'applicationStatus': {'enum': ['INVITED', 'APPLIED', 'WITHDRAWN', 'DECLINED'], 'type': 'string'}, 'existingApplications': {'type': 'array', 'items': {'type': 'object', 'properties': {'jobId': {'type': 'string'}, 'status': {'enum': ['INVITED', 'APPLIED', 'WITHDRAWN', 'DECLINED'], 'type': 'string'}, 'jobTitle': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'invitedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'jobStatus': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'declinedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'withdrawnAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'applicationId': {'type': 'string'}}}, 'description': "Every JobApplication this candidate has on any of the employer's jobs (all 4 statuses, all 4 job statuses). Lets the agent decide whether re-inviting will succeed: WITHDRAWN allows re-invite (the service UPDATEs the row back to INVITED), DECLINED is terminal, INVITED is already pending acceptance, APPLIED means the candidate is already in the funnel."}, 'matchedMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'missingMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId', 'userId'], 'properties': {'jobId': {'type': 'string', 'description': 'One of YOUR published vacancies â\x80\x94 the evidence is scoped to it (must-linked facts use its required skills).'}, 'apiKey': {'type': 'string'}, 'userId': {'type': 'string', 'description': 'A candidate from search_candidates_for_job for THIS jobId. The interview evidence to explain your ranking.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'evidence': {'type': 'object', 'properties': {'facts': {'type': 'array', 'items': {'type': 'object', 'properties': {'qas': {'type': 'array', 'items': {'type': 'object', 'properties': {'answer': {'type': 'string'}, 'question': {'type': 'string'}}}}, 'claim': {'type': 'string'}, 'factScore': {'type': ['number', 'null']}, 'mustLinked': {'type': 'boolean'}}}}, 'github': {'type': ['object', 'null'], 'properties': {'trustRank': {'type': 'number'}, 'web3Repos': {'type': 'number'}, 'mergedPrestigeLanguages': {'type': 'array', 'items': {'type': 'string'}}}}, 'headline': {'type': ['string', 'null']}, 'linkedin': {'type': ['object', 'null'], 'properties': {'recognizedCerts': {'type': 'number'}, 'historyCoherence': {'type': 'number'}}}, 'interview': {'type': ['object', 'null'], 'properties': {'summary': {'type': ['string', 'null']}, 'completed': {'type': 'boolean', 'description': 'false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal'}, 'interviewId': {'type': 'number'}, 'overallScore': {'type': ['number', 'null']}}}, 'truncation': {'type': 'array', 'items': {'type': 'string'}}, 'candidateId': {'type': 'string'}, 'resumeSummary': {'type': ['string', 'null']}, 'experienceYears': {'type': ['number', 'null']}}, 'additionalProperties': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'job': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'status': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'company': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}}}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'closedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'rawInput': {'type': ['string', 'null']}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'viewCount': {'type': 'number'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'dataSource': {'enum': ['USER_EDITED', 'AI_PARSED'], 'type': 'string'}, 'employerId': {'type': 'string'}, 'hiredCount': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'publishedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'referralBonus': {'type': ['number', 'null']}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'applicationCount': {'type': 'number'}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId', 'candidateUserId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string'}, 'candidateUserId': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'status': {'type': 'string'}, 'applicationId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'jobId': {'type': 'string'}, 'applicants': {'type': 'array', 'items': {'type': 'object', 'properties': {'source': {'enum': ['APPLIED', 'INVITED'], 'type': 'string', 'description': 'APPLIED = candidate applied directly. INVITED = candidate accepted an invitation the employer had sent earlier (i.e. `invitedById` was set on the row).'}, 'status': {'enum': ['INVITED', 'APPLIED', 'WITHDRAWN', 'DECLINED'], 'type': 'string'}, 'contact': {'type': ['object', 'null'], 'properties': {'email': {'type': ['string', 'null']}, 'phone': {'type': ['string', 'null']}, 'githubUrl': {'type': ['string', 'null']}, 'websiteUrl': {'type': ['string', 'null']}, 'linkedinUrl': {'type': ['string', 'null']}}, 'description': 'Non-null only when reviewStatus is SHORTLISTED or HIRED (contact gating).'}, 'appliedAt': {'type': 'string', 'format': 'date-time'}, 'candidate': {'type': 'object', 'properties': {'userId': {'type': 'string'}, 'headline': {'type': ['string', 'null']}, 'location': {'type': ['string', 'null']}, 'avatarUrl': {'type': ['string', 'null']}, 'displayName': {'type': 'string'}}}, 'interview': {'type': 'object', 'properties': {'summary': {'type': ['string', 'null']}, 'completed': {'type': 'boolean', 'description': 'false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal'}, 'overallScore': {'type': ['number', 'null']}}}, 'jobFitScore': {'type': ['number', 'null'], 'description': 'Live job-fit score (0-100) from the matching combiner â\x80\x94 same engine as search_candidates_for_job. null if the job is not indexed yet.'}, 'reviewStatus': {'enum': ['NEW', 'REVIEWING', 'SHORTLISTED', 'REJECTED', 'HIRED'], 'type': 'string'}, 'applicationId': {'type': 'string'}, 'matchExplanation': {'type': ['object', 'null'], 'properties': {'score': {'type': 'number', 'description': 'The 0-100 job-fit score (same as matchScore).'}, 'rationale': {'type': 'string', 'description': 'A ready-to-quote plain-English sentence narrating the score (coverage, proof, any haircut).'}, 'web3Bonus': {'type': 'number'}, 'similarity': {'type': 'number', 'description': 'Calibrated semantic similarity to the role (0-100).'}, 'matchedMust': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required skills the candidate HAS.'}, 'matchedNice': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Nice-to-have skills the candidate has.'}, 'missingMust': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required skills the candidate is MISSING â\x80\x94 the gaps to probe.'}, 'missingNice': {'type': 'array', 'items': {'type': 'string'}}, 'reliability': {'type': 'number', 'description': 'How trustworthy the evidence is (0-100): a verified interview + corroborating GitHub/LinkedIn lift it.'}, 'mustCoverage': {'type': 'number', 'description': "Fraction (0-1) of the job's REQUIRED skills the candidate covers."}, 'niceCoverage': {'type': 'number'}, 'interviewScore': {'type': ['number', 'null'], 'description': 'Their overall interview score (0-100); null = no evaluated interview (use this, not verifiedSkills, to tell if they interviewed).'}, 'verifiedSkills': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Job-relevant skills the candidate PROVED in their interview â\x80\x94 the strongest signal; lead your explanation with these. Empty if none of their proven skills overlap THIS job (not the same as no interview â\x80\x94 check interviewScore).'}, 'verifiedUplift': {'type': 'number', 'description': 'Points the verified interview skills added to the score.'}, 'reliabilityValue': {'type': 'number', 'description': 'The winning spine value (0-100) before corroboration.'}, 'matchedNiceGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Satisfied N-of-M nice-to-have groups, one label per coverage unit.'}, 'missingNiceGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Unsatisfied N-of-M nice-to-have groups, one label per coverage unit.'}, 'reliabilitySource': {'type': 'string', 'description': "Which proof carried the reliability spine (e.g. 'interview', 'github')."}, 'interviewCompleted': {'type': 'boolean', 'description': 'false = the interview score comes from a partial/abandoned (early-exit) interview, already haircut-discounted â\x80\x94 flag it when justifying.'}}, 'description': 'White-box explanation of WHY this candidate ranks here â\x80\x94 quote it to justify your shortlist on our data, not a black box.'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string', 'description': 'The job to list invitations for'}, 'apiKey': {'type': 'string', 'description': 'Employer MCP API key'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'jobId': {'type': 'string'}, 'invitations': {'type': 'array', 'items': {'type': 'object', 'properties': {'candidate': {'type': 'object', 'properties': {'userId': {'type': 'string'}, 'headline': {'type': ['string', 'null']}, 'location': {'type': ['string', 'null']}, 'avatarUrl': {'type': ['string', 'null']}, 'displayName': {'type': 'string'}}}, 'invitedAt': {'type': 'string', 'format': 'date-time'}, 'applicationId': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}, 'offset': {'type': 'number'}, 'status': {'oneOf': [{'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, {'type': 'array', 'items': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}}]}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'jobs': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'status': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'closedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'rawInput': {'type': ['string', 'null']}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'viewCount': {'type': 'number'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'dataSource': {'enum': ['USER_EDITED', 'AI_PARSED'], 'type': 'string'}, 'employerId': {'type': 'string'}, 'hiredCount': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'publishedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'referralBonus': {'type': ['number', 'null']}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'applicationCount': {'type': 'number'}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'page': {'type': 'object', 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'offset': {'type': 'number'}, 'hasMore': {'type': 'boolean'}}}, 'filters': {'type': 'object', 'properties': {'limit': {'type': 'number'}, 'offset': {'type': 'number'}, 'status': {'type': 'array', 'items': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'job': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'status': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'company': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}}}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'closedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'rawInput': {'type': ['string', 'null']}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'viewCount': {'type': 'number'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'dataSource': {'enum': ['USER_EDITED', 'AI_PARSED'], 'type': 'string'}, 'employerId': {'type': 'string'}, 'hiredCount': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'publishedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'referralBonus': {'type': ['number', 'null']}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'applicationCount': {'type': 'number'}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'page': {'type': 'number'}, 'query': {'type': 'string', 'maxLength': 512}, 'apiKey': {'type': 'string'}, 'pageSize': {'type': 'number'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'page': {'type': 'object', 'properties': {'page': {'type': 'number'}, 'total': {'type': 'number'}, 'pageSize': {'type': 'number'}}}, 'jobId': {'type': ['string', 'null']}, 'query': {'type': 'string'}, 'reason': {'enum': ['NOT_INDEXED', 'NO_CATEGORIES'], 'type': 'string'}, 'entries': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'skills': {'type': 'array', 'items': {'type': 'string'}}, 'summary': {'type': ['string', 'null']}, 'headline': {'type': ['string', 'null']}, 'location': {'type': ['string', 'null']}, 'avatarUrl': {'type': ['string', 'null']}, 'invitedAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL', None], 'type': ['string', 'null']}, 'matchScore': {'type': 'number'}, 'displayName': {'type': 'string'}, 'applicationStatus': {'enum': ['INVITED', 'APPLIED', 'WITHDRAWN', 'DECLINED'], 'type': 'string'}, 'matchedMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'missingMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}}}}, 'tierCounts': {'type': 'object', 'properties': {'matched': {'type': 'number'}, 'unmatched': {'type': 'number'}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId'], 'properties': {'page': {'type': 'number'}, 'sort': {'enum': ['bestMatch', 'newest'], 'type': 'string'}, 'tier': {'enum': ['best', 'good', 'weak'], 'type': 'string', 'description': 'Match-quality band (required-skill coverage + fit). Omit to get the full ranked pool. To shortlist, START with tier:"best" â\x80\x94 the strongest candidates (cover the required skills, proven in interview); only cascade to "good" then "weak" if you need more. Read tierCounts to decide; paginate within a band using page.hasMore (NOT page.total, which is the full pool). Each row carries matchExplanation (the white-box "why"); then call employer.get_candidate_evidence for the interview evidence to explain your ranking. Ignored on sort:"newest" (a recency browse has no bands â\x86\x92 tierCounts bands are 0).'}, 'jobId': {'type': 'string'}, 'apiKey': {'type': 'string'}, 'pageSize': {'type': 'number'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'page': {'type': 'object', 'properties': {'page': {'type': 'number'}, 'total': {'type': 'number'}, 'hasMore': {'type': 'boolean'}, 'pageSize': {'type': 'number'}}}, 'jobId': {'type': ['string', 'null']}, 'reason': {'enum': ['NOT_INDEXED', 'NO_CATEGORIES'], 'type': 'string'}, 'entries': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'skills': {'type': 'array', 'items': {'type': 'string'}}, 'summary': {'type': ['string', 'null']}, 'headline': {'type': ['string', 'null']}, 'location': {'type': ['string', 'null']}, 'avatarUrl': {'type': ['string', 'null']}, 'invitedAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL', None], 'type': ['string', 'null']}, 'matchScore': {'type': 'number'}, 'displayName': {'type': 'string'}, 'matchExplanation': {'type': 'object', 'properties': {'score': {'type': 'number', 'description': 'The 0-100 job-fit score (same as matchScore).'}, 'rationale': {'type': 'string', 'description': 'A ready-to-quote plain-English sentence narrating the score (coverage, proof, any haircut).'}, 'web3Bonus': {'type': 'number'}, 'similarity': {'type': 'number', 'description': 'Calibrated semantic similarity to the role (0-100).'}, 'matchedMust': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required skills the candidate HAS.'}, 'matchedNice': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Nice-to-have skills the candidate has.'}, 'missingMust': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required skills the candidate is MISSING â\x80\x94 the gaps to probe.'}, 'missingNice': {'type': 'array', 'items': {'type': 'string'}}, 'reliability': {'type': 'number', 'description': 'How trustworthy the evidence is (0-100): a verified interview + corroborating GitHub/LinkedIn lift it.'}, 'mustCoverage': {'type': 'number', 'description': "Fraction (0-1) of the job's REQUIRED skills the candidate covers."}, 'niceCoverage': {'type': 'number'}, 'interviewScore': {'type': ['number', 'null'], 'description': 'Their overall interview score (0-100); null = no evaluated interview (use this, not verifiedSkills, to tell if they interviewed).'}, 'verifiedSkills': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Job-relevant skills the candidate PROVED in their interview â\x80\x94 the strongest signal; lead your explanation with these. Empty if none of their proven skills overlap THIS job (not the same as no interview â\x80\x94 check interviewScore).'}, 'verifiedUplift': {'type': 'number', 'description': 'Points the verified interview skills added to the score.'}, 'reliabilityValue': {'type': 'number', 'description': 'The winning spine value (0-100) before corroboration.'}, 'matchedNiceGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Satisfied N-of-M nice-to-have groups, one label per coverage unit.'}, 'missingNiceGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Unsatisfied N-of-M nice-to-have groups, one label per coverage unit.'}, 'reliabilitySource': {'type': 'string', 'description': "Which proof carried the reliability spine (e.g. 'interview', 'github')."}, 'interviewCompleted': {'type': 'boolean', 'description': 'false = the interview score comes from a partial/abandoned (early-exit) interview, already haircut-discounted â\x80\x94 flag it when justifying.'}}, 'description': 'White-box explanation of WHY this candidate ranks here â\x80\x94 quote it to justify your shortlist on our data, not a black box.'}, 'applicationStatus': {'enum': ['INVITED', 'APPLIED', 'WITHDRAWN', 'DECLINED'], 'type': 'string'}, 'matchedMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'missingMustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}}}}, 'advisory': {'type': 'object', 'properties': {'code': {'enum': ['EMPTY_BEST_REVIEW_MUST_HAVES'], 'type': 'string'}, 'message': {'type': 'string', 'description': 'Ready-to-relay plain-English advisory text.'}}, 'description': "OPTIONAL, present only when NO candidate reaches the Best tier for a constrained vacancy (best===0 but candidates exist below). A non-restrictive nudge to relay to the employer: the vacancy's must-have requirements may be strict enough that nobody is an exceptional match â\x80\x94 consider moving the less-critical must-haves to nice-to-have to widen the pool. A SUGGESTION, never an instruction to auto-edit the job."}, 'tierCounts': {'type': 'object', 'properties': {'best': {'type': 'number'}, 'good': {'type': 'number'}, 'weak': {'type': 'number'}, 'matched': {'type': 'number'}, 'unmatched': {'type': 'number'}}, 'description': "Band sizes to plan a tier cascade: matched = cover >=1 required skill, unmatched = cover none; best/good/weak split the matched pool (best+good+weak === matched on a scored search; all bands 0 on a newest browse). Use to decide whether to fetch tier:'best' then 'good'/'weak'."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['applicationId', 'reviewStatus'], 'properties': {'apiKey': {'type': 'string'}, 'reviewStatus': {'enum': ['NEW', 'REVIEWING', 'SHORTLISTED', 'REJECTED', 'HIRED'], 'type': 'string'}, 'applicationId': {'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'reviewStatus': {'type': 'string'}, 'applicationId': {'type': 'string'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['jobId', 'fields'], 'properties': {'jobId': {'type': 'string'}, 'apiKey': {'type': 'string', 'description': 'Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.'}, 'fields': {'type': 'object', 'properties': {'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': 'string'}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'location': {'type': 'string'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'description': {'type': 'string'}, 'referralBonus': {'type': 'number'}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'job': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'perks': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null']}, 'status': {'enum': ['DRAFT', 'PUBLISHED', 'CLOSED', 'ARCHIVED'], 'type': 'string'}, 'company': {'type': 'object', 'properties': {'name': {'type': ['string', 'null']}}}, 'jobType': {'enum': ['FULL_TIME', 'PART_TIME', 'CONTRACT', 'FREELANCE'], 'type': 'string'}, 'closedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'location': {'type': ['string', 'null']}, 'rawInput': {'type': ['string', 'null']}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'seniority': {'enum': ['INTERN', 'JUNIOR', 'MIDDLE', 'SENIOR', 'LEAD', 'PRINCIPAL'], 'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'viewCount': {'type': 'number'}, 'workModel': {'enum': ['REMOTE', 'HYBRID', 'ON_SITE'], 'type': 'string'}, 'dataSource': {'enum': ['USER_EDITED', 'AI_PARSED'], 'type': 'string'}, 'employerId': {'type': 'string'}, 'hiredCount': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'publishedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'referralBonus': {'type': ['number', 'null']}, 'mustHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'qualifications': {'type': 'array', 'items': {'type': 'string'}}, 'applicationCount': {'type': 'number'}, 'niceToHaveSkills': {'type': 'array', 'items': {'type': 'string'}}, 'responsibilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'role': {'enum': ['CANDIDATE', 'EMPLOYER'], 'type': 'string'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'guides': {'type': 'array'}, 'message': {'type': 'string'}, 'capabilityManifest': {'type': 'object', 'properties': {'auth': {'type': 'string'}, 'endpoint': {'type': 'string'}, 'keyPrefix': {'type': 'string'}, 'transport': {'type': 'string'}, 'sessionRules': {'type': 'array'}, 'referenceDocs': {'type': 'array'}, 'runtimePolicy': {'type': 'string'}, 'activeCapabilities': {'type': 'array'}, 'visibleWithoutAuth': {'type': 'array'}, 'plannedCapabilities': {'type': 'array'}}, 'additionalProperties': False}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
AdButler
Manages AdButler advertisers, campaigns, ad items, audiences, zones, creatives, catalogs, and advertising reports.
Duvo MCP
Provides governed retail and CPG operations for cases, queues, approvals, automations, process documentation, integrations, and a…
Lovie Company Formation
Supports company formation and business administration with bank accounts, cards, invoicing, bookkeeping, accounting periods, and…
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
独行录 / opcmenu
Supports founder and company discovery, collaboration goals and tasks, events and signups, networking, messaging, profiles, produ…
Meta Council
Provides governed workflows for consulting, outreach, sales deals, invoices, marketing campaigns, content approvals, accounting a…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…