Set up the 100Hires MCP server in 3 steps

The MCP server is published to npm as @100hires/mcp-server. Setup takes one terminal command for Claude Code, or one config block for Cursor, Windsurf, and VS Code Copilot.

Step 1 - Generate an API key

Sign up for a free trial, confirm your email, and open Settings > Integrations > API in your 100Hires account. Click Generate API key. The key inherits your user permissions, so anything you cannot do in the UI, the MCP server cannot do either. No sales call, no enterprise tier.

Step 2 - Add the MCP server to your AI client

Pick the install snippet for your tool. The server runs locally via npx, so there is no separate process to keep alive.

# Claude Code - one command
claude mcp add 100hires \
  -e API_KEY=your-api-key \
  -- npx -y @100hires/mcp-server
// Cursor or Windsurf - Settings > MCP
{
  "mcpServers": {
    "100hires": {
      "command": "npx",
      "args": ["-y", "@100hires/mcp-server"],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}
// VS Code with Copilot - .vscode/mcp.json
{
  "servers": {
    "100hires": {
      "command": "npx",
      "args": ["-y", "@100hires/mcp-server"],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}

Step 3 - Ask in plain English

Type a prompt in Claude Code, Cursor, Windsurf, or VS Code Copilot and let the AI pick the right tool from the 130 available. The first call to a tool asks for your approval; after that you can grant always-allow per tool, or keep approval-on-each-call for destructive ones.

Run YOUR ATS with natural language - 5 prompts recruiters actually use

Recruiters spend hours on tasks that are pure pattern: filter candidates by AI score, draft a follow-up email, move 50 applicants out of "new" into "phone screen". The 100Hires MCP server turns those patterns into one-line prompts inside Claude Code, Cursor, or ChatGPT.

Below are five prompts that map to real workflows our team runs against the 100Hires API. Each one corresponds to one or more of the 130 MCP tools the server exposes.

  1. "Show me the top 10 candidates for the Senior Engineer role by AI score, in JSON."
    Maps to hires_list_applications with filters by job and AI score.
  2. "Move every candidate below AI score 40 to rejected, with reason 'AI score below threshold'."
    Maps to hires_batch_reject_applications - a batch op that handles hundreds in one call.
  3. "For candidate Lydia Martinez, post a note: 'Follow up next Tuesday after their portfolio review.'"
    Maps to hires_create_note.
  4. "Schedule a follow-up email to all candidates stuck in 'phone screen' for more than 5 days. Use template 'gentle nudge'."
    Maps to hires_batch_create_messages + hires_list_email_templates.
  5. "Pull every interview from the last 30 days, summarize what each candidate said about salary, and add it to their notes."
    Chains hires_list_interviews + hires_create_note.

"I've used Claude to vibe code some automations with ATS API, Google Apps Script and Slack. Eg when a candidate books a call on my calendar > updates ATS stage > after call it pulls the transcript > summarises through Claude API > then adds to their profile."

- Recruiter on r/recruiting (2026-04, thread)

130 MCP tools across 17 domains

The MCP server exposes the entire 100Hires API v2 surface (87 REST endpoints) as 130 typed MCP tools, grouped into 17 domains. Every part of your ATS - candidates, jobs, applications, interviews, messages, forms, nurture campaigns, webhooks - is callable from your AI assistant with full schema validation.

DomainToolsWhat you can do
Candidates18Search, create, update, tag, batch-tag, attach files, view timelines, send messages
Applications18Move stages, advance, reject, transfer, get AI score, batch-move, batch-reject, schedule interviews
Jobs17Create, update, set status, publish to job boards (LinkedIn, Indeed + 11 more), batch publish, manage hiring teams, register webhooks
Messages & Templates17Schedule emails, batch up to 100 in one call, manage templates, run nurture campaigns
Companies & Webhooks11Register webhooks at company OR per-job level, manage multi-tenant agency setups
Reference & Taxonomy23Sources, rejection reasons, statuses, departments, workflow stages, question types, education levels, billing
Forms, Notes, Interviews, Users, Career Site, Attachments, Feedback26Application forms, candidate notes, interview lookup, user management, public career site endpoints, file attachments, structured feedback

Full tool list with input schemas: github.com/100Hires/mcp-server.

Open source. MIT licensed. Audit it yourself.

The 100Hires MCP server lives at github.com/100Hires/mcp-server under the MIT license. Anyone can read the code, file issues, send pull requests, or fork it. The server is built on @modelcontextprotocol/sdk, the official SDK from Anthropic.

If you want to host it yourself, run it from a local clone instead of npm. If you want a custom tool the standard server does not ship, fork the repo and ship your own variant - the same API key works.

At a glance: 130 tools across 17 domains · MIT license · TypeScript · npm package @100hires/mcp-server (latest 1.0.4) · published April 2026 · built on @modelcontextprotocol/sdk by Anthropic.

Read the README · OpenAPI spec · View on npm

Why MCP, when you already have a REST API?

Fair question. AI assistants in hosted environments (ChatGPT, Claude.ai web) cannot make outbound HTTP calls themselves. Coding agents (Claude Code, Cursor, Windsurf, Copilot) can write a script that calls a REST API, but you would be hand-rolling the glue every time. MCP standardizes the tool surface either way: one protocol the AI client speaks, and a small local server that maps it to the 100Hires API.

Without an MCP server you would write that glue yourself: a script that takes an LLM tool-call payload, hits the 100Hires REST endpoint, validates the response with a hand-written schema, and loops it back. With the MCP server, the AI client discovers the 130 available tools at startup and dispatches them with full type checking. You skip the glue code.

A second reason is permissions. The MCP server runs locally and inherits your API key's scope. The AI client sees the tool list, not your API key. If you grant Claude Code access to the hires_reject_application tool, you are scoping that one verb, not handing over the keys to your ATS.

The third reason is composition. A real workflow looks like "find the top 10 candidates for the role, summarize each resume, draft a follow-up email, schedule it for tomorrow morning". That is five different REST endpoints in sequence. With MCP the AI plans the chain itself; with raw REST you orchestrate it.

Honest caveat: if your workflow is one fixed REST call once a day, an MCP server is overkill. Use the API directly. The MCP server pays off when the workflow is multi-step, exploratory, or natural-language driven.

How 100Hires compares to a typical ATS on the developer surface

How 100Hires runs its own hiring on this API

We dogfood. The 100Hires hiring team, sales team, and founder use the same API and MCP server you do, every day. Below are five workflows we run from Claude Code in production. Every one of them is a use case the platform supports out of the box.

  • Candidate assessment. Pull a candidate's profile, applications, and evaluation forms; cross-check against company employees via Apollo; flag failed-hire patterns; output a hire/reject recommendation. Tools: hires_get_candidate, hires_list_applications, hires_list_application_evaluations, hires_create_note.
  • Sales pipeline audit. List demoed leads stuck more than 7 days, check follow-up cadence, draft AE catch-up tasks. Tools: hires_list_interviews, hires_list_candidate_messages, hires_create_note.
  • Customer onboarding health-check. For every paid customer in the "Bought job" list, verify they completed verification, scheduled an onboarding call, and got a 30-day check-in. Tools: hires_list_applications, hires_list_interviews, hires_get_candidate.
  • Cold outreach lead import. Bulk-import enriched leads from a competitor career-page scrape; assign to a sequenced campaign. Tools: hires_create_candidate, hires_batch_create_messages, hires_create_job, hires_add_hiring_team_member.
  • Email triage by CRM lookup. When a Gmail thread arrives, look up the sender in 100Hires by email and route based on lifecycle stage (lead, demoed, paid, churned). Tool: hires_list_candidates (search by email).

Security, scoping, and data privacy

The MCP server runs on your machine or your server. The API key is stored in the MCP server environment and sent only to the 100Hires API on each call - it is never passed to the AI client. The AI client sees the 130 tool definitions and the tool responses, not the key.

The API key is scoped to your user. If your role in 100Hires cannot delete a job, the MCP server cannot delete a job through your key either. Rotate or revoke from Settings > Integrations > API at any time.

Candidate data is only sent to the AI when you call a tool that returns it. There is no background sync and no telemetry to a third party. If you ask Claude "show me the top 10 candidates for Job X", the names, resumes, and AI scores for those 10 candidates flow into Claude's context for that prompt. If GDPR or your data-protection policy requires anonymization before LLM processing, do that in your prompt or in a wrapper script. The server hands the AI exactly what the API returned.

The server source code is MIT-licensed and on GitHub. Audit it yourself, run it from a fork, or vendor it into your own infrastructure.

Honest limitation: the MCP server does not currently ship a hosted or managed mode. You run it locally or in your own infra. We do not have HIPAA or SOC 2 attestation specifically for the MCP server today (the 100Hires platform itself follows our standard security posture). If you need a compliance-graded managed deployment, book a call.

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