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.

Endpoint 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.

  1. Prerequisites

    A 100Hires account on any plan, including the 14-day free trial. The MCP endpoint is available to every workspace.

  2. 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/mcp over Streamable HTTP; stdio-only clients use the mcp-remote shim.

    Open 100Hires in ChatGPT

    Or 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.

    Claude sidebar with the Customize menu item
    Step 1 — open the sidebar → Customize.

    Go to Connectors, click +, and choose Add custom connector.

    Claude Customize → Connectors with the + menu showing 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.
    Claude Add custom connector dialog with Name and Remote MCP server URL fields
    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 Cursor

    Click Install in Cursor to add 100Hires MCP automatically. Or paste the snippet below into ~/.cursor/mcp.json.

    Install in VS Code

    Opens VS Code and registers the server. Or paste the snippet into .vscode/mcp.json in 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 100hires to 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-only hires_list_jobs tool and skips approval for that tool — add more tools to allowed_tools only 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-only hires_list_jobs tool — extend the allowlist in configs deliberately.

    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-remote shim. It’s a third-party open source bridge: github.com/geelen/mcp-remote.

    Full list of MCP-compatible clients: modelcontextprotocol.io/clients.

  3. 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.

  4. Verify

    Ask your assistant: “List all open jobs in 100Hires.” If you get a list back — you’re wired up. If not, see FAQ.

  5. Next steps

Tools

Keep human confirmation on for destructive tools. Feedback: support@100hires.com.

  • hires_add_candidate_tags

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

    Parameters (2)
    id required
    Candidate ID (integer) or alias (string).
    tags array required
    Array of tag strings to add.
  • hires_add_hiring_team_member

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

    Parameters (2)
    id required
    Job ID (numeric) or alias
    user_id number required
    User ID to add to the hiring team.
  • hires_advance_application

    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.

    Parameters (2)
    id number required
    Application ID.
    include string
    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_tags

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

    Parameters (2)
    ids array required
    Candidate IDs to tag (max 100).
    tags array required
    Tag names to attach.
  • hires_batch_create_messages

    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.

    Parameters (1)
    messages array required
    Array of message payloads to create (max 100).
  • hires_batch_job_boards

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

    Parameters (1)
    jobs array required
    Array of job IDs
  • hires_batch_move_applications

    Move 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)
    ids array required
    Application IDs to move (max 100).
    stage_id number required
    Target pipeline stage ID.
  • hires_batch_publish_to_boards

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

    Parameters (2)
    jobs array required
    Array of job IDs to publish
    boards array
    Array of board identifiers to activate (e.g. ['indeed', 'linkedin'])
  • hires_batch_reject_applications

    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.

    Parameters (2)
    ids array required
    Application IDs to reject (max 100).
    rejection_reason_id number
    Optional rejection reason ID.
  • hires_batch_remove_from_boards

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

    Parameters (2)
    jobs array required
    Array of job IDs to depublish
    boards array
    Array of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])
  • hires_batch_remove_tags

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

    Parameters (2)
    ids array required
    Candidate IDs to remove tags from (max 100).
    tags array required
    Tag names to remove.
  • hires_cancel_all_notification_messages

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

    Parameters (1)
    candidate_id required
    Candidate ID (numeric) or alias.
  • hires_create_application

    Create 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_id required
    Candidate ID (numeric) or alias.
    job_id number required
    Job ID to apply the candidate to.
    stage_id number
    Pipeline stage ID. If omitted, defaults to the first stage.
    cv object
    Optional CV/resume to attach.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_create_candidate

    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.

    Parameters (13)
    company_id number
    Target company ID. Required only when the API key has access to multiple companies.
    first_name string
    Candidate first name.
    last_name string
    Candidate last name.
    email string
    Candidate email address. Used for deduplication.
    phone string
    Candidate phone number.
    profile object
    Key-value map of profile field answers. Keys can be question text or question_id. Example: {"Current job title": "Senior Engineer"}.
    job_id number
    Job ID to create an application for this candidate.
    stage_id number
    Pipeline stage ID for the initial application. Requires job_id.
    city string
    Candidate city for location/timezone resolution.
    state string
    Candidate state or region.
    country string
    Candidate country name or ISO code.
    timezone string
    IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.
    resume_text string
    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_company

    Create 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)
    name string required
    Company name
    company_owner_email string required
    Company owner email address
    company_owner_name string required
    Company owner full name
    website string
    Company website URL
    url string
    Company profile URL
    company_owner_phone string
    Company owner phone number
    is_staffing_agency boolean
    Whether this company is a staffing agency
    logo object
    Company logo file
  • hires_create_email_template

    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.

    Parameters (4)
    name string required
    Template name
    subject string required
    Email subject line (supports placeholders like {{first_name}}, {{job_title}})
    body string required
    Email body HTML (supports placeholders)
    company_id number
    Target company ID
  • hires_create_form

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

    Parameters (3)
    name string required
    Form name.
    company_id number
    Target company ID.
    questions array
    Array of question IDs to attach to this form.
  • hires_create_interview

    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.

    Parameters (6)
    id number required
    Application ID.
    start_time number required
    Interview start time as Unix timestamp (seconds).
    end_time number required
    Interview end time as Unix timestamp (seconds, must be after start_time).
    interviewer_ids array required
    List of user IDs who will conduct the interview.
    location string
    Location string; resolved to existing record or created automatically.
    include string
    Comma-separated relations to embed: candidate, application, job.
  • hires_create_job

    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.

    Parameters (29)
    company_id number
    Target company ID. Required only when the API key has access to multiple companies.
    form_id number
    Application form ID. If omitted, a new form named after the job title is created with default questions.
    status string required
    Job status (e.g. Draft, Public). See GET /taxonomy/statuses.
    title string required
    Public job title.
    internal_title string
    Internal-only title visible to the hiring team.
    internal_job_id string
    External reference ID from your ATS or HR system.
    description string required
    Job description (HTML allowed).
    resume_field_status string
    Resume field behavior on the application form.
    location_city string required
    Job city.
    location_country string required
    Job country.
    location_state string
    Job state or region.
    location_street_address string
    Street address.
    location_full_address string
    Full formatted address.
    location_postal_code string
    Postal or ZIP code.
    salary_min number
    Minimum salary.
    salary_max number
    Maximum salary.
    salary_currency string
    Salary currency code (e.g. USD, EUR).
    salary_period string
    Salary period.
    is_remote boolean
    Whether this is a remote position.
    employment_type_id number
    Employment type ID from GET /taxonomy/employment-types.
    department_id number
    Department ID from GET /taxonomy/departments.
    category_id number
    Job category ID from GET /taxonomy/categories.
    education_level_id number
    Education level ID from GET /taxonomy/education-levels.
    experience_level_id number
    Experience level ID from GET /taxonomy/experience-levels.
    workflow_id number
    Workflow ID. If omitted, a new workflow named after the job title is created with default stages.
    parent_job_id number
    Canonical parent job ID. If provided, the created job becomes a satellite job.
    knockout_questions array
    Boolean knockout questions added to the application form.
    ai_scoring_criteria array
    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.
    include string
    Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
  • hires_create_job_webhook

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

    Parameters (2)
    id required
    Job ID (numeric) or alias
    url string required
    Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs).
  • hires_create_note

    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.

    Parameters (6)
    candidate_id required
    Candidate ID (numeric) or alias
    body string required
    Note content. Supports HTML.
    user_id number
    Author user ID. If omitted, the authenticated user is used
    visibility string
    Visibility: 'all' (default) or 'private'
    mention_user_ids array
    Array of user IDs to mention. Mentioned users receive email notifications.
    include string
    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_campaign

    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.

    Parameters (11)
    company_id number
    Target company ID (optional if API key is scoped to one company)
    title string required
    Campaign name
    workflow_id number
    Workflow ID to bind the campaign to
    stage_id number
    Stage ID that triggers the campaign
    delay_time number
    Delay time in seconds
    relative_days number
    Relative days for schedule
    relative_time number
    Relative time for schedule (seconds from midnight)
    timezone string
    IANA timezone, e.g. "America/New_York"
    send_to_all boolean
    Send to all candidates or only new ones (default false)
    response_move_to_stage_id number
    Stage to move candidate to when they reply
    steps array required
    Campaign steps (at least one required)
  • hires_create_question

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

    Parameters (4)
    text string required
    Question text
    type string required
    Question type (from hires_list_question_types)
    company_id number
    Target company ID (uses default company when omitted)
    options array
    Answer options (for select/multiselect question types)
  • hires_create_webhook

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

    Parameters (2)
    id number required
    Company ID
    url string required
    Webhook destination URL. Must be HTTPS and point to a public host (no localhost / private / link-local IPs).
  • hires_delete_application

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

    Parameters (1)
    id number required
    Application ID.
  • hires_delete_candidate

    Permanently delete a candidate by ID or alias.

    Parameters (1)
    id required
    Candidate ID (integer) or alias (string).
  • hires_delete_company

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

    Parameters (1)
    id number required
    Company ID
  • hires_delete_email_template

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

    Parameters (1)
    id number required
    Email template ID
  • hires_delete_form

    Delete an application form.

    Parameters (1)
    id number required
    Form ID.
  • hires_delete_job

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

    Parameters (1)
    id required
    Job ID (numeric) or alias
  • hires_delete_job_webhook

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

    Parameters (2)
    id required
    Job ID (numeric) or alias
    webhook_id number required
    Webhook ID to delete
  • hires_delete_message

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

    Parameters (1)
    id integer required
    Message ID.
  • hires_delete_note

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

    Parameters (1)
    id number required
    Note ID
  • hires_delete_notification_message

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

    Parameters (1)
    id integer required
    Notification email message ID.
  • hires_delete_nurture_campaign

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

    Parameters (1)
    id number required
    Nurture campaign ID
  • hires_delete_question

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

    Parameters (1)
    id number required
    Question ID
  • hires_delete_webhook

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

    Parameters (2)
    id number required
    Company ID
    webhook_id number required
    Webhook ID
  • hires_disqualify_candidate

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

    Parameters (2)
    id required
    Candidate ID (integer) or alias (string).
    reasons array
    Array of rejection reason IDs from GET /taxonomy/rejection-reasons.
  • hires_download_attachment

    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.

    Parameters (1)
    url string 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_score

    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.

    Parameters (1)
    id number required
    Application ID.
  • hires_get_application

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

    Parameters (2)
    id number required
    Application ID.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_get_billing

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

  • hires_get_candidate

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

    Parameters (1)
    id required
    Candidate ID (integer) or alias (string).
  • hires_get_candidate_resume

    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.

    Parameters (2)
    id required
    Candidate ID (integer) or alias (string).
    include string
    Comma-separated optional fields. Use 'text_content' to add a `text` field with parsed plain-text resume content.
  • hires_get_career_job

    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.

    Parameters (2)
    company_slug string required
    Company slug identifying the career site
    id number required
    Job ID
  • hires_get_company

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

    Parameters (1)
    id number required
    Company ID
  • hires_get_email_template

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

    Parameters (1)
    id number required
    Email template ID
  • hires_get_evaluation

    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.

    Parameters (1)
    id number required
    Evaluation form ID
  • hires_get_form

    Get form details including all questions with their statuses.

    Parameters (1)
    id number required
    Form ID.
  • hires_get_interview

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

    Parameters (2)
    id number required
    Interview ID
    include string
    Comma-separated related resources to embed: candidate, application, job
  • hires_get_job

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

    Parameters (2)
    id required
    Job ID (numeric) or alias
    include string
    Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
  • hires_get_message

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

    Parameters (1)
    id integer required
    Message ID.
  • hires_get_note

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

    Parameters (2)
    id number required
    Note ID
    include string
    Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
  • hires_get_notification_message

    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.

    Parameters (1)
    id integer required
    Notification email message ID.
  • hires_get_nurture_campaign

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

    Parameters (1)
    id number required
    Nurture campaign ID
  • hires_get_question

    Get a question definition including type and options by ID.

    Parameters (1)
    id number required
    Question ID
  • hires_get_user

    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.

    Parameters (1)
    id number required
    User ID
  • hires_get_workflow_stages

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

    Parameters (2)
    id number required
    Workflow ID
    company_id number
    Target company ID (uses default company when omitted)
  • hires_hire_application

    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.

    Parameters (2)
    id number required
    Application ID.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_list_application_attachments

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

    Parameters (1)
    id number required
    Application ID.
  • hires_list_application_evaluations

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

    Parameters (2)
    id number required
    Application ID.
    view string
    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_history

    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.

    Parameters (1)
    id number required
    Application ID.
  • hires_list_applications

    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.

    Parameters (13)
    company_id number
    Filter by company ID. Omit for all accessible companies.
    candidate_id number
    Filter applications by candidate ID.
    job_id number
    Filter applications by job ID.
    stage_id number
    Filter applications by pipeline stage ID. Best used together with job_id.
    status string
    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_min number
    Return only applications with ai_score >= this value.
    ai_score_max number
    Return only applications with ai_score <= this value.
    sort string
    Sort order. Prefix with - for descending. Default: -created_at.
    include string
    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).
    page number
    Page number (default 1).
    size number
    Items per page (default 25, max 100).
  • hires_list_boards

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

  • hires_list_candidate_activities

    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.

    Parameters (7)
    id required
    Candidate ID (integer) or alias (string).
    page number
    Page number (1-based).
    size number
    Page size. Values above 100 are rejected with 400. Default 20, max 100.
    event_type string
    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.
    view string
    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_files

    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.

    Parameters (1)
    id required
    Candidate ID (integer) or alias (string).
  • hires_list_candidate_interviews

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

    Parameters (3)
    id required
    Candidate ID (integer) or alias (string).
    page number
    Page number (1-based).
    size number
    Number of items per page.
  • hires_list_candidate_messages

    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.

    Parameters (5)
    id required
    Candidate ID (integer) or alias (string).
    page number
    Page number (1-based).
    size number
    Number of items per page.
    is_scheduled number
    Set to 1 to return only scheduled (not yet sent) messages.
    view string
    Response shape. Default `summary` excludes the HTML body and attachments metadata. Use `full` only when message body content is needed.
  • hires_list_candidate_tags

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

    Parameters (1)
    id required
    Candidate ID (integer) or alias (string).
  • hires_list_candidates

    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.

    Parameters (13)
    company_id number
    Filter by company ID. Required only when the API key has access to multiple companies.
    job_id number
    Filter candidates by job ID.
    stage_id number
    Filter candidates by pipeline stage ID. Best used together with job_id.
    email string
    Exact candidate email filter.
    q string
    Plain-text search by name or email. Supports partial matches.
    full_name string
    Candidate full-name filter.
    linkedin string
    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.
    include string
    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).
    page number
    Page number (1-based).
    size number
    Number of items per page.
    view string
    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_jobs

    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.

    Parameters (7)
    company_slug string required
    Company slug identifying the career site
    department_id number
    Filter by department ID
    employment_type_id number
    Filter by employment type ID (e.g. Full-time, Part-time)
    city string
    Filter by job city (exact match)
    country string
    Filter by job country (exact match)
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_categories

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

  • hires_list_companies

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

    Parameters (2)
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_company_id_mail_accounts

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

    Parameters (3)
    id number required
    Company ID
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_company_mail_accounts

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

    Parameters (2)
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_departments

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

    Parameters (1)
    company_id number
    Target company ID (uses default company when omitted)
  • hires_list_education_levels

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

  • hires_list_email_templates

    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.

    Parameters (4)
    company_id number
    Target company ID
    page number
    Page number (default 1)
    size number
    Page size (default 25)
    view string
    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_types

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

  • hires_list_experience_levels

    List experience level taxonomy values for role seniority modeling.

  • hires_list_forms

    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.

    Parameters (4)
    company_id number
    Target company ID.
    page number
    Page number.
    size number
    Page size.
    view string
    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_team

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

    Parameters (1)
    id required
    Job ID (numeric) or alias
  • hires_list_interviews

    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.

    Parameters (11)
    company_id number
    Filter by company ID. Omit for all accessible companies.
    job_id number
    Filter interviews by job ID
    application_id number
    Filter interviews by application ID
    candidate_id number
    Filter interviews by candidate ID
    interviewer_user_id number
    Filter interviews by interviewer user ID
    date string
    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.
    include string
    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.
    page number
    Page number (default 1)
    size number
    Page size (default 20)
  • hires_list_job_boards

    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.

    Parameters (1)
    id required
    Job ID (numeric) or alias
  • hires_list_job_webhooks

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

    Parameters (1)
    id required
    Job ID (numeric) or alias
  • hires_list_jobs

    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.

    Parameters (11)
    company_id number
    Filter by company ID (required only for multi-company API keys)
    status string
    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_id number
    Filter jobs by department ID (from GET /taxonomy/departments)
    q string
    Search by job title or internal title (partial match)
    include string
    Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
    page number
    Page number (default 1)
    size number
    Page size (default 20)
    view string
    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_messages

    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.

    Parameters (7)
    from_account_id integer required
    ID of the mail account (from `GET /companies/mail-accounts` or `GET /users/{user_id}/mail-accounts`).
    status string
    Filter by message status: `scheduled` (pending send), `sent` (delivered), `all` (both). Default: `all`.
    date_from integer
    Start of period (unix timestamp, seconds). Filters on scheduled/sent time.
    date_to integer
    End of period (unix timestamp, seconds). Filters on scheduled/sent time.
    page integer
    Page number (1-based). Default: 1.
    size integer
    Number of items per page (1-100). Default: 20.
    view string
    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_notes

    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.

    Parameters (5)
    candidate_id required
    Candidate ID (numeric) or alias
    include string
    Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
    page number
    Page number
    size number
    Page size
    view string
    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_campaigns

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

    Parameters (3)
    company_id number
    Target company ID (optional if API key is scoped to one company)
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_origins

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

  • hires_list_question_types

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

  • hires_list_questions

    List paginated question catalog for the company.

    Parameters (3)
    company_id number
    Target company ID (uses default company when omitted)
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_rejection_reasons

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

    Parameters (1)
    company_id number
    Target company ID (uses default company when omitted)
  • hires_list_sources

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

    Parameters (1)
    company_id number
    Target 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_tags

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

    Parameters (1)
    company_id number
    Target company ID (uses default company when omitted)
  • hires_list_template_placeholders

    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.

    Parameters (6)
    company_id number
    Target company ID (uses default company when omitted)
    type string
    Filter by placeholder type
    is_notification number
    Include notification-specific system placeholders (0 or 1, default 0)
    q string
    Filter placeholders by label (case-insensitive substring match)
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_user_mail_accounts

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

    Parameters (3)
    id number required
    User ID
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_users

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

    Parameters (3)
    company_id number
    Company ID to list users for
    page number
    Page number (default 1)
    size number
    Page size (default 25)
  • hires_list_webhooks

    List webhook subscriptions configured at company scope.

    Parameters (1)
    id number required
    Company ID
  • hires_list_workflow_stages

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

    Parameters (3)
    company_id number
    Target company ID (uses default company when omitted)
    workflow_id number
    Filter stages by workflow ID (from hires_list_workflows)
    job_id number
    Filter stages by job ID (returns stages from the job's assigned workflow)
  • hires_list_workflows

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

    Parameters (1)
    company_id number
    Target company ID (uses default company when omitted)
  • hires_move_application

    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).

    Parameters (3)
    id number required
    Application ID.
    stage_id number required
    Target pipeline stage ID.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_patch_message

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

    Parameters (10)
    id integer required
    Message ID.
    to array
    Primary recipient email addresses.
    subject string
    Email subject line.
    body string
    Email body as HTML.
    from_account_id
    Sending mail account ID. If omitted, the API key owner's default mail account is used.
    cc array
    Carbon-copy recipient email addresses.
    bcc array
    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_thread boolean
    Whether to send the updated message as a new thread.
  • hires_prepare_template_placeholders

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

    Parameters (6)
    type string required
    Placeholder type (system, candidate_column, job_variable, questionnaire_link, scheduling_link)
    identifier string
    Placeholder identifier
    qas_profile_question_id number
    Profile question ID
    form_question_id number
    Form question ID
    system_column_title string
    System column title
    job_variable_id number
    Job variable ID
  • hires_publish_to_job_board

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

    Parameters (2)
    id required
    Job ID (numeric) or alias
    boards array
    Array of board identifiers to activate (e.g. ['indeed', 'linkedin'])
  • hires_reject_application

    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.

    Parameters (4)
    id number required
    Application ID.
    rejection_reason_id number
    Rejection reason ID from GET /taxonomy/rejection-reasons.
    suppress_notification boolean
    Set to true to skip sending the rejection email to the candidate.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_remove_candidate_tag

    Remove a specific tag from a candidate.

    Parameters (2)
    id required
    Candidate ID (integer) or alias (string).
    tag string required
    The tag string to remove.
  • hires_remove_from_job_board

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

    Parameters (2)
    id required
    Job ID (numeric) or alias
    boards array
    Array of board identifiers to deactivate (e.g. ['indeed', 'linkedin'])
  • hires_restore_company

    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.

    Parameters (1)
    id number required
    Company ID
  • hires_send_candidate_message

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

    Parameters (11)
    id required
    Candidate ID (integer) or alias (string).
    to array required
    Primary recipient email addresses.
    subject string required
    Email subject line.
    body string required
    Email body as HTML.
    from_account_id
    Sending mail account ID. If omitted, uses the API key owner's default mail account.
    cc array
    Carbon-copy recipient email addresses.
    bcc array
    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_thread boolean
    Send as a new email thread instead of replying in an existing one.
  • hires_set_job_status

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

    Parameters (3)
    id required
    Job ID (numeric) or alias
    status string required
    New job status (e.g. Draft, Public, Archived). See GET /taxonomy/statuses.
    include string
    Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
  • hires_submit_career_application

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

    Parameters (10)
    company_slug string required
    Company slug identifying the career site
    job_id number required
    Job ID to apply to
    first_name string required
    Applicant first name
    last_name string required
    Applicant last name
    email string 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_feedback

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

    Parameters (5)
    description string required
    Description of the issue or feedback (max 2000 chars)
    endpoint string
    The API endpoint this feedback relates to, e.g. /v2/candidates
    issue_type string
    Category of the issue
    suggested_improvement string
    Suggested solution or improvement (max 2000 chars)
    context object
    Arbitrary context object (max 4KB JSON)
  • hires_transfer_application

    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.

    Parameters (4)
    id number required
    Application ID to transfer.
    job_id number required
    Target job ID to transfer the application to.
    stage_id number
    Pipeline stage ID on the target job. If omitted, defaults to the first stage.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_unreject_application

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

    Parameters (2)
    id number required
    Application ID.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_update_application

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

    Parameters (5)
    id number required
    Application ID.
    stage_id number
    Move application to this pipeline stage.
    is_disqualified boolean
    Set to true to disqualify the candidate on this application.
    cv object
    Replace or attach a CV.
    include string
    Comma-separated relations to embed: candidate, cv.text, job.
  • hires_update_candidate

    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.

    Parameters (13)
    id required
    Candidate ID (integer) or alias (string).
    first_name string
    Candidate first name.
    last_name string
    Candidate last name.
    email string
    Candidate email address.
    phone string
    Candidate phone number.
    profile object
    Key-value map of profile field answers. Keys can be question text or question_id.
    job_id number
    Job ID to create a new application for this candidate.
    stage_id number
    Pipeline stage ID for the application. Requires job_id.
    city string
    Candidate city for location/timezone resolution.
    state string
    Candidate state or region.
    country string
    Candidate country name or ISO code.
    timezone string
    IANA timezone (e.g. 'America/Los_Angeles'). Auto-resolved from city/country if omitted.
    resume_text string
    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_company

    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.

    Parameters (9)
    id number required
    Company ID
    name string
    Company name
    website string
    Company website URL
    url string
    Company profile URL
    company_owner_email string
    Company owner email address
    company_owner_name string
    Company owner full name
    company_owner_phone string
    Company owner phone number
    is_staffing_agency boolean
    Whether this company is a staffing agency
    logo object
    Company logo file
  • hires_update_email_template

    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.

    Parameters (4)
    id number required
    Email template ID
    name string
    Template name
    subject string
    Email subject line (supports placeholders)
    body string
    Email body HTML (supports placeholders)
  • hires_update_form

    Update form name and question composition.

    Parameters (3)
    id number required
    Form ID.
    name string required
    Form name.
    questions array
    Array of question IDs to attach to this form.
  • hires_update_form_question

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

    Parameters (3)
    form_id number required
    Form ID.
    question_id number required
    Question ID.
    status string required
    Question visibility on this form: required, optional, or hidden.
  • hires_update_job

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

    Parameters (29)
    id required
    Job ID (numeric) or alias
    form_id number
    Application form ID to assign to this job.
    status string
    Job status (e.g. Draft, Public). See GET /taxonomy/statuses.
    title string
    Public job title.
    internal_title string
    Internal-only title visible to the hiring team.
    internal_job_id string
    External reference ID from your ATS or HR system.
    description string
    Job description (HTML allowed).
    resume_field_status string
    Resume field behavior on the application form.
    location_city string
    Job city.
    location_country string
    Job country.
    location_state string
    Job state or region.
    location_street_address string
    Street address.
    location_full_address string
    Full formatted address.
    location_postal_code string
    Postal or ZIP code.
    salary_min number
    Minimum salary.
    salary_max number
    Maximum salary.
    salary_currency string
    Salary currency code (e.g. USD, EUR).
    salary_period string
    Salary period.
    is_remote boolean
    Whether this is a remote position.
    employment_type_id number
    Employment type ID from GET /taxonomy/employment-types.
    department_id number
    Department ID from GET /taxonomy/departments.
    category_id number
    Job category ID from GET /taxonomy/categories.
    education_level_id number
    Education level ID from GET /taxonomy/education-levels.
    experience_level_id number
    Experience level ID from GET /taxonomy/experience-levels.
    workflow_id number
    Workflow ID to assign to this job.
    parent_job_id number
    Canonical parent job ID. If provided, the job becomes a satellite job.
    knockout_questions array
    Boolean knockout questions added to the application form.
    ai_scoring_criteria array
    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.
    include string
    Comma-separated related resources to embed: workflow, hiring_team, pipeline_stages
  • hires_update_message

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

    Parameters (10)
    id integer required
    Message ID.
    to array required
    Primary recipient email addresses.
    subject string required
    Email subject line.
    body string required
    Email body as HTML.
    from_account_id
    Sending mail account ID. If omitted, the API key owner's default mail account is used.
    cc array
    Carbon-copy recipient email addresses.
    bcc array
    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_thread boolean
    Whether to send the updated message as a new thread.
  • hires_update_note

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

    Parameters (4)
    id number required
    Note ID
    body string
    Note content. Supports HTML.
    visibility string
    Visibility: 'all' (default) or 'private'
    include string
    Include related resources: 'user' for author details, 'candidate' for full candidate payload with url_backoffice.
  • hires_update_notification_message

    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.

    Parameters (4)
    id integer required
    Notification email message ID.
    subject string required
    Email subject line.
    body string required
    Email body as HTML.
    scheduled_at
    Unix timestamp (seconds) to reschedule send time. If omitted, the existing schedule is preserved.
  • hires_update_nurture_campaign

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

    Parameters (11)
    id number required
    Nurture campaign ID
    title string required
    Campaign name
    workflow_id number
    Workflow ID this campaign is associated with
    stage_id number
    Pipeline stage ID that triggers the campaign
    delay_time number
    Delay in minutes before the first step
    relative_days number
    Number of days offset for scheduling
    relative_time number
    Time of day for scheduled sends
    timezone string
    Timezone for scheduled sends, e.g. "America/New_York"
    send_to_all boolean
    Whether to send to all candidates or only new ones
    response_move_to_stage_id number
    Stage ID to move candidates to when they respond
    steps array required
    All steps -- mark removed steps with is_deleted=true
  • hires_update_question

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

    Parameters (4)
    id number required
    Question ID
    text string required
    Question text
    type string required
    Question type (from hires_list_question_types)
    options array
    Answer options (for select/multiselect question types)
  • hires_upload_application_attachment

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

    Parameters (2)
    id number required
    Application ID.
    file object required
    File to upload.
  • hires_upload_attachment

    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}`.

    Parameters (4)
    category string 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`.
    file object required
    File payload.
  • hires_upload_candidate_file

    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.

    Parameters (2)
    id required
    Candidate ID (integer) or alias (string).
    file object required
    File to upload (base64 payload).

131 tools

Loading tools…

Tools list temporarily unavailable.

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_application
  • hires_disqualify_candidate
  • hires_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.

We use cookies to offer you our service. By continuing to use this site, you consent to our use of cookies as described in our policy