Recruitee MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Search Recruitee candidates, jobs, pipelines and interviews, and add notes, tags and tasks.
22 tools: 7 can delete or cancel things and 15 only read.
Scanned Oct 21, 2026
- Deletes or cancels7Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads15Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http recruitee https://recruitee.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
22 tools
Deletes or cancels 7Claude Code: deny
recruitee_add_candidate_noteWRITE: add a note to a candidate's profile, visible to the team.No findings
Why it is in this group
- The name "recruitee_add_candidate_note" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a note to a candidate's profile, visible to the team. Recruitee: POST /c/{company_id}/candidates/{candidate_id}/notes.
Annotations the server declares
- title: Add a note to a candidate
- destructiveHint: true
recruitee_add_candidate_tagsWRITE: add one or more tags to a candidate (existing tags are reused by name; new names create new tags).No findings
Why it is in this group
- The name "recruitee_add_candidate_tags" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add one or more tags to a candidate (existing tags are reused by name; new names create new tags). Recruitee: POST /c/{company_id}/candidates/{candidate_id}/tags.
Annotations the server declares
- title: Tag a candidate
- destructiveHint: true
recruitee_assign_candidate_to_offerWRITE: put an existing candidate on a job (or talent pool) — creates a placement in the pipeline's first stage.No findings
Why it is in this group
- The name "recruitee_assign_candidate_to_offer" says "assign": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: put an existing candidate on a job (or talent pool) — creates a placement in the pipeline's first stage. Pass exactly one of offer_id or talent_pool_id. Recruitee: POST /c/{company_id}/placements.
Annotations the server declares
- title: Add a candidate to a job
- destructiveHint: true
recruitee_create_candidateWRITE: add a candidate manually (as if a recruiter added them in the app — no auto-confirmation email is sent), optionally assigning them straight to one or more jobs in the job's …No findings
Why it is in this group
- The name "recruitee_create_candidate" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a candidate manually (as if a recruiter added them in the app — no auto-confirmation email is sent), optionally assigning them straight to one or more jobs in the job's default stage. Recruitee: POST /c/{company_id}/candidates.
Annotations the server declares
- title: Create a candidate
- destructiveHint: true
recruitee_create_taskWRITE: create a recruiting task, optionally about a candidate, assigned to team members (admin ids from recruitee_list_team_members), with an optional due date.No findings
Why it is in this group
- The name "recruitee_create_task" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create a recruiting task, optionally about a candidate, assigned to team members (admin ids from recruitee_list_team_members), with an optional due date. Recruitee: POST /c/{company_id}/tasks.
Annotations the server declares
- title: Create a task
- destructiveHint: true
recruitee_move_candidate_stageWRITE: move a candidate to another stage of a job's pipeline.No findings
Why it is in this group
- The name "recruitee_move_candidate_stage" says "move": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: move a candidate to another stage of a job's pipeline. Takes the PLACEMENT id (from recruitee_get_candidate → placements[].id, one per job) and the destination stage id (from recruitee_get_pipeline_template). Moving to a 'hired' stage also requires work_location_id. Stage automations configured in Recruitee may run. Undo by moving back. Recruitee: PATCH /c/{company_id}/placements/{id}/change_stage.
Annotations the server declares
- title: Move a candidate to another stage
- destructiveHint: true
recruitee_update_candidateWRITE: update a candidate's name or contact details.No findings
Why it is in this group
- The name "recruitee_update_candidate" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: update a candidate's name or contact details. Only the fields you pass change; list fields (emails, phones, links) REPLACE the existing list, so pass the full list you want. Recruitee: PATCH /c/{company_id}/candidates/{id}.
Annotations the server declares
- title: Update a candidate
- destructiveHint: true
Only reads 15Claude Code: allow
recruitee_get_candidateFetch one candidate's full profile: contact details, sources, tags, cover letter, CV URL, custom fields, ratings, and `placements` — one per job they are on, each with its placemen…No findings
Why it is in this group
- The name "recruitee_get_candidate" says "get": a word for reading.
Description, as the server wrote it Fetch one candidate's full profile: contact details, sources, tags, cover letter, CV URL, custom fields, ratings, and `placements` — one per job they are on, each with its placement id and current stage. The placement id is what recruitee_move_candidate_stage needs. Recruitee: GET /c/{company_id}/candidates/{id}.
Annotations the server declares
- title: Get one candidate
- readOnlyHint: true
recruitee_get_current_userFetch the Recruitee user the API token belongs to — name, email, role, role abilities and company id.No findings
Why it is in this group
- The name "recruitee_get_current_user" says "get": a word for reading.
Description, as the server wrote it Fetch the Recruitee user the API token belongs to — name, email, role, role abilities and company id. A cheap way to confirm the token and company id are right. Recruitee: GET /c/{company_id}/admin.
Annotations the server declares
- title: Get the current user
- readOnlyHint: true
recruitee_get_offerFetch one job or talent pool by id with its full details: description, requirements, location, salary, employment type, candidate counters and pipeline_template_id.No findings
Why it is in this group
- The name "recruitee_get_offer" says "get": a word for reading.
Description, as the server wrote it Fetch one job or talent pool by id with its full details: description, requirements, location, salary, employment type, candidate counters and pipeline_template_id. Recruitee: GET /c/{company_id}/offers/{id}.
Annotations the server declares
- title: Get one job
- readOnlyHint: true
recruitee_get_pipeline_templateFetch a pipeline template with its ordered stages (id, name, group, category).No findings
Why it is in this group
- The name "recruitee_get_pipeline_template" says "get": a word for reading.
Description, as the server wrote it Fetch a pipeline template with its ordered stages (id, name, group, category). A job's `pipeline_template_id` (from recruitee_list_offers / recruitee_get_offer) names its pipeline; the stage ids here are what recruitee_move_candidate_stage takes. Recruitee: GET /c/{company_id}/pipeline_templates/{id}.
Annotations the server declares
- title: Get a hiring pipeline
- readOnlyHint: true
recruitee_list_candidate_notesList the notes on a candidate's profile, with replies, author admin_id and visibility.No findings
Why it is in this group
- The name "recruitee_list_candidate_notes" says "list": a word for reading.
Description, as the server wrote it List the notes on a candidate's profile, with replies, author admin_id and visibility. Recruitee: GET /c/{company_id}/candidates/{candidate_id}/notes.
Annotations the server declares
- title: List a candidate's notes
- readOnlyHint: true
recruitee_list_candidatesList candidates, newest first, optionally narrowed to one job, a name/job search, qualified or disqualified only, specific ids, or those created after a date.No findings
Why it is in this group
- The name "recruitee_list_candidates" says "list": a word for reading.
Description, as the server wrote it List candidates, newest first, optionally narrowed to one job, a name/job search, qualified or disqualified only, specific ids, or those created after a date. Paginate with limit + offset (next offset = offset + limit). Recruitee: GET /c/{company_id}/candidates.
Annotations the server declares
- title: List candidates
- readOnlyHint: true
recruitee_list_departmentsList the company's departments with their ids and job counts.No findings
Why it is in this group
- The name "recruitee_list_departments" says "list": a word for reading.
Description, as the server wrote it List the company's departments with their ids and job counts. Recruitee: GET /c/{company_id}/departments.
Annotations the server declares
- title: List departments
- readOnlyHint: true
recruitee_list_disqualify_reasonsList the company's configured disqualification reasons (id, name, position).No findings
Why it is in this group
- The name "recruitee_list_disqualify_reasons" says "list": a word for reading.
Description, as the server wrote it List the company's configured disqualification reasons (id, name, position). Useful for reading why candidates were disqualified. Recruitee: GET /c/{company_id}/disqualify_reasons.
Annotations the server declares
- title: List disqualify reasons
- readOnlyHint: true
recruitee_list_evaluationsList interview results — evaluations (rating + note) and questionnaire scorecards — optionally for one candidate or by selected reviewers.No findings
Why it is in this group
- The name "recruitee_list_evaluations" says "list": a word for reading.
Description, as the server wrote it List interview results — evaluations (rating + note) and questionnaire scorecards — optionally for one candidate or by selected reviewers. Recruitee: GET /c/{company_id}/interview/results.
Annotations the server declares
- title: List evaluations
- readOnlyHint: true
recruitee_list_interview_eventsList scheduled interview events (candidate_id, offer_id, stage_id, start time, duration, location, attendees).No findings
Why it is in this group
- The name "recruitee_list_interview_events" says "list": a word for reading.
Description, as the server wrote it List scheduled interview events (candidate_id, offer_id, stage_id, start time, duration, location, attendees). Defaults to upcoming events for the whole company; narrow by candidate, date range or interviewer. Recruitee: GET /c/{company_id}/interview/events.
Annotations the server declares
- title: List interviews
- readOnlyHint: true
recruitee_list_offersList the company's jobs (Recruitee calls them offers) with id, title, status, slug, department_id, recruiter_id, hiring_manager_id and pipeline_template_id.No findings
Why it is in this group
- The name "recruitee_list_offers" says "list": a word for reading.
Description, as the server wrote it List the company's jobs (Recruitee calls them offers) with id, title, status, slug, department_id, recruiter_id, hiring_manager_id and pipeline_template_id. Filter by status, department, location, recruiter, hiring manager, tag and more; add heavy fields with `include` (e.g. counters for candidate counts, description, salary, location_ids). Paginated with limit + page (default 1000 per page); `meta.total_count` gives the total. Recruitee: GET /c/{company_id}/offers.
Annotations the server declares
- title: List jobs
- readOnlyHint: true
recruitee_list_tagsList the company's candidate tags with ids and usage counts.No findings
Why it is in this group
- The name "recruitee_list_tags" says "list": a word for reading.
Description, as the server wrote it List the company's candidate tags with ids and usage counts. Tag ids are used in recruitee_search_candidates filters. Recruitee: GET /c/{company_id}/tags.
Annotations the server declares
- title: List candidate tags
- readOnlyHint: true
recruitee_list_tasksList recruiting tasks (title, description, due date, completed, candidate_id).No findings
Why it is in this group
- The name "recruitee_list_tasks" says "list": a word for reading.
Description, as the server wrote it List recruiting tasks (title, description, due date, completed, candidate_id). With candidate_id, lists that candidate's tasks (Recruitee: GET /c/{company_id}/candidates/{candidate_id}/tasks — only `status` applies). Otherwise lists company tasks with scope, assignee, sorting and paging (Recruitee: GET /c/{company_id}/tasks).
Annotations the server declares
- title: List tasks
- readOnlyHint: true
recruitee_list_team_membersList the company's team members (memberships): admin_id, role, whether they are a recruiter or hiring manager, and the jobs they can access.No findings
Why it is in this group
- The name "recruitee_list_team_members" says "list": a word for reading.
Description, as the server wrote it List the company's team members (memberships): admin_id, role, whether they are a recruiter or hiring manager, and the jobs they can access. Use admin_id values for task assignees and filters. User names/emails are in the `references` array. Recruitee: GET /c/{company_id}/memberships.
Annotations the server declares
- title: List team members
- readOnlyHint: true
recruitee_search_candidatesSearch the company's candidates with Recruitee's candidate search (the same engine as the app's filters).No findings
Why it is in this group
- The name "recruitee_search_candidates" says "search": a word for reading.
Description, as the server wrote it Search the company's candidates with Recruitee's candidate search (the same engine as the app's filters). `query` is a free-text search across name, emails, phones, tags, sources, job assignments, current stage, cover letter and CV content. `filters` accepts Recruitee filter objects verbatim, e.g. {"field":"created_at","gte":1548975600} (Unix seconds), {"field":"has_cv","eq":true}, {"filter":"tags","id":{"in":[12]}}, {"filter":"stages","name":{"in":["Phone interview"]}}. Returns `hits` (with each candidate's placements: job + current stage) and `total`. Recruitee: GET /c/{company_id}/search/new/candidates.
Annotations the server declares
- title: Search candidates
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http recruitee https://recruitee.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__recruitee__recruitee_get_current_user",
"mcp__recruitee__recruitee_list_team_members",
"mcp__recruitee__recruitee_search_candidates",
"mcp__recruitee__recruitee_list_candidates",
"mcp__recruitee__recruitee_get_candidate",
"mcp__recruitee__recruitee_list_candidate_notes",
"mcp__recruitee__recruitee_list_offers",
"mcp__recruitee__recruitee_get_offer",
"mcp__recruitee__recruitee_get_pipeline_template",
"mcp__recruitee__recruitee_list_departments",
"mcp__recruitee__recruitee_list_tags",
"mcp__recruitee__recruitee_list_disqualify_reasons",
"mcp__recruitee__recruitee_list_tasks",
"mcp__recruitee__recruitee_list_interview_events",
"mcp__recruitee__recruitee_list_evaluations"
],
"ask": [],
"deny": [
"mcp__recruitee__recruitee_create_candidate",
"mcp__recruitee__recruitee_update_candidate",
"mcp__recruitee__recruitee_add_candidate_note",
"mcp__recruitee__recruitee_add_candidate_tags",
"mcp__recruitee__recruitee_assign_candidate_to_offer",
"mcp__recruitee__recruitee_move_candidate_stage",
"mcp__recruitee__recruitee_create_task"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as recruitee. Review it before you use it.