Skip to main content
Glama

ATS Resume Writer — MCP Server

Let your AI agent rewrite resumes that beat applicant tracking systems.

When a user asks Claude, ChatGPT, Cursor, or any MCP-capable agent "tailor my resume to this job posting," this server does the rewrite: keyword-matched to the job description, quantified bullets, ATS-safe structure (Workday, Greenhouse, iCIMS, Taleo) — with strict truthfulness guardrails. The engine never invents dates, metrics, job titles, or seniority levels that aren't in the input resume.

Tools

Tool

What it does

rewrite_resume

Takes resume text + a job description, returns the ATS-optimized rewrite as plain text and/or structured JSON. Requires ACCESS_CODE.

get_access_info

No auth. Explains how to get an access code (pay-what-you-want, $0 works), what the engine does, and whether the server is configured.

Related MCP server: resume-tailor-mcp-server

Setup

Get an access code — pay-what-you-want at Gumroad ($0 works; the code arrives in the delivery email along with the full resume kit).

The server is live as a remote MCP endpoint — connect any Streamable-HTTP-capable client directly:

https://ats-resume-writer-app.vercel.app/api/mcp

Or via Smithery: mutamiri/ats-resume-writer. On the hosted endpoint, pass your access code as the access_code argument to rewrite_resume (no env config needed).

Claude Desktop / Claude Code

{
  "mcpServers": {
    "ats-resume-writer": {
      "command": "npx",
      "args": ["-y", "tsx", "/path/to/ats-resume-writer-mcp/src/server.ts"],
      "env": { "ACCESS_CODE": "your-code-here" }
    }
  }
}

Or after npm run build:

{
  "mcpServers": {
    "ats-resume-writer": {
      "command": "node",
      "args": ["/path/to/ats-resume-writer-mcp/dist/server.js"],
      "env": { "ACCESS_CODE": "your-code-here" }
    }
  }
}

Cursor / other MCP clients

Same shape — stdio transport, ACCESS_CODE in env.

Quick start (development)

npm install
npm run typecheck
npm run build
ACCESS_CODE=your-code npm run test:mcp   # live smoke test against the hosted API
npm run stdio                            # run the MCP server on stdio

How it works

agent ──MCP/stdio──> this server ──HTTPS──> hosted rewrite API ──> Claude
                                            (access code gate,
                                             rate limiting,
                                             truthfulness guardrails)

The server is a thin client: the rewrite engine, rate limiting (10/hour), and guardrails live in the hosted API. Resume content is processed for the rewrite and not stored.

Truthfulness guardrails

The engine refuses to:

  • Emit any date not present verbatim in the input

  • Invent numbers, percentages, or dollar amounts (unambiguous arithmetic on input numbers is allowed, e.g. "5 days → 2 days" may be restated as "60% reduction")

  • Add seniority words ("Senior", "Lead", "Principal", "Director") to job titles the candidate didn't hold

  • Compute "X+ years of experience" from work-history dates

A truthful resume without a number beats a fabricated one with a fake number.

Companion kit

The same pay-what-you-want purchase includes the full kit: ATS-safe resume template, 7-step writing guide, 54-bullet quantified bullet bank across 9 roles, cover letter framework with worked examples, LinkedIn checklist, and STAR interview prompts.

License

MIT © SokoTech

Available Tools

2 tools
get_access_infoA

Get information about the ATS Resume Writer: how to obtain an access code (pay-what-you-want, $0 works), what the rewrite engine does, current configuration status, and the companion resume kit. Call this when rewrite_resume reports a missing or invalid access code.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool returns information about access code, rewrite engine, configuration, and kit. Since it's a read-only info tool, no destructive or auth details are needed, but it could mention the response format.

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 concise sentences, no fluff. Front-loaded with purpose and usage guidance.

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 zero parameters and no output schema, the description thoroughly explains the tool's purpose and output. It also references the sibling tool for when to use it, making the context complete.

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?

No parameters (0 params, 100% schema coverage). Description adds value by detailing what information is returned, compensating for lack of output schema.

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

Purpose5/5

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

The description clearly identifies the tool as providing information about the ATS Resume Writer, specifically listing access code, rewrite engine, configuration, and companion resume kit. It distinguishes from sibling rewrite_resume by focusing on informational retrieval.

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

Usage Guidelines5/5

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

Explicitly states when to call it: 'Call this when rewrite_resume reports a missing or invalid access code.' This gives clear context for use and differentiates from the sibling tool.

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

rewrite_resumeA

Rewrite a resume to maximize its ATS match score (Workday, Greenhouse, iCIMS, Taleo) against a specific job description. Strict truthfulness guardrails: never invents dates, metrics, titles, or seniority levels not present in the input. Returns the rewritten resume as ATS-safe plain text and/or structured JSON. Requires an access code (ACCESS_CODE env) — if missing, call get_access_info for how to get one.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: ATS-safe plain text, structured JSON, or both.both
resumeYes
job_descriptionYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses strict truthfulness guardrails (no invented details), return formats, and access code requirement. Adds behavioral context beyond basic operation.

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 concise sentences. Front-loaded with main purpose. Every sentence adds value: purpose, guardrails, return formats, prerequisite. No extraneous text.

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?

Covers input, output (text/JSON), behavioral constraints, prerequisite (access code), and sibling tool guidance. No output schema, but description explains return formats adequately. Complete for a rewriting tool of moderate complexity.

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 33% (only 'format' documented). Description compensates by explaining the role of 'resume' and 'job_description', and the guardrails applied. Adds meaning beyond schema for undocumented 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?

Description uses specific verb ('rewrite'), target resource ('resume'), and context ('maximize ATS match score'). Explicitly names sibling tool as alternative for access code retrieval, distinguishing the two.

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

Usage Guidelines4/5

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

States when to use (matching resume to job description). Provides prerequisite (ACCESS_CODE) and fallback action (call get_access_info). Does not explicitly state when NOT to use, but sibling tool context implies alternative for access issues.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedget_access_info
    • First observedrewrite_resume

TDQS

A4.4/5.0
Disambiguation5/5

The two tools have completely different purposes: one provides information about access and configuration, the other performs the actual resume rewriting. No ambiguity between them.

Naming Consistency5/5

Both tools follow a consistent verb_noun snake_case pattern (get_access_info, rewrite_resume), making the naming predictable and clear.

Tool Count3/5

With only two tools, the server feels scoped very narrowly. While the core functionality is present, the domain suggests potential for additional tools (e.g., list templates, validate resume), making it borderline thin.

Completeness3/5

The server covers the main rewrite and access info, but lacks tools for managing multiple resumes, checking access code validity independently, or exploring companion resources. Minor gaps exist.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mutamiri-sudo/ats-resume-writer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server