ATSPrep
REMOTE · ATSPREP.COM
Free resume tools: ATS score, job match, bullet and LinkedIn checks, tailoring, interview prep.
Available components
Last scanned (14 hours ago)
Scores higher than 85% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Productivity and Notes
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability80
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4244 tokens (~169/item across 25 items; 19 tools + 6 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management57
- Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 19 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “check_bullets” rewrote its description, which is the text the model reads security
- Tool “check_resume” rewrote its description, which is the text the model reads security
- Tool “fetch_job_post” rewrote its description, which is the text the model reads security
- Tool “improve_bullet” rewrote its description, which is the text the model reads security
- “fetch_job_post” added an optional parameter “questions” cosmetic
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
- Tool “check_bullets” rewrote its description, which is the text the model reads security
- Tool “check_resume” rewrote its description, which is the text the model reads security
- Tool “keyword_scan” rewrote its description, which is the text the model reads security
- Tool “match_job” rewrote its description, which is the text the model reads security
- 31 Oct 26 0
- Tool “check_bullets” rewrote its description, which is the text the model reads security
- Tool “check_resume” rewrote its description, which is the text the model reads security
- Tool “keyword_scan” rewrote its description, which is the text the model reads security
- Tool “match_job” rewrote its description, which is the text the model reads security
- Tool “suggest_roles” rewrote its description, which is the text the model reads security
- 30 Oct 26 +1
- Tool “check_bullets” rewrote its description, which is the text the model reads security
- Tool “check_resume” rewrote its description, which is the text the model reads security
- Tool “keyword_scan” rewrote its description, which is the text the model reads security
- Tool “match_job” rewrote its description, which is the text the model reads security
- 29 Oct 26 0
- Tool “check_bullets” rewrote its description, which is the text the model reads security
- Tool “check_resume” rewrote its description, which is the text the model reads security
- Tool “keyword_scan” rewrote its description, which is the text the model reads security
- Tool “match_job” rewrote its description, which is the text the model reads security
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 0
- Tool “check_bullets” rewrote its description, which is the text the model reads security
- Tool “check_resume” rewrote its description, which is the text the model reads security
- Tool “keyword_scan” rewrote its description, which is the text the model reads security
- Tool “match_job” rewrote its description, which is the text the model reads security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://atsprep.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=atsprep.com | CN=WE1,O=Google Trust Services,C=US | 23 Oct 2026 | 21 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 9eefca38a64b457a0e4fcce25e9be7bf |
| SANs: atsprep.com, ops.atsprep.com, *.ops.atsprep.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of atsprep.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| atsprep.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval' https://datafa.st https://static.cloudflareinsights.com https://accounts.google.com/gsi/client; script-src-attr 'none'; style-src 'self' 'unsafe-inline' https://accounts.google.com/gsi/style; img-src 'self' data: blob: https:; font-src 'self'; connect-src 'self' https://datafa.st https://cloudflareinsights.com https://wywpffrbvrplgqemxbmc.supabase.co https://wywpffrbvrplgqemxbmc.functions.supabase.co https://accounts.google.com/gsi/; worker-src 'self' blob:; child-src 'self' blob:; frame-src 'self' https://accounts.google.com/gsi/; manifest-src 'self'; media-src 'self' data: blob:; form-action 'self'; upgrade-insecure-requests |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | accelerometer=(), bluetooth=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(self), payment=(), serial=(), usb=(), xr-spatial-tracking=(), browsing-topics=(), clipboard-write=(self) |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://atsprep.com/mcp | Verified | 200 | |
| http (plaintext) | http://atsprep.com/mcp | HTTPS enforced | 301 | https://atsprep.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
action_verbs Find stronger action verbs ~105
Use this when the user wants stronger verbs or synonyms for resume wording. Suggest resume action verbs. Pass a weak opener ("responsible for", "helped") for direct swaps and why they read weak, or the work in plain words ("trained new staff", "cut costs") for the matching verb groups with an example bullet. Leave query empty for every group.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | Optional. A weak verb or phrase, or the kind of work in plain words. |
No output schema declared.
No examples provided.
check_bullets Check resume bullets ~175
Use this when the user wants a few resume bullet points checked without sending the whole resume. Give each resume bullet a score, a verdict and specific fixes with stable codes: weak openers, missing scale or result, numbers that show neither, hard-to-believe claims, first person, vague claims. Scored as check_resume scores bullets, with the same severities. Up to 30 bullets of up to 600 characters each; blank items are skipped and reported by index. Rules version 2026-10-31.1.
| Name | Type | Req | Description |
|---|---|---|---|
| bullets | array | yes | One resume bullet per item, at most 30. |
| language | string | – | The bullets' language as an ISO 639-1 code ("fr", "tr"). Pass it when they aren't in English: rules that judge English wording are skipped. |
No output schema declared.
No examples provided.
check_linkedin_about Check a LinkedIn About section ~106
Use this when the user wants their LinkedIn About or summary section reviewed. Check a LinkedIn About section: what shows before "see more" on a phone and on a computer, whether the opening says who they are, results with numbers, buzzwords, a clear next step, and the 2,600-character limit.
| Name | Type | Req | Description |
|---|---|---|---|
| about | string | yes | The whole About section. |
| role | string | – | Optional. The job title the user wants to be found for. |
No output schema declared.
No examples provided.
check_linkedin_headline Check a LinkedIn headline ~124
Use this when the user wants their existing LinkedIn headline reviewed. Check a LinkedIn headline: length against the 220-character limit, what shows in search results before the cut, whether it leads with a searchable job title, and buzzwords or vague claims to replace.
| Name | Type | Req | Description |
|---|---|---|---|
| focus | string | – | Optional. Their specialty or industry. |
| headline | string | yes | The headline as it reads now. |
| role | string | – | Optional. The job title the user wants to be found for. |
| skills | string | – | Optional. Main skills, comma separated. |
No output schema declared.
No examples provided.
check_resume Check a resume ~363
Use this when the user shares a resume (pasted text or a file's text) and wants it checked, scored, reviewed for ATS problems, or wants to know what to fix. Score a resume from 0 to 100 as atsprep.com does (an AI line judge labels each bullet against the published rubric; fixed maths and rules make the score) and list each issue with a stable code, where it is and how to fix it. Also reports how the text parsed (roles, experience and project bullets, education, skills and skill groups, input and scored word counts, with definitions). Role-specific advice, such as seniority signals, is given only when the resume names a target title or you pass target_role or job_description; with job_description the score becomes the fit for that job (0.5 requirements met, 0.3 evidence, 0.2 readability, capped for missing hard requirements or impossible claims) and it also returns job_fit and a keyword match summary. Pass language when the resume isn't in English. Resume up to 30,000 characters. Rules version 2026-10-31.1.
| Name | Type | Req | Description |
|---|---|---|---|
| job_description | string | – | The full job posting as plain text, including its requirements (120–20,000 characters). For a link, call fetch_job_post first. |
| language | string | – | The resume's language as an ISO 639-1 code ("fr", "tr", "es"). Pass it when the resume isn't in English: rules that judge English wording are skipped for it. |
| resume_text | string | yes | The whole resume as plain text, one heading, role or bullet per line. |
| target_role | string | – | Optional. The job title the candidate is applying for. |
No output schema declared.
No examples provided.
draft_cover_letter Draft a cover letter ~302
Use this when the user wants a cover letter for a job. Draft a cover letter from the user's resume and the job posting with fixed rules: name, contact details and up to two results from the resume, the job title and top keywords from the posting. Facts that are missing show as [square-bracket] gaps for the user to fill, never as stand-ins. Returns the letter, the gaps and a checklist.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | – | Optional. The company they are applying to. |
| current_title | string | – | Optional. The user's current or last job title. |
| string | – | Optional. | |
| hiring_manager | string | – | Optional. The hiring manager's name, if known. |
| job_description | string | – | The full job posting as plain text, including its requirements (120–20,000 characters). For a link, call fetch_job_post first. |
| name | string | – | Optional. Overrides the name read from the resume. |
| phone | string | – | Optional. |
| results | string | – | Optional. One or two real results, one per line. |
| resume_text | string | – | The whole resume as plain text, one heading, role or bullet per line. |
| role | string | – | Optional. The job title they are applying for. |
| style | string | – | classic (default), direct, or career-change. |
| why | string | – | Optional. Why this company, in the user's words. |
No output schema declared.
No examples provided.
draft_resignation_letter Draft a resignation letter ~290
Use this when the user wants to resign and needs a resignation letter or their last working day. Draft a short, professional resignation letter and work out the last working day from the notice period. Missing facts show as [square-bracket] gaps. Returns the letter, the last day and a checklist (notice stated, no complaints, length).
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | – | Optional. |
| date | string | – | Optional. The day the letter is handed in, YYYY-MM-DD. Default today (UTC). |
| manager | string | – | Optional. Their manager's name. |
| name | string | – | Optional. The user's name. |
| notice | string | – | Notice period: 1w, 2w (default) or 4w. Use notice_days for anything else. |
| notice_days | integer | – | Optional. A notice period in days, instead of notice. |
| offer_handover | boolean | – | Offer to help hand over. Default true. |
| reason | string | – | Optional. A one-line reason; none (default) gives no reason. |
| role | string | – | Optional. Their job title. |
| thanks | string | – | Optional. Something specific to thank them for. |
| tone | string | – | formal (default), warm or short. |
| working_days_only | boolean | – | Count notice in working days (Monday to Friday). Default false: calendar days. |
No output schema declared.
No examples provided.
fetch_job_post Fetch a job post ~212
Use this when the user gives a job posting link instead of its text; then pass the result to the job tools. Read a public job posting from its link and return the title, company, location and full description as plain text, ready for match_job, tailor_resume, keyword_scan or interview_questions. Reads LinkedIn, Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Workday and most company careers pages. Some sites block reading; then ask the user to paste the text. With questions: true it also returns the application form's questions where the site publishes them; eeo, legal, consent, ai-use and trap questions are the user's to answer.
| Name | Type | Req | Description |
|---|---|---|---|
| questions | boolean | – | Also return the posting's application form questions (Greenhouse, Lever, Ashby, Workable), each with a kind: profile, experience, free-text, eeo, legal, consent, ai-use or trap. |
| url | string | yes | The job posting's public link (https). |
No output schema declared.
No examples provided.
generate_linkedin_headline Write LinkedIn headlines ~212
Use this when the user wants new LinkedIn headline ideas. Write LinkedIn headline options from the user's answers, each in a proven pattern (title and focus, title and result, title and who you help…), with its length and roughly what shows in search before the cut. Uses only the answers given.
| Name | Type | Req | Description |
|---|---|---|---|
| audience | string | – | Optional. Who they help, e.g. "early-stage startups". |
| focus | string | – | Optional. Their specialty or industry, e.g. "B2B SaaS onboarding". |
| next | string | – | Optional. What they want next, e.g. "open to product roles in London". |
| results | string | – | Optional. One or two real results, one per line, with the numbers the user gave. |
| role | string | yes | The job title the user wants to be found for. |
| skills | string | – | Optional. Main skills, comma separated. |
| years | string | – | Optional. Years of experience, as a number. |
No output schema declared.
No examples provided.
improve_bullet Improve a resume bullet ~188
Use this when the user wants one resume bullet rewritten or made stronger. Check one resume bullet as check_bullets does (score, verdict, fixes) and suggest up to three stronger rewrites that keep every fact as given. ask_user names the one fact to ask the user for; never invent it. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.
| Name | Type | Req | Description |
|---|---|---|---|
| bullet | string | yes | One resume bullet. |
| company | string | – | Optional. The employer this bullet sits under. |
| role | string | – | Optional. The job title this bullet sits under. |
No output schema declared.
No examples provided.
interview_questions Interview practice questions ~165
Use this when the user is preparing for an interview and wants likely questions, for a specific job or in general. Interview questions to practise, each with what the interviewer is listening for, plus STAR answer tips. With a job_description, questions come from its skills and duties, along with what to research and questions to ask; with resume_text, from the user's own roles. Rule-based.
| Name | Type | Req | Description |
|---|---|---|---|
| job_description | string | – | Optional. The job posting as plain text. |
| kind | string | – | Optional. One group: posting, resume, about, behavioural, role or closing. Default all. |
| limit | integer | – | How many questions. Default 12. |
| resume_text | string | – | The whole resume as plain text, one heading, role or bullet per line. |
No output schema declared.
No examples provided.
keyword_scan Rank a job post's keywords ~140
Use this when the user has only a job posting (no resume yet) and wants its key skills and keywords. List the skills, tools and requirements a job posting asks for, ranked by how hard it leans on each (repetition, position, required or preferred headings), with the high-priority ones flagged. Use match_job to see which a resume already shows. Posting 120–20,000 characters. Rules version 2026-10-31.1.
| Name | Type | Req | Description |
|---|---|---|---|
| job_description | string | yes | The full job posting as plain text, including its requirements (120–20,000 characters). For a link, call fetch_job_post first. |
No output schema declared.
No examples provided.
list_templates List resume templates ~65
Use this when the user asks for resume templates, designs or example resumes for a role. List ATSPrep's resume designs, each with a link that opens Studio in that design, and the example resumes by role, each with a link that opens it in Studio and a preview image.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
match_job Match a resume to a job ~196
Use this when the user has a resume and a job posting and asks how well they match, what keywords are missing, or whether to apply. For rewrites, use tailor_resume instead. Compare a resume with a job posting: the posting's keywords found in the resume (with how they matched: exact, normalized, alias or stem, and the matched span), the ones missing with the posting sentence they come from, each term's weight and whether the posting lists it as required or preferred, and weighted overall, required and preferred coverage. Posting 120–20,000 characters. Rules version 2026-10-31.1.
| Name | Type | Req | Description |
|---|---|---|---|
| job_description | string | yes | The full job posting as plain text, including its requirements (120–20,000 characters). For a link, call fetch_job_post first. |
| resume_text | string | yes | The whole resume as plain text, one heading, role or bullet per line. |
No output schema declared.
No examples provided.
open_in_studio Open in ATSPrep Studio ~110
Use this when the user wants to edit their resume in an editor, apply a template, or download it as a PDF or Word file. Make a link that opens this resume in ATSPrep Studio, the free editor, so the user can fix it, pick a template and download a PDF. The text travels in the link's #fragment, which is never sent to a server.
| Name | Type | Req | Description |
|---|---|---|---|
| resume_text | string | yes | The whole resume as plain text, one heading, role or bullet per line. |
No output schema declared.
No examples provided.
review_interview_answer Review an interview answer ~247
Use this when the user gives an answer to an interview question and wants feedback on it. Review the user's answer to an interview question: a rating, length and speaking time, STAR coverage for stories, filler words, specific checks, the follow-up an interviewer would likely ask, and a stronger version that keeps to the user's own facts. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | The user's answer, as they would say it. |
| kind | string | – | story (default: a past example, scored on STAR), pitch (tell me about yourself), plan (how would you…), number (salary or a figure) or close (questions for them). |
| question | string | yes | The interview question. |
| resume_text | string | – | Optional. The resume, so the stronger answer can use real facts from it. |
No output schema declared.
No examples provided.
suggest_roles Suggest roles this resume fits ~217
Use this when the user asks what jobs or roles they could apply for, or what their resume fits. Read the resume against what postings for each of 60 roles (office, health, retail, hospitality, trades, tech, sales, design and more) usually ask for, phrased as postings in Kenya, the Gulf, India, the UK and the US put it, and return up to 3 roles: how many of those asks the resume shows (a count, never a percent), its strongest ones, the first gaps, whether it matches their own job title, and search links for openings near them. These are typical asks, not a real posting: then ask the user for a real opening and run match_job or tailor_resume on it. Never tailor a resume to the typical asks.
| Name | Type | Req | Description |
|---|---|---|---|
| location | string | – | Optional. The city or country to search openings in; defaults to the resume's own location. |
| resume_text | string | yes | The whole resume as plain text, one heading, role or bullet per line. |
No output schema declared.
No examples provided.
tailor_resume Tailor a resume to a job ~258
Use this when the user wants their resume rewritten or tailored for a specific job posting. Tailor a resume to a job posting: the posting's keywords the resume is missing (from match_job's rules) and suggested rewrites of the user's own summary and bullets that bring in the posting's terms only where the existing line already supports them. Each suggestion lists the posting terms it borrowed and confirm_with_user lists terms to ask about, never to add unasked. End the reply with next_step: the link that opens the resume in ATSPrep to check the edits and download. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.
| Name | Type | Req | Description |
|---|---|---|---|
| job_description | string | yes | The full job posting as plain text, including its requirements (120–20,000 characters). For a link, call fetch_job_post first. |
| resume_text | string | yes | The whole resume as plain text, one heading, role or bullet per line. |
No output schema declared.
No examples provided.
write_summary Write a resume summary ~177
Use this when the user wants a resume summary or professional profile written from their resume. Draft professional summaries from a resume: rule-based drafts built from its title, skills and the bullets that carry a figure, plus AI drafts that use only facts in the resume. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.
| Name | Type | Req | Description |
|---|---|---|---|
| resume_text | string | yes | The whole resume as plain text, one heading, role or bullet per line. |
| target_title | string | – | Optional. The job title the summary should aim at. |
No output schema declared.
No examples provided.
How do I install the ATSPrep MCP server?
ATSPrep is a hosted endpoint at https://atsprep.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · atsprep.com
claude mcp add --transport http devabubakar-atsprep 'https://atsprep.com/mcp'
What is the ATSPrep MCP server?
ATSPrep is an MCP server listed in the public MCP registry as io.github.Devabubakar/atsprep. Free resume tools: ATS score, job match, bullet and LinkedIn checks, tailoring, interview prep. This page covers its hosted endpoint (https://atsprep.com/mcp).
Is the ATSPrep MCP server safe to use?
ATSPrep scores 82 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ATSPrep MCP server expose?
ATSPrep exposes 19 tools: check_resume, match_job, check_bullets, open_in_studio, list_templates, and 14 more. Their descriptions and schemas cost roughly 3,652 tokens of context every time the server is loaded.
Does the ATSPrep MCP server require authentication?
No. We connected to ATSPrep without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the ATSPrep MCP server still maintained?
ATSPrep is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.