Turns the facts of your resume into a clean one-column PDF document to print or send.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants to confirm that a resume PDF made from their facts has machine-readable text: it builds the same PDF as generate_resume_pdf from the same fields, reads the text back with pdf.js, and reports the page count, whether text runs top to bottom, and which headings and bullets are missing or out of order. With an optional uploaded resume PDF it checks that file instead, comparing only the name, summary and bullets given in the fields. Does not score the resume, rewrite it, or predict how a specific applicant tracking system ranks it.
Full name as it should appear, e.g. "Maria Santos".
Optional: the resume PDF to check, e.g. the Maria-Santos-resume.pdf downloaded from generate_resume_pdf. Without it, the tool builds the PDF from the fields and checks that.
Up to 60 skills, e.g. ["SQL", "Python", "Tableau"]. Items with a label and a colon print one per line.
Up to 6 contact items shown on one line, e.g. ["[email protected]", "+1 555 0100", "Austin, TX", "linkedin.com/in/maria"].
Optional short profile paragraph in the user's own words, e.g. "Analyst with 6 years in retail pricing."
Optional one-line professional title, e.g. "Senior Data Analyst".
Up to 8 projects, e.g. [{"name":"Price tracker","bullets":["Scrapes 3 stores daily"]}].
Layout: classic (centered header, one column), modern (left header with a blue accent rule) or compact (smaller type). Default classic.
Up to 8 education entries, e.g. [{"degree":"BSc Economics","school":"UT Austin","end":"2018"}].
Paper size: letter (US, default) or a4.
Up to 15 jobs in the order to print (usually newest first), e.g. [{"title":"Analyst","org":"Acme","start":"2021-03","end":"present","bullets":["Built dashboards"]}].
Up to 15 certifications, e.g. [{"name":"PMP","issuer":"PMI","date":"2022"}].
true to tighten spacing, margins (down to 0.5 in) and type size (down to 9 pt) so the resume fits one page. The result says if it still does not fit.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http resume-pdf https://resume-pdf.zovo.one/mcp
Use this when the user wants to confirm that a resume PDF made from their facts has machine-readable text: it builds the same PDF as generate_resume_pdf from the same fields, reads the text back with pdf.js, and reports the page count, whether text runs top to bottom, and which headings and bullets are missing or out of order. With an optional uploaded resume PDF it checks that file instead, comparing only the name, summary and bullets given in the fields. Does not score the resume, rewrite it, or predict how a specific applicant tracking system ranks it.
| Argument | Type | Description |
|---|---|---|
| file | object | Optional: the resume PDF to check, e.g. the Maria-Santos-resume.pdf downloaded from generate_resume_pdf. Without it, the tool builds the PDF from the fields and checks that. |
| name* | string | Full name as it should appear, e.g. "Maria Santos". |
| skills | array | Up to 60 skills, e.g. ["SQL", "Python", "Tableau"]. Items with a label and a colon print one per line. |
| contact | array | Up to 6 contact items shown on one line, e.g. ["[email protected]", "+1 555 0100", "Austin, TX", "linkedin.com/in/maria"]. |
| summary | string | Optional short profile paragraph in the user's own words, e.g. "Analyst with 6 years in retail pricing." |
| headline | string | Optional one-line professional title, e.g. "Senior Data Analyst". |
| projects | array | Up to 8 projects, e.g. [{"name":"Price tracker","bullets":["Scrapes 3 stores daily"]}]. |
| template | string | Layout: classic (centered header, one column), modern (left header with a blue accent rule) or compact (smaller type). Default classic. |
| education | array | Up to 8 education entries, e.g. [{"degree":"BSc Economics","school":"UT Austin","end":"2018"}]. |
| page_size | string | Paper size: letter (US, default) or a4. |
| experience | array | Up to 15 jobs in the order to print (usually newest first), e.g. [{"title":"Analyst","org":"Acme","start":"2021-03","end":"present","bullets":["Built dashboards"]}]. |
| certifications | array | Up to 15 certifications, e.g. [{"name":"PMP","issuer":"PMI","date":"2022"}]. |
| fit_to_one_page | boolean | true to tighten spacing, margins (down to 0.5 in) and type size (down to 9 pt) so the resume fits one page. The result says if it still does not fit. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "Optional: the resume PDF to check, e.g. the Maria-Santos-resume.pdf downloaded from generate_resume_pdf. Without it, the tool builds the PDF from the fields and checks that."
},
"name": {
"type": "string",
"maxLength": 80,
"description": "Full name as it should appear, e.g. \"Maria Santos\"."
},
"skills": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"description": "One skill or a labeled group, e.g. \"SQL\" or \"Languages: English, Spanish\"."
},
"maxItems": 60,
"description": "Up to 60 skills, e.g. [\"SQL\", \"Python\", \"Tableau\"]. Items with a label and a colon print one per line."
},
"contact": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"description": "One contact item as plain text, e.g. \"[email protected]\"."
},
"maxItems": 6,
"description": "Up to 6 contact items shown on one line, e.g. [\"[email protected]\", \"+1 555 0100\", \"Austin, TX\", \"linkedin.com/in/maria\"]."
},
"summary": {
"type": "string",
"maxLength": 1200,
"description": "Optional short profile paragraph in the user's own words, e.g. \"Analyst with 6 years in retail pricing.\""
},
"headline": {
"type": "string",
"maxLength": 140,
"description": "Optional one-line professional title, e.g. \"Senior Data Analyst\"."
},
"projects": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"date": {
"type": "string",
"maxLength": 20,
"description": "Optional date as YYYY-MM, a year, or \"present\", e.g. \"2024\"."
},
"link": {
"type": "string",
"maxLength": 120,
"description": "Optional link as plain text, e.g. \"github.com/maria/price-tracker\"."
},
"name": {
"type": "string",
"maxLength": 120,
"description": "Project name, e.g. \"Price tracker\"."
},
"bullets": {
"type": "array",
"items": {
"type": "string",
"maxLength": 400,
"description": "One line about the project, e.g. \"Scrapes 3 stores daily\"."
},
"maxItems": 6,
"description": "Up to 6 bullet points."
}
}
},
"maxItems": 8,
"description": "Up to 8 projects, e.g. [{\"name\":\"Price tracker\",\"bullets\":[\"Scrapes 3 stores daily\"]}]."
},
"template": {
"enum": [
"classic",
"modern",
"compact"
],
"type": "string",
"description": "Layout: classic (centered header, one column), modern (left header with a blue accent rule) or compact (smaller type). Default classic."
},
"education": {
"type": "array",
"items": {
"type": "object",
"properties": {
"end": {
"type": "string",
"maxLength": 20,
"description": "Optional end as YYYY-MM, a year, or \"present\", e.g. \"2018-05\"."
},
"start": {
"type": "string",
"maxLength": 20,
"description": "Optional start as YYYY-MM or a year, e.g. \"2014\"."
},
"degree": {
"type": "string",
"maxLength": 120,
"description": "Degree or program, e.g. \"BSc Economics\"."
},
"school": {
"type": "string",
"maxLength": 120,
"description": "School, e.g. \"University of Texas\"."
},
"details": {
"type": "string",
"maxLength": 400,
"description": "Optional one line such as honors or coursework, e.g. \"Magna cum laude\"."
},
"location": {
"type": "string",
"maxLength": 80,
"description": "Optional city, e.g. \"Austin, TX\"."
}
}
},
"maxItems": 8,
"description": "Up to 8 education entries, e.g. [{\"degree\":\"BSc Economics\",\"school\":\"UT Austin\",\"end\":\"2018\"}]."
},
"page_size": {
"enum": [
"letter",
"a4"
],
"type": "string",
"description": "Paper size: letter (US, default) or a4."
},
"experience": {
"type": "array",
"items": {
"type": "object",
"properties": {
"end": {
"type": "string",
"maxLength": 20,
"description": "End month as YYYY-MM, a year, or \"present\", e.g. \"present\"."
},
"org": {
"type": "string",
"maxLength": 120,
"description": "Employer or organization, e.g. \"Acme Retail\"."
},
"start": {
"type": "string",
"maxLength": 20,
"description": "Start month as YYYY-MM (or a year), e.g. \"2021-03\"."
},
"title": {
"type": "string",
"maxLength": 120,
"description": "Job title, e.g. \"Data Analyst\"."
},
"bullets": {
"type": "array",
"items": {
"type": "string",
"maxLength": 400,
"description": "One achievement or duty as written by the user, e.g. \"Cut report time by 40%\"."
},
"maxItems": 10,
"description": "Up to 10 bullet points, e.g. [\"Built the weekly pricing dashboard\"]."
},
"location": {
"type": "string",
"maxLength": 80,
"description": "Optional city or \"Remote\", e.g. \"Austin, TX\"."
}
}
},
"maxItems": 15,
"description": "Up to 15 jobs in the order to print (usually newest first), e.g. [{\"title\":\"Analyst\",\"org\":\"Acme\",\"start\":\"2021-03\",\"end\":\"present\",\"bullets\":[\"Built dashboards\"]}]."
},
"certifications": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"date": {
"type": "string",
"maxLength": 20,
"description": "Optional date as YYYY-MM or a year, e.g. \"2023-06\"."
},
"name": {
"type": "string",
"maxLength": 160,
"description": "Certification name, e.g. \"AWS Cloud Practitioner\"."
},
"issuer": {
"type": "string",
"maxLength": 120,
"description": "Optional issuer, e.g. \"Amazon Web Services\"."
}
}
},
"maxItems": 15,
"description": "Up to 15 certifications, e.g. [{\"name\":\"PMP\",\"issuer\":\"PMI\",\"date\":\"2022\"}]."
},
"fit_to_one_page": {
"type": "boolean",
"description": "true to tighten spacing, margins (down to 0.5 in) and type size (down to 9 pt) so the resume fits one page. The result says if it still does not fit."
}
}
}Use this when the user wants their resume as a PDF file from facts they provide (name, contact line, summary, jobs with dates and bullets, education, skills, projects, certifications). Returns a one-column PDF with selectable text in reading order, a plain-text copy, a JSON copy of the data, the page count, and whether fit_to_one_page succeeded. Templates: classic, modern, compact; Letter or A4. Lays out only the text given: it does not write, embellish or verify resume content. Does not make cover letters, Word files, two-column designs or photos. Download links expire in about 1 hour.
| Argument | Type | Description |
|---|---|---|
| name* | string | Full name as it should appear, e.g. "Maria Santos". |
| skills | array | Up to 60 skills, e.g. ["SQL", "Python", "Tableau"]. Items with a label and a colon print one per line. |
| contact | array | Up to 6 contact items shown on one line, e.g. ["[email protected]", "+1 555 0100", "Austin, TX", "linkedin.com/in/maria"]. |
| summary | string | Optional short profile paragraph in the user's own words, e.g. "Analyst with 6 years in retail pricing." |
| headline | string | Optional one-line professional title, e.g. "Senior Data Analyst". |
| projects | array | Up to 8 projects, e.g. [{"name":"Price tracker","bullets":["Scrapes 3 stores daily"]}]. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
| template | string | Layout: classic (centered header, one column), modern (left header with a blue accent rule) or compact (smaller type). Default classic. |
| education | array | Up to 8 education entries, e.g. [{"degree":"BSc Economics","school":"UT Austin","end":"2018"}]. |
| page_size | string | Paper size: letter (US, default) or a4. |
| experience | array | Up to 15 jobs in the order to print (usually newest first), e.g. [{"title":"Analyst","org":"Acme","start":"2021-03","end":"present","bullets":["Built dashboards"]}]. |
| certifications | array | Up to 15 certifications, e.g. [{"name":"PMP","issuer":"PMI","date":"2022"}]. |
| fit_to_one_page | boolean | true to tighten spacing, margins (down to 0.5 in) and type size (down to 9 pt) so the resume fits one page. The result says if it still does not fit. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"description": "Full name as it should appear, e.g. \"Maria Santos\"."
},
"skills": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"description": "One skill or a labeled group, e.g. \"SQL\" or \"Languages: English, Spanish\"."
},
"maxItems": 60,
"description": "Up to 60 skills, e.g. [\"SQL\", \"Python\", \"Tableau\"]. Items with a label and a colon print one per line."
},
"contact": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"description": "One contact item as plain text, e.g. \"[email protected]\"."
},
"maxItems": 6,
"description": "Up to 6 contact items shown on one line, e.g. [\"[email protected]\", \"+1 555 0100\", \"Austin, TX\", \"linkedin.com/in/maria\"]."
},
"summary": {
"type": "string",
"maxLength": 1200,
"description": "Optional short profile paragraph in the user's own words, e.g. \"Analyst with 6 years in retail pricing.\""
},
"headline": {
"type": "string",
"maxLength": 140,
"description": "Optional one-line professional title, e.g. \"Senior Data Analyst\"."
},
"projects": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"date": {
"type": "string",
"maxLength": 20,
"description": "Optional date as YYYY-MM, a year, or \"present\", e.g. \"2024\"."
},
"link": {
"type": "string",
"maxLength": 120,
"description": "Optional link as plain text, e.g. \"github.com/maria/price-tracker\"."
},
"name": {
"type": "string",
"maxLength": 120,
"description": "Project name, e.g. \"Price tracker\"."
},
"bullets": {
"type": "array",
"items": {
"type": "string",
"maxLength": 400,
"description": "One line about the project, e.g. \"Scrapes 3 stores daily\"."
},
"maxItems": 6,
"description": "Up to 6 bullet points."
}
}
},
"maxItems": 8,
"description": "Up to 8 projects, e.g. [{\"name\":\"Price tracker\",\"bullets\":[\"Scrapes 3 stores daily\"]}]."
},
"template": {
"enum": [
"classic",
"modern",
"compact"
],
"type": "string",
"description": "Layout: classic (centered header, one column), modern (left header with a blue accent rule) or compact (smaller type). Default classic."
},
"education": {
"type": "array",
"items": {
"type": "object",
"properties": {
"end": {
"type": "string",
"maxLength": 20,
"description": "Optional end as YYYY-MM, a year, or \"present\", e.g. \"2018-05\"."
},
"start": {
"type": "string",
"maxLength": 20,
"description": "Optional start as YYYY-MM or a year, e.g. \"2014\"."
},
"degree": {
"type": "string",
"maxLength": 120,
"description": "Degree or program, e.g. \"BSc Economics\"."
},
"school": {
"type": "string",
"maxLength": 120,
"description": "School, e.g. \"University of Texas\"."
},
"details": {
"type": "string",
"maxLength": 400,
"description": "Optional one line such as honors or coursework, e.g. \"Magna cum laude\"."
},
"location": {
"type": "string",
"maxLength": 80,
"description": "Optional city, e.g. \"Austin, TX\"."
}
}
},
"maxItems": 8,
"description": "Up to 8 education entries, e.g. [{\"degree\":\"BSc Economics\",\"school\":\"UT Austin\",\"end\":\"2018\"}]."
},
"page_size": {
"enum": [
"letter",
"a4"
],
"type": "string",
"description": "Paper size: letter (US, default) or a4."
},
"experience": {
"type": "array",
"items": {
"type": "object",
"properties": {
"end": {
"type": "string",
"maxLength": 20,
"description": "End month as YYYY-MM, a year, or \"present\", e.g. \"present\"."
},
"org": {
"type": "string",
"maxLength": 120,
"description": "Employer or organization, e.g. \"Acme Retail\"."
},
"start": {
"type": "string",
"maxLength": 20,
"description": "Start month as YYYY-MM (or a year), e.g. \"2021-03\"."
},
"title": {
"type": "string",
"maxLength": 120,
"description": "Job title, e.g. \"Data Analyst\"."
},
"bullets": {
"type": "array",
"items": {
"type": "string",
"maxLength": 400,
"description": "One achievement or duty as written by the user, e.g. \"Cut report time by 40%\"."
},
"maxItems": 10,
"description": "Up to 10 bullet points, e.g. [\"Built the weekly pricing dashboard\"]."
},
"location": {
"type": "string",
"maxLength": 80,
"description": "Optional city or \"Remote\", e.g. \"Austin, TX\"."
}
}
},
"maxItems": 15,
"description": "Up to 15 jobs in the order to print (usually newest first), e.g. [{\"title\":\"Analyst\",\"org\":\"Acme\",\"start\":\"2021-03\",\"end\":\"present\",\"bullets\":[\"Built dashboards\"]}]."
},
"certifications": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"date": {
"type": "string",
"maxLength": 20,
"description": "Optional date as YYYY-MM or a year, e.g. \"2023-06\"."
},
"name": {
"type": "string",
"maxLength": 160,
"description": "Certification name, e.g. \"AWS Cloud Practitioner\"."
},
"issuer": {
"type": "string",
"maxLength": 120,
"description": "Optional issuer, e.g. \"Amazon Web Services\"."
}
}
},
"maxItems": 15,
"description": "Up to 15 certifications, e.g. [{\"name\":\"PMP\",\"issuer\":\"PMI\",\"date\":\"2022\"}]."
},
"fit_to_one_page": {
"type": "boolean",
"description": "true to tighten spacing, margins (down to 0.5 in) and type size (down to 9 pt) so the resume fits one page. The result says if it still does not fit."
}
}
}