Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HONEST_CV_PROFILENoPath to the profile folder that holds your YAML files (profile.yaml, bullets.yaml, skills.yaml, variants.yaml). Every tool uses it unless it gets its own profile argument. Create the folder with `honest-cv init` or the `init_profile` tool. Run honest-cv on your own computer for your real data: on a hosted service, your profile lives there.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
init_profileA

Create a new profile folder with empty, commented YAML templates (profile, bullets, skills, variants). Use it once, before anything else, when the person has no profile; to start from LinkedIn or a JSON Resume, call import_profile afterwards. Refuses an existing profile and overwrites nothing. Returns created: the files written.

get_inventoryA

Read the person's skill inventory. Use it at the start of a session and before proposing skill changes; for CV content (roles, bullets, variants) use list_variants instead. Returns levels (what P, L, F and X mean) and skills grouped by level, each with its years, last_used_year, evidence, aliases and notes. Read-only.

set_skillA

Add or change one skill in the inventory. Use it for a single skill; for several at once use set_skills, and for a whole marked list use checklist_apply. Raising a level (a new skill counts as rising from X) needs evidence, and the server asks the person to confirm before saving; lowering is always allowed. Returns saved (the stored skill) and previous_level.

set_skillsA

Add or change several skills in one call, for example a group the person just told you about. Use set_skill for one skill and checklist_apply for a marked checklist. Every upgrade needs evidence; the person confirms upgrades in a form, up to 10 per call, and only those they answer "sí" are saved. Returns saved, upgrades_confirmed, upgrades_refused and upgrades_not_asked_yet: when that list is not empty, call set_skills again with those skills.

import_profileA

Import an existing CV into the profile: a JSON Resume (.json), a LinkedIn data export (.zip or its unzipped folder) or a LinkedIn profile PDF. Use it at the start, right after init_profile, instead of typing everything; run it first with dry_run. Adds contact, roles with their achievements, education, certifications, courses, publications and languages; only what the profile lacks, never overwriting. Skills arrive without a level, so they go to /imported-skills.md for the person to mark, never to the inventory. Imported bullets are tagged imported: review them with the person. Returns what was added and an optional note to pass on. For a PDF nothing is written: it returns the text, to organize with the editing tools (see the import_linkedin_pdf prompt).

checklist_listA

List the skill checklist templates the person can combine. Use it before checklist_new, to let the person pick the ones that fit their profession. Returns checklists: each with its id, title, description, number of skills and origin ("built-in", or "yours" for templates in /checklists/). Any profession works. Pass lang in the person's language to get the translated templates. Read-only.

checklist_newA

Write a checklist file for the person to mark in their editor, merged from the templates picked in checklist_list, without duplicates and prefilled from the inventory. Use it when the person has many skills: it is much faster than asking one by one. Next step: once they have marked it, call checklist_apply. Refuses to replace an existing file unless overwrite. lists may be empty when extra names the skills. Returns the file's path and its number of skills.

checklist_applyA

Save the skills the person marked in a checklist file. Use it after checklist_new, once the person says they are done, and again to resume. Lines that keep or lower a level are saved at once; upgrades with evidence are confirmed in a form, up to 10 per call: call again while upgrades_not_asked_yet is not empty. Returns the counts saved, pending_evidence (marked lines without evidence: ask where they used them, in groups, and save with set_skills), skills_without_achievements and key_skills_without_achievements.

Ask about nothing else: unmarked lines are for the person to mark in the file. After the checklist, ask for the person's biggest achievements first, since one usually covers several skills, then for the key skills still without one; save each with add_bullet. The rest wait for a job post that asks for them (gap_report → no_achievement). Never write an achievement for them.

add_bulletA

Add one achievement to the bullet pool, the material every CV variant picks from. Use it after the person approves the wording, one bullet per call; to change which bullets a CV shows, use save_variant. role is a role id from upsert_role; leave it out for bullets used only in Selected Impact. Use only facts the person stated, never invented numbers. Returns saved.

set_contactA

Update the person's contact details on the CV. Use it for name, email, phone, location and links; roles, education and the rest have their own tools. Only the fields given change; pass "clear" to remove an optional one. links replaces the whole list. Returns the contact as saved in profile.yaml.

set_profile_detailsA

Replace the certifications, courses or spoken-languages line of the profile. Use it for those three lists only; roles, education and publications have their own tools. Each list you pass replaces the current one in full; leave a field out to keep it. A course or training without an exam goes in courses, never in certifications. Returns the saved values.

upsert_roleA

Add a job role, or change some fields of an existing one by its id. Use it while interviewing the person about their work history; their achievements go in with add_bullet, pointing to this id. A new role needs title, company and start; roles stay in date order, newest first. Keep the person's real title. Returns the role as saved.

upsert_educationA

Add an education entry, or change the one with the same institution and degree. Use it for degrees and formal studies; courses and certifications go in set_profile_details. Say honestly whether the degree was completed, e.g. "B.Sc. (unfinished)". Returns the education entry as saved.

upsert_publicationA

Add a book, article or paper the person wrote, or change some fields of the one with this id. Use it when the person mentions something they published; courses and certifications go in set_profile_details. Every variant shows all publications unless it lists the ones it wants (save_variant → publications). Returns the publication as saved.

save_variantA

Create or replace a CV variant: the plan for one kind of role (title, summary, which bullets and skills to show). Use it to set up a variant or tailor one to a job post; read the current ones with list_variants first. It replaces the variant whole, so pass every field it should define (list_variants → own shows them). A variant without extends needs title and summary. Every reference is checked before saving. Returns saved and the variant.

remove_skillA

Delete a skill from the inventory, e.g. a duplicate or a misspelling, and from the variants' skill groups and competencies. Use it only for mistakes: to record that the person doesn't have a skill, use set_skill with level X instead, which keeps gap reports honest. Ask the person first; it cannot be undone. Returns what was removed and variants_updated.

remove_bulletA

Delete an achievement from the pool and from every variant that uses it. Use it when the person wants it gone; to stop showing it in one CV, change that variant with save_variant instead. Ask the person first; it cannot be undone. Returns what was removed and variants_updated.

remove_publicationA

Delete a publication from the profile and from every variant that lists it. To hide it from one CV only, change that variant's publications with save_variant instead. Ask the person first; it cannot be undone. Returns what was removed and variants_updated.

remove_roleA

Delete a role from the profile and from every variant. A role that still has bullets is refused unless with_bullets is true, which deletes them too. To hide a role from one CV, edit that variant with save_variant instead. Ask the person first; it cannot be undone. Returns what was removed and variants_updated.

list_variantsA

Read every CV variant, with extends already applied and the text of each bullet it uses. Use it before save_variant, build_cv or score_job, to know what each CV contains. Returns variants (with own: the fields each one defines itself) and unused_bullets: achievements no variant shows yet. Read-only.

build_cvA

Render a CV variant to PDF and/or DOCX, then verify the PDF for ATS safety. Use it when the person wants the files; for a cover letter use build_letter, and to check a PDF made elsewhere use verify_pdf. Files go to out_dir, default /out, replacing earlier builds of the same variant and language. Returns the files, each PDF with its pages, ats_ok and failed checks. A failed check is probably a bug in honest-cv: report it, never reword the person's text to pass it.

verify_pdfA

Check whether any PDF is ATS-safe: one column, no ligatures, dates on their role's line, text extractable, and the page count. Use it on a CV from any tool, e.g. the person's current one; build_cv already runs it on the CVs it renders. Returns ok, pages, checks (each with name, ok, detail) and text: what an ATS reads. Read-only.

check_claimsA

Check any text about the person against their profile before it goes anywhere: a cover letter, a summary, a LinkedIn text. build_letter and linkedin_profile run it too. Returns problems, which must be fixed (a skill marked X, or a familiarity skill not called familiarity in its sentence), and warnings for the person (a technology the profile doesn't show, or a number found nowhere in it). Fix them by removing or qualifying the claim, never by adding skills. Read-only.

build_letterA

Render an approved cover letter to a one-page PDF and/or DOCX with the CV's ATS checks. Use it after drafting the letter with the person and running check_claims; for the CV itself use build_cv. It runs check_claims again and refuses while there are problems. Returns the files and any warnings to show the person.

export_json_resumeA

Export a CV variant as a JSON Resume file, for other CV tools and sites that import that format. Use build_cv for a PDF or DOCX instead. Same honesty rules as the CV: X skills never appear, and F skills only in a "Familiarity" group. Writes to out_dir, default /out, and returns its path.

linkedin_profileA

Write the LinkedIn texts for a variant, each within LinkedIn's limit: headline, About, one description per position from its bullets, and the skills (P and L only, since LinkedIn can't label familiarity). Use it when the person updates their LinkedIn profile. Writes them to a Markdown file to copy from and returns them with their path, plus left_out: bullets that didn't fit. After the person approves a polished headline or About, call it again with them: they are checked like a letter and saved in that file.

log_applicationA

Record a job application, or update the one for the same company and role. Use it when the person sends a CV or letter, and whenever they tell you what happened (interview, offer, rejection); list_applications reads them back. Fields not given keep their value. Save the post's full text in post, since links expire, and your interview advice in prep. Each file in files is copied to /sent//, so the record keeps what was sent. Returns the application and not_found: paths it could not copy.

list_applicationsA

List the person's job applications, most recently updated first. Use it when they ask how their search is going or which application to follow up; log_application records changes. Returns applications (each with its id, status and days_since_update), a count per status and waiting: open applications with no news for 14 days or more. Read-only.

interview_prepA

Prepare the interview for one logged application from what the person can honestly back up. Call it first with only application to get the saved job post (post_text), then again with the post's keywords. For each keyword it returns their level, evidence, stories (the bullets that show it, those in the CV they sent first) and a standing: strong (tell a story from those bullets), no_achievement (ask for a real example), marked_pending (ask for evidence), familiarity (say it is familiarity) or lacking (say so honestly). Every story must come from stories. With notes, saves the approved prep to /prep/.md.

score_jobA

Measure how well each CV variant covers a job post's keywords, best first. Use it first when the person shares a post, to pick a variant; then call gap_report on that variant to see what is missing and why. Extract the keywords yourself in the post's own wording: keywords are the required ones, preferred the nice-to-haves. Returns scores: per variant, the required and overall coverage and each keyword found, found only as familiarity, or missing. Read-only.

gap_reportA

Explain the keywords a job post asks for that one variant doesn't show, grouped by what can honestly be done. Use it after score_job picked the variant, before editing it with save_variant. Returns: in_inventory_not_in_cv (the person has it: add it, using unused_bullets, or name it in the summary or competencies), familiarity_only (only as familiarity), not_in_inventory (do not claim it), no_achievement (P or L skills no bullet shows: ask for one real achievement each) and marked_in_checklist (marked in their checklist, still without evidence: ask where they used it). Read-only.

Prompts

Interactive templates invoked by user choice

NameDescription
cover_letterWrite a cover letter for a job post from the person's real bullets and skills.
import_linkedin_pdfTurn the PDF from LinkedIn's "Save to PDF" into a profile, with the person's approval.
linkedin_profileHeadline, About, positions and skills for LinkedIn, from a variant, without adding claims.
interview_prepLikely questions, STAR stories from the person's own achievements and honest answers for the gaps, for an application they logged.
interviewGuided interview that fills the skill inventory and the bullet pool, one question at a time.
tailor_for_jobScore the variants against a job post, explain the honest gaps, adjust a variant and rebuild.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 31 tools

Disambiguation4/5

Despite 31 tools, the descriptions carefully staked out distinct boundaries (singular set_skill vs plural set_skills vs checklist_apply; build_cv vs build_letter vs export_json_resume vs linkedin_profile; score_job vs gap_report vs check_claims). A few clusters are dense—upsert_role/remove_role, remove_bullet/remove_role, and the several output builders—but the cross-references ('use X instead') keep them distinguishable.

Naming Consistency4/5

Predominantly consistent snake_case verb_noun (get_inventory, set_skill, upsert_role, add_bullet, build_cv, score_job). Minor deviations: a few noun-first names (checklist_list, checklist_new, checklist_apply, linkedin_profile, interview_prep, gap_report) break the otherwise uniform verb-first pattern.

Tool Count2/5

31 tools is well above the 16-25 heavy threshold and feels over-decomposed for a CV/profile domain. Removing a role/bullet/skill/publication are each their own tool, and multiple near-parallel setters (set_skill/set_skills/set_contact/set_profile_details) inflate the surface beyond what the task needs.

Completeness4/5

Coverage is broad: profile lifecycle, import, skills, roles, bullets, education, publications, contact, variants, CV/letter rendering, PDF verification, applications, interview prep, job scoring and gap analysis. Minor gaps exist (no explicit remove_variant or remove_education), but core workflows have no dead ends.

Maintenance

ActivityMaintained
ResponsivenessResponsive