Skip to main content
Glama

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

TableJSON Schema
NameRequiredDescriptionDefault
languageNoen

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • 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)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full disclosure burden. It comprehensively explains behavioral constraints: URLs must be official websites, date format is 'Month YYYY', contact values must not use mailto/tel prefixes, and language level keys must use specific values. Explains that the returned template requires AI population before use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with critical workflow instructions, but the extensive 'Template field reference' section (covering dates, employer_groups, bullets, contact types, themes, etc.) makes it quite verbose. While the semantic constraints add value beyond what a schema typically provides, the length approaches over-documentation for a single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of CV generation and the presence of an output schema, the description provides sufficient context: it explains the empty-template behavior, the pre-call data gathering requirement, and detailed field semantics. It appropriately focuses on how to populate the template rather than repeating output schema structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for the single 'language' parameter. The description fully compensates by documenting: 'CV language for section headers — en, pl, de, fr, or es', adding both purpose and valid enum values absent from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool 'Return an empty CV JSON template for the AI to fill in' — specific verb (Return), resource (CV JSON template), and scope (empty, for AI to fill). It clearly distinguishes this data/template generation step from sibling tools like generate_docx/pdf which likely render the final document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit workflow guidance: 'Before calling this tool, gather the user's information first' and lists required sections to collect. Includes explicit prohibitions: 'Do NOT generate a CV with placeholder or empty fields.' Clearly defines prerequisites and when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

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/Guid-Lab/cv-forge-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server