RChilli
Server Details
RChilli
RChilli MCP Hub is a production-grade Model Context Protocol (MCP) server that exposes RChilli’s HR data intelligence platform through AI-callable tools.
Built on 15+ years of HR data intelligence, RChilli supports ATS vendors, HR technology platforms, staffing agencies, and enterprise recruiting teams worldwide. The tools return consistent, structured JSON responses for recruiting, talent intelligence, skills, matching, compliance, and HR workflow use cases.
userkey and subuserid are injected automatically from the Bearer token and must not be passed manually.
Available Tools
analyze_hr_callTranscribes and analyzes HR or recruiting call recordings to extract speaker turns, sentiment, candidate intent, action items, skill mentions, and structured follow-up data for recruiting operations.
analyze_skill_adjacencyIdentifies related, adjacent, and transferable skills to support skill discovery, talent mobility, workforce planning, and candidate evaluation.
analyze_skill_gapCompares candidate or employee skills against a target job and returns present skills, missing skills, readiness score, and development areas for hiring, internal mobility, and workforce planning.
autocomplete_job_profileAccepts a partial job title and returns ranked autocomplete suggestions with canonical titles and job families. Ensures job titles map to standardized taxonomy profiles from the moment a recruiter starts typing.
autocomplete_skillAccepts a partial skill string and returns ranked autocomplete suggestions with canonical skill names and categories. Helps prevent free-text entry errors and keeps skill data clean.
classify_job_zoneReads the job profile from a resume or job description and returns its O*NET Job Zone, from Zone 1 through Zone 5, based on the education, experience, and training preparation required for the role.
convert_document_formatAccepts a document as base64 or URL and converts between PDF, DOCX, RTF, HTML, and plain text. Useful as a pre-processing step before extracting data from non-standard document formats.
detect_biasReviews job descriptions and hiring criteria for gendered language, age-coded terms, unnecessary credential inflation, cultural exclusion signals, and related compliance risks. Suggests neutral replacements.
detect_resume_suspicionReviews candidate profile data for possible inconsistencies, unusual claims, timeline conflicts, missing context, and other signals that require recruiter review.
extract_contactsIdentifies and structures names, emails, phone numbers, LinkedIn URLs, and addresses with field-level confidence scores from candidate records, emails, or documents.
extract_job_dataExtracts and converts job descriptions into structured hiring data including job title, required skills, preferred skills, responsibilities, experience, education, and taxonomy-normalized role requirements.
extract_resume_dataExtracts 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. Supports multilingual extraction, batch processing, resume auto-fill, and reprocessing of historical resumes.
extract_resume_data_from_urlAccepts a direct URL to a PDF, DOCX, or RTF file and returns the same normalized JSON profile as Resume Data Extraction. Ideal for resumes stored in cloud storage, S3, email attachments, or other URL-accessible sources.
find_matches_in_indexAccepts a resume or job description as input and returns the top matching documents from the indexed corpus, ranked by semantic similarity.
generate_interview_questionsCreates technical, behavioral, situational, and competency-based interview questions tailored to a role and candidate profile, including question type, competency, and expected answer signals.
generate_jdGenerates structured job descriptions with title, responsibilities, required skills, preferred skills, qualifications, tone alignment, language support, and inclusivity scoring from role inputs.
geolocateConverts partial or informal location text into structured city, state, country, ISO codes, latitude, and longitude. Supports radius-based candidate search and workforce planning.
index_documentIndexes a resume or job description in RChilli Search & Match so it can be searched, matched, updated, and reused across candidate matching, job matching, and similarity-search workflows.
lookup_job_profileReturns 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.
lookup_skillReturns authoritative detail for a known skill including description, aliases, related skills, proficiency levels, and O*NET or ESCO mappings.
map_job_to_skillsConverts job descriptions into granular skill maps with required and preferred skill clusters, proficiency signals, taxonomy tags, and downstream matching attributes.
match_end_to_endOrchestrates data extraction, indexing, taxonomy normalization, and matching to return ranked candidates or jobs with scores, explainable results, and an audit trail from a single call.
normalize_candidate_dataCleans and normalizes candidate records from multiple ATS or HR systems, resolves field conflicts, deduplicates records, and produces standardized candidate data with a field-level change log.
normalize_hr_data_with_lovMaps raw and inconsistent HR data values, including degrees, universities, certifications, job profiles, skills, and locations, to the closest configured List of Values entry with a standardized value and confidence score.
recommend_learning_pathBuilds structured learning paths with prerequisites, skill sequence, certifications, proficiency targets, and LMS alignment based on a person’s profile and target role.
redact_resumeRedacts configured personally identifiable information from candidate profiles to support anonymized review, bias-aware screening, compliance workflows, and audit logs.
reformat_resume_with_templateApplies one of the RChilli resume templates, TM001 through TM006, to a structured candidate profile and produces a consistently formatted PDF, DOCX, RTF, or HTML document.
score_resume_against_jdAccepts one resume and one job description and returns an overall match score, dimension scores, matched skills, skill gaps, and a natural-language explanation. No index is required.
screen_application_batchEvaluates a batch of candidates against job requirements and custom criteria, returning scores, insights, skill gaps, and recommended next actions for each candidate.
search_indexed_documentsAccepts a query string and returns ranked document references from the tenant’s indexed corpus. Supports Boolean and semantic search modes.
skill_mappingMaps raw skill text to standardized RChilli taxonomy skills, aliases, classifications, and related skill information.
tag_entitiesAnnotates extracted HR text by wrapping recognized entities in structured XML-style labels. Supported entities include job titles, skills, names, degrees, organizations, locations, countries, dates, and years.
- Status
- Healthy
- Uptime
- 9.2% over 74 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 33 tools
Most tools target recognizable distinct operations, but several cluster around the same purposes: analyze_skill_gap / analyze_skill_adjacency / recommend_learning_path all do skill-gap and path analysis, and map_job_to_skills / skill_mapping / extract_job_data / tag_entities all produce normalized skill or entity annotations from text. The matching family (score_resume_against_jd, screen_application_batch, match_end_to_end, find_matches_in_index, search_indexed_documents) is also hard to choose between without reading each description carefully, though the descriptions do help.
The set is overwhelmingly consistent snake_case verb_noun (extract_resume_data, generate_jd, detect_bias, normalize_candidate_data). Minor deviations exist — skill_mapping is noun-only, geolocate is a bare verb, and analyze_skill_adjacency vs analyze_skill_gap are near-identical patterns for near-identical functions.
33 tools is heavy for what is essentially one domain, and the surface includes many overlapping entry points (five matching-related tools, four extraction/normalization tools). It feels like a concatenation of several RChilli products rather than a scoped, curated server.
Coverage is broad across the hiring lifecycle: extraction, normalization, taxonomy lookup/autocomplete, indexing and matching, generation, bias/fraud detection, redaction, reformatting, and profile update. However, there are no index-management operations (delete/unindex/update index metrics) and no delete/lifecycle tool for candidate records, leaving some dead ends for agents managing the indexed corpus.
Available Tools
33 toolsanalyze_hr_callHR Call Analyzer AgentBRead-onlyIdempotentInspect
Analyze a plain-text HR call transcript and return HR call insights.
Args: transcript: Plain-text conversation between HR and candidate. ctx: Optional MCP request context.
| Name | Required | Description | Default |
|---|---|---|---|
| transcript | No | Transcribes and analyzes HR or recruiting call recordings to extract speaker turns, sentiment, candidate intent, action items, skill mentions, and structured follow-up data for recruiting operations.Audio files and call recordings are not supported. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, openWorld, so safety is covered. The description adds nothing behavioral beyond that — 'return HR call insights' is vague where the schema description enumerates speaker turns, sentiment, candidate intent, action items, and skill mentions. It also references a 'ctx' parameter that does not exist in the schema, which can mislead an agent about the call signature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the opening empty quote artifact and the 'Args:' block that documents a nonexistent parameter are wasted and confusing content. The useful sentence is front-loaded, which is a plus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich annotations, a 100%-covered single-parameter schema, and an output schema that carries the return-value detail, the description does not need to explain outputs or safety. What it must convey — that this analyzes a plain-text HR call transcript — is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the description repeats the transcript meaning verbatim ('Plain-text conversation between HR and candidate') without adding format, size, or quality expectations. Worse, the documented 'ctx: Optional MCP request context' parameter is absent from the schema, so the description introduces a phantom parameter rather than clarifying the real one.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Analyze a plain-text HR call transcript') and a return intent ('HR call insights'). No sibling tool covers call analysis, so it is trivially distinguishable from the recruiting/skill-mapping siblings, though it never explicitly says so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'plain-text' phrasing and the schema note that 'Audio files and call recordings are not supported' imply a usage boundary, but the description itself names no alternatives and gives no when-to-use or when-not-to-use guidance relative to siblings like extract_resume_data or detect_bias.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_skill_adjacencySkill Adjacency Graph AgentBRead-onlyIdempotentInspect
RChilli's Skill Adjacency Graph Agent traverses a structured skill relationship graph to answer talent intelligence questions, including related skills, skill-gap analysis between a candidate and target role, near-fit candidate identification, and learning-path recommendations.
Args: query: Skill-related user question or analysis request. resume_data: Optional plain-text candidate resume. job_description_data: Optional plain-text job description. resume_base64: Optional Base64-encoded resume text. job_description_base64: Optional Base64-encoded job description text. ctx: Optional MCP request context.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Required skill-related question, for example: "What skills are adjacent to Python?" or "What skills is this candidate missing for a Data Engineer role?" | |
| resume_data | No | Optional plain-text candidate resume. Do not provide this together with resume_base64. | |
| resume_base64 | No | Optional Base64-encoded resume text. Use this instead of resume_data. | |
| job_description_data | No | Optional plain-text job description. Do not provide this together with job_description_base64. | |
| job_description_base64 | No | Optional Base64-encoded job description text. Use this instead of job_description_data. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=true, and an output schema exists, so the disclosure burden is light. The description adds only that the traversal runs over a structured skill graph; it says nothing about latency, cost, or how large graphs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded, but the Args block duplicates the input schema verbatim, which is wasted space given full schema coverage. It is not bloated, but roughly half the content earns nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, a full-coverage schema, and an output schema in place, the description only needs to establish purpose and use cases, which it does. The lack of sibling differentiation is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 Args block largely restates schema fields and adds no format or semantics beyond it; it does not even reinforce the plain-text vs base64 mutual exclusivity that the schema defines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('traverses a structured skill relationship graph') and enumerates concrete outputs (related skills, gap analysis, near-fit candidates, learning paths). It is clear what the tool does, but it does not distinguish itself from siblings that do overlapping work, notably analyze_skill_gap and recommend_learning_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The enumerated question types imply when to use it, but there is no explicit when-not guidance and no routing to the overlapping siblings (analyze_skill_gap, recommend_learning_path). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_skill_gapSkill Gap AnalysisARead-onlyIdempotentInspect
Compares candidate or employee skills against a target job and returns present skills, missing skills, readiness score, and development areas for hiring, internal mobility, and workforce planning.
| Name | Required | Description | Default |
|---|---|---|---|
| resume_data | No | Plain-text resume of the person whose skills are being assessed. Required. | |
| job_description_data | No | Plain-text job description of the target role to measure the gap against. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. The description's disclosure of returned fields is useful but largely duplicated by the output schema. It adds no cost, latency, or input-quality caveats (e.g., that plain-text resume/JD are required for meaningful results).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the comparison, the outputs, and the use cases with no filler. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and annotations covering safety, the description only needs to establish purpose and routing. Purpose is complete; routing to the right sibling is the one missing element for this dense HR toolset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, both documented as 'Plain-text ... Required.' The description adds no format, size, or quality guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('compares candidate or employee skills against a target job') and enumerates the outputs (present skills, missing skills, readiness score, development areas). It is clear on its own, but it does not name the closest sibling, score_resume_against_jd, which performs an overlapping resume-vs-JD comparison, so an agent cannot distinguish them from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists three business contexts (hiring, internal mobility, workforce planning), which implies when to use it. However, there is no explicit when-not guidance and no mention of alternatives, which is a real gap given score_resume_against_jd, match_end_to_end, and analyze_skill_adjacency all sit in adjacent territory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autocomplete_job_profileJob Profile AutocompleteARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Locale code. | |
| keyword | No | Partial job-title text / prefix to autocomplete (all-lowercase param name 'keyword'), e.g. 'soft', 'data sci'. | |
| language | No | Language code. | |
| customvalues | No | Custom taxonomy values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool-specific result payload. The exact fields depend on which tool produced this result. |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive behavior, so the safety profile is fully covered. The description adds that results are ranked and canonicalized, which is useful, but it says nothing about result limits, ranking logic, or behavior on empty/no-match input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the core behavior front-loaded and no wasted clauses. The second sentence is slightly promotional ('from the moment a recruiter starts typing'), but it still conveys the intended usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, full parameter documentation, and rich safety annotations, the description only needs to frame purpose and return kind, which it does. Minor gaps around result count and no-match behavior are acceptable for a simple read-only autocomplete endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the keyword parameter is documented with concrete examples ('soft', 'data sci'), so the schema does the heavy lifting. The description only echoes the 'partial job title string' notion and adds nothing about locale, language, or customvalues.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: accepts a partial job title and returns ranked autocomplete suggestions with canonical titles and job families. The job-title domain implicitly separates it from autocomplete_skill and lookup_job_profile, but no sibling is named explicitly, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from the moment a recruiter starts typing' implies an interactive typeahead use case, but there is no explicit when-to-use or when-to-prefer alternative guidance (e.g., versus lookup_job_profile for exact lookups or autocomplete_skill for skills).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autocomplete_skillSkill AutocompleteARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Locale code. | |
| keyword | No | Partial skill text / prefix to autocomplete (all-lowercase param name 'keyword'), e.g. 'java', 'pyth'. | |
| language | No | Language code. | |
| customvalues | No | Custom taxonomy values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool-specific result payload. The exact fields depend on which tool produced this result. |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuinely new behavioral context: a 2-character minimum input and a cap of 10 results, which affects how the agent should call and consume it. It omits what happens with zero matches, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the minimum length and result cap, which are the operationally important facts. The closing clause about keeping data clean is mild justification padding but supports the usage framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained in prose, and annotations cover the safety traits. The description covers input constraints and result shape adequately; the only missing piece is guidance on the optional locale/language scoping and empty-result behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents keyword, locale, language and customvalues; baseline 3 applies. The description restates the minimum length constraint but adds nothing about the scoping role of locale/language/customvalues, which is where extra meaning would have been valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: accepts a partial skill prefix and returns ranked autocomplete suggestions with canonical names and categories, capped at 10. It is clearly an autocomplete tool, though it does not explicitly differentiate itself from the close sibling lookup_skill, which an agent might also consider for skill resolution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'at point of entry' and 'prevents free-text entry errors' suggest it belongs in data-entry flows, but there is no explicit when-to-use/when-not guidance or named alternative (e.g., lookup_skill for exact matches). The agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classify_job_zoneJob Zone ClassificationARead-onlyIdempotentInspect
RChilli's Job Zone Classification tool reads the job profile from a resume or job description and returns its ONET 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 ONET. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Original filename with extension (e.g. 'resume.pdf'). Defaults to 'resume.txt' if omitted. | |
| json_text | No | Pre-parsed resume JSON string. When provided, re-parsing is skipped. | |
| requesttype | No | Type of document — 'Resume' (default) or 'JD'. | Resume |
| resume_text | No | Plain text content of the resume (or JD). The server encodes it internally. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds useful behavioral context by explaining that the tool returns one of five standardized O*NET Job Zones based on education, experience, and training criteria, though it does not discuss error handling or source-document parsing limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and return value, then explains the five Job Zones and downstream value. It is somewhat long due to the full enumeration of zones, but the information is relevant and structured rather than repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description appropriately explains that the tool returns a standardized O*NET Job Zone level and what that enables. Combined with the fully described input schema and safety annotations, it is complete enough for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters, including filename, json_text, requesttype, and resume_text. The description does not add parameter-level semantics beyond what the schema provides, which is acceptable but not enriching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it reads a resume/JD job profile and returns an O*NET Job Zone. It clearly explains the five-level output and the criteria behind it, but it does not explicitly distinguish this tool from similar siblings such as lookup_job_profile or autocomplete_job_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists downstream use cases like fit filtering, compensation benchmarking, and qualification flagging, which implies when the tool is useful. However, it does not give explicit conditions for choosing this tool over sibling tools or state any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_document_formatDocument Format ConversionARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Original filename with extension (e.g. 'resume.docx'). Defaults to 'resume.txt' if omitted. | |
| outputtype | No | Target format: 'pdf' (default), 'doc', 'docx', 'dot', 'rtf', or 'html'. | |
| resume_text | No | Plain text content of the resume/document. The server encodes it internally. | |
| facedetection | No | Set 'true' to detect and preserve face images during conversion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the description does not need to restate those traits. It adds useful context about preserving formatting fidelity and its pipeline role, but it claims base64/URL inputs that are not represented in the schema and omits what the conversion returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loads the core conversion behavior. It is appropriately sized, though some of its compact claims are inaccurate against the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a conversion tool with no output schema and all-optional parameters, the description should clarify what is returned or how converted output is delivered. It provides a useful use case and fidelity note, but leaves the response shape unspecified and mischaracterizes supported inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents filename, outputtype, resume_text, and facedetection. The description's mention of base64 or URL input is not supported by any parameter, and its reference to plain-text output does not match the outputtype enum, so it adds confusion rather than semantic clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: converts documents between named formats. It also distinguishes the tool's role as a pre-processing step before data extraction, which separates it from siblings like extract_resume_data or extract_resume_data_from_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says when the tool is useful: before extraction on non-standard file types. It does not name when not to use it or explicitly compare it to alternatives, but the context is sufficiently clear for a conversion utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_biasBias Detection AgentARead-onlyIdempotentInspect
Reviews job descriptions and hiring criteria for gendered language, age-coded terms, unnecessary credential inflation, cultural exclusion signals, and NYC Local Law 144/EEOC risk indicators. Suggests neutral replacements.
| Name | Required | Description | Default |
|---|---|---|---|
| resume_data | No | Plain-text resume to scan for biased language. Supply this, job_description_data, or both. | |
| job_description_data | No | Plain-text job description to scan for biased language. Supply this, resume_data, or both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds the regulatory framing (NYC Local Law 144/EEOC) and the fact that it suggests neutral replacements, but says nothing about how findings are scored, disclaimers, or limits of the legal-risk judgement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and the enumerated detection categories; the follow-up on suggested replacements earns its place as output behavior. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema and complete annotations, the description only needs to convey scope and detection categories, which it does well. The one shortfall is that it frames itself purely as job-description review while the tool equally accepts plain-text resumes, leaving that use case to the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the two parameters are fully documented in structured data and baseline 3 applies. The description adds no format or sizing guidance, and it never mentions that a resume can be scanned even though resume_data is one of the two inputs — 'hiring criteria' only loosely gestures at it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (reviews) applied to a specific resource (job descriptions and hiring criteria) and enumerates exactly the signal classes it detects: gendered language, age-coded terms, credential inflation, cultural exclusion, and LL144/EEOC risk. No sibling covers bias scanning, so it is unambiguously distinct from detect_resume_suspicion or score_resume_against_jd.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the domain ('reviews job descriptions ... and hiring criteria'), but there is no explicit when/when-not statement and no routing to alternatives such as detect_resume_suspicion or score_resume_against_jd. The only concrete guidance ('supply this, resume_data, or both') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_resume_suspicionResume Suspicion Detection AgentBRead-onlyIdempotentInspect
Analyze a resume file and identify suspicious or potentially fraudulent content.
Args: filedata: Base64-encoded PDF, DOCX, or TXT resume content. filename: Original resume filename, including extension. ctx: Optional MCP request context.
| Name | Required | Description | Default |
|---|---|---|---|
| filedata | No | Base64-encoded resume file content. Supported formats: PDF, DOCX, or TXT. Provide this together with the original filename. | |
| filename | No | Original resume filename with extension, for example "candidate_resume.pdf", "candidate_resume.docx", or "resume.txt". |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully carried by structured data. The description adds only the accepted input formats, and says nothing about what counts as 'suspicious', whether a confidence or risk score is produced, or any size/rate limits — the added value over annotations is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in a single sentence and the Args block is compact with no filler. The Args section largely duplicates what the schema already shows, so it isn't perfectly waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full schema coverage, the description needn't explain return values, and annotations cover safety. However, for a fraud-detection judge the agent would benefit from knowing the analysis dimensions or any input constraints, none of which are given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented with examples in the schema and the description only restates them. It also lists a 'ctx' argument that does not exist in the input schema, which is a minor inconsistency rather than added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb+resource ('Analyze a resume file') and the outcome ('identify suspicious or potentially fraudulent content'), which is clearly distinct from siblings like extract_resume_data or detect_bias. It stops short of explicitly naming the closest alternatives, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no prerequisites stated. It doesn't tell the agent how this differs in practice from detect_bias, score_resume_against_jd, or extract_resume_data, leaving the routing decision entirely to inference from the purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_contactsContact ExtractionBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Plain text content to analyse (text only, not PDF/DOCX). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful context such as field-level confidence scores and GDPR/CCPA suitability, but it does not address limitations, and its reference to 'documents' is not reconciled with the schema's plain-text-only constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core extraction purpose, and adds compliance/output context without waste. Every phrase contributes to the tool's scope or output behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with rich annotations and full schema coverage, the description is adequate but incomplete. It mentions confidence scores but does not describe return shape, and it lacks explicit routing versus sibling extraction tools or clarity on the plain-text-only input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single text parameter is fully documented in the schema. The description adds no syntax or format detail beyond the schema and could mildly mislead by mentioning 'documents' despite the text-only restriction, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it identifies and structures contact fields such as names, emails, phone numbers, LinkedIn URLs, and addresses. This clearly separates it from generic extraction siblings, though it does not explicitly differentiate itself from tools like extract_resume_data or tag_entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool instead of alternatives such as extract_resume_data, extract_job_data, or tag_entities. It implies a contact-extraction use case, but provides no when/when-not conditions or routing cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_job_dataJob Description Data ExtractionBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jd_text | No | Complete, verbatim plain-text of the job description / job posting — every line as in the original. Do NOT summarise or base64-encode; pass raw text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool-specific result payload. The exact fields depend on which tool produced this result. |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is fully covered without the description. The description adds the notion that role requirements are 'taxonomy-normalized', which hints at transformation behavior, but says nothing about input constraints, limits, or failure modes; and the field list largely duplicates what the output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with the verb and resource first. The long enumeration of extracted fields is slightly padded, but every clause is on-topic and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return values need not be explained, and the lone input parameter is fully documented in the schema. The description supplies the domain framing (hiring data, taxonomy normalization) needed to place the tool, leaving only selection guidance against siblings unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, including an explicit warning to pass verbatim raw text rather than summaries or base64. With coverage this high the schema carries the semantics, so the description adds nothing param-specific and the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Extracts and converts job descriptions into structured hiring data') and enumerates the output fields, so the agent knows exactly what it produces. The resource name distinguishes it from siblings like extract_resume_data, but no sibling is named explicitly, keeping it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is a generic purpose phrase ('for recruitment automation and candidate matching'), which describes downstream consumers rather than when to call this tool. There is no guidance on when to prefer it over extract_resume_data, map_job_to_skills, or generate_jd, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_resume_dataResume Data ExtractionCRead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Optional original file name (default 'inline_resume.txt'). A '.txt' extension is appended automatically if missing. | |
| resume_text | No | Complete, verbatim plain-text of the resume/CV — every line exactly as in the original. Do NOT summarise, paraphrase, or base64-encode; pass raw text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool-specific result payload. The exact fields depend on which tool produced this result. |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. What the description adds is largely unverifiable marketing ('up to 194%' conversion, 'under 10 seconds') and capability claims that the signature cannot back up — 'runs in batch mode' and 'resume reprocessing... without requiring a new document' are impossible with a zero-required-param call that only accepts a filename and inline text. These overstatements actively mislead about what the call does rather than clarifying it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded correctly, but the remainder is padded with promotional copy — conversion-rate statistics, speed claims, language counts — that does not help an agent decide or invoke. The genuinely useful sentence (the bulk import / talent refresh distinction) is buried at the end, and two full sentences are spent on capabilities the tool does not expose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the input schema is fully documented. But the description spends its length on modes (URL intake, batch, reprocessing) that this tool's parameters cannot perform, while omitting the one thing the agent needs to disambiguate: that this tool requires the resume as inline text, unlike its extract_resume_data_from_url sibling. For a tool in a 30+ sibling set with a near-identical name, that omission is a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are well documented in the schema itself (filename default and .txt append behavior; resume_text must be verbatim, not summarized or base64-encoded), so the baseline of 3 applies even though the description says nothing about either parameter. The description neither helps nor badly harms parameter understanding, but its silence on the inline-text requirement while touting URL/batch scenarios works mildly against correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource ('Extracts and converts resumes, CVs, and candidate documents into structured, searchable profiles') and enumerates the output fields, so the agent knows exactly what the tool produces. It also contrasts with two related workflows (bulk import, talent data refresh), but those are not actual siblings — the real ambiguous neighbor, extract_resume_data_from_url, is never mentioned, so differentiation from the tool the agent is most likely to confuse it with is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes several usage scenarios (careers page/application form auto-fill, batch migration, reprocessing old records), which implies when to reach for it. However, none of those scenarios are expressible with this tool's two parameters (filename, resume_text) — there is no URL, batch, or reprocess flag — and the description never states the actual selection rule: use this for inline resume text, use extract_resume_data_from_url when you only have a link. Usage is implied but not actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_resume_data_from_urlResume Data Extraction from URLARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Direct, publicly accessible URL to the resume/CV document (pdf, doc, docx, rtf, etc.). The server fetches it directly. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool-specific result payload. The exact fields depend on which tool produced this result. |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive behavior, so the safety profile is covered. The description adds that the server fetches the URL directly and that it supports batch and multilingual processing, but it says nothing about failure modes the openWorld hint implies: authentication-protected URLs, redirects, oversized files, or fetch timeouts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and reasonably brief, but it repeats the same idea twice: 'returns the same normalized JSON profile as the Resume Data Extraction tool' and 'Also supports the same auto-fill, multilingual, and batch-processing capabilities as the core extraction tool.' The second sentence largely restates the first and could be merged or dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the intake scenario is clear. What is missing is any statement about what happens when the fetch fails or the URL requires auth, which matters for an openWorldHint tool whose entire behavior is a remote fetch. Adequate but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single `url` parameter is fully documented in the schema, including that it must be publicly accessible and that the server fetches it. The description adds no format or constraint detail beyond that. Baseline 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it fetches a resume document from a URL and returns a normalized JSON profile identical in shape to the core extraction tool. It names the sibling tool implicitly ('the Resume Data Extraction tool'), though it never names `extract_resume_data` directly, so an agent must infer that sibling handles uploaded files while this one handles URLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context: 'Ideal for pipeline automation where resumes are stored in cloud storage, S3, or email attachments.' That effectively tells the agent to choose this over the upload-based sibling when the document lives behind a URL. It stops short of an explicit exclusion, e.g. what to do when the URL is not publicly accessible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_matches_in_indexFind Matches in IndexARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_type | No | Type of the source document — 'Resume' (default) or 'JD'. Determines which parser processes document_text. | Resume |
| index_key | No | Same as userkey — the RChilli API user key. Leave blank; the authenticated session userkey is injected automatically. | |
| index_type | No | Which index to search against — 'Resume' (default) or 'JD'. | Resume |
| document_text | No | Plain-text content of the source document. Parsed and base64-encoded internally — no manual encoding required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, non-destructive, and open-world. The description adds that no index setup is required for the input document and that results are ranked by semantic similarity, but it omits return format, ranking behavior, and any limits on N.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the core behavior front-loaded. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It is adequate for a read-only matching tool whose annotations cover safety, but without an output schema it does not explain the shape of returned matching documents. It also mentions 'top-N' without clarifying how N is determined, since no top_n parameter exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented in the schema. The description does not add meaning beyond the schema about doc_type, index_type, document_text, or the automatically injected index_key.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and result: it accepts a resume or JD and returns top-N semantically similar documents from the indexed corpus. This is clear, but it does not distinguish itself from likely siblings such as search_indexed_documents or match_end_to_end.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by describing the input document and indexed corpus, but gives no explicit when-to-use guidance or exclusions. With siblings like search_indexed_documents and score_resume_against_jd, an agent must infer which tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_interview_questionsInterview Question GenerationARead-onlyIdempotentInspect
Creates technical, behavioral, situational, and competency-based interview questions tailored to a role and candidate profile, with question type, competency, and expected answer signal.
| Name | Required | Description | Default |
|---|---|---|---|
| resume_data | No | Plain-text candidate resume to tailor the questions to. Optional if job_description_data is given (provide at least one); must be 50+ words or the API returns HTTP 400. | |
| job_description_data | No | Plain-text job description to base the questions on. Optional if resume_data is given (provide at least one); must be 50+ words or the API returns HTTP 400. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that questions include type, competency, and expected answer signal, but it does not add much behavioral context beyond annotations and the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficiently structured sentence with the core action front-loaded and no filler. It covers question types, tailoring, and expected output signals without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter generation tool with full schema coverage, rich annotations, and an output schema, the description provides enough context to understand what will be generated. The main remaining gap is lack of explicit usage guidance versus sibling tools, which is minor given the clear tool scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both inputs, including the 50+ word minimum and the requirement to provide at least one. The description's phrase 'tailored to a role and candidate profile' loosely maps to the two inputs but adds no syntax or constraint details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Creates ... interview questions,' and names four question categories plus tailoring to role and candidate profile. It is clear what the tool produces, though it does not explicitly distinguish itself from nearby generation tools such as generate_jd.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the description and tool name, but it does not state when to use this tool versus alternatives or when not to use it. The schema carries the key usage constraints, such as providing at least one of resume_data or job_description_data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_jdJob Description BuilderBRead-onlyIdempotentInspect
Generates structured job descriptions with title, responsibilities, required skills, preferred skills, qualifications, tone alignment, language support, and inclusivity scoring from simple role parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| job_title | No | Title of the role to write the job description for (e.g. 'Senior Java Developer'). Required. | |
| company_info | No | Company background, team context and culture notes used to set the tone of the JD. | |
| preferred_skills | No | Nice-to-have skills that strengthen a candidate but are not mandatory. | |
| responsibilities | No | Key duties and day-to-day responsibilities of the role, as free text. | |
| required_qualifications | No | Must-have qualifications, degrees, certifications or years of experience. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful non-obvious behavior: the output includes tone alignment, language support and inclusivity scoring. It omits a key behavior, though — all five parameters are optional with empty-string defaults, so it never says what happens if the agent supplies nothing (generic JD? failure?).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the verb and the output contract front-loaded, and no filler. It is slightly packaging-heavy by listing eight output facets that the output schema already enumerates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't explain return values, and with 100% schema coverage the parameters are self-documenting; the definition is therefore nearly sufficient. The remaining gap is workflow context — no statement of prerequisites, empty-input behavior, or how the result relates to downstream JD-consuming tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already fully documented with examples ('Senior Java Developer'). The description only summarizes the parameters collectively as "simple role parameters" and adds no format, length or interaction constraints, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Generates structured job descriptions") and enumerates the sections produced, so the agent knows exactly what artifact comes back. It doesn't explicitly contrast with related siblings like score_resume_against_jd or extract_job_data, but no sibling shares this generating purpose, so ambiguity is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not-to-use guidance and no named alternative. The phrase "from simple role parameters" hints at the input shape but not at the workflow decision (e.g. generate a JD first, then score resumes against it). The agent must infer placement in the pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geolocateGeolocation / Location NormalizationARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location objects as a JSON string array or native list. Each may have optional 'City', 'State', 'Country' keys, e.g. [{"City":"New York","State":"New York","Country":"US"}]. | |
| json_text | No | Resume or JD Parser JSON output as a plain-text string. All location fields are automatically extracted and resolved. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=true, so safety and idempotency are covered. The description adds nothing about the open-world implication — that resolution likely hits an external geocoding service, what happens to unresolvable or ambiguous locations, or whether results are cached. With annotations carrying the safety profile, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the transformation and followed by downstream use cases. No filler, though the second sentence is more marketing framing than operational guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully enumerates the returned fields (city, state, country, ISO codes, latitude, longitude), which is real value. It still doesn't clarify cardinality — whether multiple input locations or a parsed JSON blob yield one resolved object or a list — which leaves a meaningful gap for a tool accepting arrays and free-text blobs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry detailed descriptions including an example object shape and the json_text extraction behavior, so the description need not restate them. It adds no syntax or format guidance beyond the schema, which is the baseline case for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Converts') and enumerates the resource and transformation target ('partial or informal location text' into city, state, country, ISO codes, lat/long). This is clearly distinguishable from siblings like normalize_candidate_data or classify_job_zone, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Downstream uses are named ('enables radius-based candidate and job search', 'workforce planning analytics'), which implies when the tool is useful. However, there are no explicit conditions, prerequisites, or exclusions — nothing says when to call this versus normalize_hr_data_with_lov or normalize_candidate_data, which also touch location-bearing data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_documentIndex Resume / JD for Search & MatchAInspect
Index a resume or job description into RChilli's Search & Match engine.
RChilli's Index endpoint accepts a resume or job description along with the index type, document ID, and indexing options, processes the document content, and stores it against the configured index key in the Search & Match engine.
Once indexed, the document can be searched, matched, updated, and reused across downstream recruitment workflows without re-processing it for every query.
Args: filedata: Base64-encoded resume or job description content. filename: Original file name including extension. indextype: Document index type - Resume or JD. documentid: Required unique document ID used for indexing. userkey: RChilli user key. Leave blank to use the authenticated session key. subuserid: Optional sub-user identifier for multi-tenant indexing. index_detail_text: Enable free-text search on the indexed document. commit: Commit the indexing operation. check_duplicate: Check for duplicate documents before indexing. duplicate_fields: Fields used for duplicate checking. Defaults to ['id']. update_duplicate: Update the existing document when a duplicate is found. use_v4: Use the Search & Match v4 endpoint when supported.
| Name | Required | Description | Default |
|---|---|---|---|
| commit | No | ||
| use_v4 | No | ||
| userkey | No | ||
| filedata | No | ||
| filename | No | ||
| indextype | No | Resume | |
| subuserid | No | ||
| documentid | No | ||
| check_duplicate | No | ||
| duplicate_fields | No | ||
| update_duplicate | No | ||
| index_detail_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and the description adds real context on top: an external engine call, persistent storage under an index key, and duplicate-handling behavior (check_duplicate, update_duplicate) that materially affects repeat invocations. It still omits failure modes, whether re-indexing overwrites an existing documentid, and what authentication the userkey alternative requires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a one-line purpose, then scope, then an Args block proportional to 12 parameters. The middle sentence largely restates the opening ('RChilli's Index endpoint accepts a resume or job description along with the index type, document ID, and indexing options') and could be trimmed, but nothing is seriously bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter external mutation with no output schema, the description covers what is stored, why it matters downstream, and every argument. It stops short of describing return values, error conditions, or what happens to an existing document when a duplicate is found and update_duplicate is false, which an agent would want before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the full burden, and it does document all 12 parameters with meaning beyond type alone (base64 encoding, filename must include extension, documentid is required and unique, blank userkey falls back to the session key, duplicate_fields defaults to ['id']). Gaps remain: indextype's allowed values are only loosely stated, and conditional relationships such as duplicate_fields only mattering when check_duplicate is true are unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: indexes a resume or job description into the RChilli Search & Match engine, and it names the stored artifact (document against the configured index key). It implicitly separates itself from search_indexed_documents/find_matches_in_index by describing indexing as the write step that precedes searching, but never explicitly names a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second paragraph gives the motivating condition for use: index once so the document can be searched, matched, and updated without re-processing. However, there is no explicit when-not guidance, no statement of when to prefer search_indexed_documents, update_profile, or a re-index, and no ordering prerequisites beyond a passing note about the session key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_job_profileJob Profile LookupARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Locale code (default: DB config or 'US'). | |
| keyword | No | The job title / role to look up (all-lowercase param name 'keyword'), e.g. 'Data Scientist', 'Java Developer', 'Nurse'. | |
| language | No | Language code (default: DB config or 'en'). | |
| customvalues | No | Custom taxonomy values. | |
| addrelatedskill | No | Set True to include the role's related/required skills in the response. Set True whenever the user asks for the skills needed for the role (e.g. 'skills to be a QA engineer'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool-specific result payload. The exact fields depend on which tool produced this result. |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds value by enumerating what comes back (canonical title, codes, salary bands, context), but says nothing about miss behavior when no profile matches, locale/language fallbacks, or data freshness — useful context for an openWorld lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and scope, then enumerates the return payload compactly. No preamble or filler; the only minor weakness is that the field list is a comma run rather than prioritized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and it still names the key fields. Annotations cover read-only and idempotency. What remains unaddressed is edge behavior (no match, locale defaults), which is a modest gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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: each parameter (keyword, locale, language, customvalues, addrelatedskill) is documented in the schema, including the conditional trigger for addrelatedskill. The description adds no parameter-level detail beyond 'known job profile', so it neither compensates for nor exceeds the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns authoritative detail for a known job profile') plus the concrete payload: canonical title, SOC/O*NET code, job family, skills, salary bands, work context. An agent can tell this is an exact-profile lookup. It stops short of naming the sibling it differs from (e.g. autocomplete_job_profile for partial/typo input), so it does not fully earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Known job profile' implies the exact-match/canonical-record case, which implicitly routes away from fuzzy or autocomplete lookups. However, no explicit when-to-use, when-not, or sibling reference (autocomplete_job_profile, map_job_to_skills) is given, so the routing has to be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_skillSkill LookupARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Locale code (default: DB config or 'US'). | |
| keyword | No | The skill to look up (all-lowercase param name 'keyword'), e.g. 'Kubernetes', 'Python', 'project management'. | |
| language | No | Language code (default: DB config or 'en'). | |
| customvalues | No | Custom taxonomy values (default: DB config or 'RChilliMCPHub'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Tool-specific result payload. The exact fields depend on which tool produced this result. |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered and the bar is lower. The description adds that results are 'authoritative' and full-record rather than ranked, which is useful, but says nothing about not-found behavior, partial keyword matching, or fallback when a skill is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the first front-loads what the record contains, the second frames when to use it. Everything is front-loaded and nothing is repeated or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the schema fully documents parameters, so the description needn't carry return structure or parameter detail. The one remaining gap is behavioral edge cases (skill not found, ambiguous matches), which for a lookup tool an agent would reasonably want stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (keyword, locale, language, customvalues) are already documented in the schema; baseline 3 applies. The description adds only the notion of a 'known skill' lookup and no extra meaning about keyword matching, locale fallback, or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Returns authoritative detail for a known skill') and enumerates what the record contains (aliases, related skills, proficiency levels, O*NET/ESCO mappings). It distinguishes itself conceptually from search-style behavior, though it never names a concrete sibling such as autocomplete_skill or skill_mapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when you need the complete record rather than a ranked search' gives a clear selection condition. However, the alternative is described generically ('a ranked search') rather than by sibling tool name, and no exclusions or prerequisites (e.g., what to do on ambiguous or unknown skills) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_job_to_skillsJob-to-Skill Mapping AgentCRead-onlyIdempotentInspect
Converts job descriptions into granular skill maps with required and preferred skill clusters, proficiency signals, taxonomy tags, and downstream matching attributes.
| Name | Required | Description | Default |
|---|---|---|---|
| job_title | No | Job title to expand into required and preferred skills (e.g. 'Data Scientist'). Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, and an output schema already defines the returned skill-map attributes, so the description's output enumeration adds little. Nothing beyond annotations is disclosed about determinism, taxonomy source, latency, or how proficiency signals are inferred.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The dense list of output attributes is somewhat padded given an output schema exists, but the sentence remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations and an output schema carrying most of the load, the description is nearly sufficient, but it leaves a real ambiguity about the input: it claims to consume job descriptions while the only parameter is a job title. Clarifying that would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already explains 'Job Title' and marks it required. The description adds no format or example guidance and actually says 'job descriptions', which mildly conflicts with the single job_title string input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('converts') and resource ('job descriptions into granular skill maps') and enumerates the output artifacts, so the agent knows the transformation performed. It does not differentiate itself from near-siblings like skill_mapping, autocomplete_job_profile, or extract_job_data, and it describes the input as a job description while the schema takes a job title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling to prefer. With three other skill/job-profile tools in the list, an agent has to guess that this is the expansion step rather than the lookup or autocomplete step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_end_to_endEnd-to-End Matching AgentBRead-onlyIdempotentInspect
Orchestrates data extraction, indexing, taxonomy normalization, and matching to return ranked candidates or jobs with scores, explainable results, and audit trail from a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| resume_data | No | Plain-text resume to match. Required. | |
| job_description_data | No | Plain-text job description to match the resume against. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world. The description adds genuinely useful behavior — that the response is ranked, scored, explainable, and audited — but says nothing about the orchestration's cost/latency or what happens to the intermediate extraction/index artifacts, which matters most for a multi-stage tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that enumerates the pipeline stages and the outputs in a logical order; slightly dense but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema and annotations are present, so return shape and safety need no repetition. Still missing for an end-to-end orchestrator: expected cost/latency, and guidance on when to prefer the granular siblings instead of this heavier call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters carry their own descriptions, so the schema does the work. The description adds no semantics about the resume/JD inputs, their expected granularity, or why both are marked 'Required' in text while the schema lists no required fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a composite pipeline (extraction, indexing, taxonomy normalization, matching) and the concrete return (ranked candidates or jobs with scores, explanations, audit trail). This clearly separates it from single-step siblings like extract_resume_data or score_resume_against_jd, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'from a single call' hints that this is the one-shot alternative to chaining the granular sibling tools, but there is no explicit when-to-use/when-not statement or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_candidate_dataCandidate Data Normalization AgentBRead-onlyIdempotentInspect
Cleans and normalizes candidate records from multiple ATS or HR systems, resolving field conflicts, deduplicating records, and producing standardized candidate datasets with a field-level change log.
| Name | Required | Description | Default |
|---|---|---|---|
| input_data | No | Raw candidate records from one or more ATS/HR systems, as JSON or delimited text. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld. The description adds real behavioral detail beyond them: conflict resolution across sources, deduplication, and a field-level change log as the output artifact. It stops short of saying how conflicts are resolved (precedence rules) or that this is deterministic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with no filler, and the resource and transformations are front-loaded. Slightly overstuffed but every clause conveys substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the change log needn't be explained, and annotations cover the safety profile. For a tool with a near-identical sibling, though, the description should clarify the boundary and note any input prerequisites; that routing information is the missing piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage, so the schema already carries the burden. The description only restates 'from multiple ATS or HR systems' and adds no format, size, or validation guidance beyond what the schema says ('JSON or delimited text').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'cleans and normalizes candidate records from multiple ATS or HR systems', and names the concrete operations (conflict resolution, deduplication, standardized output). It does not differentiate from the sibling normalize_hr_data_with_lov, which an agent could easily confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus normalize_hr_data_with_lov or the extraction tools (extract_resume_data, extract_job_data) that feed it. The only implied usage is 'raw records from multiple systems', with no explicit preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_hr_data_with_lovNormalize HR Data with LOVBRead-onlyIdempotentInspect
Maps raw HR data values to standardized List of Values (LoV) entries and returns canonical values with mapping confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| input_data | No | Raw HR data values to normalize against configured Lists of Values (LoV), including degrees, universities or institutes, certifications, job profiles, skills, and locations. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered by structured data. The description adds that results carry mapping confidence, which is useful behavioral context, but says nothing about unmatched values, fallback behavior, or open-world lookup implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the action verb front-loaded and no filler. It is efficient, though it spends words on the return value that the output schema likely already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich annotation set, an existing output schema, and a fully documented single parameter, the description covers what is needed to call the tool. The missing piece is routing logic relative to sibling normalizers, which is a modest gap rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the input_data parameter is fully documented in the schema with the data categories it covers. The description adds no syntax, format, or batching detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it maps raw HR data values to standardized List of Values entries and returns canonical values with mapping confidence. This is far more specific than the title alone. However, it never distinguishes itself from the close sibling normalize_candidate_data, so an agent cannot tell from the text which normalizer to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no named alternative such as normalize_candidate_data. The only usage signal is the word 'Required' next to the parameter in the schema, which is contradicted by required params being zero.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_learning_pathLearning Path RecommendationsARead-onlyIdempotentInspect
Builds structured learning paths with prerequisites, skill sequence, certifications, proficiency targets, and LMS alignment based on a person's profile and target role.
| Name | Required | Description | Default |
|---|---|---|---|
| resume_data | No | Plain-text resume describing the learner's current skills and experience. Required. | |
| job_description_data | No | Plain-text job description of the role the learning path should lead to. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the description's main added value is the shape of the output artifact. It does not disclose the openWorld variability (results depend on external labor-market/LMS knowledge) or how exhaustive paths are, which is exactly the context the lower annotation bar would reward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the action and output structure front-loaded; every clause contributes. It is compact, though the long list of path components makes it slightly list-like rather than fully structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter descriptions, the description's job is to convey purpose and artifact content, which it does. The remaining gap is usage routing (when to choose this over skill-gap analysis), which is not fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains resume_data and job_description_data fully. The description only echoes them at a high level ('person's profile and target role') and adds no format or edge-case guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and artifact ('Builds structured learning paths') and enumerates the path's contents (prerequisites, skill sequence, certifications, proficiency targets, LMS alignment), which distinguishes it from neighbors like analyze_skill_gap or map_job_to_skills. It does not explicitly contrast with any sibling, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'based on a person's profile and target role' implies the usage context (a resume plus a target job), but there is no explicit when-to-use, when-not-to-use, or pointer to complementary tools such as analyze_skill_gap. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redact_resumeResume RedactionBRead-onlyIdempotentInspect
Redacts personally identifiable information from candidate profiles to support anonymized review, bias-aware screening, compliance workflows, and audit logs. Configurable redaction scope. Idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Optional original filename (e.g. 'resume.pdf'). Defaults to 'inline_resume.txt'; '.txt' is appended if missing. | |
| jsondata | No | Pre-parsed resume JSON string (skips re-parsing when provided). | |
| masktype | No | How masked fields render — 'x-value' (default, replaces with XXXXXXXXX) or 'null-value' (removes the field entirely). | x-value |
| maskfields | No | Fields to redact/hide — JSON array or comma-separated string, e.g. ["Name","Email","PhoneNumber"] or "Name, Email, Phone". When omitted, the server's default redaction set is applied. | |
| resume_text | No | Required. Complete, verbatim plain-text of the resume/CV — every line as in the original. Do NOT summarise or base64-encode; pass raw text. | |
| abbreviation | No | Set True to enable abbreviation mode globally. | |
| abbfieldcolor | No | Hex colour for abbreviation highlights. | |
| highlightcolor | No | Hex colour to highlight redacted regions (e.g. '#FFFF00'). | |
| abbreviationfields | No | Fields to abbreviate rather than mask — JSON array or comma-separated string (e.g. 'Name' -> 'J.D.'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description merely restates 'Idempotent' rather than adding context. It does not explain what the call returns (masked text vs. file), whether the original content is preserved, or how masking interacts with the optional jsondata/resume_text inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and use cases. The trailing fragments 'Configurable redaction scope. Idempotent.' are low-cost but the idempotency claim duplicates the annotation, slightly wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description should say what comes back (redacted resume text, filename, highlight metadata) and note that resume_text is the required payload. Those gaps leave the agent guessing about the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 9 parameters is already documented in the schema. The description's only contribution is the generic phrase 'Configurable redaction scope,' which does not add meaning beyond maskfields/masktype/abbreviationfields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: redacts PII from candidate profiles/resumes. That is clearly separable from siblings like extract_resume_data or detect_bias. It stops short of naming a sibling it must not be confused with, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists downstream scenarios (anonymized review, bias-aware screening, compliance, audit logs) which imply when to call it, but gives no explicit 'use this instead of X' routing and no prerequisites, such as whether extract_resume_data must run first or how this relates to detect_resume_suspicion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reformat_resume_with_templateCandidate Resume ReformattingBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Original filename with extension (e.g. 'resume.pdf'). Defaults to 'resume.txt' if omitted. | |
| json_text | No | Pre-parsed resume JSON string. When provided, re-parsing is skipped. | |
| outputtype | No | Output format: 'pdf' (default), 'doc', 'docx', 'rtf', or 'html'. | |
| resume_text | No | Plain text content of the resume/CV. The server encodes it internally. | |
| templatekey | No | Template to apply, 'TM001' through 'TM006' (default 'TM001'). | |
| templatedata | No | Custom .dotx template file content (binary, base64-encoded). Overrides templatekey. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and the description is consistent with a non-mutating generator. It adds some behavioral context (support for arbitrary input structures, six templates, four output formats) but says nothing about size limits, template rendering failures, or whether the output is returned inline, as a URL, or as a file blob.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operational content is front-loaded in a single strong opening sentence. The second sentence is promotional padding ('eliminates manual reformatting effort', 'professional layout') that gives an agent no call-relevant information and could be cut without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six optional parameters, no output schema, and full schema coverage, the description covers inputs adequately via schema. The real gap is the return shape: for a document-generation tool the agent has no idea whether it receives bytes, a base64 string, a URL, or a stored filename, and the description does not fill that hole.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter — filename, json_text, outputtype, resume_text, templatekey, templatedata — is already documented in the schema. The description restates the template range and output formats but adds no semantics the schema lacks, such as when to prefer json_text over resume_text. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: it takes a structured candidate profile and applies one of six branded templates (TM001–TM006) to emit a PDF/DOCX/RTF/HTML document. That is far more precise than the title. It does not, however, distinguish itself from the sibling 'convert_document_format', which an agent could easily confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence describes an audience (staffing firms, agencies, enterprise HR) and a benefit (brand consistency), not a usage condition. There is no statement of when to pick this over 'convert_document_format' or after 'extract_resume_data', and no prerequisites or exclusions. An agent must infer the decision boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_resume_against_jdResume-to-Job Description Fit ScoreARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| index_key | No | Same as userkey — the RChilli API user key. Leave blank; the authenticated session userkey is injected automatically. | |
| jd_content | No | Complete plain-text content of the job description. Do NOT base64-encode it; the server encodes it. Required. | |
| match_type | No | Direction of the match — 'Resume to JD' (default) or 'JD to Resume'. | Resume to JD |
| jd_file_name | No | Optional JD file name; always sent with a .txt extension because the content is plain text (default 'inline_jd.txt'). | |
| resume_content | No | Complete plain-text content of the resume/CV. Do NOT base64-encode it; the server encodes it. Required. | |
| resume_file_name | No | Optional resume file name; always sent with a .txt extension because the content is plain text (default 'inline_resume.txt'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile needs no restating; the description instead contributes the output contract and the 'bias-controlled and audit-ready' posture. Those qualifiers are useful but vague—no detail on how bias control is applied or what 'audit-ready' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste on process description. The trailing 'Bias-controlled and audit-ready' is mildly promotional rather than operational, which keeps it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly enumerates the return values an agent needs to decide to call it. It leaves open which dimensions are scored and how gaps are represented, a minor gap for a read-only scoring tool with fully documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the baseline is 3. The description only reinforces the cardinality (one resume, one JD) and adds nothing about match_type direction or the filename parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (scores one resume against one JD) plus the exact return payload (overall score, dimension scores, skill gaps, explanation). The phrase 'no index required' differentiates it from indexed siblings like find_matches_in_index and match_end_to_end.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Accepts one resume and one Job Description (no index required)' implicitly routes the agent away from index-based matching tools, and the return shape signals it is the single-pair scoring path. It does not explicitly name an alternative or state when not to use it, so it falls 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.
screen_application_batchPrescreening AgentAInspect
Evaluates candidates against job requirements and custom criteria, returning score, insights, skill gaps, and proceed/hold/reject recommendations for each. Supports high-volume application batches.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Plain-text message to the agent: the resume and job description first, then replies such as "Yes, proceed." Required. | |
| session_userkey | No | Conversation ID for this screening; reuse the same value for every follow-up message. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the description is not carrying the safety burden. It does add that the agent runs over volume and emits a proceed/hold/reject decision, but it omits the interactive, session-scoped nature of the operation — that follow-ups resume the same conversation — which is the primary behavioral surprise here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core capability leads and the batch-scope qualifier follows. Nothing is wasted, though the trailing sentence is a qualifier rather than new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values (score, insights, gaps, recommendation) need not be fully specified, and annotations cover the safety profile. The remaining gap is orientation against the many similarly named screening siblings, which the description does not address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (message, session_userkey) are already fully documented in the schema, including the 'reuse the same value for every follow-up' instruction. The description adds no parameter-level detail beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource — evaluates candidates against job requirements and custom criteria — and enumerates what comes back (score, insights, skill gaps, proceed/hold/reject). The batch framing ('high-volume application batches') separates it somewhat from single-resume siblings, but it never names an alternative such as score_resume_against_jd or match_end_to_end, so the boundary stays inferential.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Supports high-volume application batches' implies usage on bulk application flows, but there is no explicit when-to-use, when-not-to-use, or routing to a sibling tool. The agent must infer whether to pick this over score_resume_against_jd or match_end_to_end.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_indexed_documentsIndexed Document SearchBRead-onlyIdempotentInspect
Search indexed documents using a keyword.
Documents must be indexed before using this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | Keyword(s) to search for across the indexed corpus, e.g. 'Python machine learning'. | |
| indextype | No | Which index to search — 'Resume' (default) or 'JD'. | Resume |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the indexing prerequisite, which is useful operational context, but says nothing about result limits, empty-result behavior, or corpus scope despite openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the core action leads and the prerequisite follows. Slightly under-informative rather than padded, which is the right direction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two fully documented parameters, strong annotations, and no output schema, the definition is nearly sufficient. Still missing is any hint of what a search returns or how it relates to the sibling matching tool, which an agent would want before choosing it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself documents both 'keyword' (with an example) and 'indextype' (with allowed values Resume/JD). The description adds no parameter-level meaning beyond this, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (indexed documents) plus the mechanism (keyword), so the agent knows exactly what the tool does. It does not differentiate itself from nearby siblings such as find_matches_in_index or index_document, leaving the boundary to be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite 'Documents must be indexed before using this tool' gives a real usage condition. However, there is no guidance on when to prefer this over find_matches_in_index or other matching/search tools, so the choice among siblings is implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skill_mappingSkill Mapping AgentBRead-onlyIdempotentInspect
Map every skill mentioned in a resume to a normalised taxonomy label.
Args: userkey: RChilli userkey. Leave blank to use the authenticated session key. resume_data: Resume as an escaped plain text string.
| Name | Required | Description | Default |
|---|---|---|---|
| resume_data | No | Plain-text resume whose skills should be mapped to the RChilli taxonomy. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that the output is a 'normalised taxonomy label' (RChilli taxonomy) and that input must be escaped plain text, but says nothing about what happens to unmatched skills or about taxonomy coverage limits. Note the stale 'userkey' arg, which no longer exists in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded and wastes nothing. The trailing 'Args:' docstring block is boilerplate that partly duplicates the schema and contains an argument the schema does not define, so it does not earn its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single well-documented parameter, full annotation coverage, and an output schema handling the return value, the description covers what an agent needs to make the call. Only the stale userkey reference and lack of sibling disambiguation keep it below complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and resume_data is fully documented in the schema, so the baseline is 3. The description restates the same idea ('Resume as an escaped plain text string') and adds a format hint, but also lists a 'userkey' parameter that is not present in the input schema, which risks the agent passing a nonexistent argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ('Map every skill mentioned in a resume to a normalised taxonomy label'), so the agent knows exactly what transformation happens. It does not distinguish itself from nearby siblings such as map_job_to_skills or lookup_skill, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'in a resume'; there is no explicit when-to-use, when-not-to-use, or prerequisite statement. With siblings like map_job_to_skills, autocomplete_skill, and lookup_skill in the catalog, the description should say which one applies to which input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_entitiesNamed Entity RecognitionARead-onlyIdempotentInspect
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>, Python, Austin, Bachelor of Science, and Google — 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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Plain text content to analyse (text only, not PDF/DOCX). | |
| subuserid | No | Sub-user identifier for multi-tenant isolation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds the genuinely unknown behavior: that output is inline-labeled text preserving the original document structure rather than offset/field lists, plus the entity type coverage. No mention of text-size limits or failure modes, which keeps it from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior and the differentiating examples are front-loaded and earn their place. The closing clause ("immediately consumable by ATS field-mapping pipelines... without any offset calculation or post-processing") drifts into marketing framing that could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 burden of explaining returns and does so well via concrete inline-labeled examples and stated entity coverage. A note on input size limits or entity-type edge cases would make it fully complete for a lightweight two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (text, subuserid) are already documented, and the description adds only the implicit note that input is plain text rather than a file. The tenant-isolation parameter is never referenced, so the description does not meaningfully extend the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it annotates already-extracted HR text by wrapping recognized entities in inline XML-style labels. The contrast with sibling extraction tools ("Unlike data extraction tools that produce separate field lists") makes the boundary clear, and the inline examples make the output unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly signals the input precondition (already-extracted plain text) and distinguishes the tool from extraction siblings, which routes the agent well. It stops short of an explicit when-to-use/when-not rule naming a specific alternative such as extract_resume_data, so it's clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_profileProfile Update AgentBInspect
Helps collect updated candidate information, captures consent, produces interaction logs, and writes refreshed profile fields back into ATS or CRM systems.
On a successful API response, respond exactly in this format:
Call scheduled successfully. Do not show the call ID, message, table, explanation, dashboard guidance, or any other text. If timezone inference returns multiple possible zones, request the candidate's exact IANA timezone from the user before calling the tool again.
When required information is missing, ask only for the missing values. Do not say that the backend rejected the request.
Do not add dashboard guidance, call-status disclaimers, ATS/CRM update statements, or any other explanation.
Args: candidate_id: Candidate identifier. job_id: Job identifier. candidate_name: Candidate full name. phone_number: Candidate phone number in E.164 format. fields_to_collect: Simple names of profile fields that the agent should collect. job_posting: Optional job title or job posting. time_zone: Optional candidate timezone. ctx: Optional MCP request context.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | Required job identifier. | |
| time_zone | No | Optional IANA candidate timezone, for example Asia/Kolkata. If omitted, the tool attempts to infer one from the E.164 phone number. If the phone number maps to multiple timezones, provide this value. | |
| job_posting | No | Optional job title or job posting for the call context. | |
| candidate_id | No | Required candidate identifier. | |
| phone_number | No | Required candidate phone number in E.164 format, for example +919870043210. | |
| candidate_name | No | Required full name of the candidate. | |
| fields_to_collect | No | Required simple list of profile fields to collect. Supported values: date of birth, gender, relocation preference, age, education, experience, skills, or all profile details. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes | Request metadata: unique trace ID and server-side processing latency. |
| success | No | Always ``true`` for a successful result. Check this field first to distinguish success from error envelopes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, destructiveHint=false and non-idempotent, so the safety profile is covered. The description adds real value beyond those flags: it discloses that refreshed profile fields are written back into external ATS/CRM systems, that consent is captured, that interaction logs are produced, and that backend rejections must be masked while missing values are re-requested from the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but roughly half the text is output-formatting rules that repeat themselves ('Do not show ... explanation, dashboard guidance, or any other text' restated later as 'Do not add dashboard guidance, call-status disclaimers ... or any other explanation'). The verbose Args block duplicates the schema instead of earning space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation and the schema documents all seven parameters. Still missing is context an agent needs to invoke safely: what triggers consent capture, whether the candidate must already exist, and whether calling this initiates a real-time interaction or just a write — especially given the 'Call scheduled successfully.' contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and the Args block largely restates the schema. The one genuine addition is the timezone inference/ambiguity rule, which explains behavior the schema only hints at; the rest (e.g. 'Candidate identifier.') duplicates existing parameter descriptions verbatim.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names several outcomes (collect candidate info, capture consent, log interaction, write fields back to ATS/CRM), but the core action is ambiguous: the mandated success text 'Call scheduled successfully.' implies this schedules an outbound call, which the description never states. An agent cannot cleanly separate this from siblings such as normalize_candidate_data or screen_application_batch, since no sibling is named or excluded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives among the 34 sibling tools. The only conditional instruction is procedural ('If timezone inference returns multiple possible zones, request the candidate's exact IANA timezone ... before calling the tool again'), which covers a retry edge case rather than tool selection.
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.
39 tool updates
- Added
analyze_hr_call - Added
analyze_skill_adjacency - Added
analyze_skill_gap - Changed
autocomplete_job_profile1 field changed- removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Changed
autocomplete_skill1 field changed- removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Added
classify_job_zone - Changed
convert_document_format2 fields changed- removed
Input schema / properties / subuseridRemoved value: -{ - "default": "", - "description": "Sub-user identifier for multi-tenant isolation.", - "title": "Subuserid", - "type": "string" -} - removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli API userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Added
detect_bias - Added
detect_resume_suspicion - Removed
determine_job_zone - Removed
extract_contact_info - Added
extract_contacts - Added
extract_job_data - Removed
extract_named_entities - Added
extract_resume_data - Added
extract_resume_data_from_url - Added
generate_interview_questions - Added
generate_jd - Removed
geocode_locations - Added
geolocate - Added
index_document - Changed
lookup_job_profile1 field changed- removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Changed
lookup_skill1 field changed- removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Added
map_job_to_skills - Added
match_end_to_end - Added
normalize_candidate_data - Added
normalize_hr_data_with_lov - Removed
parse_job_description - Removed
parse_resume - Removed
parse_resume_from_url - Added
recommend_learning_path - Changed
redact_resume2 fields changed- removed
Input schema / properties / subuseridRemoved value: -{ - "default": "", - "description": "Sub-user identifier for multi-tenant isolation.", - "title": "Subuserid", - "type": "string" -} - removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli API userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Changed
reformat_resume_with_template2 fields changed- removed
Input schema / properties / subuseridRemoved value: -{ - "default": "", - "description": "Sub-user identifier for multi-tenant isolation.", - "title": "Subuserid", - "type": "string" -} - removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli API userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Changed
score_resume_against_jd6 fields changed- changed
Input schema / properties / jd_content / descriptionPrevious value: -"Plain-text content of the job description. Converted to base64 internally."New value: +"Complete plain-text content of the job description. Do NOT base64-encode it; the server encodes it. Required." - changed
Input schema / properties / jd_file_name / descriptionPrevious value: -"File name of the JD with extension (e.g. 'jd.docx')."New value: +"Optional JD file name; always sent with a .txt extension because the content is plain text (default 'inline_jd.txt')." - changed
Input schema / properties / match_type / defaultPrevious value: -""New value: +"Resume to JD" - changed
Input schema / properties / match_type / descriptionPrevious value: -"Direction of the match — 'Resume to JD' or 'JD to Resume'."New value: +"Direction of the match — 'Resume to JD' (default) or 'JD to Resume'." - changed
Input schema / properties / resume_content / descriptionPrevious value: -"Plain-text content of the resume/CV. Converted to base64 internally."New value: +"Complete plain-text content of the resume/CV. Do NOT base64-encode it; the server encodes it. Required." - changed
Input schema / properties / resume_file_name / descriptionPrevious value: -"File name of the resume/CV with extension (e.g. 'resume.docx')."New value: +"Optional resume file name; always sent with a .txt extension because the content is plain text (default 'inline_resume.txt')."
- Added
screen_application_batch - Changed
search_indexed_documents2 fields changed- removed
Input schema / properties / subuseridRemoved value: -{ - "default": "", - "description": "Sub-user identifier for multi-tenant isolation.", - "title": "Subuserid", - "type": "string" -} - removed
Input schema / properties / userkeyRemoved value: -{ - "default": "", - "description": "RChilli userkey. Leave blank to use the authenticated session key.", - "title": "Userkey", - "type": "string" -}
- Added
skill_mapping - Added
tag_entities - Added
update_profile
17 tool updates
- First observed
autocomplete_job_profile - First observed
autocomplete_skill - First observed
convert_document_format - First observed
determine_job_zone - First observed
extract_contact_info - First observed
extract_named_entities - First observed
find_matches_in_index - First observed
geocode_locations - First observed
lookup_job_profile - First observed
lookup_skill - First observed
parse_job_description - First observed
parse_resume - First observed
parse_resume_from_url - First observed
redact_resume - First observed
reformat_resume_with_template - First observed
score_resume_against_jd - First observed
search_indexed_documents
Related MCP Connectors
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.
Search 1,000+ recruiting, HR and sales tools: prices, MCP servers, alternatives, ATS links.
Query professional profiles, search candidates, and get AI-powered summaries and job fit analysis.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables parsing and extracting structured data from resumes using the Rchilli API. Supports resume parsing from public URLs or binary data in base64 format.2MIT
- AlicenseAqualityAmaintenanceEnables MCP clients like Claude, Cursor and VS Code to parse resume files into structured JSON, turn job descriptions into weighted criteria, score and rank candidates against a job, and normalize free-text skills to a standard taxonomy. Each tool call uses one HireLayer credit, with a free monthly allowance.665 npm1MIT
- AlicenseAqualityDmaintenanceManage Job using MCP: Manage Job, Candidates, Resumes, Salaries all within this one MCP tools It can solve problems like: You have 50 resumes to screen. Your AI assistant can reason about candidates, but it can't: Read PDFs/DOCX — The AI can't open binary files Extract structured data — Copy-pasting loses formatting, metrics, and context Compare at scale — No consistent scoring across candida2445 npm1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that evaluates, compares, aligns, generates, and validates resume materials against specific job postings, including ATS parseability checks, match scoring, and gap analysis.Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.