generate_cv
Create a structured CV template in JSON format for professional resume generation. This tool helps organize personal information, work experience, education, and skills into a standardized template.
Instructions
Return an empty CV JSON template for the AI to fill in.
IMPORTANT: Before calling this tool, gather the user's information first. Ask the user about each section they want to include:
Full name, job title, contact details (email, phone, LinkedIn, GitHub, location)
Work experience: company names, roles, dates, key achievements/responsibilities
Education: institutions, degrees, dates
Skills: categorized technical and soft skills
Certifications, projects, courses, languages (if applicable)
Do NOT generate a CV with placeholder or empty fields. Ask follow-up questions for any missing critical sections (at minimum: personal info, experience, education, skills).
IMPORTANT: Always fill in URLs for employers, education institutions, and certification issuers. Use their official website URLs (e.g. url: "https://www.google.com" for Google, issuer_url: "https://www.offensive-security.com" for OffSec). The editor uses these URLs to automatically fetch company/institution logos.
Template field reference:
Dates: 'Month YYYY' format (e.g. 'January 2023'), use 'Present' for current positions
employer_groups: group_name is the company name, display_company in each position should also be set to the company name (or subsidiary/brand name if different)
bullets: array of achievement/responsibility strings for each position
Contact values: use plain text, NOT prefixed with mailto: or tel: schemes (e.g. "john@example.com" not "mailto:john@example.com", "+48123456789" not "tel:+48123456789")
Contact types: location (no link), email, phone, linkedin, github, website
Flag codes: 2-letter country code (gb, us, de, pl, fr, es, etc.)
Language levels (keys): native, full_professional, professional_working, limited_working, elementary (labels are auto-translated based on cv_language)
desc_format: 'bullets' (list) or 'paragraph' (rich_description field)
disabled_sections: array of section names to hide (e.g. ['projects', 'courses'])
theme: sidebar, topbar, minimal, executive, modern, elegant
color_scheme: navy, ocean, forest, wine, slate, charcoal
font_preset: calibri, helvetica, georgia, garamond, inter, roboto
heading_color: black, auto, navy, graphite, steel, ocean, forest, wine, brown, indigo
Args: language: CV language for section headers — en, pl, de, fr, or es.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | en |
Implementation Reference
- mcp_server.py:294-336 (handler)The generate_cv tool implementation. It returns a CV JSON template populated with the requested language, incorporating detailed docstring instructions for the AI on how to structure the CV data before generating it.
def generate_cv(language: str = "en") -> str: """Return an empty CV JSON template for the AI to fill in. IMPORTANT: Before calling this tool, gather the user's information first. Ask the user about each section they want to include: - Full name, job title, contact details (email, phone, LinkedIn, GitHub, location) - Work experience: company names, roles, dates, key achievements/responsibilities - Education: institutions, degrees, dates - Skills: categorized technical and soft skills - Certifications, projects, courses, languages (if applicable) Do NOT generate a CV with placeholder or empty fields. Ask follow-up questions for any missing critical sections (at minimum: personal info, experience, education, skills). IMPORTANT: Always fill in URLs for employers, education institutions, and certification issuers. Use their official website URLs (e.g. url: "https://www.google.com" for Google, issuer_url: "https://www.offensive-security.com" for OffSec). The editor uses these URLs to automatically fetch company/institution logos. Template field reference: - Dates: 'Month YYYY' format (e.g. 'January 2023'), use 'Present' for current positions - employer_groups: group_name is the company name, display_company in each position should also be set to the company name (or subsidiary/brand name if different) - bullets: array of achievement/responsibility strings for each position - Contact values: use plain text, NOT prefixed with mailto: or tel: schemes (e.g. "john@example.com" not "mailto:john@example.com", "+48123456789" not "tel:+48123456789") - Contact types: location (no link), email, phone, linkedin, github, website - Flag codes: 2-letter country code (gb, us, de, pl, fr, es, etc.) - Language levels (keys): native, full_professional, professional_working, limited_working, elementary (labels are auto-translated based on cv_language) - desc_format: 'bullets' (list) or 'paragraph' (rich_description field) - disabled_sections: array of section names to hide (e.g. ['projects', 'courses']) - theme: sidebar, topbar, minimal, executive, modern, elegant - color_scheme: navy, ocean, forest, wine, slate, charcoal - font_preset: calibri, helvetica, georgia, garamond, inter, roboto - heading_color: black, auto, navy, graphite, steel, ocean, forest, wine, brown, indigo Args: language: CV language for section headers — en, pl, de, fr, or es. """ template = json.loads(json.dumps(TEMPLATE)) template["cv_language"] = language return json.dumps(template, indent=2)