
ATS Engine
io.github.VeriWorklyPublished by GitHub account VeriWorklyv0.15.1Updated Oct 30, 2026
Read your own resume the way an ATS does and score it with a published, deterministic rubric.
Overview
Scores your own resume the way an applicant tracking system reads it, using a published deterministic rubric, and explains each failed check.
- What you can do
- Check a resume file or pasted text and get a 0-100 readiness score, verdict, category scores and every failed check with evidence and a fix
- Compare a resume against a job posting for job match, requirement-by-requirement verdicts and missing keywords and skills
- Look up a single rubric rule to see what it checks, its points and how to fix it, optionally weighted for a country
- Show the text in the order an ATS reads it, plus measured layout details such as columns, tables and hidden text
- Read the full rubric as a JSON resource
- When to use it
- Useful when you are preparing your own resume and want to know how well it parses and reads before applying, or why a particular check failed. Also handy for comparing a resume against a specific posting.
- Requirements
- Runs locally over stdio via npx, so Node.js 22.12 or later is needed. No accounts, API keys or environment variables. Resume files must be PDF, DOCX, HTML, TXT, MD or JSON Resume; postings must be TXT, MD, PDF, DOCX or saved HTML. Absolute paths are recommended; files over 20 MB and PDFs without a text layer are refused.
Installation
In SourceWeft
- Open ATS Engine in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
ATS Engine MCP server
An MCP server that lets an AI assistant (Claude, Cursor, VS
Code Copilot and others) read your own resume the way an applicant tracking system (ATS)
does, and score it with @veriworkly/ats-engine's published, deterministic
rubric.
Setup for each client, every tool and its inputs, and example prompts: docs.veriworkly.com/ats-engine/tools/mcp.
Ask your assistant things like "check my resume at ~/Documents/cv.pdf", "how well does it match this job posting?", "why did it fail the date check?" or "show me how an ATS reads my resume".
The score comes from the rubric (RUBRIC.md), not from a model. The same file always gets the same score. The assistant explains the result and helps you fix what failed.
Install
You need Node.js 22.12 or later. Every client below runs the server with
npx -y @veriworkly/ats-engine-mcp.
Claude Code
On native Windows (not WSL), wrap npx in cmd /c:
Claude Desktop
Open Settings → Developer → Edit Config, add the server to claude_desktop_config.json, and
restart Claude Desktop:
Cursor
Add it to ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project):
VS Code
Add it to .vscode/mcp.json in your workspace, or run MCP: Add Server from the Command
Palette:
Tools
Every tool returns readable text for the assistant and its result as structured JSON
(structuredContent, described by each tool's outputSchema).
The resource rubric://default is the whole rubric as JSON.
Inputs.
- Resume files:
.pdf,.docx,.html,.txt,.md, or a.jsonJSON Resume or ats-resume document. Postings:.txt,.md,.pdf,.docx, or a saved.htmlpage; ajob_pathof any other type is refused, since a posting's words come back in the answer. - Give absolute paths.
~/is read as your home folder; any other relative path is read from the folder the server was started in. - Pasted
textandjob_textmay be up to 200 000 characters. A posting, pasted or read fromjob_path, is scored on its first 20 000 characters; a longer one is cut there, andcheck_resume'sparsingWarningssays so. - Files over 20 MB are refused, and so are folders, pipes, devices and network paths
(
\\host\share\…; on Windows also//host/share/…). So is a PDF with no text layer: an ATS cannot read a scan either. language(check_resume,match_job) isen,de,fr,hi,esorpt;enreads English only. Without it, the language is detected from the resume and from the posting. It sets the language of both, so give it only when the resume was read in the wrong one:enwith a German posting reads the posting as English too.regionisUS,GB,DE,FR,IN,ES,BR,PT,MX,AR,COorCL. Without it, the region is inferred from the resume.target_atsisgreenhouse,leverortaleo. It adds what that vendor documents publicly, each note with a link to the vendor's page. It never changes the score.
Advice. check_resume ends with advice, a list that is never scored. For a file (not
pasted text) it covers the name (Resume_final_v3 (2).pdf reads as a draft; a Firstname-Lastname-Resume.pdf name is
suggested), a size over 2 MB, a password, and tracked changes or comments left in a Word
document. For a US resume it also covers details that can invite age bias. With target_ats it
adds the vendor's notes.
Privacy
The server runs on your computer, over stdio. It makes no network requests and calls no AI model. It reads only the files you name in a request, a PDF, DOCX or HTML file in a separate process that is stopped after 60 seconds or when the request is cancelled, as many at once as your computer has CPU cores, and nothing leaves your machine except what your assistant itself sends to its model provider: the tool results it reads, which include text from your resume.
Intended use
[!IMPORTANT] This is a tool for candidates to check their own resume. Do not use it to screen, rank or reject other people. Using it that way may make it an automated employment decision tool under laws such as New York City Local Law 144 and the EU AI Act, which carry duties this package does not meet for you. See Intended use.
A score measures how well a resume parses and reads. It says nothing about the person.
From source
License
MIT
Source: packages/mcp/README.md at commit 80ae160
Tools
0Version history
15- v0.15.1LatestOct 29, 2026
- v0.15.0Oct 24, 2026
- v0.14.0Oct 23, 2026
- v0.13.0Oct 23, 2026
- v0.12.0Oct 23, 2026
- v0.11.0Oct 23, 2026
- v0.10.0Oct 21, 2026
- v0.9.0Oct 21, 2026
- v0.8.0Oct 20, 2026
- v0.6.0Oct 19, 2026
- v0.5.0Oct 15, 2026
- v0.4.1Oct 14, 2026
- v0.4.0Oct 12, 2026
- v0.3.4Oct 11, 2026
- v0.3.3Oct 10, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
