Skip to main content
Glama
HireLayer

HireLayer MCP server

HireLayer MCP Server

Resume parsing, candidate matching and candidate ranking for AI agents.

The official Model Context Protocol server for HireLayer. Parse resumes and CVs, turn job descriptions into criteria, then score and rank candidates from Claude, Cursor, VS Code, Codex or any MCP client.

npm version CI License: MIT MCP

Install in Cursor Install in VS Code Install in VS Code Insiders Add to LM Studio

"Screen these 3 resumes against the Senior React job and tell me who to interview."

Your assistant parses each CV, extracts the job criteria, scores every candidate criterion by criterion and explains the shortlist.

Contents

Related MCP server: matchcv-mcp

What you can do

  • Parse resumes and CVs. Turn PDF, Word, image and other files into structured JSON: contact details, work experience, education, languages, skills and the full text. Scanned resumes go through OCR, and the resume language is detected.

  • Turn a job description into criteria. Get weighted, explained matching criteria, with mandatory requirements flagged.

  • Match candidates to jobs. Score a resume against a job from 0 to 1, with an explanation for each criterion.

  • Rank candidates. Order up to 10 candidates for the same job in one call, with a score and a rationale for each.

  • Normalize skills. Map free-text skills in French or English to a skills taxonomy with stable IDs.

Use it to screen applicants in a chat, build a recruiting agent, enrich an ATS, or prototype HR tech features without writing integration code.

Quick start

  1. Get a free API key. Sign up at hirelayer.co, with no card required, and copy your key from Dashboard → API keys. The free plan includes 50 credits a month.

  2. Add the server to your client. Click a one-click install button above, or copy a config from the next section.

  3. Ask your assistant. For example: "Parse ~/Downloads/resume.pdf and summarize the candidate."

To try it without your own data, use the sample job and resumes in examples/. The repository ships a .mcp.json: clone it, export HIRELAYER_API_KEY, open the folder in Claude Code and it offers to enable the server.

Requires Node.js 20 or later, because the server runs with npx.

Install in your MCP client

Replace your-api-key with your HireLayer API key in each config below.

claude mcp add hirelayer --env HIRELAYER_API_KEY=your-api-key -- npx -y hirelayer-mcp

Open Settings → Developer → Edit Config and add the server to claude_desktop_config.json:

{
  "mcpServers": {
    "hirelayer": {
      "command": "npx",
      "args": ["-y", "hirelayer-mcp"],
      "env": { "HIRELAYER_API_KEY": "your-api-key" }
    }
  }
}

Restart Claude Desktop.

Click Install in Cursor above, or add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "hirelayer": {
      "command": "npx",
      "args": ["-y", "hirelayer-mcp"],
      "env": { "HIRELAYER_API_KEY": "your-api-key" }
    }
  }
}

Click Install in VS Code above. VS Code asks for your API key and stores it securely. To configure it by hand, add this to .vscode/mcp.json:

{
  "inputs": [
    { "type": "promptString", "id": "hirelayer_api_key", "description": "HireLayer API key", "password": true }
  ],
  "servers": {
    "hirelayer": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "hirelayer-mcp"],
      "env": { "HIRELAYER_API_KEY": "${input:hirelayer_api_key}" }
    }
  }
}

Add this to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "hirelayer": {
      "command": "npx",
      "args": ["-y", "hirelayer-mcp"],
      "env": { "HIRELAYER_API_KEY": "your-api-key" }
    }
  }
}
codex mcp add hirelayer --env HIRELAYER_API_KEY=your-api-key -- npx -y hirelayer-mcp
gemini mcp add -e HIRELAYER_API_KEY=your-api-key hirelayer npx -y hirelayer-mcp

Any client that runs stdio MCP servers works with this command and environment variable:

  • Command: npx -y hirelayer-mcp

  • Environment: HIRELAYER_API_KEY=your-api-key

Cline users can also ask Cline to install the server: llms-install.md has the steps.

docker build -t hirelayer-mcp .
docker run -i --rm -e HIRELAYER_API_KEY=your-api-key hirelayer-mcp

In Docker, parse_resume only reads files that you mount into the container. Otherwise, pass file_url.

Tools

Tool

What it does

Typical input

parse_resume

Parses a resume or CV file into structured JSON: contact details, experience, education, languages, skills and the full text

A local file_path or a public file_url. Accepts PDF, DOC, DOCX, ODT, RTF, TXT, PPT, PPTX, ODP, XLS, JPG, PNG or BMP files under 4.5 MB.

extract_job_criteria

Turns a job description into weighted criteria: a weight from 1 to 3, a mandatory flag and a rationale for each

Job description text

match_candidate

Scores one candidate against a job from 0 to 1, with a summary and a status and explanation for each criterion

Job text, resume text and criteria

rank_candidates

Ranks up to 10 candidates for one job, with a score and a rationale for each

Job text and up to 10 resume texts

resolve_skills

Maps free-text skills in French or English to taxonomy skills, with their families and domains

Free text, from one skill to a whole skills section

All tools only read and analyse data. They never change anything in your systems.

The server also ships prompts that clients show as ready-made commands:

Prompt

What it does

screen_candidates

Runs the full screening workflow (criteria, parsing, matching) and writes a shortlist

summarize_resume

Parses one resume and writes a recruiter summary

normalize_skills

Normalizes a skills section and groups it by domain

How screening works

flowchart LR
    J[Job description] --> C[extract_job_criteria]
    R[Resume files] --> P[parse_resume]
    C --> M[match_candidate]
    P --> M
    P --> K[rank_candidates]
    J --> K
    M --> S[Shortlist with explanations]
    K --> S
{
  "score": 0.89,
  "summary": "Profil très aligné : React, TypeScript et l’expérience demandée sont démontrés. Le niveau d’anglais reste à confirmer.",
  "evaluated_criteria": [
    {
      "id": "crit_1",
      "label": "Maîtrise de React",
      "weight": 3,
      "is_mandatory": true,
      "match_status": "ideal",
      "match_explanation": "Le CV décrit une équipe React dirigée depuis 2022 sur une plateforme en production."
    }
  ]
}

Criteria labels, rationales, summaries and explanations are written in French. Your assistant translates them when it answers you in another language.

Example prompts

Recruiters and hiring managers

  • "Parse ~/Downloads/jane-doe.pdf and summarize her experience in five bullet points."

  • "Here is our job description for a Senior Data Engineer. Extract the criteria, then tell me which ones are must-haves."

  • "Score the resumes in ~/candidates/ against this job and give me a shortlist table with scores and main gaps."

  • "Rank these 8 candidates for the Account Executive role and explain why the top 3 stand out."

  • "Does this candidate meet every mandatory criterion? If not, which ones are missing?"

Developers and HR tech teams

  • "Parse this resume and map the result to our ATS candidate schema: { name, email, current_title, skills[] }."

  • "Normalize this skills section: Pack Office (Word, Excel), React.js, anglais courant, gestion de projet."

  • "Write a TypeScript function that sends a resume to the HireLayer API, using the JSON this tool returned as the expected type."

Try it now with the sample files

  • "Screen the resumes in examples/ against examples/job-senior-react-developer.md."

Pricing and credits

Each successful tool call costs 1 HireLayer credit. A rank_candidates call costs 1 credit whatever the number of candidates. Failed calls are not charged.

Plan

Credits

Price

Free

50 a month

Free, no card required

Paid plans

More credits and higher limits

See hirelayer.co/#pricing

Data and privacy

  • The server runs on your machine and calls the HireLayer API over HTTPS with your API key. It has no telemetry.

  • parse_resume reads only the file you name. By default HireLayer stores the original file and returns a link to it in info_resume.url. Set do_not_store_data: true in a call so the file is not stored.

  • See the privacy policy and the security policy.

Resumes contain personal data. Use the tools in line with your hiring process and the rules that apply to you, such as GDPR. Scores support human decisions; they don't replace them.

Configuration

Variable

Required

Default

Description

HIRELAYER_API_KEY

Yes

Your HireLayer API key

HIRELAYER_BASE_URL

No

https://hirelayer.co

API base URL, for testing

Troubleshooting

Symptom

Fix

HIRELAYER_API_KEY is not set

Add the env block with your key to the client config, then restart the client.

HireLayer API returned 401

The key is wrong or revoked. Copy it again from Dashboard → API keys.

HireLayer API returned 403

You have used your monthly credits. Wait for the reset or upgrade your plan.

Parsing seems slow

Parsing usually takes about 35 seconds, and longer for scans that need OCR. The server sends progress updates so clients don't time out.

npx not found or an old Node.js

Install Node.js 20 or later from nodejs.org.

The file is not found

Use an absolute path, for example /Users/me/Downloads/cv.pdf rather than ~/Downloads/cv.pdf.

To debug, run the server in the MCP Inspector:

HIRELAYER_API_KEY=your-api-key npx @modelcontextprotocol/inspector npx -y hirelayer-mcp

FAQ

Is HireLayer an ATS? No. HireLayer provides the AI building blocks of recruiting software: resume parsing, matching, ranking and skills. Use them on their own through MCP, or plug them into your ATS or HR tech product through the REST API.

Which language are the results in? The text that HireLayer writes (criteria labels and rationales, match summaries and explanations, ranking rationales) is in French; your assistant translates it when it answers in another language. Skills resolution returns French or English labels.

Which resume languages are supported? The parser detects the main language of each resume and returns it in info_resume.language.

Can I use the REST API directly? Yes. See the API reference, the OpenAPI spec and llms.txt for agents.

Is there a hosted remote server? A hosted server with one-click sign-in (OAuth) is on the way. For now, the server runs locally with npx.

Development

git clone https://github.com/hirelayer/hirelayer-mcp.git
cd hirelayer-mcp
npm install
npm test
HIRELAYER_API_KEY=your-api-key npx @modelcontextprotocol/inspector node dist/index.js

See CONTRIBUTING.md. Report bugs in GitHub issues and vulnerabilities as described in SECURITY.md.

License

MIT

Available Tools

5 tools
extract_job_criteriaExtract job criteriaA
Read-only
Inspect

Turn a job description (any language) into weighted matching criteria (matching_criteria[]), each with a weight from 1 to 3, a mandatory flag and a rationale. Feed the result to match_candidate. Costs 1 HireLayer credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_textYesFull job description.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true), so the description's job is to add operational context — and it does: the 1-credit cost, language-agnostic input, and the shape of the emitted criteria (weight 1-3, mandatory flag, rationale). That is meaningful disclosure beyond the annotations, though nothing is said about limits on size or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the transformation and output shape are front-loaded before the downstream hint and cost note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description compensates by naming the returned fields and their value ranges, plus the credit cost and the follow-up tool. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, so the schema already documents job_text fully. The description adds 'any language' as a semantic constraint on the input, which is a small but real addition — baseline 3 is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (extract) and resource (job criteria) with the transformation spelled out: job description text in, weighted matching_criteria[] out. It names the downstream consumer (match_candidate), so an agent can place it in the pipeline without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the downstream step explicitly ('Feed the result to match_candidate') and discloses the credit cost, which is real usage guidance. It stops short of saying when NOT to use it or how it differs from siblings like parse_resume, but the intended pipeline position is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

match_candidateMatch a candidate to a jobA
Read-only
Inspect

Score one candidate against a job: returns a score between 0 and 1 and an evaluation of each criterion. Use the criteria from extract_job_criteria and the resume text from parse_resume (info_resume.text). Costs 1 HireLayer credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_textYesJob description.
candidate_textYesResume as plain text.
matching_criteriaNoCriteria to evaluate, usually from extract_job_criteria.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint, so the description must add the operationally important facts, and it does: the cost ('Costs 1 HireLayer credit') and the return shape. Missing any note on rate limits or failure modes, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what the tool does and what it returns, followed by the sourcing/prerequisite and the credit cost. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the return value (a 0-1 score plus per-criterion evaluation), and it discloses the credit cost and upstream dependencies. Nothing essential for correct invocation is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by naming where matching_criteria originates (extract_job_criteria) and where candidate_text comes from (info_resume.text), which the schema does not state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Score one candidate against a job') and quantifies the output ('score between 0 and 1 and an evaluation of each criterion'). The singular 'one candidate' implicitly contrasts with the sibling rank_candidates, so the agent can distinguish scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to siblings: criteria come from extract_job_criteria and resume text from parse_resume (info_resume.text), which is real pipeline guidance. It lacks an explicit 'do not use for multiple candidates, use rank_candidates' exclusion, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_resumeParse a resumeA
Read-only
Inspect

Parse a resume (PDF, DOC, DOCX, ODT, PPT, PPTX, ODP, XLS, RTF, TXT, JPG, PNG or BMP, under 4.5 MB) into structured JSON: contact details, work experience, education, languages, skills and the full resume text in info_resume.text. Pass a local file_path or a public file_url. Costs 1 HireLayer credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_urlNoPublic URL of a resume file to download.
file_pathNoAbsolute path of a local resume file.
application_idNoYour own reference, echoed back in the result.
do_not_store_dataNotrue: HireLayer does not keep the file after parsing.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint; the description goes further by disclosing the credit cost, the file size limit, and the accepted formats. It still does not cover authentication requirements, failure behavior, or what happens to the uploaded file by default, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the purpose and output shape front-loaded, followed by the input modes and cost. The long format list is necessary information, not padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so by naming the structured fields and info_resume.text. Formats, size, cost and input modes are covered; error behavior and default storage semantics are the only notable omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented. The description reinforces the file_path-vs-file_url choice and names one output field, but adds no format or syntax detail for application_id or do_not_store_data beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (parse) and resource (resume) and enumerates the exact output: contact details, work experience, education, languages, skills, and full text in info_resume.text. No sibling tool overlaps with resume parsing, so the agent can distinguish it immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: accepts either a local file_path or a public file_url, lists supported formats, and states the 4.5 MB ceiling and 1-credit cost. It does not name exclusions or alternative tools, but the usage conditions are explicit enough to act on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_candidatesRank candidates for a jobA
Read-only
Inspect

Rank up to 10 candidates against the same job description, from their resume texts. Costs 1 HireLayer credit per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_textYesJob description.
candidatesYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description is consistent with them. It adds a genuinely useful behavioral fact beyond the annotations: a billing cost of 1 HireLayer credit per call, which affects how freely an agent should invoke it. It stops short of describing the ranking output or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the core operation and its cardinality limit front-loaded and the cost caveat second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the burden of explaining what comes back, and it says nothing about return shape (ordering, scores, per-candidate errors) or behavior when a candidate is malformed. The credit cost and batch limit are covered, but the return-value gap leaves the agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% and the schema's own descriptions are terse ('Job description.', 'Resume as plain text.'). The description clarifies that job_text is one shared job description and candidate_text is resume text, but adds no syntax, format, or ID-uniqueness detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (rank) and resource (candidates) plus the batch scope ('up to 10 candidates against the same job description, from their resume texts'). This implicitly separates it from the single-pair match_candidate, but no sibling is named, so the differentiation is inferred rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'up to 10' batch framing implies when this is preferable to match_candidate, and the credit cost hints at deliberate use, but there is no explicit when-to-use or when-not-to-use guidance relative to parse_resume, extract_job_criteria, or match_candidate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_skillsResolve skillsA
Read-only
Inspect

Map free-text skills in French or English (one skill, a compound string or a whole skills section) to skills of the HireLayer taxonomy, with their IDs. Costs 1 HireLayer credit.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesFree text containing one or more skills.
languageNoLanguage of the labels returned: fr (default) or en.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds a genuinely non-obvious behavioral trait beyond structured data: 'Costs 1 HireLayer credit,' which lets an agent reason about the price of calling this (and potentially batching). It still says nothing about behavior for unmatched or ambiguous skills.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with what the tool does, followed by the cost. Every clause earns its place; no filler or restatement of the name/title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries more of the return-value burden; it states IDs are returned but not the shape of the response (list, confidence, unmatched entries). With only two simple parameters and annotations covering safety, it is close to adequate, but the resolution result semantics remain underspecified for a paid taxonomy-mapping call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3: the schema already documents 'text' and the fr/en 'language' enum. The description adds the useful nuance that 'text' accepts anything from a single skill to a full section, but it does not clarify that the 'language' parameter controls the language of the returned labels rather than the input language, and it says nothing about output format beyond 'with their IDs.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (map/resolve) and resource (free-text skills) plus scope (French or English, single skill, compound string, or whole section) and the concrete output (HireLayer taxonomy skills with their IDs). This is clearly distinguishable from siblings like parse_resume and match_candidate, which do extraction and matching rather than taxonomy resolution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The input scope ('one skill, a compound string or a whole skills section') implies when the tool is applicable, but there is no explicit when-to-use guidance and no mention of alternatives or when-not to use it. An agent could reasonably wonder whether parse_resume or extract_job_criteria is the better first step, and the description does not resolve that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedextract_job_criteria
    • First observedmatch_candidate
    • First observedparse_resume
    • First observedrank_candidates
    • First observedresolve_skills

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation4/5

parse_resume and extract_job_criteria clearly handle different input types, and resolve_skills targets a distinct taxonomy-mapping task. match_candidate and rank_candidates overlap somewhat (both score resumes against a job), but the single-vs-batch distinction and descriptions make them distinguishable.

Naming Consistency5/5

All five tools follow a consistent verb_noun snake_case pattern (parse_resume, extract_job_criteria, match_candidate, rank_candidates, resolve_skills). No mixed conventions or vague verbs.

Tool Count5/5

Five tools is well-scoped for a resume-matching pipeline. Each tool represents a distinct, necessary stage and none feel redundant or bloated.

Completeness4/5

The pipeline covers the core workflow: parse resumes, extract criteria, resolve skills, then match and rank candidates, with a coherent data flow between tools. Minor gaps exist around persisting/retrieving results or job/candidate management, but the stated matching purpose is well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

  • # **RChilli MCP Hub** RChilli MCP Hub is a production-grade MCP server that exposes RChilli's full HR data intelligence platform as 17 AI-callable tools across 4 categories. Built on 15+ years of HR data intelligence, it is trusted by ATS vendors, HR technology platforms, staffing agencies, and enterprise recruiting teams worldwide. Every tool is read-only and returns a consistent, structured JSON response — no raw exceptions, no inconsistent formats. <br> --- <br> # **Tools — 17 Total** userkey and subuserid are injected automatically from your Bearer token — you never need to pass them manually. <br> --- <br> # **🔍 Resume & Job Description Parsing — 3 tools** <br> > ### **`extract_resume_data`** > > Extracts and converts resumes, CVs, and candidate documents into structured, searchable profiles with contact details, skills, experience, education, certifications, and taxonomy-enriched data for ATS, HCM, and AI recruiting workflows. When used on a careers page or application form, the same extraction call auto-fills every application field in under 10 seconds — documented to increase candidate conversion by up to 194%. Supports 40+ languages with English-normalized output for global intake, and runs in batch mode to process legacy databases or migration backlogs overnight at scale. Also supports resume reprocessing — re-running previously extracted resumes through the latest extraction logic and taxonomy version to bring older records up to current data quality, without requiring a new document from the candidate. Distinct from bulk import (first-time extraction of a new batch) and from talent data refresh (re-enrichment from a newer submitted resume). <br> > ### **`extract_resume_data_from_url`** > > Accepts a direct URL to a PDF, DOCX, or RTF file and returns the same normalized JSON profile as the Resume Data Extraction tool. Ideal for pipeline automation where resumes are stored in cloud storage, S3, or email attachments. Also supports the same auto-fill, multilingual, and batch-processing capabilities as the core extraction tool for URL-based intake sources. <br> > ### **`extract_job_data`** > > Extracts and converts job descriptions into structured hiring data including job title, required skills, preferred skills, responsibilities, experience, education, and taxonomy-normalized role requirements for recruitment automation and candidate matching. <br> --- <br> # **🧠 Skills & Job Taxonomy — 4 tools** <br> > ### **`lookup_skill`** > > Returns authoritative detail for a known skill including description, all aliases, related skills, proficiency levels, and O*NET/ESCO mappings. Use when you need the complete record rather than a ranked search. <br> > ### **`lookup_job_profile`** > > Returns authoritative detail for a known job profile including canonical title, SOC/O*NET code, job family, typical required and preferred skills, salary bands, and work context. <br> > ### **`autocomplete_skill`** > > Accepts a partial skill string (min 2 chars) and returns up to 10 ranked autocomplete suggestions with canonical names and categories. Prevents free-text entry errors and keeps skill data clean at point of entry. <br> > ### **`autocomplete_job_profile`** > > Accepts a partial job title string and returns ranked autocomplete suggestions with canonical titles and job families. Ensures job titles map to taxonomy profiles from the moment a recruiter starts typing. <br> --- <br> # **🛡️ Redaction, Documents & Utilities — 7 tools** <br> > ### **`redact_resume`** > > Redacts personally identifiable information from candidate profiles to support anonymized review, bias-aware screening, compliance workflows, and audit logs. Configurable redaction scope. Idempotent. <br> > ### **`reformat_resume_with_template`** > > RChilli's Resume Reformatting tool accepts any structured candidate profile and applies one of six branded templates (TM001–TM006) to produce a consistently formatted output document in PDF, DOCX, RTF, or HTML — ensuring every candidate is presented in a standardized, professional layout regardless of how their original resume was structured. Designed for staffing firms, recruitment agencies, and enterprise HR teams who need to control candidate presentation at scale, it eliminates manual reformatting effort and enforces brand consistency across all submissions. <br> > ### **`convert_document_format`** > > Accepts a document as base64 or URL and converts between PDF, DOCX, RTF, HTML, and plain text. Preserves formatting fidelity. Useful as a pre-processing step before data extraction on non-standard file types. <br> > ### **`tag_entities`** > > RChilli's Named Entity Recognition tool takes already-extracted HR text and annotates it by wrapping each recognized entity in a structured XML-style label inline — returning output such as `<job_title>Senior Data Engineer</job_title>`, `<skill>Python</skill>`, `<city>Austin</city>`, `<degree>Bachelor of Science</degree>`, and `<organization>Google</organization>` — covering 10+ HR-specific entity types including person name, state, country, date, and year. Unlike data extraction tools that produce separate field lists, tag_entities preserves the full original text structure with entities labeled in place, making the output immediately consumable by ATS field-mapping pipelines, candidate profile builders, and content annotation workflows without any offset calculation or post-processing. <br> > ### **`extract_contacts`** > > Identifies and structures names, emails, phone numbers, LinkedIn URLs, and addresses with field-level confidence scores from candidate records, emails, or documents. Safe for GDPR/CCPA workflows. <br> > ### **`geolocate`** > > Converts partial or informal location text into structured city, state, country, ISO codes, latitude, and longitude. Enables radius-based candidate and job search and supports workforce planning analytics. <br> > ### **`classify_job_zone`** > > RChilli's Job Zone Classification tool reads the job profile from a resume or job description and returns its O/*NET Job Zone — one of five standardized levels ranging from Zone 1 (little or no preparation required) through Zone 2 (some preparation), Zone 3 (medium preparation), Zone 4 (considerable preparation), to Zone 5 (extensive preparation required) — based on the education, experience, and training criteria defined by O/*NET. The returned Job Zone level enables downstream workflows such as candidate-to-role fit filtering, compensation benchmarking, over/under-qualification flagging, and job architecture standardization without any manual O/*NET lookup. <br> --- <br> # **🎯 Search & Matching — 3 tools** <br> > ### **`score_resume_against_jd`** > > Accepts one resume and one Job Description (no index required) and returns an overall match score, dimension scores, skill gap list, and natural-language explanation. Bias-controlled and audit-ready. <br> > ### **`find_matches_in_index`** > > Accepts a resume or Job Description as input and returns the top-N most similar documents from the indexed corpus ranked by semantic similarity. No index setup required for the input document. <br> > ### **`search_indexed_documents`** > > Accepts a query string and returns ranked document references from the tenant's pre-populated index. Supports Boolean and semantic search modes. Requires documents to be indexed before use.

  • Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.

  • CareerProof MCP gives AI agents direct access to a professional-grade career and workforce intelligence platform. Two namespaces: atlas_* for HR/TA teams (candidate evaluation, batch shortlisting, competency scoring, interview generation, JD analysis, custom eval frameworks, research reports) and ceevee_* for professionals (CV optimization, career positioning, salary intelligence, market reports). Backed by RAG knowledge from 50+ premium research sources (McKinsey, BCG, HBR, Gartner, WEF)

  • HR and recruiting: score a job description, or generate a structured role profile. No API key.

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to recommend jobs, parse candidate profiles, compute semantic skill match scores, and filter opportunities by location through standardized MCP tools.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP clients to analyze resumes for ATS compatibility, parse job descriptions, get optimization and roast-style critiques, and generate tailored resumes with shareable preview links.
    6
    55 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLM clients to analyse job postings, tailor resumes from an evidence-labelled profile, validate every claim against that profile, and track applications, all through deterministic MCP tools.
    7
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to interact with HR and talent backend services through a unified MCP interface, supporting resume parsing, job analysis, skill matching, and composite candidate evaluation tools.
    -