Developer Portal — MCP
Connect 100Hires to Claude, ChatGPT, Cursor, and any AI assistant
100Hires is an AI-native applicant tracking system (ATS). The 100Hires MCP server gives Claude, ChatGPT, Cursor, and any MCP-compatible AI assistant secure access to 130 tools for candidates, jobs, applications, and interviews — driven entirely by natural-language prompts.
One MCP endpoint, 130 tools — manage candidates, jobs, applications, interviews and messages with natural language.
https://mcp.100hires.com/mcp
- MIT License
- Glama.ai verified
- Official MCP Registry
Recruiting MCP, ATS MCP, hiring AI integration — bring your applicant tracking system into Claude, ChatGPT and Cursor with secure OAuth 2.1. Building a direct integration instead? See the 100Hires REST API documentation. New to 100Hires? Start a 14-day free trial.
What is MCP?
Model Context Protocol is an open standard from Anthropic that lets AI assistants connect to external systems through a uniform interface — think of it as USB-C for AI tools.
Hosts
AI assistants and IDEs that talk to MCP servers — Claude (web, Desktop, Code), ChatGPT, Cursor, VS Code, Codex, Windsurf, Zed.
Clients
The transport layer inside the host that speaks MCP over Streamable HTTP or stdio.
Servers
100Hires MCP server — exposes 130 tools backed by the public REST API, secured by OAuth 2.1.
100Hires runs a remote MCP server, not a local one.
There’s nothing to install, deploy or update on your machine — every client, including Claude Desktop and Cursor,
points at https://mcp.100hires.com/mcp and authorizes via OAuth.
New tools and bug fixes land server-side and reach all your assistants the next time they call tools/list.
What you can ask
Ten real prompts that work today, in plain English.
- “Show me candidates who applied this week for the Senior PM role”
- “Move all rejected candidates from this job to the talent pool”
- “Schedule a 30-minute interview with Sarah next Tuesday for the Backend Engineer role”
- “Draft a follow-up email to candidates who haven't replied in 5 days and send it”
- “Open a new Senior Product Designer job in New York and publish it to LinkedIn”
- “Find every LinkedIn candidate with Python on their resume and tag them 'pythonista'”
- “What's on my interview calendar tomorrow?”
- “How many candidates do we have at each stage in the Sales Rep pipeline?”
- “Reject everyone still in 'Phone Screen' for the Marketing Manager job with reason 'No response'”
- “Pull the resume and last 3 notes for the candidate I interviewed yesterday”
Quickstart
From zero to your first MCP prompt in under five minutes.
-
Prerequisites
A 100Hires account on any plan, including the 14-day free trial. The MCP endpoint is available to every workspace.
-
Pick your AI client
One-click install for Cursor and VS Code; copy a snippet for everything else. All clients connect to
https://mcp.100hires.com/mcpover Streamable HTTP; stdio-only clients use themcp-remoteshim.Open 100Hires in ChatGPTOr in ChatGPT go to Settings → Apps and find 100Hires in the directory.
Click Connect, sign in, and click Allow.
In claude.ai, open the sidebar and click Customize.
Step 1 — open the sidebar → Customize. Go to Connectors, click +, and choose Add custom connector.
Step 2 — Connectors → + → Add custom connector. In the Add custom connector dialog, fill in:
- Name:
100Hires - Remote MCP server URL:
https://mcp.100hires.com/mcp - Click Add.
Step 3 — fill in the form and click Add. Claude opens the 100Hires consent screen. Sign in, click Allow, and you’re connected.
Install in CursorClick Install in Cursor to add 100Hires MCP automatically. Or paste the snippet below into
~/.cursor/mcp.json.Install in VS CodeOpens VS Code and registers the server. Or paste the snippet into
.vscode/mcp.jsonin your workspace.Add the snippet to your Claude Desktop config and restart the app:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Run this in your terminal:
OpenAI Codex CLI — add the server, then run
codex mcp login 100hiresto authorize.From OpenAI Responses API
Connect 100Hires MCP headless from your own scripts, backends, and AI agents — no desktop client required. Pass the server as a tool with
type: "mcp"and the OpenAI platform calls the endpoint directly. The example exposes only the read-onlyhires_list_jobstool and skips approval for that tool — add more tools toallowed_toolsonly after deciding which actions require approval.Requires an OAuth access token — your app obtains it via the OAuth 2.1 flow (see Authentication). OpenAI does not store the token: send it with every request and refresh it yourself when it expires (access tokens live 1 hour).
from openai import OpenAI client = OpenAI() response = client.responses.create( model="gpt-5", tools=[{ "type": "mcp", "server_label": "100hires", "server_url": "https://mcp.100hires.com/mcp", "authorization": "YOUR_OAUTH_ACCESS_TOKEN", "allowed_tools": ["hires_list_jobs"], "require_approval": "never" }], input="List all open jobs in 100Hires" ) print(response.output_text)From Anthropic Messages API
Connect 100Hires MCP headless from the Anthropic SDK — the MCP connector lets the Messages API call the server for you via
mcp_servers, no local MCP client needed. The connector runs tools without approval prompts, so the example enables only the read-onlyhires_list_jobstool — extend the allowlist inconfigsdeliberately.Requires an OAuth access token — your app obtains it via the OAuth 2.1 flow (see Authentication). Anthropic does not store the token: send it with every request and refresh it yourself when it expires (access tokens live 1 hour).
import anthropic client = anthropic.Anthropic() response = client.beta.messages.create( model="claude-opus-4-8", max_tokens=16000, messages=[{"role": "user", "content": "List all open jobs in 100Hires"}], mcp_servers=[{ "type": "url", "url": "https://mcp.100hires.com/mcp", "name": "100hires", "authorization_token": "YOUR_OAUTH_ACCESS_TOKEN" }], tools=[{ "type": "mcp_toolset", "mcp_server_name": "100hires", "default_config": {"enabled": False}, "configs": {"hires_list_jobs": {"enabled": True}} }], betas=["mcp-client-2025-11-20"] ) for block in response.content: if block.type == "text": print(block.text)For stdio-only clients (Zed, Windsurf, n8n, older builds) use the
mcp-remoteshim. It’s a third-party open source bridge: github.com/geelen/mcp-remote.Full list of MCP-compatible clients: modelcontextprotocol.io/clients.
- Name:
-
Authorize
Your client opens the 100Hires consent screen. Sign in, review the requested scope, click Allow. Tokens are stored on the client; 100Hires never sees its credentials.
-
Verify
Ask your assistant: “List all open jobs in 100Hires.” If you get a list back — you’re wired up. If not, see FAQ.
-
Next steps
Tools
Keep human confirmation on for destructive tools. Feedback: support@100hires.com.
-
hires_add_candidate_tagsAdd one or more tags to a candidate. Used for campaign tagging, qualification labels, and source attribution.
Parameters (2)
-
idrequired - Candidate ID (integer) or alias (string).
-
tagsarray required - Array of tag strings to add.
-
-
hires_add_hiring_team_memberAdd a company member to the job's hiring team. Use in workflow setup and ownership automation.
Parameters (2)
-
idrequired - Job ID (numeric) or alias
-
user_idnumber required - User ID to add to the hiring team.
-
-
hires_advance_applicationAdvance 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.
Parameters (2)
-
idnumber required - Application ID.
-
includestring - Comma-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_batch_add_tagsAdd tags to multiple candidates in one request (max 100). Returns per-item results with partial success support.
Parameters (2)
-
idsarray required - Candidate IDs to tag (max 100).
-
tagsarray required - Tag names to attach.
-
-
hires_batch_create_messagesCreate 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.
Parameters (1)
-
messagesarray required - Array of message payloads to create (max 100).
-
-
hires_batch_job_boardsGet board publication states for multiple jobs in one request. Optimized for batch monitoring and management UIs.
Parameters (1)
-
jobsarray required - Array of job IDs
-
-
hires_batch_move_applicationsMove multiple applications to a pipeline stage in one request. Returns per-item results with partial success support. Max 100 application IDs per request.
Parameters (2)
-
idsarray required - Application IDs to move (max 100).
-
stage_idnumber required - Target pipeline stage ID.
-
-
hires_batch_publish_to_boardsActivate board publication for multiple jobs in one request. Use for bulk job distribution workflows.
Parameters (2)
-
jobsarray required - Array of job IDs to publish
-
boardsarray - Array of board identifiers to activate (e.g. ['indeed', 'linkedin'])
-
-
hires_batch_reject_applicationsReject multiple applications in one request with an optional rejection reason. Returns per-item results with partial success support. Max 100 application IDs per request.
Parameters (2)
-
idsarray required - Application IDs to reject (max 100).
-
rejection_reason_idnumber - Optional rejection reason ID.
-
-
hires_batch_remove_from_boardsDeactivate board publication for multiple jobs in one request. Use for bulk depublishing workflows.
Parameters (2)
-
jobsarray required - Array of job IDs to depublish
-
boardsarray - Array of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])
-
-
hires_batch_remove_tagsRemove tags from multiple candidates in one request (max 100). Returns per-item results with partial success support.
Parameters (2)
-
idsarray required - Candidate IDs to remove tags from (max 100).
-
tagsarray required - Tag names to remove.
-
-
hires_cancel_all_notification_messagesCancel all scheduled notification emails for a candidate. Already sent notifications are not affected. Returns success even if no scheduled notifications exist.
Parameters (1)
-
candidate_idrequired - Candidate ID (numeric) or alias.
-
-
hires_create_applicationCreate an application by linking an existing candidate to a job. Use for sourcing workflows and manual application ingestion. The candidate must already exist.
Parameters (5)
-
candidate_idrequired - Candidate ID (numeric) or alias.
-
job_idnumber required - Job ID to apply the candidate to.
-
stage_idnumber - Pipeline stage ID. If omitted, defaults to the first stage.
-
cvobject - Optional CV/resume to attach.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_create_candidateCreate 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.
Parameters (13)
-
company_idnumber - Target company ID. Required only when the API key has access to multiple companies.
-
first_namestring - Candidate first name.
-
last_namestring - Candidate last name.
-
emailstring - Candidate email address. Used for deduplication.
-
phonestring - Candidate phone number.
-
profileobject - Key-value map of profile field answers. Keys can be question text or question_id. Example: {"Current job title": "Senior Engineer"}.
-
job_idnumber - Job ID to create an application for this candidate.
-
stage_idnumber - Pipeline stage ID for the initial application. Requires job_id.
-
citystring - Candidate city for location/timezone resolution.
-
statestring - Candidate state or region.
-
countrystring - Candidate country name or ISO code.
-
timezonestring - IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.
-
resume_textstring - Plain-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_create_companyCreate a client company (partner tenant) — provisions its public career-site URL (slug) and public branding (logo, name). Typical entrypoint for multi-tenant onboarding.
Parameters (8)
-
namestring required - Company name
-
company_owner_emailstring required - Company owner email address
-
company_owner_namestring required - Company owner full name
-
websitestring - Company website URL
-
urlstring - Company profile URL
-
company_owner_phonestring - Company owner phone number
-
is_staffing_agencyboolean - Whether this company is a staffing agency
-
logoobject - Company logo file
-
-
hires_create_email_templateCreate 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.
Parameters (4)
-
namestring required - Template name
-
subjectstring required - Email subject line (supports placeholders like {{first_name}}, {{job_title}})
-
bodystring required - Email body HTML (supports placeholders)
-
company_idnumber - Target company ID
-
-
hires_create_formCreate a new application form, optionally attaching existing questions by ID.
Parameters (3)
-
namestring required - Form name.
-
company_idnumber - Target company ID.
-
questionsarray - Array of question IDs to attach to this form.
-
-
hires_create_interviewSchedule 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.
Parameters (6)
-
idnumber required - Application ID.
-
start_timenumber required - Interview start time as Unix timestamp (seconds).
-
end_timenumber required - Interview end time as Unix timestamp (seconds, must be after start_time).
-
interviewer_idsarray required - List of user IDs who will conduct the interview.
-
locationstring - Location string; resolved to existing record or created automatically.
-
includestring - Comma-separated relations to embed: candidate, application, job.
-
-
hires_create_jobCreate a job with taxonomy, location, salary, and workflow configuration. Primary endpoint for programmatic job publishing. Required fields: status, title, description, location_city, location_country.
Parameters (29)
-
company_idnumber - Target company ID. Required only when the API key has access to multiple companies.
-
form_idnumber - Application form ID. If omitted, a new form named after the job title is created with default questions.
-
statusstring required - Job status (e.g. Draft, Public). See GET /taxonomy/statuses.
-
titlestring required - Public job title.
-
internal_titlestring - Internal-only title visible to the hiring team.
-
internal_job_idstring - External reference ID from your ATS or HR system.
-
descriptionstring required - Job description (HTML allowed).
-
resume_field_statusstring - Resume field behavior on the application form.
-
location_citystring required - Job city.
-
location_countrystring required - Job country.
-
location_statestring - Job state or region.
-
location_street_addressstring - Street address.
-
location_full_addressstring - Full formatted address.
-
location_postal_codestring - Postal or ZIP code.
-
salary_minnumber - Minimum salary.
-
salary_maxnumber - Maximum salary.
-
salary_currencystring - Salary currency code (e.g. USD, EUR).
-
salary_periodstring - Salary period.
-
is_remoteboolean - Whether this is a remote position.
-
employment_type_idnumber - Employment type ID from GET /taxonomy/employment-types.
-
department_idnumber - Department ID from GET /taxonomy/departments.
-
category_idnumber - Job category ID from GET /taxonomy/categories.
-
education_level_idnumber - Education level ID from GET /taxonomy/education-levels.
-
experience_level_idnumber - Experience level ID from GET /taxonomy/experience-levels.
-
workflow_idnumber - Workflow ID. If omitted, a new workflow named after the job title is created with default stages.
-
parent_job_idnumber - Canonical parent job ID. If provided, the created job becomes a satellite job.
-
knockout_questionsarray - Boolean knockout questions added to the application form.
-
ai_scoring_criteriaarray - AI 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.
-
includestring - Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
-
-
hires_create_job_webhookRegister a webhook URL for job-related events. Core step for outbound integration setup. URL must be HTTPS.
Parameters (2)
-
idrequired - Job ID (numeric) or alias
-
urlstring required - Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs).
-
-
hires_create_noteCreate 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.
Parameters (6)
-
candidate_idrequired - Candidate ID (numeric) or alias
-
bodystring required - Note content. Supports HTML.
-
user_idnumber - Author user ID. If omitted, the authenticated user is used
-
visibilitystring - Visibility: 'all' (default) or 'private'
-
mention_user_idsarray - Array of user IDs to mention. Mentioned users receive email notifications.
-
includestring - Include 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_create_nurture_campaignCreate 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.
Parameters (11)
-
company_idnumber - Target company ID (optional if API key is scoped to one company)
-
titlestring required - Campaign name
-
workflow_idnumber - Workflow ID to bind the campaign to
-
stage_idnumber - Stage ID that triggers the campaign
-
delay_timenumber - Delay time in seconds
-
relative_daysnumber - Relative days for schedule
-
relative_timenumber - Relative time for schedule (seconds from midnight)
-
timezonestring - IANA timezone, e.g. "America/New_York"
-
send_to_allboolean - Send to all candidates or only new ones (default false)
-
response_move_to_stage_idnumber - Stage to move candidate to when they reply
-
stepsarray required - Campaign steps (at least one required)
-
-
hires_create_questionCreate a reusable question with optional answer options for dropdown types. Used by forms and questionnaires.
Parameters (4)
-
textstring required - Question text
-
typestring required - Question type (from hires_list_question_types)
-
company_idnumber - Target company ID (uses default company when omitted)
-
optionsarray - Answer options (for select/multiselect question types)
-
-
hires_create_webhookCreate a company-scoped webhook subscription. Use for outbound company-level event integrations.
Parameters (2)
-
idnumber required - Company ID
-
urlstring required - Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs).
-
-
hires_delete_applicationPermanently delete an application. This removes it from all list and view queries.
Parameters (1)
-
idnumber required - Application ID.
-
-
hires_delete_candidatePermanently delete a candidate by ID or alias.
Parameters (1)
-
idrequired - Candidate ID (integer) or alias (string).
-
-
hires_delete_companyDelete (soft-delete) a company — takes its public career site offline. Use for lifecycle control in partner tenancy management.
Parameters (1)
-
idnumber required - Company ID
-
-
hires_delete_email_templateSoft-delete an email template. Templates already used in automations will stop being available for new actions.
Parameters (1)
-
idnumber required - Email template ID
-
-
hires_delete_formDelete an application form.
Parameters (1)
-
idnumber required - Form ID.
-
-
hires_delete_jobDelete a job. Use to align archived/removed positions across integrated platforms.
Parameters (1)
-
idrequired - Job ID (numeric) or alias
-
-
hires_delete_job_webhookDelete a job webhook subscription by ID. Use for cleanup, rotation, and endpoint migration.
Parameters (2)
-
idrequired - Job ID (numeric) or alias
-
webhook_idnumber required - Webhook ID to delete
-
-
hires_delete_messageCancel a scheduled message before it is processed by the mailbox scheduler.
Parameters (1)
-
idinteger required - Message ID.
-
-
hires_delete_noteDelete a note. Use for moderation policies and data cleanup operations.
Parameters (1)
-
idnumber required - Note ID
-
-
hires_delete_notification_messageCancel a scheduled notification email before it is sent. Already sent messages cannot be canceled.
Parameters (1)
-
idinteger required - Notification email message ID.
-
-
hires_delete_nurture_campaignDelete (soft-delete) a nurture campaign. Active campaign executions will be stopped.
Parameters (1)
-
idnumber required - Nurture campaign ID
-
-
hires_delete_questionDelete a reusable question from the catalog. Use cautiously when deprecating question banks.
Parameters (1)
-
idnumber required - Question ID
-
-
hires_delete_webhookDelete a company-scoped webhook subscription by ID. Use for endpoint retirement and security rotation.
Parameters (2)
-
idnumber required - Company ID
-
webhook_idnumber required - Webhook ID
-
-
hires_disqualify_candidateDisqualify a candidate from all active applications. Optionally provide rejection reason IDs. Returns affected application IDs.
Parameters (2)
-
idrequired - Candidate ID (integer) or alias (string).
-
reasonsarray - Array of rejection reason IDs from GET /taxonomy/rejection-reasons.
-
-
hires_download_attachmentDownload 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.
Parameters (1)
-
urlstring required - Absolute 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_get_ai_scoreGet 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.
Parameters (1)
-
idnumber required - Application ID.
-
-
hires_get_applicationGet full application details including stage, status, and rejection context. Recommended before mutating stage transitions.
Parameters (2)
-
idnumber required - Application ID.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_get_billingGet billing/pricing capability flags for the current company. Use before invoking paid-only API behaviors.
-
hires_get_candidateGet full candidate data including application summaries by candidate ID or alias.
Parameters (1)
-
idrequired - Candidate ID (integer) or alias (string).
-
-
hires_get_candidate_resumeGet 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.
Parameters (2)
-
idrequired - Candidate ID (integer) or alias (string).
-
includestring - Comma-separated optional fields. Use 'text_content' to add a `text` field with parsed plain-text resume content.
-
-
hires_get_career_jobGet 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.
Parameters (2)
-
company_slugstring required - Company slug identifying the career site
-
idnumber required - Job ID
-
-
hires_get_companyGet company profile and owner metadata. Use before updates or ownership-sensitive actions.
Parameters (1)
-
idnumber required - Company ID
-
-
hires_get_email_templateGet full details of a specific email template by ID, including subject and body content.
Parameters (1)
-
idnumber required - Email template ID
-
-
hires_get_evaluationGet 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.
Parameters (1)
-
idnumber required - Evaluation form ID
-
-
hires_get_formGet form details including all questions with their statuses.
Parameters (1)
-
idnumber required - Form ID.
-
-
hires_get_interviewGet full details of a specific interview by ID. Use `include` to embed related candidate, application, or job data.
Parameters (2)
-
idnumber required - Interview ID
-
includestring - Comma-separated related resources to embed: candidate, application, job
-
-
hires_get_jobGet full details of a job by ID or alias. Use `include` to load related workflow, hiring team, or pipeline stages data.
Parameters (2)
-
idrequired - Job ID (numeric) or alias
-
includestring - Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
-
-
hires_get_messageGet a scheduled message by ID. Returns scheduler-backed message details including sender account, schedule timestamps, and cancelability.
Parameters (1)
-
idinteger required - Message ID.
-
-
hires_get_noteGet a single note with author and visibility metadata. Use include=user to load author details.
Parameters (2)
-
idnumber required - Note ID
-
includestring - Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
-
-
hires_get_notification_messageGet 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.
Parameters (1)
-
idinteger required - Notification email message ID.
-
-
hires_get_nurture_campaignGet a single nurture campaign by ID with all steps and configuration details.
Parameters (1)
-
idnumber required - Nurture campaign ID
-
-
hires_get_questionGet a question definition including type and options by ID.
Parameters (1)
-
idnumber required - Question ID
-
-
hires_get_userGet 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.
Parameters (1)
-
idnumber required - User ID
-
-
hires_get_workflow_stagesGet stages for a specific workflow by ID. Equivalent to hires_list_workflow_stages with workflow_id filter.
Parameters (2)
-
idnumber required - Workflow ID
-
company_idnumber - Target company ID (uses default company when omitted)
-
-
hires_hire_applicationMark an application as hired. This is the finalization step in a hiring workflow. The application status changes to 'hired' and hired_at is set.
Parameters (2)
-
idnumber required - Application ID.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_list_application_attachmentsList all file attachments linked to an application (resumes, cover letters, documents). Returns file metadata and download URLs.
Parameters (1)
-
idnumber required - Application ID.
-
-
hires_list_application_evaluationsList all filled evaluation forms for an application. Each evaluation includes the evaluator, summary score (strong-yes to strong-no), and summary text.
Parameters (2)
-
idnumber required - Application ID.
-
viewstring - Response 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_list_application_stage_historyGet 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.
Parameters (1)
-
idnumber required - Application ID.
-
-
hires_list_applicationsList 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.
Parameters (13)
-
company_idnumber - Filter by company ID. Omit for all accessible companies.
-
candidate_idnumber - Filter applications by candidate ID.
-
job_idnumber - Filter applications by job ID.
-
stage_idnumber - Filter applications by pipeline stage ID. Best used together with job_id.
-
statusstring - Filter by application status: pending (active), hired, or rejected.
-
created_after - Return 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_after - Return 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_minnumber - Return only applications with ai_score >= this value.
-
ai_score_maxnumber - Return only applications with ai_score <= this value.
-
sortstring - Sort order. Prefix with - for descending. Default: -created_at.
-
includestring - Comma-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).
-
pagenumber - Page number (default 1).
-
sizenumber - Items per page (default 25, max 100).
-
-
hires_list_boardsList available publishing boards with metadata. Use for distribution setup and board selection.
-
hires_list_candidate_activitiesList 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.
Parameters (7)
-
idrequired - Candidate ID (integer) or alias (string).
-
pagenumber - Page number (1-based).
-
sizenumber - Page size. Values above 100 are rejected with 400. Default 20, max 100.
-
event_typestring - Comma-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.
-
since - Inclusive lower bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated.
-
until - Inclusive upper bound on event timestamp. Unix timestamp (seconds) or ISO-8601 string (e.g. 2026-04-01T00:00:00Z). Fractional seconds accepted but truncated.
-
viewstring - Response 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_list_candidate_filesList 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.
Parameters (1)
-
idrequired - Candidate ID (integer) or alias (string).
-
-
hires_list_candidate_interviewsList all interviews for a candidate across all applications. Useful for timeline views and scheduling conflict detection.
Parameters (3)
-
idrequired - Candidate ID (integer) or alias (string).
-
pagenumber - Page number (1-based).
-
sizenumber - Number of items per page.
-
-
hires_list_candidate_messagesList 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.
Parameters (5)
-
idrequired - Candidate ID (integer) or alias (string).
-
pagenumber - Page number (1-based).
-
sizenumber - Number of items per page.
-
is_schedulednumber - Set to 1 to return only scheduled (not yet sent) messages.
-
viewstring - Response shape. Default `summary` excludes the HTML body and attachments metadata. Use `full` only when message body content is needed.
-
-
hires_list_candidate_tagsList all tags assigned to a candidate. Useful for segmentation and audience-based automations.
Parameters (1)
-
idrequired - Candidate ID (integer) or alias (string).
-
-
hires_list_candidatesList 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.
Parameters (13)
-
company_idnumber - Filter by company ID. Required only when the API key has access to multiple companies.
-
job_idnumber - Filter candidates by job ID.
-
stage_idnumber - Filter candidates by pipeline stage ID. Best used together with job_id.
-
emailstring - Exact candidate email filter.
-
qstring - Plain-text search by name or email. Supports partial matches.
-
full_namestring - Candidate full-name filter.
-
linkedinstring - Search by LinkedIn profile URL or alias (e.g. 'johndoe' or full URL).
-
created_after - Return 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_after - Return 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.
-
includestring - Comma-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).
-
pagenumber - Page number (1-based).
-
sizenumber - Number of items per page.
-
viewstring - Response 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_list_career_jobsList publicly visible jobs for a company career site. Supports filtering by department, employment type, city, and country. Use to power a custom careers page.
Parameters (7)
-
company_slugstring required - Company slug identifying the career site
-
department_idnumber - Filter by department ID
-
employment_type_idnumber - Filter by employment type ID (e.g. Full-time, Part-time)
-
citystring - Filter by job city (exact match)
-
countrystring - Filter by job country (exact match)
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_categoriesList global job categories. Use for job classification and consistent taxonomy mapping.
-
hires_list_companiesList partner-accessible companies with pagination. Use for tenant discovery and management panels.
Parameters (2)
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_company_id_mail_accountsList all mail accounts for all users in a specific company. The company must be accessible (own company or a client).
Parameters (3)
-
idnumber required - Company ID
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_company_mail_accountsList all mail accounts for all users in the current company. Use to resolve `from_account_id` before creating scheduled emails.
Parameters (2)
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_departmentsList departments for the company. Use for job organization filters and reporting dimensions.
Parameters (1)
-
company_idnumber - Target company ID (uses default company when omitted)
-
-
hires_list_education_levelsList education level taxonomy values. Useful for job requirements and structured matching.
-
hires_list_email_templatesList 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.
Parameters (4)
-
company_idnumber - Target company ID
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
viewstring - Response 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_list_employment_typesList supported employment types (full-time, part-time, contract, etc.). Use for validation and normalization.
-
hires_list_experience_levelsList experience level taxonomy values for role seniority modeling.
-
hires_list_formsList 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.
Parameters (4)
-
company_idnumber - Target company ID.
-
pagenumber - Page number.
-
sizenumber - Page size.
-
viewstring - Response 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_list_hiring_teamList users currently assigned to a job's hiring team. Useful for notification routing and collaboration tooling.
Parameters (1)
-
idrequired - Job ID (numeric) or alias
-
-
hires_list_interviewsList 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.
Parameters (11)
-
company_idnumber - Filter by company ID. Omit for all accessible companies.
-
job_idnumber - Filter interviews by job ID
-
application_idnumber - Filter interviews by application ID
-
candidate_idnumber - Filter interviews by candidate ID
-
interviewer_user_idnumber - Filter interviews by interviewer user ID
-
datestring - Filter by interview date (YYYY-MM-DD, UTC)
-
created_after - Return 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_after - Return 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.
-
includestring - Comma-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.
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 20)
-
-
hires_list_job_boardsGet current board publication state for a specific job. Returns which job boards the job is published to. Useful for distribution dashboards and posting audits.
Parameters (1)
-
idrequired - Job ID (numeric) or alias
-
-
hires_list_job_webhooksList webhooks configured for job-level events. Use to audit subscriptions and deployment state.
Parameters (1)
-
idrequired - Job ID (numeric) or alias
-
-
hires_list_jobsList 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.
Parameters (11)
-
company_idnumber - Filter by company ID (required only for multi-company API keys)
-
statusstring - Filter by job status name (from GET /taxonomy/statuses, e.g. Public, Draft, Archived)
-
created_at_start - Return 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_end - Return 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_after - Return 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_idnumber - Filter jobs by department ID (from GET /taxonomy/departments)
-
qstring - Search by job title or internal title (partial match)
-
includestring - Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 20)
-
viewstring - Response 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_list_messagesList 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.
Parameters (7)
-
from_account_idinteger required - ID of the mail account (from `GET /companies/mail-accounts` or `GET /users/{user_id}/mail-accounts`).
-
statusstring - Filter by message status: `scheduled` (pending send), `sent` (delivered), `all` (both). Default: `all`.
-
date_frominteger - Start of period (unix timestamp, seconds). Filters on scheduled/sent time.
-
date_tointeger - End of period (unix timestamp, seconds). Filters on scheduled/sent time.
-
pageinteger - Page number (1-based). Default: 1.
-
sizeinteger - Number of items per page (1-100). Default: 20.
-
viewstring - Response shape. Default `summary` excludes the HTML body and attachments metadata — recommended for list operations. Use `full` only when message body content is needed.
-
-
hires_list_notesList 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.
Parameters (5)
-
candidate_idrequired - Candidate ID (numeric) or alias
-
includestring - Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
-
pagenumber - Page number
-
sizenumber - Page size
-
viewstring - Response 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_list_nurture_campaignsList nurture campaigns with pagination. Returns campaign summaries including steps.
Parameters (3)
-
company_idnumber - Target company ID (optional if API key is scoped to one company)
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_originsList candidate origin taxonomy values. Use for attribution analytics and source normalization.
-
hires_list_question_typesList available question types supported by the platform. Use to drive dynamic form builders.
-
hires_list_questionsList paginated question catalog for the company.
Parameters (3)
-
company_idnumber - Target company ID (uses default company when omitted)
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_rejection_reasonsList configured rejection reasons for the company. Use to validate rejection actions and analytics.
Parameters (1)
-
company_idnumber - Target company ID (uses default company when omitted)
-
-
hires_list_sourcesList candidate sources for the company. Use for attribution sync and reporting consistency.
Parameters (1)
-
company_idnumber - Target company ID (uses default company when omitted)
-
-
hires_list_statusesList job status labels (draft, published, on_hold, closed, archived). Cache to validate job status updates.
-
hires_list_tagsList all tags for the company. Returns paginated results. Recommended to cache for fast tagging UX.
Parameters (1)
-
company_idnumber - Target company ID (uses default company when omitted)
-
-
hires_list_template_placeholdersList 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.
Parameters (6)
-
company_idnumber - Target company ID (uses default company when omitted)
-
typestring - Filter by placeholder type
-
is_notificationnumber - Include notification-specific system placeholders (0 or 1, default 0)
-
qstring - Filter placeholders by label (case-insensitive substring match)
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_user_mail_accountsList mail accounts connected to a user. Use to resolve `from_account_id` before creating scheduled emails via POST /candidates/{id}/messages.
Parameters (3)
-
idnumber required - User ID
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_usersList users for the target company with role context. Returns paginated results useful for access reviews and hiring-team management.
Parameters (3)
-
company_idnumber - Company ID to list users for
-
pagenumber - Page number (default 1)
-
sizenumber - Page size (default 25)
-
-
hires_list_webhooksList webhook subscriptions configured at company scope.
Parameters (1)
-
idnumber required - Company ID
-
-
hires_list_workflow_stagesList pipeline stages filtered by workflow or job. Useful for transition UIs and workflow validation.
Parameters (3)
-
company_idnumber - Target company ID (uses default company when omitted)
-
workflow_idnumber - Filter stages by workflow ID (from hires_list_workflows)
-
job_idnumber - Filter stages by job ID (returns stages from the job's assigned workflow)
-
-
hires_list_workflowsList workflows with embedded stages for the company. Use to build stage-aware integrations and routing rules.
Parameters (1)
-
company_idnumber - Target company ID (uses default company when omitted)
-
-
hires_move_applicationMoves 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).
Parameters (3)
-
idnumber required - Application ID.
-
stage_idnumber required - Target pipeline stage ID.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_patch_messagePartially update a scheduled message before send time. Only provided fields are changed.
Parameters (10)
-
idinteger required - Message ID.
-
toarray - Primary recipient email addresses.
-
subjectstring - Email subject line.
-
bodystring - Email body as HTML.
-
from_account_id - Sending mail account ID. If omitted, the API key owner's default mail account is used.
-
ccarray - Carbon-copy recipient email addresses.
-
bccarray - Blind carbon-copy recipient email addresses.
-
scheduled_at - Updated send time as a Unix timestamp in seconds.
-
reply_to_email_id - Optional mailbox message ID to reply to.
-
send_in_new_threadboolean - Whether to send the updated message as a new thread.
-
-
hires_prepare_template_placeholdersConvert a placeholder reference into an HTML tag for insertion into an email template body.
Parameters (6)
-
typestring required - Placeholder type (system, candidate_column, job_variable, questionnaire_link, scheduling_link)
-
identifierstring - Placeholder identifier
-
qas_profile_question_idnumber - Profile question ID
-
form_question_idnumber - Form question ID
-
system_column_titlestring - System column title
-
job_variable_idnumber - Job variable ID
-
-
hires_publish_to_job_boardActivate selected job boards for a job. Sets boards to activation queue state. Use for controlled multi-board publishing workflows.
Parameters (2)
-
idrequired - Job ID (numeric) or alias
-
boardsarray - Array of board identifiers to activate (e.g. ['indeed', 'linkedin'])
-
-
hires_reject_applicationReject 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.
Parameters (4)
-
idnumber required - Application ID.
-
rejection_reason_idnumber - Rejection reason ID from GET /taxonomy/rejection-reasons.
-
suppress_notificationboolean - Set to true to skip sending the rejection email to the candidate.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_remove_candidate_tagRemove a specific tag from a candidate.
Parameters (2)
-
idrequired - Candidate ID (integer) or alias (string).
-
tagstring required - The tag string to remove.
-
-
hires_remove_from_job_boardDeactivate selected board publications for a job. Stops the job from being listed on specified boards.
Parameters (2)
-
idrequired - Job ID (numeric) or alias
-
boardsarray - Array of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])
-
-
hires_restore_companyRestore a previously deleted company and re-enable it for active use — its public career site comes back online. Use for recovery and rollback scenarios.
Parameters (1)
-
idnumber required - Company ID
-
-
hires_send_candidate_messageSchedule an email message to a candidate. If scheduled_at is omitted, the message is scheduled for 15 minutes after creation.
Parameters (11)
-
idrequired - Candidate ID (integer) or alias (string).
-
toarray required - Primary recipient email addresses.
-
subjectstring required - Email subject line.
-
bodystring required - Email body as HTML.
-
from_account_id - Sending mail account ID. If omitted, uses the API key owner's default mail account.
-
ccarray - Carbon-copy recipient email addresses.
-
bccarray - Blind carbon-copy recipient email addresses.
-
scheduled_at - Unix timestamp (seconds) for when to send. Defaults to 15 minutes after creation.
-
application_id - Optional application ID to link this message to.
-
reply_to_email_id - Optional mailbox message ID to reply to.
-
send_in_new_threadboolean - Send as a new email thread instead of replying in an existing one.
-
-
hires_set_job_statusChange job status via dedicated endpoint. Recommended for publish/unpublish/archive transitions and status automation workflows.
Parameters (3)
-
idrequired - Job ID (numeric) or alias
-
statusstring required - New job status (e.g. Draft, Public, Archived). See GET /taxonomy/statuses.
-
includestring - Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
-
-
hires_submit_career_applicationSubmit a job application on behalf of a candidate. Creates a candidate record and triggers the career-site pipeline automation.
Parameters (10)
-
company_slugstring required - Company slug identifying the career site
-
job_idnumber required - Job ID to apply to
-
first_namestring required - Applicant first name
-
last_namestring required - Applicant last name
-
emailstring required - Applicant email address
-
phone - Applicant phone number
-
resume - Resume file upload (base64 encoded)
-
linkedin_url - Applicant LinkedIn profile URL
-
source - Application source identifier
-
answers - Array of form answer objects
-
-
hires_submit_feedbackSubmit structured API feedback about missing features, issues, or workflow improvements. Rate limited to 5 requests per hour.
Parameters (5)
-
descriptionstring required - Description of the issue or feedback (max 2000 chars)
-
endpointstring - The API endpoint this feedback relates to, e.g. /v2/candidates
-
issue_typestring - Category of the issue
-
suggested_improvementstring - Suggested solution or improvement (max 2000 chars)
-
contextobject - Arbitrary context object (max 4KB JSON)
-
-
hires_transfer_applicationTransfer an application to another job. A new application is created on the target job. Optionally specify a stage on the target job's pipeline.
Parameters (4)
-
idnumber required - Application ID to transfer.
-
job_idnumber required - Target job ID to transfer the application to.
-
stage_idnumber - Pipeline stage ID on the target job. If omitted, defaults to the first stage.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_unreject_applicationUndo a rejection and reopen a previously rejected application. The status returns to active and rejected_at is cleared.
Parameters (2)
-
idnumber required - Application ID.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_update_applicationUpdate application fields such as stage, disqualification flag, and CV. For explicit stage transitions prefer hires_move_application or hires_advance_application.
Parameters (5)
-
idnumber required - Application ID.
-
stage_idnumber - Move application to this pipeline stage.
-
is_disqualifiedboolean - Set to true to disqualify the candidate on this application.
-
cvobject - Replace or attach a CV.
-
includestring - Comma-separated relations to embed: candidate, cv.text, job.
-
-
hires_update_candidateUpdate 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.
Parameters (13)
-
idrequired - Candidate ID (integer) or alias (string).
-
first_namestring - Candidate first name.
-
last_namestring - Candidate last name.
-
emailstring - Candidate email address.
-
phonestring - Candidate phone number.
-
profileobject - Key-value map of profile field answers. Keys can be question text or question_id.
-
job_idnumber - Job ID to create a new application for this candidate.
-
stage_idnumber - Pipeline stage ID for the application. Requires job_id.
-
citystring - Candidate city for location/timezone resolution.
-
statestring - Candidate state or region.
-
countrystring - Candidate country name or ISO code.
-
timezonestring - IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.
-
resume_textstring - Plain-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_update_companyUpdate 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.
Parameters (9)
-
idnumber required - Company ID
-
namestring - Company name
-
websitestring - Company website URL
-
urlstring - Company profile URL
-
company_owner_emailstring - Company owner email address
-
company_owner_namestring - Company owner full name
-
company_owner_phonestring - Company owner phone number
-
is_staffing_agencyboolean - Whether this company is a staffing agency
-
logoobject - Company logo file
-
-
hires_update_email_templateUpdate an existing email template. Only provided fields are overwritten; omitted fields keep their current values. To add placeholders, use the same workflow as creation.
Parameters (4)
-
idnumber required - Email template ID
-
namestring - Template name
-
subjectstring - Email subject line (supports placeholders)
-
bodystring - Email body HTML (supports placeholders)
-
-
hires_update_formUpdate form name and question composition.
Parameters (3)
-
idnumber required - Form ID.
-
namestring required - Form name.
-
questionsarray - Array of question IDs to attach to this form.
-
-
hires_update_form_questionUpdate the status (required/optional/hidden) of a question inside a form.
Parameters (3)
-
form_idnumber required - Form ID.
-
question_idnumber required - Question ID.
-
statusstring required - Question visibility on this form: required, optional, or hidden.
-
-
hires_update_jobUpdate mutable job attributes. Only send fields you want to change. Preserves domain-level validation rules.
Parameters (29)
-
idrequired - Job ID (numeric) or alias
-
form_idnumber - Application form ID to assign to this job.
-
statusstring - Job status (e.g. Draft, Public). See GET /taxonomy/statuses.
-
titlestring - Public job title.
-
internal_titlestring - Internal-only title visible to the hiring team.
-
internal_job_idstring - External reference ID from your ATS or HR system.
-
descriptionstring - Job description (HTML allowed).
-
resume_field_statusstring - Resume field behavior on the application form.
-
location_citystring - Job city.
-
location_countrystring - Job country.
-
location_statestring - Job state or region.
-
location_street_addressstring - Street address.
-
location_full_addressstring - Full formatted address.
-
location_postal_codestring - Postal or ZIP code.
-
salary_minnumber - Minimum salary.
-
salary_maxnumber - Maximum salary.
-
salary_currencystring - Salary currency code (e.g. USD, EUR).
-
salary_periodstring - Salary period.
-
is_remoteboolean - Whether this is a remote position.
-
employment_type_idnumber - Employment type ID from GET /taxonomy/employment-types.
-
department_idnumber - Department ID from GET /taxonomy/departments.
-
category_idnumber - Job category ID from GET /taxonomy/categories.
-
education_level_idnumber - Education level ID from GET /taxonomy/education-levels.
-
experience_level_idnumber - Experience level ID from GET /taxonomy/experience-levels.
-
workflow_idnumber - Workflow ID to assign to this job.
-
parent_job_idnumber - Canonical parent job ID. If provided, the job becomes a satellite job.
-
knockout_questionsarray - Boolean knockout questions added to the application form.
-
ai_scoring_criteriaarray - AI 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.
-
includestring - Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
-
-
hires_update_messageFully update (replace) a scheduled message before send time. All required fields must be provided.
Parameters (10)
-
idinteger required - Message ID.
-
toarray required - Primary recipient email addresses.
-
subjectstring required - Email subject line.
-
bodystring required - Email body as HTML.
-
from_account_id - Sending mail account ID. If omitted, the API key owner's default mail account is used.
-
ccarray - Carbon-copy recipient email addresses.
-
bccarray - Blind carbon-copy recipient email addresses.
-
scheduled_at - Updated send time as a Unix timestamp in seconds.
-
reply_to_email_id - Optional mailbox message ID to reply to.
-
send_in_new_threadboolean - Whether to send the updated message as a new thread.
-
-
hires_update_noteUpdate note body and/or visibility without creating a new timeline item. Use for corrections and moderation workflows.
Parameters (4)
-
idnumber required - Note ID
-
bodystring - Note content. Supports HTML.
-
visibilitystring - Visibility: 'all' (default) or 'private'
-
includestring - Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
-
-
hires_update_notification_messageUpdate 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.
Parameters (4)
-
idinteger required - Notification email message ID.
-
subjectstring required - Email subject line.
-
bodystring required - Email body as HTML.
-
scheduled_at - Unix timestamp (seconds) to reschedule send time. If omitted, the existing schedule is preserved.
-
-
hires_update_nurture_campaignUpdate an existing nurture campaign. Pass all steps -- mark removed steps with is_deleted=true. Existing steps must include their id.
Parameters (11)
-
idnumber required - Nurture campaign ID
-
titlestring required - Campaign name
-
workflow_idnumber - Workflow ID this campaign is associated with
-
stage_idnumber - Pipeline stage ID that triggers the campaign
-
delay_timenumber - Delay in minutes before the first step
-
relative_daysnumber - Number of days offset for scheduling
-
relative_timenumber - Time of day for scheduled sends
-
timezonestring - Timezone for scheduled sends, e.g. "America/New_York"
-
send_to_allboolean - Whether to send to all candidates or only new ones
-
response_move_to_stage_idnumber - Stage ID to move candidates to when they respond
-
stepsarray required - All steps -- mark removed steps with is_deleted=true
-
-
hires_update_questionUpdate text, type, or options of an existing question definition.
Parameters (4)
-
idnumber required - Question ID
-
textstring required - Question text
-
typestring required - Question type (from hires_list_question_types)
-
optionsarray - Answer options (for select/multiselect question types)
-
-
hires_upload_application_attachmentUpload a file attachment to an application. Provide the file as base64-encoded data. Commonly used for signed documents and interviewer artifacts.
Parameters (2)
-
idnumber required - Application ID.
-
fileobject required - File to upload.
-
-
hires_upload_attachmentUpload 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}`.
Parameters (4)
-
categorystring required - Attachment category. Determines allowed extensions and object_id semantics.
-
company_id - Target 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_id - Target object ID (candidate/application/comment/job-note/company, per category). Omit for `voicemail`.
-
fileobject required - File payload.
-
-
hires_upload_candidate_fileUpload 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.
Parameters (2)
-
idrequired - Candidate ID (integer) or alias (string).
-
fileobject required - File to upload (base64 payload).
-
131 tools
Loading tools…
Tools list temporarily unavailable.
-
{{ tool.name }}{{ tool.description }}
Parameters ({{ toolParameters(tool).length }})
-
{{ param.name }}{{ param.type }} required - {{ param.description || '—' }}
-
No tools match {{ filterQuery }}.
{{ visibleTools.length }} of {{ tools.length }} tools
Authentication
OAuth 2.1 with PKCE and Dynamic Client Registration. Hosts onboard themselves — no API keys to copy and paste, no client secrets to leak.
Flow
AI client → GET /.well-known/oauth-authorization-server (RFC 8414)
→ POST /oauth/register (DCR, RFC 7591)
→ GET /oauth/authorize + PKCE (consent in 100Hires)
→ POST /oauth/token (code → access_token)
→ POST /mcp Authorization: Bearer <token>
Scopes
A single scope, mcp:full, mirrors the permissions of the authorizing user.
Token lifetime & refresh
- Access tokens expire after 1 hour.
- Refresh tokens are issued automatically; clients refresh transparently.
- Tokens are bound to the authorizing user and revoked when they leave the workspace.
Manage sessions
Settings → Integrations → Connected AI clients lists every active session: client name (from DCR), last used, IP, scope, and a one-click Revoke.
Safety
- Access is controlled by your API key permissions.
- Read operations are always safe.
- Destructive actions (delete, reject) require explicit IDs.
- Rate limiting with automatic retry is built-in.
- API key is never sent to third-party hosts.
Access model
Every token — OAuth or API key — is bound to a single 100Hires user. The MCP server only ever sees data that user could see in the UI; cross-company access is impossible. Sessions are listed under Settings → Integrations → Connected AI clients.
Destructive tools
These tools modify or remove data and always require explicit IDs — assistants cannot batch-delete by query:
hires_delete_*hires_reject_applicationhires_disqualify_candidatehires_batch_reject_applications
Best practices
- Don’t hand AI assistants a blanket “delete by filter” permission — keep human confirmation on for destructive tools.
- Use a separate token per client so you can revoke one without disrupting the others.
- Revoke unused sessions on a regular cadence.
- For CI, prefer a restricted API key over a personal token.
FAQ
I’m getting 401 Unauthorized or Internal server error
Your access token has likely expired or was revoked. Disconnect and reconnect the MCP server in your client.
Claude clients store tokens locally. To force a fresh OAuth flow:
rm -rf ~/.mcp-auth/100hires
I’m getting an error from the server
Email support@100hires.com with the failing tool name, the time of the request and the error message your client showed.
WSL / Windows quirks with npx mcp-remote
Run mcp-remote from the same shell as your client (e.g. WSL → WSL, not WSL → Windows host). Clear the on-disk token cache (~/.mcp-auth/100hires) when switching environments.
Does the server support Streamable HTTP?
Yes. Both application/json and text/event-stream responses are supported. If you’re reverse-proxying, set proxy_buffering off for the SSE path.