Skip to main content
Glama
jitendrasinghsankhwar

Resume Forge MCP

Resume Forge MCP

An MCP (Model Context Protocol) server for intelligent LaTeX resume generation with multiple template styles, quality scoring, and job description tailoring. Works with any MCP-compatible AI assistant — Claude Desktop, Kiro, Cursor, Windsurf, etc.

Features

  • 3 built-in templates: Modern (color accents), Classic (traditional), Minimal (no-frills)

  • Overleaf integration: Browse and fetch 350+ templates dynamically

  • Multi-format import: Import resume data from .tex, .pdf, or .docx files

  • Quality scoring: Bullet analysis, ATS compatibility, keyword matching

  • Job tailoring: Auto-select and rank content based on job descriptions

  • Visual preview: Compile to PDF and preview as images directly in your AI assistant

Related MCP server: resume-processor-mcp

Quick Start

1. Import my resume from resume.pdf
2. List available templates
3. Generate my resume using the modern template
4. Score my resume against keywords: Python, AWS, Kubernetes

That's it — 4 prompts to go from a PDF to a scored, template-styled resume.

Installation

uvx resume-forge-mcp

With PDF and DOCX import support:

uvx --with pymupdf --with python-docx resume-forge-mcp

Prerequisites

For PDF compilation (compile_and_preview), you need LaTeX installed:

  • macOS: brew install --cask mactex

  • Ubuntu: sudo apt install texlive-latex-base texlive-latex-extra texlive-fonts-extra

  • Windows: Install MiKTeX

LaTeX is only needed for compiling to PDF. All other tools (import, generate .tex, score, tailor) work without it.

Configuration

Add to your AI assistant's MCP config:

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "resume-forge": {
      "command": "uvx",
      "args": ["resume-forge-mcp"]
    }
  }
}

Kiro

Add to ~/.kiro/settings/mcp.json:

{
  "mcpServers": {
    "resume-forge": {
      "command": "uvx",
      "args": ["resume-forge-mcp"]
    }
  }
}

Custom directories (optional)

{
  "mcpServers": {
    "resume-forge": {
      "command": "uvx",
      "args": ["resume-forge-mcp"],
      "env": {
        "RESUME_DATA_DIR": "/path/to/data",
        "RESUME_TEMPLATE_DIR": "/path/to/templates",
        "RESUME_OUTPUT_DIR": "/path/to/output"
      }
    }
  }
}

Environment Variables

Variable

Default

Purpose

RESUME_DATA_DIR

~/.resume-forge/data

Imported resume data (JSON)

RESUME_TEMPLATE_DIR

~/.resume-forge/templates

Fetched Overleaf templates

RESUME_OUTPUT_DIR

~/.resume-forge/output

Generated .tex and .pdf files

All env vars are optional — defaults to ~/.resume-forge/ subdirectories on any OS.

Tools (11)

Templates — Pick a style or browse Overleaf

Tool

What it does

list_templates

Shows 3 built-in templates (modern, classic, minimal) and tells you Overleaf is available for 350+ more

browse_overleaf_templates

Browse Overleaf's gallery by category (cv, cover-letter, etc.) — returns names and URLs

fetch_overleaf_template

Download a specific Overleaf template by URL, optionally save it locally

Data — Get your resume in and edit it

Tool

What it does

import_resume

Feed it a .tex, .pdf, or .docx file — extracts contact, experience, education, skills, publications into structured JSON

get_resume_data

View everything that was imported — all sections, all entries, all bullets

update_resume_data

Fix a company name, add a bullet, delete an old job, update your phone number — works on any section

Generate — Create your resume

Tool

What it does

generate_resume

Takes your data + a template (modern/classic/minimal) → renders a complete .tex file

compile_and_preview

Compiles .tex to PDF using pdflatex and returns a preview image you can see in chat

generate_tailored_resume

Paste a job description → it parses requirements, picks your most relevant experience, generates a tailored resume

Analyze — Improve your resume

Tool

What it does

score_resume_quality

Scores every bullet (action verb? metrics? right length?), checks ATS compatibility, matches keywords you provide

get_config

Shows your directories, pdflatex status, and all available tools

Usage Examples

Import and generate

> Import my resume from /path/to/resume.pdf
> Generate my resume using the classic template

Score and improve

> Score my resume quality against keywords: Java, AWS, Kafka, microservices
> Update experience index 0 bullet 2 to add a metric

Tailor for a job

> Generate a tailored resume for this job description:
> Senior Backend Engineer - 5+ years Java, AWS, event-driven architecture...

Browse Overleaf templates

> Browse Overleaf templates for CVs
> Fetch the template at https://www.overleaf.com/latex/templates/...

How It Works

  1. Import — Your resume file is parsed into structured JSON (contact, experience, education, skills, publications)

  2. Edit — Fix any parsing issues or add new content via update_resume_data

  3. Template — Pick a built-in style or fetch one from Overleaf

  4. Generate — Your data is rendered through a Jinja2 template into a .tex file

  5. Compile — pdflatex compiles the .tex to a PDF (optional — requires LaTeX installed)

  6. Tailor — Paste a job description and get a resume with auto-selected relevant content

License

MIT

Available Tools

11 tools
browse_overleaf_templatesA

Browse Overleaf's template gallery to discover LaTeX templates.

Args: tag: Gallery category (cv, cover-letter, report, presentation, etc.) page: Page number (1-indexed).

Returns: JSON with list of templates (name, url) and pagination info.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNocv
pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states it returns JSON with a list and pagination info, but does not mention whether it's read-only, any rate limits, authentication requirements, or side effects. Given it's a browse operation, the description is minimally transparent.

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

Conciseness5/5

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

The description is concise: one sentence for purpose, followed by Args and Returns sections. Every sentence serves a purpose, and the structure is front-loaded with the main action. No wasted words.

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

Completeness4/5

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

For a simple browse tool with 2 optional parameters and an output schema described, the description covers purpose, parameter usage, and return format. It is complete enough for agent invocation, though it could benefit from more detail on potential tag values.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains 'tag' as a gallery category with examples (cv, cover-letter, etc.) and 'page' as a 1-indexed page number. This adds meaningful context beyond the schema's defaults, though it could be more exhaustive on the tag options.

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

Purpose5/5

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

The description clearly states the verb 'browse' and resource 'Overleaf's template gallery' to discover LaTeX templates. It distinguishes from siblings like 'fetch_overleaf_template' (likely fetches a specific template) and 'list_templates' (lists available templates?), making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides examples of tag categories (cv, cover-letter, etc.) and page numbering, giving clear context for when to use the tool. However, it lacks explicit exclusions or comparisons to alternatives like 'fetch_overleaf_template' for fetching a single template, missing a chance to guide the agent on tool selection.

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

compile_and_previewA

Compile a LaTeX resume to PDF and return a preview image.

If tex_path is provided, compiles that file directly. Otherwise generates from resume data using the specified template, then compiles.

Args: tex_path: Path to existing .tex file. If None, generates from data first. output_filename: Base filename for output files (used when generating). template_name: Template style when generating ('modern', 'classic', 'minimal'). dpi: Resolution for preview image (default 200).

Returns: Image of the rendered resume, or error JSON string.

ParametersJSON Schema
NameRequiredDescriptionDefault
tex_pathNo
output_filenameNoresume
template_nameNomodern
dpiNo

TDQS

A3.9/5.0
Behavior3/5

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

It describes the two operational modes and the return type (image or error JSON), but lacks details on output format (e.g., MIME type), side effects (e.g., file saving), or error handling specifics. With no annotations, the description carries the burden but is only partially transparent.

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

Conciseness5/5

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

The description is short and well-structured: it opens with the main purpose, explains the two modes, then lists parameters and return value. Every sentence adds value without redundancy.

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

Completeness3/5

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

For a moderate-complexity tool with no output schema, the description covers the core logic but fails to specify the format of the returned image or the nature of error returns. This leaves gaps for agent invocation, given the available sibling tools.

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

Parameters4/5

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

With 0% schema description coverage, the description fully explains each parameter: tex_path behavior, output_filename default, template_name examples, and dpi default. This adds significant meaning beyond the bare schema, though enum values for templates could be more explicit.

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

Purpose5/5

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

The description starts with a clear action: 'Compile a LaTeX resume to PDF and return a preview image.' This distinguishes it from sibling tools like generate_resume or browse_overleaf_templates, which focus on generation or browsing.

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

Usage Guidelines3/5

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

The description explains two paths based on tex_path but does not provide explicit guidance on when to use this tool versus alternatives like generate_resume or generate_tailored_resume. Usage is implied but not fully clarified.

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

fetch_overleaf_templateA

Fetch LaTeX source code from an Overleaf template page.

Args: template_url: Full Overleaf template URL. save_as: Optional filename to save locally (without .tex extension).

Returns: JSON with template name, source code (or saved path), and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_urlYes
save_asNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden and discloses return format (JSON with name, source, status) and optional save behavior. However, it does not mention authentication requirements, rate limits, or confirm the operation is read-only, which would enhance transparency.

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

Conciseness4/5

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

The description is structured with Args and Returns sections, making it easy to parse. It is relatively concise, but the main description could be streamlined further (e.g., removing the first sentence redundancy with the title).

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

Completeness4/5

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

Given two parameters, one required, no annotations, and an output schema (though not provided), the description covers the essential functionality and return format. It lacks usage context and potential error scenarios, but overall adequate.

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

Parameters4/5

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

Schema description coverage is 0%, but the description provides meaningful hints: 'Full Overleaf template URL' and 'Optional filename to save locally (without .tex extension).' This adds value beyond the schema types and defaults, though could specify URL constraints.

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

Purpose5/5

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

The description clearly states the action ('Fetch LaTeX source code'), the resource ('from an Overleaf template page'), and distinguishes from siblings like browse_overleaf_templates (browsing) and compile_and_preview (compiling).

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

Usage Guidelines3/5

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

The description implies usage when needing LaTeX source from a template but does not provide guidance on when to use this tool over alternatives (e.g., generate_resume) or mention exclusions. No explicit when-to-use or when-not-to-use advice.

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

generate_resumeB

Render resume data to LaTeX source using a template.

Args: output_filename: Base filename for output (without extension). template_name: Template style ('modern', 'classic', 'minimal').

Returns: JSON with LaTeX file path and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_filenameNoresume
template_nameNomodern

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so description must disclose behavioral traits. It does not mention side effects, required data state, error conditions, or idempotency.

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

Conciseness4/5

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

Description is short with front-loaded purpose, then Args and Returns. No wasted words, but the Returns section could be omitted given output schema exists.

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

Completeness3/5

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

Covers basic purpose and parameters but lacks context on how resume data is provided, prerequisites, and overall process flow. Output schema exists but description doesn't elaborate.

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

Parameters4/5

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

Schema has 0% description coverage, but description explains output_filename as base filename without extension and template_name with example values, adding significant meaning.

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

Purpose5/5

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

The description clearly states the tool renders resume data to LaTeX source using a template, with specific verbs and resources. It distinguishes from siblings like generate_tailored_resume and compile_and_preview.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives; no prerequisites or when-not-to-use information provided.

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

generate_tailored_resumeA

Tailor resume to a job description: parse JD, select content, generate.

Parses the job description, selects and ranks experiences/projects by relevance, generates a tailored resume, and optionally compiles to PDF.

Args: jd_text: Raw job description text. template_name: Template style ('modern', 'classic', 'minimal'). output_filename: Base filename for output. target_tags: Optional tags to prioritize (e.g., ["swe", "ml"]). include_experiences: Force include these experience indices. exclude_experiences: Exclude these experience indices. include_projects: Force include these project indices. exclude_projects: Exclude these project indices. max_experiences: Maximum experience entries (default 4). max_projects: Maximum project entries (default 3). compile_pdf: Whether to compile and preview (default True). dpi: Resolution for preview image.

Returns: Preview image if compile_pdf=True, otherwise JSON with details.

ParametersJSON Schema
NameRequiredDescriptionDefault
jd_textYes
template_nameNomodern
output_filenameNotailored
target_tagsNo
include_experiencesNo
exclude_experiencesNo
include_projectsNo
exclude_projectsNo
max_experiencesNo
max_projectsNo
compile_pdfNo
dpiNo

TDQS

A4.1/5.0
Behavior4/5

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

Without annotations, the description explains the process: parsing, selecting/ranking experiences, generating, optionally compiling to PDF. It mentions return types but does not cover side effects, permissions, or saving behavior. Still, it provides good transparency.

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

Conciseness4/5

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

The description is well-structured with a summary, process paragraph, and Args list. It is front-loaded but the Args section is lengthy due to the number of parameters; however, it remains clear and efficient.

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

Completeness3/5

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

The description covers the core function and parameters but lacks prerequisites (e.g., need existing resume data from 'get_resume_data' or 'import_resume') and does not explain interactions between parameters like target_tags and include/exclude. Edge cases and errors are omitted.

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

Parameters5/5

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

Schema description coverage is 0%, but the description provides thorough explanations for all 12 parameters in an Args section, offering context beyond names (e.g., 'Raw job description text', 'Force include these experience indices').

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

Purpose5/5

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

The description clearly states the tool's purpose: parsing a job description, selecting relevant experiences/projects, and generating a tailored resume. It distinguishes from siblings like 'generate_resume' (generic) and 'score_resume_quality' (scoring).

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

Usage Guidelines3/5

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

The description implies use when tailoring a resume to a job description but does not explicitly state when to use this tool over alternatives like 'generate_resume'. No exclusions or when-not-to-use guidance.

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

get_configA

Show current configuration and tool availability.

Returns: JSON with configuration details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It indicates a read-only operation but does not disclose additional behavioral traits like auth needs or data freshness. Adequate but not rich.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no wasted words. Efficient and clear.

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

Completeness5/5

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

Given no parameters and presence of output schema, the description sufficiently conveys tool's purpose and return type. Complete for this simple tool.

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

Parameters4/5

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

No parameters in schema, and description correct states no arguments needed. Baseline for 0 params is 4; no additional semantic value required.

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

Purpose5/5

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

Description clearly states 'Show current configuration and tool availability' with specific verb and resource. No sibling tool serves similar purpose, so no differentiation needed.

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

Usage Guidelines3/5

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

No guidance on when to use this tool vs alternatives. While no similar sibling exists, description lacks any usage context beyond stating its function.

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

get_resume_dataA

Read the master resume data pool.

Returns the complete resume data including all entries across all sections.

Returns: JSON with complete resume data or error if not found.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'Read' and 'returns...', but lacks details on idempotency, side effects, authentication needs, or rate limits. For a read operation, it should at least state it is safe and non-destructive.

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

Conciseness4/5

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

The description is short and to the point, with a clear purpose sentence and a return description. No redundant information. However, it could be slightly more structured (e.g., adding a 'Behavior' section), but it's efficient.

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

Completeness4/5

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

Given zero parameters and an output schema (mentioned as JSON), the description is mostly complete. It lacks detail on what 'master resume data pool' contains or how it's structured, but for a simple read operation with no inputs, it is adequate.

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

Parameters4/5

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

There are no parameters, and schema coverage is 100%. The description adds no parameter information since none exist. Baseline for 0 parameters is 4, and the description does not contradict this.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'master resume data pool', and specifies it returns complete resume data across all sections. This distinguishes it from sibling tools like update_resume_data (modification) or generate_resume (creation).

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

Usage Guidelines3/5

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

The description implies usage for reading all resume data, but provides no explicit guidance on when to use this tool versus alternatives like import_resume or get_config. No when-not-to-use or alternative naming is given.

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

import_resumeA

Import resume data from a file (PDF, DOCX, or LaTeX .tex).

Parses the file and extracts contact, education, experience, projects, and skills into structured data. The imported data becomes the master resume pool used by generate_resume.

Args: file_path: Absolute path to the file (.tex, .pdf, or .docx).

Returns: JSON with import status and summary of extracted entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It states that data becomes the 'master resume pool' but does not specify whether this overwrites or appends existing data, nor does it mention error handling, permissions, or destructive potential. This lack of detail is a significant gap for an import operation.

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

Conciseness4/5

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

The description is concise and well-structured, using an Args and Returns section to organize information. Every sentence adds value, but the lack of behavioral details slightly undermines efficiency. Overall, it is appropriately sized for a simple tool.

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

Completeness3/5

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

The description covers the core operation and return summary, and the presence of an output schema reduces the need to detail return structure. However, it omits crucial contextual details like whether import is additive or destructive, and any prerequisites or error states, making it incomplete for confident use.

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

Parameters4/5

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

With 0% schema coverage, the description compensates by specifying that file_path must be an absolute path and listing allowed extensions (.tex, .pdf, .docx). This adds meaningful context beyond the schema's type and title, though it could clarify path requirements further (e.g., OS-specific formats).

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

Purpose5/5

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

The description clearly states the tool imports resume data from specific file types (PDF, DOCX, LaTeX) and extracts structured data. It lists the categories extracted and explains the imported data serves as the master pool for generate_resume, distinguishing it from siblings that generate or retrieve resumes.

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

Usage Guidelines4/5

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

The description provides context that imported data becomes the master pool used by generate_resume, implying this tool should be used before generating resumes. However, it does not explicitly state when not to use it or mention alternatives like update_resume_data for modifications, leaving some ambiguity.

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

list_templatesA

List available resume templates.

Shows built-in templates for generate_resume, plus info on fetching additional templates from Overleaf dynamically.

Returns: JSON with built-in templates and Overleaf integration details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Describes the return type (JSON) and content (built-in templates and Overleaf integration details). Without annotations, the description carries burden; it discloses the output but does not detail structure or potential side effects. No contradictions.

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

Conciseness5/5

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

Very concise: three lines with front-loaded main action ('List available resume templates'). Every sentence adds value with no redundancy.

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

Completeness4/5

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

Covers key aspects: lists built-in and Overleaf info. Could detail Overleaf integration more, but given zero parameters and output schema existence, it is adequate. Sibling context is handled.

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

Parameters4/5

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

No parameters, schema coverage 100%. As per rubric, baseline 4 is appropriate; description adds nothing needed since there are no parameters.

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

Purpose5/5

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

Clearly states it lists available resume templates, specifically built-in ones for generate_resume and information on fetching additional templates from Overleaf. Differentiates from siblings like fetch_overleaf_template and browse_overleaf_templates by focusing on listing rather than fetching a specific template.

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

Usage Guidelines4/5

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

Provides context on when to use: to see templates before generating a resume, and to get info on Overleaf templates. However, lacks explicit when-not-to-use or direct comparison to siblings, though the purpose is clear enough.

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

score_resume_qualityA

Analyze resume quality with detailed scoring.

Evaluates bullet quality, ATS compatibility, keyword matching, and page layout. Returns actionable improvement suggestions.

Args: keywords: Optional list of keywords to match (from job description).

Returns: JSON with detailed quality scores and suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses analysis and return of scores/suggestions, implying a read-only operation, but does not explicitly state it is non-destructive or if it requires a specific resume context.

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

Conciseness4/5

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

The description is efficiently structured: a concise intro, bullet points for evaluation areas, and separate Args/Returns sections. Every sentence adds value without waste.

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

Completeness3/5

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

Given the simple schema and existence of an output schema, the description covers purpose and parameter adequately. However, it lacks context about which resume is analyzed (e.g., the current one) and prerequisites, leaving some ambiguity for an agent.

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

Parameters4/5

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

The only parameter, 'keywords', is described in the Args section as 'Optional list of keywords to match (from job description)', adding meaningful context beyond the schema's type and title. With 0% schema coverage, this description compensates well.

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

Purpose4/5

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

The description clearly states the tool analyzes resume quality with detailed scoring, listing specific criteria like bullet quality and ATS compatibility. It distinguishes itself from sibling tools (e.g., generate_resume, get_resume_data) as an analytical tool, though it could more explicitly state it scores an existing resume.

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

Usage Guidelines3/5

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

The description explains what the tool evaluates but provides no guidance on when to use it versus alternatives or prerequisites. There is no mention of when not to use it or which sibling tools to consider instead.

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

update_resume_dataA

Add, edit, or remove entries in the master resume data.

Args: section: Section to modify (contact, experience, projects, education, publications, skills). action: Action to perform (add, update, delete). Contact only supports update. index: Index of entry to update/delete (required for update/delete, not used for contact). data: JSON string or dict of entry data (required for add/update).

Returns: JSON with update status.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionYes
actionYes
indexNo
dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It explains the basic mutation behavior per parameter and notes the return type. It does not disclose error conditions or side effects, but for a CRUD tool, the transparency is adequate.

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

Conciseness4/5

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

The description is structured as a docstring and is concise. It covers the essential parameters and actions. However, the return statement is vague ('JSON with update status'), and some redundancy exists (e.g., index for contact).

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

Completeness4/5

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

Given the output schema exists, the description does not need to detail return fields. However, it lacks error handling hints or constraints on data structure per section. Overall, it is fairly complete for a mutation tool with moderate complexity.

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

Parameters5/5

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

Schema coverage is 0%, but the description adds detailed meaning for each parameter: section and action are enumerated in text, index is explained as required for update/delete but not for contact, and data is clarified as required for add/update. This compensates fully for the schema gap.

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

Purpose5/5

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

The description clearly states the tool modifies resume data by adding, editing, or removing entries. It lists specific sections and actions, making the purpose explicit and distinct from sibling tools like get_resume_data which is read-only.

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

Usage Guidelines4/5

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

The description provides usage context: which actions are supported per section, and notes that contact only supports update. However, it does not explicitly contrast with alternatives or state when not to use, so it lacks some guidance.

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

Tool Schema Changelog

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

  1. 11 tool updatesv0.4.0
    • First observedbrowse_overleaf_templates
    • First observedcompile_and_preview
    • First observedfetch_overleaf_template
    • First observedgenerate_resume
    • First observedgenerate_tailored_resume
    • First observedget_config
    • First observedget_resume_data
    • First observedimport_resume
    • First observedlist_templates
    • First observedscore_resume_quality
    • First observedupdate_resume_data

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation4/5

Tools are mostly distinct, but generate_resume and generate_tailored_resume have similar names and overlapping functionality, which could cause confusion. Other tools are clearly separated.

Naming Consistency5/5

All tools use consistent verb_noun snake_case pattern. Even compile_and_preview, though using 'and', follows a predictable verb_verb structure.

Tool Count5/5

With 11 tools, the server covers the full resume workflow without being bloated. Each tool serves a clear purpose.

Completeness4/5

The toolset covers import, data management, template discovery, generation, tailoring, compilation, and quality scoring. A minor gap is that compile_and_preview only returns an image, not a direct PDF download.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers