MCP server
Workorai
io.github.work0r-ai/workorai
Checked 26 Oct 2026, 08:29 UTC · Connected to it and listed its tools
WorkorAI talent marketplace MCP: candidate job search and employer hiring with explainable matching
Working at last checkAbout 5,688 tokens per request once connected29 tools
https://workorai.com/mcp
At a glance
- Type
- MCP server
- Publisher
- Not verified
- Status
- Working at last check
- Tools
- 29
- Token cost
- About 5,688 tokens per request
- Sets up in
- Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, Antigravity, ChatGPT, OpenAI API, Grok
- Last checked
- 26 Oct 2026, 08:29 UTC
Connect it to your agent
Opens the app, which shows the server and asks you to confirm. For other apps, copy the setup below.
Claude Code
claude mcp add --transport http workorai https://workorai.com/mcp
Claude Desktop
Settings → Connectors → Add custom connector, and paste the URL.
Codex (config.toml)
[mcp_servers.workorai] url = "https://workorai.com/mcp"
Gemini CLI
{"mcpServers":{"workorai":{"httpUrl":"https://workorai.com/mcp"}}}
Cursor
{"mcpServers":{"workorai":{"url":"https://workorai.com/mcp"}}}
VS Code
{"servers":{"workorai":{"type":"http","url":"https://workorai.com/mcp"}}}
Antigravity
agy mcp add workorai https://workorai.com/mcp
ChatGPT
Settings → Apps & Connectors → Advanced settings: turn on Developer mode, then Create a connector and paste the URL. Which plans can do this varies.
OpenAI API (Responses tools)
{"type":"mcp","server_label":"workorai","server_url":"https://workorai.com/mcp","require_approval":"always"}
Grok (xAI API tools)
{"type":"mcp","server_label":"workorai","server_url":"https://workorai.com/mcp"}
Tools
candidate.accept_invitation~176 tokens
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.candidate.apply_to_job~190 tokens
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 micandidate.decline_invitation~184 tokens
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/invitecandidate.get_applications~144 tokens
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.candidate.get_job~101 tokens
Fetch a single published job by id.candidate.get_saved_jobs~124 tokens
List the candidate's saved (bookmarked) jobs, newest first. Only currently PUBLISHED jobs are returned — a job saved earlier then closed/archived is omitted.candidate.search_jobs~452 tokens
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 scandidate.set_saved_job~200 tokens
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.candidate.withdraw_application~175 tokens
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.employer.archive_job~128 tokens
Transition a CLOSED job to ARCHIVED. Returns NOT_FOUND for missing or non-owner jobs and CONFLICT when the job is not in CLOSED.employer.cancel_invitation~154 tokens
Cancel a pending invitation sent to a candidate. The invitation record is deleted; the employer can re-invite the same candidate later.employer.close_job~129 tokens
Transition a PUBLISHED job to CLOSED. Returns NOT_FOUND for missing or non-owner jobs and CONFLICT when the job is not in PUBLISHED.employer.create_job~221 tokens
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.employer.delete_jobDeletes data · ~134 tokens
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.employer.get_applicant_detail~146 tokens
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.employer.get_applicant_transcript~125 tokens
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.employer.get_candidate~194 tokens
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 agentemployer.get_candidate_evidence~300 tokens
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_femployer.get_job~130 tokens
Fetch a single employer job record by id. Returns NOT_FOUND for missing jobs and for jobs owned by another employer (no existence leak).employer.invite_candidate~300 tokens
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, APPLIEDemployer.list_applicants~122 tokens
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.employer.list_invitations~123 tokens
List the pending (INVITED) candidates on one of the employer's jobs — candidates who have been invited but have not yet accepted or declined.employer.list_jobs~158 tokens
List jobs owned by the current employer account.employer.publish_jobSends messages · ~128 tokens
Transition a DRAFT job to PUBLISHED. Returns NOT_FOUND for missing or non-owner jobs and CONFLICT when the job is not in DRAFT.employer.search_candidates_by_query~173 tokens
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_femployer.search_candidates_for_job~601 tokens
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),employer.set_review_status~170 tokens
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.employer.update_job~375 tokens
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.request_access~131 tokens
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.
Browse
Related MCP servers
- Loker Dollar Jobs
Free remote-jobs search for AI agents: worldwide remote roles, USD pay, apply links. - Queryquarry
Double-blind talent marketplace: AIs search anonymous opted-in candidates; reveal on consent. - Himalayas Remote Jobs
Remote jobs: job search, salary data and application tracking, or post a job and hire candidates - Yardstick ATS
Manage hiring in Yardstick's ATS: jobs, candidates, applications, interviews, and scorecards. - D Talent
Talent discovery for AI. Search and read agent-readable candidate profiles; cite by URL. - Hire Filipino Virtual Assistants (Armasourcing)
Hire vetted Filipino virtual assistants: check pool depth, hiring process, terms, book a call. - Adzuna
Adzuna MCP — global job-board aggregator - AI Dev Jobs
MCP for 8,700+ current AI jobs. 13 tools: search, match, salaries, companies, commerce quotes.
Badge for your README
[](https://aptlynx.net/servers/io.github.work0r-ai/workorai)
Listing text is written by the maker; AptLynx lists tools and does not vouch for them. Find another tool · Browse by topic · For agents