Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,541Letters: 14Defects: 1,323counted 2 min ago
teppi

Server definition

Hash
sha256:2edd15e83f32f3838033512e40d3c25f3ac35cd14a062f40478a1a51c31d9008
What it is
What a remote MCP server returned when asked what it offers: 29 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Accept an employer's invitation to a job (INVITED -> APPLIED). Idempotent — accepting an already-accepted invite succeeds. Returns NOT_INVITED when there is no open invitation (e.g. already withdrawn/declined), and NOT_FOUND when the job/invite is not found or the job is no longer public.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "candidate.accept_invitation", "outputSchema": { "additionalProperties": false, "properties": { "ok": { "type": "boolean" }, "status": { "type": "string" } }, "type": "object" } }, { "description": "Apply the candidate to a PUBLISHED job, reusing their evaluated profile interview as evidence. Idempotent (re-applying succeeds; `reused` is true when an application row already existed). Requires a completed + evaluated interview — otherwise returns GATE_LOCKED / GATE_EVALUATING / GATE_FAILED. A missing or non-public job returns NOT_FOUND.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "candidate.apply_to_job", "outputSchema": { "additionalProperties": false, "properties": { "applicationId": { "type": "string" }, "ok": { "type": "boolean" }, "reused": { "type": "boolean" }, "status": { "type": "string" } }, "type": "object" } }, { "description": "Decline an employer's invitation to a job (INVITED -> DECLINED). TERMINAL — a declined invite blocks any re-invite from the employer, so only decline when the candidate is sure. Idempotent (declining again succeeds). Returns NOT_INVITED when there is no open invitation, NOT_FOUND when the job/invite is not found.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "candidate.decline_invitation", "outputSchema": { "additionalProperties": false, "properties": { "ok": { "type": "boolean" }, "status": { "type": "string" } }, "type": "object" } }, { "description": "List the candidate's own job applications (newest first) with status, dates, the originating interview score, and a job summary. Returns only the caller's applications — no jobId input, so it is not an enumeration surface.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" } }, "type": "object" }, "name": "candidate.get_applications", "outputSchema": { "additionalProperties": false, "properties": { "applications": { "items": { "additionalProperties": false, "properties": { "appliedAt": { "format": "date-time", "type": "string" }, "interviewEvaluationStatus": { "type": [ "string", "null" ] }, "interviewScore": { "type": [ "number", "null" ] }, "job": { "type": "object" }, "jobId": { "type": "string" }, "status": { "type": "string" }, "withdrawnAt": { "format": "date-time", "type": [ "string", "null" ] } }, "type": "object" }, "type": "array" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Fetch a single published job by id.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "candidate.get_job", "outputSchema": { "additionalProperties": false, "properties": { "job": { "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "List the candidate's saved (bookmarked) jobs, newest first. Only currently PUBLISHED jobs are returned — a job saved earlier then closed/archived is omitted.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" } }, "type": "object" }, "name": "candidate.get_saved_jobs", "outputSchema": { "additionalProperties": false, "properties": { "ok": { "type": "boolean" }, "savedJobs": { "items": { "additionalProperties": false, "properties": { "jobId": { "type": "string" }, "jobType": { "type": "string" }, "location": { "type": [ "string", "null" ] }, "salary": { "type": [ "string", "null" ] }, "savedAt": { "format": "date-time", "type": "string" }, "seniority": { "type": "string" }, "title": { "type": "string" }, "workModel": { "type": "string" } }, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Semantically rank published jobs against the authenticated candidate profile (embedding-based fit). Optional tier (best|good|weak) narrows to a match-quality band — start with tier:'best' for the strongest fits and cascade only if needed; omit for the full ranked list (read tierCounts for the band sizes). Each scored row carries matchExplanation (the white-box 'why': fit score, the candidate's skills that match the job's required set, and a rationale). A free-text `q`, or a candidate who has not completed an interview yet, instead browses published jobs by recency — those rows carry NO fit score (`matchScore` is `null`, no bands); treat them as a browse list, not a ranking.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "limit": { "type": "number" }, "offset": { "type": "number" }, "q": { "type": "string" }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "tier": { "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).", "enum": [ "best", "good", "weak" ], "type": "string" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "name": "candidate.search_jobs", "outputSchema": { "additionalProperties": false, "properties": { "filters": { "type": "object" }, "jobs": { "items": { "properties": { "id": { "type": "string" }, "jobId": { "type": "string" }, "matchExplanation": { "description": "White-box explanation of WHY this candidate ranks here — quote it to justify your shortlist on our data, not a black box.", "properties": { "interviewCompleted": { "description": "false = the interview score comes from a partial/abandoned (early-exit) interview, already haircut-discounted — flag it when justifying.", "type": "boolean" }, "interviewScore": { "description": "Their overall interview score (0-100); null = no evaluated interview (use this, not verifiedSkills, to tell if they interviewed).", "type": [ "number", "null" ] }, "matchedMust": { "description": "Required skills the candidate HAS.", "items": { "type": "string" }, "type": "array" }, "matchedNice": { "description": "Nice-to-have skills the candidate has.", "items": { "type": "string" }, "type": "array" }, "matchedNiceGroups": { "description": "Satisfied N-of-M nice-to-have groups, one label per coverage unit.", "items": { "type": "string" }, "type": "array" }, "missingMust": { "description": "Required skills the candidate is MISSING — the gaps to probe.", "items": { "type": "string" }, "type": "array" }, "missingNice": { "items": { "type": "string" }, "type": "array" }, "missingNiceGroups": { "description": "Unsatisfied N-of-M nice-to-have groups, one label per coverage unit.", "items": { "type": "string" }, "type": "array" }, "mustCoverage": { "description": "Fraction (0-1) of the job's REQUIRED skills the candidate covers.", "type": "number" }, "niceCoverage": { "type": "number" }, "rationale": { "description": "A ready-to-quote plain-English sentence narrating the score (coverage, proof, any haircut).", "type": "string" }, "reliability": { "description": "How trustworthy the evidence is (0-100): a verified interview + corroborating GitHub/LinkedIn lift it.", "type": "number" }, "reliabilitySource": { "description": "Which proof carried the reliability spine (e.g. 'interview', 'github').", "type": "string" }, "reliabilityValue": { "description": "The winning spine value (0-100) before corroboration.", "type": "number" }, "score": { "description": "The 0-100 job-fit score (same as matchScore).", "type": "number" }, "similarity": { "description": "Calibrated semantic similarity to the role (0-100).", "type": "number" }, "verifiedSkills": { "description": "Job-relevant skills the candidate PROVED in their interview — the strongest signal; lead your explanation with these. Empty if none of their proven skills overlap THIS job (not the same as no interview — check interviewScore).", "items": { "type": "string" }, "type": "array" }, "verifiedUplift": { "description": "Points the verified interview skills added to the score.", "type": "number" }, "web3Bonus": { "type": "number" } }, "type": "object" }, "matchReasons": { "items": { "type": "string" }, "type": "array" }, "matchScore": { "type": [ "number", "null" ] }, "matchedMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "matchedNiceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "missingMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "seniorityFit": { "type": "string" }, "title": { "type": "string" } }, "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "page": { "type": "object" }, "tierCounts": { "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.", "properties": { "best": { "type": "number" }, "good": { "type": "number" }, "matched": { "type": "number" }, "unmatched": { "type": "number" }, "weak": { "type": "number" } }, "type": "object" } }, "type": "object" } }, { "description": "Set whether a PUBLISHED job is in the candidate's saved list (idempotent desired-state, NOT a toggle — pass saved:true to bookmark, saved:false to remove). Returns NOT_FOUND for a missing or non-public job.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" }, "saved": { "description": "Desired saved state. true bookmarks the job, false removes the bookmark. Idempotent — a retry never flips the state.", "type": "boolean" } }, "required": [ "jobId", "saved" ], "type": "object" }, "name": "candidate.set_saved_job", "outputSchema": { "additionalProperties": false, "properties": { "ok": { "type": "boolean" }, "saved": { "type": "boolean" } }, "type": "object" } }, { "description": "Withdraw the candidate's active application to a job (APPLIED -> WITHDRAWN). Idempotent (withdrawing again succeeds). Returns NOT_APPLIED when there is no active application (e.g. only an open invitation, or already declined), and NOT_FOUND when no application exists for the job.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "candidate.withdraw_application", "outputSchema": { "additionalProperties": false, "properties": { "ok": { "type": "boolean" }, "status": { "type": "string" } }, "type": "object" } }, { "description": "Transition a CLOSED job to ARCHIVED. Returns NOT_FOUND for missing or non-owner jobs and CONFLICT when the job is not in CLOSED.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.archive_job", "outputSchema": { "additionalProperties": false, "properties": { "job": { "properties": { "applicationCount": { "type": "number" }, "closedAt": { "format": "date-time", "type": [ "string", "null" ] }, "company": { "properties": { "name": { "type": [ "string", "null" ] } }, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "dataSource": { "enum": [ "USER_EDITED", "AI_PARSED" ], "type": "string" }, "description": { "type": [ "string", "null" ] }, "employerId": { "type": "string" }, "hiredCount": { "type": "number" }, "id": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": [ "string", "null" ] }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "publishedAt": { "format": "date-time", "type": [ "string", "null" ] }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "rawInput": { "type": [ "string", "null" ] }, "referralBonus": { "type": [ "number", "null" ] }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": [ "string", "null" ] }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "status": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "title": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "viewCount": { "type": "number" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Cancel a pending invitation sent to a candidate. The invitation record is deleted; the employer can re-invite the same candidate later.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Employer MCP API key", "type": "string" }, "candidateUserId": { "description": "The candidate whose invitation to cancel", "type": "string" }, "jobId": { "description": "The job the invitation belongs to", "type": "string" } }, "required": [ "jobId", "candidateUserId" ], "type": "object" }, "name": "employer.cancel_invitation", "outputSchema": { "additionalProperties": false, "properties": { "candidateUserId": { "type": "string" }, "jobId": { "type": "string" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Transition a PUBLISHED job to CLOSED. Returns NOT_FOUND for missing or non-owner jobs and CONFLICT when the job is not in PUBLISHED.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.close_job", "outputSchema": { "additionalProperties": false, "properties": { "job": { "properties": { "applicationCount": { "type": "number" }, "closedAt": { "format": "date-time", "type": [ "string", "null" ] }, "company": { "properties": { "name": { "type": [ "string", "null" ] } }, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "dataSource": { "enum": [ "USER_EDITED", "AI_PARSED" ], "type": "string" }, "description": { "type": [ "string", "null" ] }, "employerId": { "type": "string" }, "hiredCount": { "type": "number" }, "id": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": [ "string", "null" ] }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "publishedAt": { "format": "date-time", "type": [ "string", "null" ] }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "rawInput": { "type": [ "string", "null" ] }, "referralBonus": { "type": [ "number", "null" ] }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": [ "string", "null" ] }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "status": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "title": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "viewCount": { "type": "number" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Parse raw text via Gemini AI and create a DRAFT job under the current employer. Synchronous: latency 5-30s. The agent can then call employer.update_job to refine fields and employer.publish_job to make it live.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "rawText": { "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.", "type": "string" } }, "required": [ "rawText" ], "type": "object" }, "name": "employer.create_job", "outputSchema": { "additionalProperties": false, "properties": { "job": { "properties": { "applicationCount": { "type": "number" }, "closedAt": { "format": "date-time", "type": [ "string", "null" ] }, "company": { "properties": { "name": { "type": [ "string", "null" ] } }, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "dataSource": { "enum": [ "USER_EDITED", "AI_PARSED" ], "type": "string" }, "description": { "type": [ "string", "null" ] }, "employerId": { "type": "string" }, "hiredCount": { "type": "number" }, "id": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": [ "string", "null" ] }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "publishedAt": { "format": "date-time", "type": [ "string", "null" ] }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "rawInput": { "type": [ "string", "null" ] }, "referralBonus": { "type": [ "number", "null" ] }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": [ "string", "null" ] }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "status": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "title": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "viewCount": { "type": "number" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Permanently delete a DRAFT job that was never published. Returns NOT_FOUND for missing or non-owner jobs and CONFLICT when the job is not in DRAFT.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.delete_job", "outputSchema": { "additionalProperties": false, "properties": { "jobId": { "type": "string" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Full applicant bundle: resume, interview light slice (overallScore + summary + facts), GitHub analysis, LinkedIn analysis. The verbatim transcript is delivered by employer.get_applicant_transcript; the resume's contact fields are blanked unless the application is SHORTLISTED or HIRED.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "applicationId": { "type": "string" } }, "required": [ "applicationId" ], "type": "object" }, "name": "employer.get_applicant_detail", "outputSchema": { "additionalProperties": false, "properties": { "detail": { "properties": { "applicationId": { "type": "string" }, "appliedAt": { "format": "date-time", "type": "string" }, "github": { "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.", "type": [ "object", "null" ] }, "interview": { "description": "Interview overview minus transcript. Use employer.get_applicant_transcript for the verbatim conversation.", "properties": { "completed": { "description": "false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal", "type": "boolean" }, "facts": { "items": { "properties": { "expectedAnswer": { "type": "string" }, "id": { "type": "number" }, "name": { "type": "string" }, "notes": { "type": [ "string", "null" ] }, "qas": { "items": { "properties": { "answer": { "type": "string" }, "notes": { "type": [ "string", "null" ] }, "question": { "type": "string" }, "score": { "type": [ "number", "null" ] } }, "type": "object" }, "type": "array" }, "score": { "type": [ "number", "null" ] }, "summary": { "type": "string" } }, "type": "object" }, "type": "array" }, "overallScore": { "type": [ "number", "null" ] }, "summary": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "jobId": { "type": "string" }, "jobTitle": { "type": "string" }, "linkedin": { "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.", "type": [ "object", "null" ] }, "resume": { "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 — same contact-gating rule as the contact field on list_applicants.", "properties": { "awards": { "items": { "properties": { "awardDate": { "type": "string" }, "description": { "type": "string" }, "issuer": { "type": "string" }, "title": { "type": "string" } }, "type": "object" }, "type": "array" }, "certifications": { "items": { "properties": { "credentialUrl": { "type": "string" }, "expirationDate": { "type": "string" }, "issueDate": { "type": "string" }, "issuingOrganization": { "type": "string" }, "name": { "type": "string" } }, "type": "object" }, "type": "array" }, "education": { "items": { "properties": { "degree": { "type": "string" }, "endDate": { "type": "string" }, "fieldOfStudy": { "type": "string" }, "grade": { "type": "string" }, "schoolName": { "type": "string" }, "startDate": { "type": "string" } }, "type": "object" }, "type": "array" }, "languages": { "items": { "properties": { "languageName": { "type": "string" }, "proficiency": { "type": "string" } }, "type": "object" }, "type": "array" }, "personalInfo": { "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.", "properties": { "city": { "type": "string" }, "country": { "type": "string" }, "email": { "type": "string" }, "firstName": { "type": "string" }, "githubUrl": { "type": "string" }, "headline": { "type": "string" }, "lastName": { "type": "string" }, "linkedinUrl": { "type": "string" }, "phone": { "type": "string" }, "summary": { "type": "string" }, "websiteUrl": { "type": "string" } }, "type": "object" }, "projects": { "items": { "properties": { "description": { "type": "string" }, "projectName": { "type": "string" }, "projectUrl": { "type": "string" } }, "type": "object" }, "type": "array" }, "publications": { "items": { "properties": { "description": { "type": "string" }, "publicationDate": { "type": "string" }, "publisher": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "skills": { "items": { "properties": { "proficiencyLevel": { "type": "string" }, "skillName": { "type": "string" } }, "type": "object" }, "type": "array" }, "workExperience": { "items": { "properties": { "companyName": { "type": "string" }, "description": { "type": "string" }, "endDate": { "type": "string" }, "isCurrentRole": { "type": "boolean" }, "jobTitle": { "type": "string" }, "startDate": { "type": "string" } }, "type": "object" }, "type": "array" } }, "type": "object" }, "resumeAvailable": { "type": "boolean" }, "reviewStatus": { "enum": [ "NEW", "REVIEWING", "SHORTLISTED", "REJECTED", "HIRED" ], "type": "string" }, "status": { "enum": [ "INVITED", "APPLIED", "WITHDRAWN", "DECLINED" ], "type": "string" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Verbatim interview transcript for one applicant. Ownership-only gate (same as the UI Download button — no SHORTLISTED/HIRED requirement). Returns an empty array when the source interview never produced turns.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "applicationId": { "type": "string" } }, "required": [ "applicationId" ], "type": "object" }, "name": "employer.get_applicant_transcript", "outputSchema": { "additionalProperties": false, "properties": { "applicationId": { "type": "string" }, "ok": { "type": "boolean" }, "transcript": { "items": { "properties": { "role": { "enum": [ "assistant", "user" ], "type": "string" }, "text": { "type": "string" } }, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch a discoverable candidate by user id. Returns search-entry shape plus a light interview slice (overallScore + summary + completedAt + evaluatedAt) and `existingApplications`: every JobApplication this candidate has on any of the employer's jobs (all 4 statuses, all 4 job statuses) so the agent can decide whether re-inviting will succeed. Heavy artefacts (transcript, facts, resume, github, linkedin) live behind employer.get_applicant_detail and require an application.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "userId" ], "type": "object" }, "name": "employer.get_candidate", "outputSchema": { "additionalProperties": false, "properties": { "candidate": { "properties": { "applicationStatus": { "enum": [ "INVITED", "APPLIED", "WITHDRAWN", "DECLINED" ], "type": "string" }, "avatarUrl": { "type": [ "string", "null" ] }, "displayName": { "type": "string" }, "existingApplications": { "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.", "items": { "properties": { "applicationId": { "type": "string" }, "createdAt": { "format": "date-time", "type": "string" }, "declinedAt": { "format": "date-time", "type": [ "string", "null" ] }, "invitedAt": { "format": "date-time", "type": [ "string", "null" ] }, "jobId": { "type": "string" }, "jobStatus": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "jobTitle": { "type": "string" }, "status": { "enum": [ "INVITED", "APPLIED", "WITHDRAWN", "DECLINED" ], "type": "string" }, "withdrawnAt": { "format": "date-time", "type": [ "string", "null" ] } }, "type": "object" }, "type": "array" }, "headline": { "type": [ "string", "null" ] }, "id": { "type": "string" }, "interview": { "properties": { "completed": { "description": "false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal", "type": "boolean" }, "completedAt": { "format": "date-time", "type": [ "string", "null" ] }, "evaluatedAt": { "format": "date-time", "type": [ "string", "null" ] }, "overallScore": { "type": [ "number", "null" ] }, "summary": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "invitedAt": { "format": "date-time", "type": "string" }, "location": { "type": [ "string", "null" ] }, "matchScore": { "type": "number" }, "matchedMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "missingMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL", null ], "type": [ "string", "null" ] }, "skills": { "items": { "type": "string" }, "type": "array" }, "summary": { "type": [ "string", "null" ] } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Fetch the interview EVIDENCE (facts proven in the interview + their Q&A, the interview summary, the résumé summary, and GitHub/LinkedIn signals) for ONE candidate AGAINST one of your published jobs — the white-box basis to explain WHY a candidate ranks where they do. Use it AFTER search_candidates_for_job: shortlist with the scorecard, then read the evidence here for the few you care about and write your own comparative review. Returns NOT_FOUND if the job is missing / not yours / not published, or the candidate is not in that job's searchable pool.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "jobId": { "description": "One of YOUR published vacancies — the evidence is scoped to it (must-linked facts use its required skills).", "type": "string" }, "userId": { "description": "A candidate from search_candidates_for_job for THIS jobId. The interview evidence to explain your ranking.", "type": "string" } }, "required": [ "jobId", "userId" ], "type": "object" }, "name": "employer.get_candidate_evidence", "outputSchema": { "additionalProperties": false, "properties": { "evidence": { "additionalProperties": false, "properties": { "candidateId": { "type": "string" }, "experienceYears": { "type": [ "number", "null" ] }, "facts": { "items": { "properties": { "claim": { "type": "string" }, "factScore": { "type": [ "number", "null" ] }, "mustLinked": { "type": "boolean" }, "qas": { "items": { "properties": { "answer": { "type": "string" }, "question": { "type": "string" } }, "type": "object" }, "type": "array" } }, "type": "object" }, "type": "array" }, "github": { "properties": { "mergedPrestigeLanguages": { "items": { "type": "string" }, "type": "array" }, "trustRank": { "type": "number" }, "web3Repos": { "type": "number" } }, "type": [ "object", "null" ] }, "headline": { "type": [ "string", "null" ] }, "interview": { "properties": { "completed": { "description": "false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal", "type": "boolean" }, "interviewId": { "type": "number" }, "overallScore": { "type": [ "number", "null" ] }, "summary": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "linkedin": { "properties": { "historyCoherence": { "type": "number" }, "recognizedCerts": { "type": "number" } }, "type": [ "object", "null" ] }, "resumeSummary": { "type": [ "string", "null" ] }, "truncation": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Fetch a single employer job record by id. Returns NOT_FOUND for missing jobs and for jobs owned by another employer (no existence leak).", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.get_job", "outputSchema": { "additionalProperties": false, "properties": { "job": { "properties": { "applicationCount": { "type": "number" }, "closedAt": { "format": "date-time", "type": [ "string", "null" ] }, "company": { "properties": { "name": { "type": [ "string", "null" ] } }, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "dataSource": { "enum": [ "USER_EDITED", "AI_PARSED" ], "type": "string" }, "description": { "type": [ "string", "null" ] }, "employerId": { "type": "string" }, "hiredCount": { "type": "number" }, "id": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": [ "string", "null" ] }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "publishedAt": { "format": "date-time", "type": [ "string", "null" ] }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "rawInput": { "type": [ "string", "null" ] }, "referralBonus": { "type": [ "number", "null" ] }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": [ "string", "null" ] }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "status": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "title": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "viewCount": { "type": "number" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Invite a discoverable candidate to one of the employer's PUBLISHED jobs. Creates a JobApplication with status=INVITED. If a prior WITHDRAWN row exists for this (candidate, job) pair, the row is UPDATEd back to INVITED (re-invite is allowed after the candidate withdrew on their own). INVITED, APPLIED, and DECLINED rows still block with INVITE_BLOCKED: INVITE_NOT_ALLOWED. Inspect `existingApplications` on employer.get_candidate before calling to know which case applies. Returns INVITE_BLOCKED with one of several sub-reasons (JOB_NOT_FOUND, JOB_NOT_PUBLISHED, CANDIDATE_NOT_FOUND, NOT_DISCOVERABLE, INVITE_NOT_ALLOWED) when the invite cannot be created. A missing vacancy and a vacancy owned by another employer both return JOB_NOT_FOUND (you cannot tell them apart — anti-enumeration).", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "candidateUserId": { "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId", "candidateUserId" ], "type": "object" }, "name": "employer.invite_candidate", "outputSchema": { "additionalProperties": false, "properties": { "applicationId": { "type": "string" }, "ok": { "type": "boolean" }, "status": { "type": "string" } }, "type": "object" } }, { "description": "List the live (APPLIED) applicants on one of the employer's jobs. The candidate showcase + interview overallScore/summary are always returned; contact fields are only included when the application is SHORTLISTED or HIRED.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.list_applicants", "outputSchema": { "additionalProperties": false, "properties": { "applicants": { "items": { "properties": { "applicationId": { "type": "string" }, "appliedAt": { "format": "date-time", "type": "string" }, "candidate": { "properties": { "avatarUrl": { "type": [ "string", "null" ] }, "displayName": { "type": "string" }, "headline": { "type": [ "string", "null" ] }, "location": { "type": [ "string", "null" ] }, "userId": { "type": "string" } }, "type": "object" }, "contact": { "description": "Non-null only when reviewStatus is SHORTLISTED or HIRED (contact gating).", "properties": { "email": { "type": [ "string", "null" ] }, "githubUrl": { "type": [ "string", "null" ] }, "linkedinUrl": { "type": [ "string", "null" ] }, "phone": { "type": [ "string", "null" ] }, "websiteUrl": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "interview": { "properties": { "completed": { "description": "false = partial/abandoned interview (early exit); the score is a haircut-discounted partial signal", "type": "boolean" }, "overallScore": { "type": [ "number", "null" ] }, "summary": { "type": [ "string", "null" ] } }, "type": "object" }, "jobFitScore": { "description": "Live job-fit score (0-100) from the matching combiner — same engine as search_candidates_for_job. null if the job is not indexed yet.", "type": [ "number", "null" ] }, "matchExplanation": { "description": "White-box explanation of WHY this candidate ranks here — quote it to justify your shortlist on our data, not a black box.", "properties": { "interviewCompleted": { "description": "false = the interview score comes from a partial/abandoned (early-exit) interview, already haircut-discounted — flag it when justifying.", "type": "boolean" }, "interviewScore": { "description": "Their overall interview score (0-100); null = no evaluated interview (use this, not verifiedSkills, to tell if they interviewed).", "type": [ "number", "null" ] }, "matchedMust": { "description": "Required skills the candidate HAS.", "items": { "type": "string" }, "type": "array" }, "matchedNice": { "description": "Nice-to-have skills the candidate has.", "items": { "type": "string" }, "type": "array" }, "matchedNiceGroups": { "description": "Satisfied N-of-M nice-to-have groups, one label per coverage unit.", "items": { "type": "string" }, "type": "array" }, "missingMust": { "description": "Required skills the candidate is MISSING — the gaps to probe.", "items": { "type": "string" }, "type": "array" }, "missingNice": { "items": { "type": "string" }, "type": "array" }, "missingNiceGroups": { "description": "Unsatisfied N-of-M nice-to-have groups, one label per coverage unit.", "items": { "type": "string" }, "type": "array" }, "mustCoverage": { "description": "Fraction (0-1) of the job's REQUIRED skills the candidate covers.", "type": "number" }, "niceCoverage": { "type": "number" }, "rationale": { "description": "A ready-to-quote plain-English sentence narrating the score (coverage, proof, any haircut).", "type": "string" }, "reliability": { "description": "How trustworthy the evidence is (0-100): a verified interview + corroborating GitHub/LinkedIn lift it.", "type": "number" }, "reliabilitySource": { "description": "Which proof carried the reliability spine (e.g. 'interview', 'github').", "type": "string" }, "reliabilityValue": { "description": "The winning spine value (0-100) before corroboration.", "type": "number" }, "score": { "description": "The 0-100 job-fit score (same as matchScore).", "type": "number" }, "similarity": { "description": "Calibrated semantic similarity to the role (0-100).", "type": "number" }, "verifiedSkills": { "description": "Job-relevant skills the candidate PROVED in their interview — the strongest signal; lead your explanation with these. Empty if none of their proven skills overlap THIS job (not the same as no interview — check interviewScore).", "items": { "type": "string" }, "type": "array" }, "verifiedUplift": { "description": "Points the verified interview skills added to the score.", "type": "number" }, "web3Bonus": { "type": "number" } }, "type": [ "object", "null" ] }, "reviewStatus": { "enum": [ "NEW", "REVIEWING", "SHORTLISTED", "REJECTED", "HIRED" ], "type": "string" }, "source": { "description": "APPLIED = candidate applied directly. INVITED = candidate accepted an invitation the employer had sent earlier (i.e. `invitedById` was set on the row).", "enum": [ "APPLIED", "INVITED" ], "type": "string" }, "status": { "enum": [ "INVITED", "APPLIED", "WITHDRAWN", "DECLINED" ], "type": "string" } }, "type": "object" }, "type": "array" }, "jobId": { "type": "string" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "List the pending (INVITED) candidates on one of the employer's jobs — candidates who have been invited but have not yet accepted or declined.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Employer MCP API key", "type": "string" }, "jobId": { "description": "The job to list invitations for", "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.list_invitations", "outputSchema": { "additionalProperties": false, "properties": { "invitations": { "items": { "properties": { "applicationId": { "type": "string" }, "candidate": { "properties": { "avatarUrl": { "type": [ "string", "null" ] }, "displayName": { "type": "string" }, "headline": { "type": [ "string", "null" ] }, "location": { "type": [ "string", "null" ] }, "userId": { "type": "string" } }, "type": "object" }, "invitedAt": { "format": "date-time", "type": "string" } }, "type": "object" }, "type": "array" }, "jobId": { "type": "string" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "List jobs owned by the current employer account.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "limit": { "type": "number" }, "offset": { "type": "number" }, "status": { "oneOf": [ { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, { "items": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "type": "array" } ] } }, "type": "object" }, "name": "employer.list_jobs", "outputSchema": { "additionalProperties": false, "properties": { "filters": { "properties": { "limit": { "type": "number" }, "offset": { "type": "number" }, "status": { "items": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "type": "array" } }, "type": "object" }, "jobs": { "items": { "properties": { "applicationCount": { "type": "number" }, "closedAt": { "format": "date-time", "type": [ "string", "null" ] }, "createdAt": { "format": "date-time", "type": "string" }, "dataSource": { "enum": [ "USER_EDITED", "AI_PARSED" ], "type": "string" }, "description": { "type": [ "string", "null" ] }, "employerId": { "type": "string" }, "hiredCount": { "type": "number" }, "id": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": [ "string", "null" ] }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "publishedAt": { "format": "date-time", "type": [ "string", "null" ] }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "rawInput": { "type": [ "string", "null" ] }, "referralBonus": { "type": [ "number", "null" ] }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": [ "string", "null" ] }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "status": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "title": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "viewCount": { "type": "number" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "page": { "properties": { "hasMore": { "type": "boolean" }, "limit": { "type": "number" }, "offset": { "type": "number" }, "total": { "type": "number" } }, "type": "object" } }, "type": "object" } }, { "description": "Transition a DRAFT job to PUBLISHED. Returns NOT_FOUND for missing or non-owner jobs and CONFLICT when the job is not in DRAFT.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "jobId": { "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.publish_job", "outputSchema": { "additionalProperties": false, "properties": { "job": { "properties": { "applicationCount": { "type": "number" }, "closedAt": { "format": "date-time", "type": [ "string", "null" ] }, "company": { "properties": { "name": { "type": [ "string", "null" ] } }, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "dataSource": { "enum": [ "USER_EDITED", "AI_PARSED" ], "type": "string" }, "description": { "type": [ "string", "null" ] }, "employerId": { "type": "string" }, "hiredCount": { "type": "number" }, "id": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": [ "string", "null" ] }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "publishedAt": { "format": "date-time", "type": [ "string", "null" ] }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "rawInput": { "type": [ "string", "null" ] }, "referralBonus": { "type": [ "number", "null" ] }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": [ "string", "null" ] }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "status": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "title": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "viewCount": { "type": "number" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Free-form semantic search across discoverable (interviewed) candidates with no job context. The query is embedded and candidates are ranked by semantic similarity — a preliminary search with no per-vacancy fit score (there is no vacancy to fit). For a scored ranking, use employer.search_candidates_for_job with a job id.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "page": { "type": "number" }, "pageSize": { "type": "number" }, "query": { "maxLength": 512, "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "employer.search_candidates_by_query", "outputSchema": { "additionalProperties": false, "properties": { "entries": { "items": { "properties": { "applicationStatus": { "enum": [ "INVITED", "APPLIED", "WITHDRAWN", "DECLINED" ], "type": "string" }, "avatarUrl": { "type": [ "string", "null" ] }, "displayName": { "type": "string" }, "headline": { "type": [ "string", "null" ] }, "id": { "type": "string" }, "invitedAt": { "format": "date-time", "type": "string" }, "location": { "type": [ "string", "null" ] }, "matchScore": { "type": "number" }, "matchedMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "missingMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL", null ], "type": [ "string", "null" ] }, "skills": { "items": { "type": "string" }, "type": "array" }, "summary": { "type": [ "string", "null" ] } }, "type": "object" }, "type": "array" }, "jobId": { "type": [ "string", "null" ] }, "ok": { "type": "boolean" }, "page": { "properties": { "page": { "type": "number" }, "pageSize": { "type": "number" }, "total": { "type": "number" } }, "type": "object" }, "query": { "type": "string" }, "reason": { "enum": [ "NOT_INDEXED", "NO_CATEGORIES" ], "type": "string" }, "tierCounts": { "properties": { "matched": { "type": "number" }, "unmatched": { "type": "number" } }, "type": "object" } }, "type": "object" } }, { "description": "Semantically rank discoverable (interviewed) candidates against one of the employer's own jobs, with a per-candidate fit score AND a white-box explanation. WORKFLOW for finding the best hire: 1) call with tier:'best' to get the strongest candidates (cover the required skills + proven in interview), cascade to tier:'good' then tier:'weak' only if you need more (read tierCounts to decide; paginate within a band via page.hasMore, not page.total); 2) each row carries matchExplanation — the white-box 'why' (the fit score, the skills the candidate PROVED in their interview, what they're missing, and a plain-English rationale) — use it to explain your shortlist on OUR data, not a black box; 3) for the few you shortlist, call employer.get_candidate_evidence(jobId, userId) for the interview facts + Q&A to write a deeper comparative review. Omit tier for the full ranked pool (back-compat). Returns NOT_FOUND when the job is missing / owned by another employer (no existence leak), or NOT_INDEXED / NO_CATEGORIES when the job is not indexed for semantic search yet (re-save / republish, then retry).", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "jobId": { "type": "string" }, "page": { "type": "number" }, "pageSize": { "type": "number" }, "sort": { "enum": [ "bestMatch", "newest" ], "type": "string" }, "tier": { "description": "Match-quality band (required-skill coverage + fit). Omit to get the full ranked pool. To shortlist, START with tier:\"best\" — 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 → tierCounts bands are 0).", "enum": [ "best", "good", "weak" ], "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "employer.search_candidates_for_job", "outputSchema": { "additionalProperties": false, "properties": { "advisory": { "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 — 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.", "properties": { "code": { "enum": [ "EMPTY_BEST_REVIEW_MUST_HAVES" ], "type": "string" }, "message": { "description": "Ready-to-relay plain-English advisory text.", "type": "string" } }, "type": "object" }, "entries": { "items": { "properties": { "applicationStatus": { "enum": [ "INVITED", "APPLIED", "WITHDRAWN", "DECLINED" ], "type": "string" }, "avatarUrl": { "type": [ "string", "null" ] }, "displayName": { "type": "string" }, "headline": { "type": [ "string", "null" ] }, "id": { "type": "string" }, "invitedAt": { "format": "date-time", "type": "string" }, "location": { "type": [ "string", "null" ] }, "matchExplanation": { "description": "White-box explanation of WHY this candidate ranks here — quote it to justify your shortlist on our data, not a black box.", "properties": { "interviewCompleted": { "description": "false = the interview score comes from a partial/abandoned (early-exit) interview, already haircut-discounted — flag it when justifying.", "type": "boolean" }, "interviewScore": { "description": "Their overall interview score (0-100); null = no evaluated interview (use this, not verifiedSkills, to tell if they interviewed).", "type": [ "number", "null" ] }, "matchedMust": { "description": "Required skills the candidate HAS.", "items": { "type": "string" }, "type": "array" }, "matchedNice": { "description": "Nice-to-have skills the candidate has.", "items": { "type": "string" }, "type": "array" }, "matchedNiceGroups": { "description": "Satisfied N-of-M nice-to-have groups, one label per coverage unit.", "items": { "type": "string" }, "type": "array" }, "missingMust": { "description": "Required skills the candidate is MISSING — the gaps to probe.", "items": { "type": "string" }, "type": "array" }, "missingNice": { "items": { "type": "string" }, "type": "array" }, "missingNiceGroups": { "description": "Unsatisfied N-of-M nice-to-have groups, one label per coverage unit.", "items": { "type": "string" }, "type": "array" }, "mustCoverage": { "description": "Fraction (0-1) of the job's REQUIRED skills the candidate covers.", "type": "number" }, "niceCoverage": { "type": "number" }, "rationale": { "description": "A ready-to-quote plain-English sentence narrating the score (coverage, proof, any haircut).", "type": "string" }, "reliability": { "description": "How trustworthy the evidence is (0-100): a verified interview + corroborating GitHub/LinkedIn lift it.", "type": "number" }, "reliabilitySource": { "description": "Which proof carried the reliability spine (e.g. 'interview', 'github').", "type": "string" }, "reliabilityValue": { "description": "The winning spine value (0-100) before corroboration.", "type": "number" }, "score": { "description": "The 0-100 job-fit score (same as matchScore).", "type": "number" }, "similarity": { "description": "Calibrated semantic similarity to the role (0-100).", "type": "number" }, "verifiedSkills": { "description": "Job-relevant skills the candidate PROVED in their interview — the strongest signal; lead your explanation with these. Empty if none of their proven skills overlap THIS job (not the same as no interview — check interviewScore).", "items": { "type": "string" }, "type": "array" }, "verifiedUplift": { "description": "Points the verified interview skills added to the score.", "type": "number" }, "web3Bonus": { "type": "number" } }, "type": "object" }, "matchScore": { "type": "number" }, "matchedMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "missingMustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL", null ], "type": [ "string", "null" ] }, "skills": { "items": { "type": "string" }, "type": "array" }, "summary": { "type": [ "string", "null" ] } }, "type": "object" }, "type": "array" }, "jobId": { "type": [ "string", "null" ] }, "ok": { "type": "boolean" }, "page": { "properties": { "hasMore": { "type": "boolean" }, "page": { "type": "number" }, "pageSize": { "type": "number" }, "total": { "type": "number" } }, "type": "object" }, "reason": { "enum": [ "NOT_INDEXED", "NO_CATEGORIES" ], "type": "string" }, "tierCounts": { "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'.", "properties": { "best": { "type": "number" }, "good": { "type": "number" }, "matched": { "type": "number" }, "unmatched": { "type": "number" }, "weak": { "type": "number" } }, "type": "object" } }, "type": "object" } }, { "description": "Update the employer review state on an application (NEW / REVIEWING / SHORTLISTED / REJECTED / HIRED). SHORTLISTED and HIRED unlock the candidate's direct contact in subsequent list_applicants / get_applicant_detail calls. WITHDRAWN applications surface as CONFLICT.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "type": "string" }, "applicationId": { "type": "string" }, "reviewStatus": { "enum": [ "NEW", "REVIEWING", "SHORTLISTED", "REJECTED", "HIRED" ], "type": "string" } }, "required": [ "applicationId", "reviewStatus" ], "type": "object" }, "name": "employer.set_review_status", "outputSchema": { "additionalProperties": false, "properties": { "applicationId": { "type": "string" }, "ok": { "type": "boolean" }, "reviewStatus": { "type": "string" } }, "type": "object" } }, { "description": "Update the fields of an existing employer job. Accepts a partial whitelist; rawInput and dataSource are not editable (the wrapper auto-flips dataSource to USER_EDITED on every agent update). Non-owner reads return NOT_FOUND.", "inputSchema": { "additionalProperties": false, "properties": { "apiKey": { "description": "Optional WorkorAI MCP key for in-session authentication when the MCP client was initialized anonymously.", "type": "string" }, "fields": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": "string" }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "referralBonus": { "type": "number" }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": "string" }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "title": { "type": "string" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "jobId": { "type": "string" } }, "required": [ "jobId", "fields" ], "type": "object" }, "name": "employer.update_job", "outputSchema": { "additionalProperties": false, "properties": { "job": { "properties": { "applicationCount": { "type": "number" }, "closedAt": { "format": "date-time", "type": [ "string", "null" ] }, "company": { "properties": { "name": { "type": [ "string", "null" ] } }, "type": "object" }, "createdAt": { "format": "date-time", "type": "string" }, "dataSource": { "enum": [ "USER_EDITED", "AI_PARSED" ], "type": "string" }, "description": { "type": [ "string", "null" ] }, "employerId": { "type": "string" }, "hiredCount": { "type": "number" }, "id": { "type": "string" }, "jobType": { "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "FREELANCE" ], "type": "string" }, "location": { "type": [ "string", "null" ] }, "mustHaveSkills": { "items": { "type": "string" }, "type": "array" }, "niceToHaveSkills": { "items": { "type": "string" }, "type": "array" }, "perks": { "items": { "type": "string" }, "type": "array" }, "publishedAt": { "format": "date-time", "type": [ "string", "null" ] }, "qualifications": { "items": { "type": "string" }, "type": "array" }, "rawInput": { "type": [ "string", "null" ] }, "referralBonus": { "type": [ "number", "null" ] }, "responsibilities": { "items": { "type": "string" }, "type": "array" }, "salary": { "type": [ "string", "null" ] }, "seniority": { "enum": [ "INTERN", "JUNIOR", "MIDDLE", "SENIOR", "LEAD", "PRINCIPAL" ], "type": "string" }, "status": { "enum": [ "DRAFT", "PUBLISHED", "CLOSED", "ARCHIVED" ], "type": "string" }, "title": { "type": "string" }, "updatedAt": { "format": "date-time", "type": "string" }, "viewCount": { "type": "number" }, "workModel": { "enum": [ "REMOTE", "HYBRID", "ON_SITE" ], "type": "string" } }, "type": "object" }, "ok": { "type": "boolean" } }, "type": "object" } }, { "description": "Use when someone wants to find work/jobs (candidate) or hire/find candidates (employer) but the authenticated role tools are not usable yet. Explains role-specific onboarding (candidate profile interview, employer key generation), MCP key location, and next steps for both surfaces.", "inputSchema": { "additionalProperties": false, "properties": { "role": { "enum": [ "CANDIDATE", "EMPLOYER" ], "type": "string" } }, "type": "object" }, "name": "request_access", "outputSchema": { "additionalProperties": false, "properties": { "capabilityManifest": { "additionalProperties": false, "properties": { "activeCapabilities": { "type": "array" }, "auth": { "type": "string" }, "endpoint": { "type": "string" }, "keyPrefix": { "type": "string" }, "plannedCapabilities": { "type": "array" }, "referenceDocs": { "type": "array" }, "runtimePolicy": { "type": "string" }, "sessionRules": { "type": "array" }, "transport": { "type": "string" }, "visibleWithoutAuth": { "type": "array" } }, "type": "object" }, "guides": { "type": "array" }, "message": { "type": "string" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:2edd15e83f32f3838033512e40d3c25f3ac35cd14a062f40478a1a51c31d9008 | sha256sum