ats-resume-writer
Optimizes resumes for Greenhouse applicant tracking system, ensuring keyword matching and ATS-safe formatting.
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 |
| Takes resume text + a job description, returns the ATS-optimized rewrite as plain text and/or structured JSON. Requires |
| 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).
Hosted (no install) — recommended
The server is live as a remote MCP endpoint — connect any Streamable-HTTP-capable client directly:
https://ats-resume-writer-app.vercel.app/api/mcpOr 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 stdioHow 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 toolsget_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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: ATS-safe plain text, structured JSON, or both. | both |
| resume | Yes | ||
| job_description | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.0- First observed
get_access_info - First observed
rewrite_resume
TDQS
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.
Both tools follow a consistent verb_noun snake_case pattern (get_access_info, rewrite_resume), making the naming predictable and clear.
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.
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
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
Score and tailor your CV/resume against a job posting — for AI agents and humans, no-login trial.
ATS resume scoring, job analysis, interview prep, and auto-apply that verifies each submission.
Free ATS resume score and job-match checker: scores a resume against a job description.
A job-search companion: tailor your CV to a role, score fit, fix ATS issues. Also via MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomates ATS resume scanning via Jobscan, enabling AI to iteratively scan, analyze gaps, optimize, and rescan resumes against job descriptions to improve match rates.3-
- FlicenseNot gradedqualityCmaintenanceHelps job seekers tailor their resume and generate cover letters against a specific job posting, powered by Claude.-
- FlicenseAqualityCmaintenanceEnables tailoring resumes to job descriptions by scraping JDs, applying rules, and generating optimized DOCX resumes.11-
- AlicenseAqualityAmaintenanceTailor your CV to any job posting with ATS keyword scoring and clean PDF/DOCX export.63MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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