Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
100Hires avatar

100Hires AI ATS & Recruitment Software

  • Updated May 9, 2026
  • 100Hires/mcp

Official 100Hires MCP: AI ATS & Recruitment Software for candidates, jobs, applications, interviews.

About

Official 100Hires MCP: AI ATS & Recruitment Software for candidates, jobs, applications, interviews. Exposes 131 MCP tools including com.100hires/100hires. Covers setup, configuration, and when-to-use guidance from upstream documentation for 100Hires - AI ATS & Recruitment Software. Install via Claude Desktop, Cursor, or any MCP-compatible client using the upstream server manifest.

  • **Candidates** - list, create, update, tag, attach files, view timeline, message
  • **Applications** - list, move through pipeline stages, advance, hire, reject, transfer
  • **Jobs** - list, create, publish to job boards, manage hiring team, set up webhooks
  • **Interviews** - schedule, list, retrieve details
  • **Messages & email templates** - schedule, batch-send, manage notification emails, build nurture campaigns

100Hires AI ATS & Recruitment Software by the numbers

  • Exposes 131 verified tools (MCP introspection)
  • Data as of Jul 9, 2026 (Skillselion catalog sync)
terminal
claude mcp add --transport http 100hires https://mcp.100hires.com/mcp

Add your badge

Show developers this MCP server is listed on Skillselion. Paste this into your README.

Listed on Skillselion
TransportHTTP
AuthNone
Tools131
Last updatedMay 9, 2026
Repository100Hires/mcp

How do I connect 100Hires - AI ATS & Recruitment Software to my MCP client?

Official 100Hires MCP: AI ATS & Recruitment Software for candidates, jobs, applications, interviews.

Who is it for?

Teams wiring 100Hires - AI ATS & Recruitment Software into Claude, Cursor, or custom agents for developer tools.

Skip if: Skip when you need a non-MCP SDK or hosted API without stdio/SSE transport.

What you get

Working 100Hires - AI ATS & Recruitment Software MCP server with verified tool registration and client config.

  • Live ATS-backed answers about candidates, jobs, applications, and interviews in chat
  • Agent-driven recruiting actions exposed as MCP tools (per your 100Hires plan)
  • Documented remote endpoint you can audit via the public GitHub mcp repository

By the numbers

  • [object Object]
At a glance

100Hires - AI ATS & Recruitment Software capabilities & compatibility

Capabilities
100hires ai ats & recruitment software mcp too · 100hires ai ats & recruitment software client · 100hires ai ats & recruitment software agent w
Use cases
orchestration
Runs
Remote server
From the docs

What 100Hires - AI ATS & Recruitment Software says it does

Official 100Hires MCP: AI ATS & Recruitment Software for candidates, jobs, applications, interviews.
README.md
Official 100Hires MCP: AI ATS & Recruitment Software for candidates, jobs, applications, interviews.
README.md

Tools 131

Public tool metadata - what this server can do for an agent.

hires_list_candidates13 params

List candidates with optional filters. Supports filtering by job, stage, email, name, LinkedIn, and date ranges. Returns paginated results. Recommended size <= 10: candidate payloads include the full profile answers array and can be large; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints — reduce size, narrow filters, or fetch a single record via hires_get_candidate.

  • company_idnumberFilter by company ID. Required only when the API key has access to multiple companies.
  • job_idnumberFilter candidates by job ID.
  • stage_idnumberFilter candidates by pipeline stage ID. Best used together with job_id.
  • emailstringExact candidate email filter.
  • qstringPlain-text search by name or email. Supports partial matches.
  • full_namestringCandidate full-name filter.
  • linkedinstringSearch by LinkedIn profile URL or alias (e.g. 'johndoe' or full URL).
  • created_afternumber | stringReturn only candidates created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated.
  • updated_afternumber | stringReturn only candidates updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Useful for incremental sync.
  • includestringComma-separated related data. Supported: `applications` — embeds each candidate's application summaries with job titles and pipeline stages. Recommended when the caller needs stage/pipeline context (e.g. UI rendering, candidate-status questions).
  • pagenumberPage number (1-based).
  • sizenumberNumber of items per page.
  • viewstringResponse shape. Default `summary` excludes the `profile` array (custom profile-form answers). Use `full` only when those answers are genuinely needed; call hires_get_candidate for a single full record.
hires_create_candidate13 params

Create a new candidate profile. Optionally link to a job/stage and attach the candidate's resume as extracted text. Used for imports, inbound forms, and enrichment workflows. When the user provides an attached resume (PDF/DOCX/etc.), parse the file content yourself from the chat context — LLMs natively extract text from uploaded files — and pass the extracted text via resume_text. Do NOT attempt to inline binary file data: host function-call serializers truncate arguments above ~20KB.

  • company_idnumberTarget company ID. Required only when the API key has access to multiple companies.
  • first_namestringCandidate first name.
  • last_namestringCandidate last name.
  • emailstringCandidate email address. Used for deduplication.
  • phonestringCandidate phone number.
  • profileobjectKey-value map of profile field answers. Keys can be question text or question_id. Example: {"Current job title": "Senior Engineer"}.
  • job_idnumberJob ID to create an application for this candidate.
  • stage_idnumberPipeline stage ID for the initial application. Requires job_id.
  • citystringCandidate city for location/timezone resolution.
  • statestringCandidate state or region.
  • countrystringCandidate country name or ISO code.
  • timezonestringIANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.
  • resume_textstringPlain-text resume content extracted by the model from an attached PDF/DOCX/etc. Stored as a text/plain attachment on the candidate. Do not pass binary or base64 here — only the parsed text content.
hires_get_candidate1 param

Get full candidate data including application summaries by candidate ID or alias.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
hires_update_candidate13 params

Update candidate fields, profile answers, and optional resume text. Used for bi-directional sync from ATS, CRM, sourcing, or enrichment tools. When the user provides an attached resume, parse it yourself from chat context and pass via resume_text — do not inline binary data.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • first_namestringCandidate first name.
  • last_namestringCandidate last name.
  • emailstringCandidate email address.
  • phonestringCandidate phone number.
  • profileobjectKey-value map of profile field answers. Keys can be question text or question_id.
  • job_idnumberJob ID to create a new application for this candidate.
  • stage_idnumberPipeline stage ID for the application. Requires job_id.
  • citystringCandidate city for location/timezone resolution.
  • statestringCandidate state or region.
  • countrystringCandidate country name or ISO code.
  • timezonestringIANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.
  • resume_textstringPlain-text resume content extracted by the model from an attached file. Stored as a text/plain attachment. Do not pass binary or base64 — only parsed text.
hires_delete_candidate1 param

Permanently delete a candidate by ID or alias.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
hires_list_candidate_tags1 param

List all tags assigned to a candidate. Useful for segmentation and audience-based automations.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
hires_add_candidate_tags2 params

Add one or more tags to a candidate. Used for campaign tagging, qualification labels, and source attribution.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • tagsarrayrequiredArray of tag strings to add.
hires_remove_candidate_tag2 params

Remove a specific tag from a candidate.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • tagstringrequiredThe tag string to remove.
hires_batch_add_tags2 params

Add tags to multiple candidates in one request (max 100). Returns per-item results with partial success support.

  • idsarrayrequiredCandidate IDs to tag (max 100).
  • tagsarrayrequiredTag names to attach.
hires_batch_remove_tags2 params

Remove tags from multiple candidates in one request (max 100). Returns per-item results with partial success support.

  • idsarrayrequiredCandidate IDs to remove tags from (max 100).
  • tagsarrayrequiredTag names to remove.
hires_list_candidate_files1 param

List all files attached to a candidate (resumes and other documents). Each entry has uuid, absolute download url (use Bearer auth), relative_time, file metadata (orig_file_name, file_ext, file_type/MIME, readable_size), and type (resume/other). Default response is compact; avoid include=text_content on candidates with many files — it adds parsed resume text per file which can exceed the response budget.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
hires_upload_candidate_file2 params

Upload a file for a candidate using a base64 payload. Used for portfolio uploads and document attachment. WARNING: host function-call serializers (both OpenAI and Anthropic) truncate tool arguments above ~20KB, so binary files larger than that will arrive corrupted. For resumes specifically, prefer hires_create_candidate / hires_update_candidate with resume_text — the model parses the file from chat context and passes extracted text, avoiding the size limit entirely.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • fileobjectrequiredFile to upload (base64 payload).
hires_get_candidate_resume2 params

Get the primary resume for a candidate. Returns uuid, absolute download url (use Bearer auth), relative_time, file metadata, type. Use include='text_content' to also get the parsed plain-text content in a `text` field without downloading the file.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • includestringComma-separated optional fields. Use 'text_content' to add a `text` field with parsed plain-text resume content.
hires_list_candidate_activities7 params

List timeline activities for a candidate (comments, stage moves, AI responses, etc.). Supports filtering by event type. Recommended size <= 10: copilot responses and call transcriptions can be large per event; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • pagenumberPage number (1-based).
  • sizenumberPage size. Values above 100 are rejected with 400. Default 20, max 100.
  • event_typestringComma-separated event types to filter. Supported: comment, copilot_response, stage_moved, automation_action_triggered, assign_job, enrichment, call, validate_emails, profile_mutation, qualification, assign_tags, assign_sources, candidate_rate.
  • sincenumber | stringInclusive lower bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated.
  • untilnumber | stringInclusive upper bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated.
  • viewstringResponse shape. Default `summary` replaces the largest event payloads (copilot LLM response/prompt, call transcription, comment body) with 200-char `*_preview` fields. Other event types pass through unchanged. Use `full` when the original content is needed.
hires_disqualify_candidate2 params

Disqualify a candidate from all active applications. Optionally provide rejection reason IDs. Returns affected application IDs.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • reasonsarrayArray of rejection reason IDs from GET /taxonomy/rejection-reasons.
hires_list_candidate_interviews3 params

List all interviews for a candidate across all applications. Useful for timeline views and scheduling conflict detection.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • pagenumberPage number (1-based).
  • sizenumberNumber of items per page.
hires_list_candidate_messages5 params

List email and messaging history for a candidate. Use is_scheduled=1 to filter only pending scheduled messages. Recommended size <= 10: messages include full HTML body; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • pagenumberPage number (1-based).
  • sizenumberNumber of items per page.
  • is_schedulednumberSet to 1 to return only scheduled (not yet sent) messages.
  • viewstringResponse shape. Default `summary` excludes the HTML body and attachments metadata. Use `full` only when message body content is needed.
hires_send_candidate_message11 params

Schedule an email message to a candidate. If scheduled_at is omitted, the message is scheduled for 15 minutes after creation.

  • idstring | numberrequiredCandidate ID (integer) or alias (string).
  • toarrayrequiredPrimary recipient email addresses.
  • subjectstringrequiredEmail subject line.
  • bodystringrequiredEmail body as HTML.
  • from_account_idnumber | nullSending mail account ID. If omitted, uses the API key owner's default mail account.
  • ccarrayCarbon-copy recipient email addresses.
  • bccarrayBlind carbon-copy recipient email addresses.
  • scheduled_atnumber | nullUnix timestamp (seconds) for when to send. Defaults to 15 minutes after creation.
  • application_idnumber | nullOptional application ID to link this message to.
  • reply_to_email_idnumber | nullOptional mailbox message ID to reply to.
  • send_in_new_threadbooleanSend as a new email thread instead of replying in an existing one.
hires_list_applications13 params

List applications across all accessible jobs. Supports filtering by candidate, job, stage, status, AI score range, and date ranges. Use for pipeline analytics, sync jobs, and ATS dashboards. Avoid include=candidate or include=cv.text on large pages (each embeds heavy nested data); if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints. Each application embeds its current `stage` (IdName) directly in the response — this is sufficient for rendering kanban/pipeline views; you DO NOT need to call hires_get_job to fetch workflow_stages separately when rendering a pipeline.

  • company_idnumberFilter by company ID. Omit for all accessible companies.
  • candidate_idnumberFilter applications by candidate ID.
  • job_idnumberFilter applications by job ID.
  • stage_idnumberFilter applications by pipeline stage ID. Best used together with job_id.
  • statusstringFilter by application status: pending (active), hired, or rejected.
  • created_afternumber | stringReturn only applications created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated.
  • updated_afternumber | stringReturn only applications updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Use for incremental sync.
  • ai_score_minnumberReturn only applications with ai_score >= this value.
  • ai_score_maxnumberReturn only applications with ai_score <= this value.
  • sortstringSort order. Prefix with - for descending. Default: -created_at.
  • includestringComma-separated relations to embed: `candidate`, `cv.text`. **Recommended: `candidate`** for pipeline / kanban / UI rendering — without it the widget shows candidate IDs instead of names and emails. Use `cv.text` only when resume text is genuinely needed (large payload).
  • pagenumberPage number (default 1).
  • sizenumberItems per page (default 25, max 100).
hires_create_application5 params

Create an application by linking an existing candidate to a job. Use for sourcing workflows and manual application ingestion. The candidate must already exist.

  • candidate_idstring | numberrequiredCandidate ID (numeric) or alias.
  • job_idnumberrequiredJob ID to apply the candidate to.
  • stage_idnumberPipeline stage ID. If omitted, defaults to the first stage.
  • cvobjectOptional CV/resume to attach.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_get_application2 params

Get full application details including stage, status, and rejection context. Recommended before mutating stage transitions.

  • idnumberrequiredApplication ID.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_update_application5 params

Update application fields such as stage, disqualification flag, and CV. For explicit stage transitions prefer hires_move_application or hires_advance_application.

  • idnumberrequiredApplication ID.
  • stage_idnumberMove application to this pipeline stage.
  • is_disqualifiedbooleanSet to true to disqualify the candidate on this application.
  • cvobjectReplace or attach a CV.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_delete_application1 param

Permanently delete an application. This removes it from all list and view queries.

  • idnumberrequiredApplication ID.
hires_move_application3 params

Moves an application to a specific pipeline stage for explicit stage transitions in workflow orchestration. Requires the target stage_id (available via the job's pipeline_stages).

  • idnumberrequiredApplication ID.
  • stage_idnumberrequiredTarget pipeline stage ID.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_advance_application2 params

Advance an application to the next pipeline stage according to workflow order. No stage_id needed -- the system determines the next stage automatically. **Always pass `include=candidate,job`** when surfacing results in the widget — without it, the confirmation card can only show candidate/job IDs and cannot link to their backoffice pages.

  • idnumberrequiredApplication ID.
  • includestringComma-separated relations to embed: candidate, cv.text, job. Set to `candidate,job` so the widget can link the candidate name to their profile and the job title to its pipeline view.
hires_hire_application2 params

Mark an application as hired. This is the finalization step in a hiring workflow. The application status changes to 'hired' and hired_at is set.

  • idnumberrequiredApplication ID.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_reject_application4 params

Reject an application with an optional rejection reason. Use GET /taxonomy/rejection-reasons to list available reason IDs. Set suppress_notification to skip the rejection email.

  • idnumberrequiredApplication ID.
  • rejection_reason_idnumberRejection reason ID from GET /taxonomy/rejection-reasons.
  • suppress_notificationbooleanSet to true to skip sending the rejection email to the candidate.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_unreject_application2 params

Undo a rejection and reopen a previously rejected application. The status returns to active and rejected_at is cleared.

  • idnumberrequiredApplication ID.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_transfer_application4 params

Transfer an application to another job. A new application is created on the target job. Optionally specify a stage on the target job's pipeline.

  • idnumberrequiredApplication ID to transfer.
  • job_idnumberrequiredTarget job ID to transfer the application to.
  • stage_idnumberPipeline stage ID on the target job. If omitted, defaults to the first stage.
  • includestringComma-separated relations to embed: candidate, cv.text, job.
hires_get_ai_score1 param

Get the structured AI score for an application, including per-criterion scores, justifications, and follow-up questions. Returns null score if the application has not been AI-scored.

  • idnumberrequiredApplication ID.
hires_list_application_stage_history1 param

Get the full chronological stage transition history for an application, including the initial assignment. Each entry has from_stage_id/name, to_stage_id/name, moved_at (Unix seconds), moved_by_type (system, user, automation), moved_by_user_id, and source (what caused the transition, e.g. 'apply:indeed', 'form_watcher', 'user'; null for historical records). Use this for funnel analysis, attribution reports, and time-in-stage reports instead of paginating through /candidates/{id}/activities when only stage data is needed.

  • idnumberrequiredApplication ID.
hires_list_application_attachments1 param

List all file attachments linked to an application (resumes, cover letters, documents). Returns file metadata and download URLs.

  • idnumberrequiredApplication ID.
hires_upload_application_attachment2 params

Upload a file attachment to an application. Provide the file as base64-encoded data. Commonly used for signed documents and interviewer artifacts.

  • idnumberrequiredApplication ID.
  • fileobjectrequiredFile to upload.
hires_list_application_evaluations2 params

List all filled evaluation forms for an application. Each evaluation includes the evaluator, summary score (strong-yes to strong-no), and summary text.

  • idnumberrequiredApplication ID.
  • viewstringResponse shape. Default `summary` replaces `summary_text` with a 200-char `summary_text_preview`. Use `full` only when the full evaluator commentary is needed; call hires_get_evaluation for a single record.
hires_create_interview6 params

Schedule a new interview for an application. Provide start/end times as Unix timestamps and a list of interviewer user IDs. Location is resolved to an existing record or created automatically.

  • idnumberrequiredApplication ID.
  • start_timenumberrequiredInterview start time as Unix timestamp (seconds).
  • end_timenumberrequiredInterview end time as Unix timestamp (seconds, must be after start_time).
  • interviewer_idsarrayrequiredList of user IDs who will conduct the interview.
  • locationstringLocation string; resolved to existing record or created automatically.
  • includestringComma-separated relations to embed: candidate, application, job.
hires_batch_move_applications2 params

Move multiple applications to a pipeline stage in one request. Returns per-item results with partial success support. Max 100 application IDs per request.

  • idsarrayrequiredApplication IDs to move (max 100).
  • stage_idnumberrequiredTarget pipeline stage ID.
hires_batch_reject_applications2 params

Reject multiple applications in one request with an optional rejection reason. Returns per-item results with partial success support. Max 100 application IDs per request.

  • idsarrayrequiredApplication IDs to reject (max 100).
  • rejection_reason_idnumberOptional rejection reason ID.
hires_list_jobs11 params

List jobs with optional filters by status, date range, department, or search query. Returns paginated results. Use for career-site sync, reporting, and external system indexing. Recommended size <= 10: full job payloads include description HTML and can be large; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints — reduce size, narrow filters, or fetch a single record via hires_get_job.

  • company_idnumberFilter by company ID (required only for multi-company API keys)
  • statusstringFilter by job status name (from GET /taxonomy/statuses, e.g. Public, Draft, Archived)
  • created_at_startnumber | stringReturn only jobs created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated.
  • created_at_endnumber | stringReturn only jobs created at or before this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated.
  • updated_afternumber | stringReturn only jobs updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated. Use for incremental sync.
  • department_idnumberFilter jobs by department ID (from GET /taxonomy/departments)
  • qstringSearch by job title or internal title (partial match)
  • includestringComma-separated related resources to embed: workflow, hiring_team, pipeline_stages
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 20)
  • viewstringResponse shape. Default `summary` excludes heavy fields (description HTML, indeed_posting_data, ai_scoring_criteria) and embedded relations — recommended for list operations. Use `full` only when description or include=workflow/hiring_team/pipeline_stages is genuinely needed; call hires_get_job for a single full record.
hires_create_job29 params

Create a job with taxonomy, location, salary, and workflow configuration. Primary endpoint for programmatic job publishing. Required fields: status, title, description, location_city, location_country.

  • company_idnumberTarget company ID. Required only when the API key has access to multiple companies.
  • form_idnumberApplication form ID. If omitted, a new form named after the job title is created with default questions.
  • statusstringrequiredJob status (e.g. Draft, Public). See GET /taxonomy/statuses.
  • titlestringrequiredPublic job title.
  • internal_titlestringInternal-only title visible to the hiring team.
  • internal_job_idstringExternal reference ID from your ATS or HR system.
  • descriptionstringrequiredJob description (HTML allowed).
  • resume_field_statusstringResume field behavior on the application form.
  • location_citystringrequiredJob city.
  • location_countrystringrequiredJob country.
  • location_statestringJob state or region.
  • location_street_addressstringStreet address.
  • location_full_addressstringFull formatted address.
  • location_postal_codestringPostal or ZIP code.
  • salary_minnumberMinimum salary.
  • salary_maxnumberMaximum salary.
  • salary_currencystringSalary currency code (e.g. USD, EUR).
  • salary_periodstringSalary period.
  • is_remotebooleanWhether this is a remote position.
  • employment_type_idnumberEmployment type ID from GET /taxonomy/employment-types.
  • department_idnumberDepartment ID from GET /taxonomy/departments.
  • category_idnumberJob category ID from GET /taxonomy/categories.
  • education_level_idnumberEducation level ID from GET /taxonomy/education-levels.
  • experience_level_idnumberExperience level ID from GET /taxonomy/experience-levels.
  • workflow_idnumberWorkflow ID. If omitted, a new workflow named after the job title is created with default stages.
  • parent_job_idnumberCanonical parent job ID. If provided, the created job becomes a satellite job.
  • knockout_questionsarrayBoolean knockout questions added to the application form.
  • ai_scoring_criteriaarrayAI scoring criteria for evaluating candidates. Diff-replace by id: items with id update existing, items without id create new, existing criteria not in payload are removed. Pass [] to detach all.
  • includestringComma-separated related resources to embed: workflow, hiring_team, pipeline_stages
hires_get_job2 params

Get full details of a job by ID or alias. Use `include` to load related workflow, hiring team, or pipeline stages data.

  • idstring | numberrequiredJob ID (numeric) or alias
  • includestringComma-separated related resources to embed: workflow, hiring_team, pipeline_stages
hires_update_job29 params

Update mutable job attributes. Only send fields you want to change. Preserves domain-level validation rules.

  • idstring | numberrequiredJob ID (numeric) or alias
  • form_idnumberApplication form ID to assign to this job.
  • statusstringJob status (e.g. Draft, Public). See GET /taxonomy/statuses.
  • titlestringPublic job title.
  • internal_titlestringInternal-only title visible to the hiring team.
  • internal_job_idstringExternal reference ID from your ATS or HR system.
  • descriptionstringJob description (HTML allowed).
  • resume_field_statusstringResume field behavior on the application form.
  • location_citystringJob city.
  • location_countrystringJob country.
  • location_statestringJob state or region.
  • location_street_addressstringStreet address.
  • location_full_addressstringFull formatted address.
  • location_postal_codestringPostal or ZIP code.
  • salary_minnumberMinimum salary.
  • salary_maxnumberMaximum salary.
  • salary_currencystringSalary currency code (e.g. USD, EUR).
  • salary_periodstringSalary period.
  • is_remotebooleanWhether this is a remote position.
  • employment_type_idnumberEmployment type ID from GET /taxonomy/employment-types.
  • department_idnumberDepartment ID from GET /taxonomy/departments.
  • category_idnumberJob category ID from GET /taxonomy/categories.
  • education_level_idnumberEducation level ID from GET /taxonomy/education-levels.
  • experience_level_idnumberExperience level ID from GET /taxonomy/experience-levels.
  • workflow_idnumberWorkflow ID to assign to this job.
  • parent_job_idnumberCanonical parent job ID. If provided, the job becomes a satellite job.
  • knockout_questionsarrayBoolean knockout questions added to the application form.
  • ai_scoring_criteriaarrayAI scoring criteria for evaluating candidates. Diff-replace by id: items with id update existing, items without id create new, existing criteria not in payload are removed. Omit to leave existing criteria untouched. Pass [] to detach all.
  • includestringComma-separated related resources to embed: workflow, hiring_team, pipeline_stages
hires_delete_job1 param

Delete a job. Use to align archived/removed positions across integrated platforms.

  • idstring | numberrequiredJob ID (numeric) or alias
hires_set_job_status3 params

Change job status via dedicated endpoint. Recommended for publish/unpublish/archive transitions and status automation workflows.

  • idstring | numberrequiredJob ID (numeric) or alias
  • statusstringrequiredNew job status (e.g. Draft, Public, Archived). See GET /taxonomy/statuses.
  • includestringComma-separated related resources to embed: workflow, hiring_team, pipeline_stages
hires_list_job_boards1 param

Get current board publication state for a specific job. Returns which job boards the job is published to. Useful for distribution dashboards and posting audits.

  • idstring | numberrequiredJob ID (numeric) or alias
hires_publish_to_job_board2 params

Activate selected job boards for a job. Sets boards to activation queue state. Use for controlled multi-board publishing workflows.

  • idstring | numberrequiredJob ID (numeric) or alias
  • boardsarrayArray of board identifiers to activate (e.g. ['indeed', 'linkedin'])
hires_remove_from_job_board2 params

Deactivate selected board publications for a job. Stops the job from being listed on specified boards.

  • idstring | numberrequiredJob ID (numeric) or alias
  • boardsarrayArray of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])
hires_batch_job_boards1 param

Get board publication states for multiple jobs in one request. Optimized for batch monitoring and management UIs.

  • jobsarrayrequiredArray of job IDs
hires_batch_publish_to_boards2 params

Activate board publication for multiple jobs in one request. Use for bulk job distribution workflows.

  • jobsarrayrequiredArray of job IDs to publish
  • boardsarrayArray of board identifiers to activate (e.g. ['indeed', 'linkedin'])
hires_batch_remove_from_boards2 params

Deactivate board publication for multiple jobs in one request. Use for bulk depublishing workflows.

  • jobsarrayrequiredArray of job IDs to depublish
  • boardsarrayArray of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])
hires_list_hiring_team1 param

List users currently assigned to a job's hiring team. Useful for notification routing and collaboration tooling.

  • idstring | numberrequiredJob ID (numeric) or alias
hires_add_hiring_team_member2 params

Add a company member to the job's hiring team. Use in workflow setup and ownership automation.

  • idstring | numberrequiredJob ID (numeric) or alias
  • user_idnumberrequiredUser ID to add to the hiring team.
hires_list_job_webhooks1 param

List webhooks configured for job-level events. Use to audit subscriptions and deployment state.

  • idstring | numberrequiredJob ID (numeric) or alias
hires_create_job_webhook2 params

Register a webhook URL for job-related events. Core step for outbound integration setup. URL must be HTTPS.

  • idstring | numberrequiredJob ID (numeric) or alias
  • urlstringrequiredWebhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs).
hires_delete_job_webhook2 params

Delete a job webhook subscription by ID. Use for cleanup, rotation, and endpoint migration.

  • idstring | numberrequiredJob ID (numeric) or alias
  • webhook_idnumberrequiredWebhook ID to delete
hires_list_messages7 params

List messages sent or scheduled from a specific mail account. Returns outbound messages only (sent and scheduled), not received. Useful for monitoring cold outreach campaigns — check pending queue, delivery history, and plan next sends. Recommended size <= 10: messages include full HTML body; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints.

  • from_account_idintegerrequiredID of the mail account (from `GET /companies/mail-accounts` or `GET /users/{user_id}/mail-accounts`).
  • statusstringFilter by message status: `scheduled` (pending send), `sent` (delivered), `all` (both). Default: `all`.
  • date_fromintegerStart of period (unix timestamp, seconds). Filters on scheduled/sent time.
  • date_tointegerEnd of period (unix timestamp, seconds). Filters on scheduled/sent time.
  • pageintegerPage number (1-based). Default: 1.
  • sizeintegerNumber of items per page (1-100). Default: 20.
  • viewstringResponse shape. Default `summary` excludes the HTML body and attachments metadata — recommended for list operations. Use `full` only when message body content is needed.
hires_get_message1 param

Get a scheduled message by ID. Returns scheduler-backed message details including sender account, schedule timestamps, and cancelability.

  • idintegerrequiredMessage ID.
hires_update_message10 params

Fully update (replace) a scheduled message before send time. All required fields must be provided.

  • idintegerrequiredMessage ID.
  • toarrayrequiredPrimary recipient email addresses.
  • subjectstringrequiredEmail subject line.
  • bodystringrequiredEmail body as HTML.
  • from_account_idSending mail account ID. If omitted, the API key owner's default mail account is used.
  • ccarrayCarbon-copy recipient email addresses.
  • bccarrayBlind carbon-copy recipient email addresses.
  • scheduled_atUpdated send time as a Unix timestamp in seconds.
  • reply_to_email_idOptional mailbox message ID to reply to.
  • send_in_new_threadbooleanWhether to send the updated message as a new thread.
hires_patch_message10 params

Partially update a scheduled message before send time. Only provided fields are changed.

  • idintegerrequiredMessage ID.
  • toarrayPrimary recipient email addresses.
  • subjectstringEmail subject line.
  • bodystringEmail body as HTML.
  • from_account_idSending mail account ID. If omitted, the API key owner's default mail account is used.
  • ccarrayCarbon-copy recipient email addresses.
  • bccarrayBlind carbon-copy recipient email addresses.
  • scheduled_atUpdated send time as a Unix timestamp in seconds.
  • reply_to_email_idOptional mailbox message ID to reply to.
  • send_in_new_threadbooleanWhether to send the updated message as a new thread.
hires_delete_message1 param

Cancel a scheduled message before it is processed by the mailbox scheduler.

  • idintegerrequiredMessage ID.
hires_batch_create_messages1 param

Create up to 100 scheduled messages in one request. Each item specifies its own candidate_id and message payload. Items are processed independently -- one failure does not stop others. Per-candidate RBAC is enforced for each item.

  • messagesarrayrequiredArray of message payloads to create (max 100).
hires_get_notification_message1 param

Get a notification email message (e.g. rejection email) by ID. Returns subject, body, sender, recipient, and schedule metadata. Use candidate messages list to discover notification message IDs.

  • idintegerrequiredNotification email message ID.
hires_update_notification_message4 params

Update a scheduled notification email before it is sent. Change subject, body, and optionally reschedule the send time. Only scheduled (not yet sent) messages can be updated.

  • idintegerrequiredNotification email message ID.
  • subjectstringrequiredEmail subject line.
  • bodystringrequiredEmail body as HTML.
  • scheduled_atUnix timestamp (seconds) to reschedule send time. If omitted, the existing schedule is preserved.
hires_delete_notification_message1 param

Cancel a scheduled notification email before it is sent. Already sent messages cannot be canceled.

  • idintegerrequiredNotification email message ID.
hires_cancel_all_notification_messages1 param

Cancel all scheduled notification emails for a candidate. Already sent notifications are not affected. Returns success even if no scheduled notifications exist.

  • candidate_idrequiredCandidate ID (numeric) or alias.
hires_list_interviews11 params

List interviews with optional filters by job, application, candidate, interviewer, date, or timestamps for incremental sync. Returns paginated results. **Always pass `include=candidate`** when surfacing results in the agenda widget — without it, the widget can only show candidate IDs and cannot link cards to candidate profiles. Avoid include=job on large pages (embeds full job description per interview); if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints.

  • company_idnumberFilter by company ID. Omit for all accessible companies.
  • job_idnumberFilter interviews by job ID
  • application_idnumberFilter interviews by application ID
  • candidate_idnumberFilter interviews by candidate ID
  • interviewer_user_idnumberFilter interviews by interviewer user ID
  • datestringFilter by interview date (YYYY-MM-DD, UTC)
  • created_afternumber | stringReturn only interviews created at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated.
  • updated_afternumber | stringReturn only interviews updated at or after this time. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-05-11T00:00:00Z). Fractional seconds accepted but truncated.
  • includestringComma-separated related resources to embed: candidate, application, job. Set to `candidate` (or include `candidate` in the list) so the widget can link interview cards to candidate profiles in the backoffice.
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 20)
hires_get_interview2 params

Get full details of a specific interview by ID. Use `include` to embed related candidate, application, or job data.

  • idnumberrequiredInterview ID
  • includestringComma-separated related resources to embed: candidate, application, job
hires_list_notes5 params

List notes by candidate. Returns paginated discussion notes for a candidate. Use for shared recruiter context and timeline synchronization. Notes can contain long free-form text; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints.

  • candidate_idstring | numberrequiredCandidate ID (numeric) or alias
  • includestringInclude related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
  • pagenumberPage number
  • sizenumberPage size
  • viewstringResponse shape. Default `summary` replaces the full note body with a 200-char `body_preview`. Use `full` only when the full note text is genuinely needed; call hires_get_note for a single record.
hires_create_note6 params

Create a discussion note for a candidate. Supports visibility control (all or private) and @mentions with email notifications. **Always pass `include=candidate`** when surfacing results in the widget — without it, the confirmation card can only show the candidate ID and cannot link to their backoffice profile.

  • candidate_idstring | numberrequiredCandidate ID (numeric) or alias
  • bodystringrequiredNote content. Supports HTML.
  • user_idnumberAuthor user ID. If omitted, the authenticated user is used
  • visibilitystringVisibility: 'all' (default) or 'private'
  • mention_user_idsarrayArray of user IDs to mention. Mentioned users receive email notifications.
  • includestringInclude related resources, e.g. 'user' for author details, 'candidate' for full candidate object with url_backoffice. Set to `candidate` so the widget can link the candidate name to their backoffice profile.
hires_get_note2 params

Get a single note with author and visibility metadata. Use include=user to load author details.

  • idnumberrequiredNote ID
  • includestringInclude related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
hires_update_note4 params

Update note body and/or visibility without creating a new timeline item. Use for corrections and moderation workflows.

  • idnumberrequiredNote ID
  • bodystringNote content. Supports HTML.
  • visibilitystringVisibility: 'all' (default) or 'private'
  • includestringInclude related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
hires_delete_note1 param

Delete a note. Use for moderation policies and data cleanup operations.

  • idnumberrequiredNote ID
hires_get_evaluation1 param

Get a filled evaluation form with all answers. Returns evaluator info, summary score, summary text, and individual question answers. Use for detailed review of evaluator feedback on a candidate application.

  • idnumberrequiredEvaluation form ID
hires_list_forms4 params

List application forms (paginated). Returns forms with their questions for the target company. Recommended size <= 10: each form embeds its full question list; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints.

  • company_idnumberTarget company ID.
  • pagenumberPage number.
  • sizenumberPage size.
  • viewstringResponse shape. Default `summary` omits the embedded `questions` array. Use `full` only when the full question list is needed; call hires_get_form for a single form.
hires_create_form3 params

Create a new application form, optionally attaching existing questions by ID.

  • namestringrequiredForm name.
  • company_idnumberTarget company ID.
  • questionsarrayArray of question IDs to attach to this form.
hires_get_form1 param

Get form details including all questions with their statuses.

  • idnumberrequiredForm ID.
hires_update_form3 params

Update form name and question composition.

  • idnumberrequiredForm ID.
  • namestringrequiredForm name.
  • questionsarrayArray of question IDs to attach to this form.
hires_delete_form1 param

Delete an application form.

  • idnumberrequiredForm ID.
hires_update_form_question3 params

Update the status (required/optional/hidden) of a question inside a form.

  • form_idnumberrequiredForm ID.
  • question_idnumberrequiredQuestion ID.
  • statusstringrequiredQuestion visibility on this form: required, optional, or hidden.
hires_list_email_templates4 params

List email templates for the target company. Returns paginated results with template name, subject, and body. Recommended size <= 10: templates include the full HTML body; if the response exceeds the budget the tool returns isError:true with error_code=response_too_large and retry hints — reduce size or fetch a single template via hires_get_email_template.

  • company_idnumberTarget company ID
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
  • viewstringResponse shape. Default `summary` excludes the HTML template body. Use `full` only when body content is needed; call hires_get_email_template for a single record.
hires_create_email_template4 params

Create a new email template with name, subject, and body. Subject and body support placeholders like {{first_name}}, {{job_title}}. To embed placeholders: 1) GET /template-placeholders to list them, 2) POST /template-placeholders/prepare to get the HTML tag, 3) insert the tag into the body.

  • namestringrequiredTemplate name
  • subjectstringrequiredEmail subject line (supports placeholders like {{first_name}}, {{job_title}})
  • bodystringrequiredEmail body HTML (supports placeholders)
  • company_idnumberTarget company ID
hires_get_email_template1 param

Get full details of a specific email template by ID, including subject and body content.

  • idnumberrequiredEmail template ID
hires_update_email_template4 params

Update an existing email template. Only provided fields are overwritten; omitted fields keep their current values. To add placeholders, use the same workflow as creation.

  • idnumberrequiredEmail template ID
  • namestringTemplate name
  • subjectstringEmail subject line (supports placeholders)
  • bodystringEmail body HTML (supports placeholders)
hires_delete_email_template1 param

Soft-delete an email template. Templates already used in automations will stop being available for new actions.

  • idnumberrequiredEmail template ID
hires_list_nurture_campaigns3 params

List nurture campaigns with pagination. Returns campaign summaries including steps.

  • company_idnumberTarget company ID (optional if API key is scoped to one company)
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_create_nurture_campaign11 params

Create a nurture campaign with steps. Steps are executed sequentially; each step has a type (email, sms, voicemail, move_to_next_stage, assign_tag, assign_task) with type-specific fields. Optionally bind to a workflow stage.

  • company_idnumberTarget company ID (optional if API key is scoped to one company)
  • titlestringrequiredCampaign name
  • workflow_idnumberWorkflow ID to bind the campaign to
  • stage_idnumberStage ID that triggers the campaign
  • delay_timenumberDelay time in seconds
  • relative_daysnumberRelative days for schedule
  • relative_timenumberRelative time for schedule (seconds from midnight)
  • timezonestringIANA timezone, e.g. "America/New_York"
  • send_to_allbooleanSend to all candidates or only new ones (default false)
  • response_move_to_stage_idnumberStage to move candidate to when they reply
  • stepsarrayrequiredCampaign steps (at least one required)
hires_get_nurture_campaign1 param

Get a single nurture campaign by ID with all steps and configuration details.

  • idnumberrequiredNurture campaign ID
hires_update_nurture_campaign11 params

Update an existing nurture campaign. Pass all steps -- mark removed steps with is_deleted=true. Existing steps must include their id.

  • idnumberrequiredNurture campaign ID
  • titlestringrequiredCampaign name
  • workflow_idnumberWorkflow ID this campaign is associated with
  • stage_idnumberPipeline stage ID that triggers the campaign
  • delay_timenumberDelay in minutes before the first step
  • relative_daysnumberNumber of days offset for scheduling
  • relative_timenumberTime of day for scheduled sends
  • timezonestringTimezone for scheduled sends, e.g. "America/New_York"
  • send_to_allbooleanWhether to send to all candidates or only new ones
  • response_move_to_stage_idnumberStage ID to move candidates to when they respond
  • stepsarrayrequiredAll steps -- mark removed steps with is_deleted=true
hires_delete_nurture_campaign1 param

Delete (soft-delete) a nurture campaign. Active campaign executions will be stopped.

  • idnumberrequiredNurture campaign ID
hires_list_users3 params

List users for the target company with role context. Returns paginated results useful for access reviews and hiring-team management.

  • company_idnumberCompany ID to list users for
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_get_user1 param

Get a single user by ID within current tenant scope. Use for identity resolution in automation flows. The `default_mail_account_id` field can be used as `from_account_id` when sending emails.

  • idnumberrequiredUser ID
hires_list_user_mail_accounts3 params

List mail accounts connected to a user. Use to resolve `from_account_id` before creating scheduled emails via POST /candidates/{id}/messages.

  • idnumberrequiredUser ID
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_list_companies2 params

List partner-accessible companies with pagination. Use for tenant discovery and management panels.

  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_create_company8 params

Create a client company (partner tenant) — provisions its public career-site URL (slug) and public branding (logo, name). Typical entrypoint for multi-tenant onboarding.

  • namestringrequiredCompany name
  • company_owner_emailstringrequiredCompany owner email address
  • company_owner_namestringrequiredCompany owner full name
  • websitestringCompany website URL
  • urlstringCompany profile URL
  • company_owner_phonestringCompany owner phone number
  • is_staffing_agencybooleanWhether this company is a staffing agency
  • logoobjectCompany logo file
hires_get_company1 param

Get company profile and owner metadata. Use before updates or ownership-sensitive actions.

  • idnumberrequiredCompany ID
hires_update_company9 params

Update company profile, owner contact data, and optional logo — changes the tenant's public career-site URL (slug), name, and logo (public branding). Supports partner-operated account management.

  • idnumberrequiredCompany ID
  • namestringCompany name
  • websitestringCompany website URL
  • urlstringCompany profile URL
  • company_owner_emailstringCompany owner email address
  • company_owner_namestringCompany owner full name
  • company_owner_phonestringCompany owner phone number
  • is_staffing_agencybooleanWhether this company is a staffing agency
  • logoobjectCompany logo file
hires_delete_company1 param

Delete (soft-delete) a company — takes its public career site offline. Use for lifecycle control in partner tenancy management.

  • idnumberrequiredCompany ID
hires_list_company_mail_accounts2 params

List all mail accounts for all users in the current company. Use to resolve `from_account_id` before creating scheduled emails.

  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_list_company_id_mail_accounts3 params

List all mail accounts for all users in a specific company. The company must be accessible (own company or a client).

  • idnumberrequiredCompany ID
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_restore_company1 param

Restore a previously deleted company and re-enable it for active use — its public career site comes back online. Use for recovery and rollback scenarios.

  • idnumberrequiredCompany ID
hires_list_webhooks1 param

List webhook subscriptions configured at company scope.

  • idnumberrequiredCompany ID
hires_create_webhook2 params

Create a company-scoped webhook subscription. Use for outbound company-level event integrations.

  • idnumberrequiredCompany ID
  • urlstringrequiredWebhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs).
hires_delete_webhook2 params

Delete a company-scoped webhook subscription by ID. Use for endpoint retirement and security rotation.

  • idnumberrequiredCompany ID
  • webhook_idnumberrequiredWebhook ID
hires_list_sources1 param

List candidate sources for the company. Use for attribution sync and reporting consistency.

  • company_idnumberTarget company ID (uses default company when omitted)
hires_list_origins

List candidate origin taxonomy values. Use for attribution analytics and source normalization.

hires_list_rejection_reasons1 param

List configured rejection reasons for the company. Use to validate rejection actions and analytics.

  • company_idnumberTarget company ID (uses default company when omitted)
hires_list_statuses

List job status labels (draft, published, on_hold, closed, archived). Cache to validate job status updates.

hires_list_departments1 param

List departments for the company. Use for job organization filters and reporting dimensions.

  • company_idnumberTarget company ID (uses default company when omitted)
hires_list_categories

List global job categories. Use for job classification and consistent taxonomy mapping.

hires_list_education_levels

List education level taxonomy values. Useful for job requirements and structured matching.

hires_list_experience_levels

List experience level taxonomy values for role seniority modeling.

hires_list_employment_types

List supported employment types (full-time, part-time, contract, etc.). Use for validation and normalization.

hires_list_boards

List available publishing boards with metadata. Use for distribution setup and board selection.

hires_list_tags1 param

List all tags for the company. Returns paginated results. Recommended to cache for fast tagging UX.

  • company_idnumberTarget company ID (uses default company when omitted)
hires_list_workflows1 param

List workflows with embedded stages for the company. Use to build stage-aware integrations and routing rules.

  • company_idnumberTarget company ID (uses default company when omitted)
hires_list_workflow_stages3 params

List pipeline stages filtered by workflow or job. Useful for transition UIs and workflow validation.

  • company_idnumberTarget company ID (uses default company when omitted)
  • workflow_idnumberFilter stages by workflow ID (from hires_list_workflows)
  • job_idnumberFilter stages by job ID (returns stages from the job's assigned workflow)
hires_get_workflow_stages2 params

Get stages for a specific workflow by ID. Equivalent to hires_list_workflow_stages with workflow_id filter.

  • idnumberrequiredWorkflow ID
  • company_idnumberTarget company ID (uses default company when omitted)
hires_list_questions3 params

List paginated question catalog for the company.

  • company_idnumberTarget company ID (uses default company when omitted)
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_create_question4 params

Create a reusable question with optional answer options for dropdown types. Used by forms and questionnaires.

  • textstringrequiredQuestion text
  • typestringrequiredQuestion type (from hires_list_question_types)
  • company_idnumberTarget company ID (uses default company when omitted)
  • optionsarrayAnswer options (for select/multiselect question types)
hires_get_question1 param

Get a question definition including type and options by ID.

  • idnumberrequiredQuestion ID
hires_update_question4 params

Update text, type, or options of an existing question definition.

  • idnumberrequiredQuestion ID
  • textstringrequiredQuestion text
  • typestringrequiredQuestion type (from hires_list_question_types)
  • optionsarrayAnswer options (for select/multiselect question types)
hires_delete_question1 param

Delete a reusable question from the catalog. Use cautiously when deprecating question banks.

  • idnumberrequiredQuestion ID
hires_list_question_types

List available question types supported by the platform. Use to drive dynamic form builders.

hires_list_template_placeholders6 params

List available placeholders for email templates with pagination. Use `type` to filter by category, `q` to search by label. Discover placeholders here, then use hires_prepare_template_placeholders to get an HTML tag for insertion.

  • company_idnumberTarget company ID (uses default company when omitted)
  • typestringFilter by placeholder type
  • is_notificationnumberInclude notification-specific system placeholders (0 or 1, default 0)
  • qstringFilter placeholders by label (case-insensitive substring match)
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_prepare_template_placeholders6 params

Convert a placeholder reference into an HTML tag for insertion into an email template body.

  • typestringrequiredPlaceholder type (system, candidate_column, job_variable, questionnaire_link, scheduling_link)
  • identifierstringPlaceholder identifier
  • qas_profile_question_idnumberProfile question ID
  • form_question_idnumberForm question ID
  • system_column_titlestringSystem column title
  • job_variable_idnumberJob variable ID
hires_get_billing

Get billing/pricing capability flags for the current company. Use before invoking paid-only API behaviors.

hires_submit_feedback5 params

Submit structured API feedback about missing features, issues, or workflow improvements. Rate limited to 5 requests per hour.

  • descriptionstringrequiredDescription of the issue or feedback (max 2000 chars)
  • endpointstringThe API endpoint this feedback relates to, e.g. /v2/candidates
  • issue_typestringCategory of the issue
  • suggested_improvementstringSuggested solution or improvement (max 2000 chars)
  • contextobjectArbitrary context object (max 4KB JSON)
hires_download_attachment1 param

Download an attachment (resume, candidate file, application file, mail attachment, call recording). Pass the absolute URL returned by another endpoint (e.g. `message.attachments[].url`, `cv.url`, `resume.url`) — it MUST belong to the configured 100Hires API host; other hosts are rejected to avoid leaking the Bearer token. Returns `{file_name, mime_type, size, data}` where `data` is base64-encoded bytes. Files larger than 25 MB are rejected up-front (Content-Length check / streaming abort) without being loaded into memory.

  • urlstringrequiredAbsolute attachment URL returned by another API response (e.g. https://api.100hires.com/v2/attachments/mail_attachment/<uuid>/<file_name>). Must match the API host.
hires_upload_attachment4 params

Upload a file and create an attachment. Supported categories: `voicemail` (wav/mp3, max 20 MB, no object_id — returned `uuid` is usable as `attachment_uuid` in nurture voicemail steps); `candidate` (candidate ID); `application` (application ID); `candidate_comment` (comment ID); `job_note` (job-note ID); `company_favicon`/`company_header`/`company_link_preview` (company ID). Object ownership is strictly verified against the authenticated API key's company. Returns `{uuid, url, file, relative_time}`.

  • categorystringrequiredAttachment category. Determines allowed extensions and object_id semantics.
  • company_idnumber | nullTarget company ID. Needed for partner API keys managing multiple client companies. Omitted → defaults to the authenticated company. The object_id must belong to this company (strict match).
  • object_idnumber | nullTarget object ID (candidate/application/comment/job-note/company, per category). Omit for `voicemail`.
  • fileobjectrequiredFile payload.
hires_list_career_jobs7 params

List publicly visible jobs for a company career site. Supports filtering by department, employment type, city, and country. Use to power a custom careers page.

  • company_slugstringrequiredCompany slug identifying the career site
  • department_idnumberFilter by department ID
  • employment_type_idnumberFilter by employment type ID (e.g. Full-time, Part-time)
  • citystringFilter by job city (exact match)
  • countrystringFilter by job country (exact match)
  • pagenumberPage number (default 1)
  • sizenumberPage size (default 25)
hires_get_career_job2 params

Get full details of a single public job by ID. Returns salary, education level, experience level, and other extended fields. Returns 404 for draft, archived, or internal jobs.

  • company_slugstringrequiredCompany slug identifying the career site
  • idnumberrequiredJob ID
hires_submit_career_application10 params

Submit a job application on behalf of a candidate. Creates a candidate record and triggers the career-site pipeline automation.

  • company_slugstringrequiredCompany slug identifying the career site
  • job_idnumberrequiredJob ID to apply to
  • first_namestringrequiredApplicant first name
  • last_namestringrequiredApplicant last name
  • emailstringrequiredApplicant email address
  • phonestring | nullApplicant phone number
  • resumeResume file upload (base64 encoded)
  • linkedin_urlstring | nullApplicant LinkedIn profile URL
  • sourcestring | nullApplication source identifier
  • answersArray of form answer objects
README.md

100Hires MCP Server

License: MIT Official MCP Registry smithery badge Glama

Official Model Context Protocol server for 100Hires — the applicant tracking system for recruiting teams.

Connect ChatGPT, Claude, Cursor, or any MCP-compatible AI assistant to your 100Hires account and manage candidates, jobs, applications, interviews, messages, and more — all without writing code.

Full documentation, screenshots, and demo: https://100hires.com/mcp

Quick connect

The server is hosted at https://mcp.100hires.com/mcp with OAuth 2.1 authentication (DCR + PKCE). No install required — just point your client at the URL and authenticate via the browser.

Native HTTP transport (recommended)

claude.ai Cowork (web)

Settings → Custom Connectors → Add → URL: https://mcp.100hires.com/mcp → complete OAuth.

Claude Code CLI
claude mcp add --transport http 100hires https://mcp.100hires.com/mcp

Or in .mcp.json:

{
  "mcpServers": {
    "100hires": {
      "type": "http",
      "url": "https://mcp.100hires.com/mcp"
    }
  }
}
Claude Desktop

Settings → Developer → Custom Connectors → Add Custom Connector → URL: https://mcp.100hires.com/mcp.

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "100hires": {
      "type": "http",
      "url": "https://mcp.100hires.com/mcp"
    }
  }
}
Codex (OpenAI CLI)

~/.codex/config.toml:

[mcp_servers.100hires]
url = "https://mcp.100hires.com/mcp"
VS Code Copilot

.vscode/mcp.json:

{
  "servers": {
    "100hires": {
      "type": "http",
      "url": "https://mcp.100hires.com/mcp"
    }
  }
}

Fallback for stdio-only clients (mcp-remote shim)

For older clients that don't yet support HTTP transport natively, use the third-party mcp-remote bridge:

{
  "mcpServers": {
    "100hires": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.100hires.com/mcp"]
    }
  }
}

What you can do

The server exposes the full 100Hires API as MCP tools, covering:

  • Candidates — list, create, update, tag, attach files, view timeline, message
  • Applications — list, move through pipeline stages, advance, hire, reject, transfer
  • Jobs — list, create, publish to job boards, manage hiring team, set up webhooks
  • Interviews — schedule, list, retrieve details
  • Messages & email templates — schedule, batch-send, manage notification emails, build nurture campaigns
  • Notes & evaluations — full CRUD for application-level feedback
  • Forms & questions — application form management
  • Workflows — pipeline stages, reusable questions
  • Companies, users, taxonomy — sources, statuses, departments, categories, tags, etc.

See the full tool reference at https://100hires.com/mcp/tools.

Authentication

The server uses OAuth 2.1 with Dynamic Client Registration (RFC 7591) and PKCE per the MCP authorization spec.

Compatible clients discover the OAuth metadata automatically — no manual API key setup required. You can revoke a connected client at any time from Settings → API → Connected AI clients in your 100Hires account.

Status & registry

Support

License

MIT — see LICENSE.

Recommended MCP Servers

How it compares

Hosted ATS MCP integration, not a generic job-posting skill or LinkedIn scraper.

FAQ

What does 100Hires AI ATS & Recruitment Software do?

Official 100Hires MCP: AI ATS & Recruitment Software for candidates, jobs, applications, interviews.

When should I use 100Hires AI ATS & Recruitment Software?

User asks about 100Hires AI ATS & Recruitment Software mcp, official 100hires mcp: ai ats & recruitment software for candidates, j.

Is this MCP server safe to install?

Review the Security Audits panel on this page before installing in production.

Developer Toolsintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.