resumeforge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RESUMEFORGE_API_KEY | No | If set, requires a bearer token in requests (for clients that support custom headers). | |
| RESUMEFORGE_OUTPUT_DIR | No | Directory where output files are saved. Defaults to ~/ResumeForge | |
| RESUMEFORGE_ALLOWED_ORIGINS | No | Restricts CORS to the specified origins when running in remote/HTTP mode. |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_resume_sessionA | Call this FIRST whenever a user wants a resume built, tailored or checked against a job. Returns the step-by-step playbook, the intake checklist (what to collect from the candidate, including the LinkedIn profile), and ATS formatting rules. |
| validate_intakeA | Validates that all primary candidate details are collected (name, email, phone, location, LinkedIn URL, current resume) and cross-checks the resume against the LinkedIn profile text. Returns ready=true only when resume generation may proceed. |
| analyze_job_descriptionA | Decodes a job description into weighted keywords (must-have vs nice-to-have, with exact ATS phrasing), ranked focus points, seniority, years required, education/certifications, domain terms, action verbs to mirror, and implied expectations. |
| analyze_gapsA | Compares the candidate (resume, LinkedIn, extra context) to the JD. For every missing requirement, assigns a strategy (surface, reframe, ask_candidate, bridge_project, quick_learn). Also maps each JD focus point to the candidate's best existing evidence, proposes JD-themed bridge projects, suggests quick-win certifications, and returns a resume plan: headline, section order, summary formula, a drop-in Skills section with a 'Familiar with' tier, job-title translations (e.g. 'Member of Technical Staff' → 'Software Engineer (MTS)'), and buried experience worth promoting (internships, freelance, open source). Also returns questions to ask the candidate. |
| suggest_bridge_projectsA | Designs realistic, company-themed portfolio projects that close specific skill gaps in days. Each comes with a stack, a day-by-day build plan, resume bullet templates (fill with real measured numbers), and interview talking points. Use it for more or different project ideas than analyze_gaps returned. |
| score_resumeA | Scores a resume 0–100 against a JD the way keyword-ranking ATS and recruiters do: weighted keyword match, keywords backed by bullets, title alignment, bullet quality (verbs, metrics), structure/parseability, length, and integrity (placeholders, stuffing). Pass candidate_sources to get a truth_check of unverified claims. Accepts a structured resume or plain text. |
| render_resumeA | Renders the approved resume to ATS-safe DOCX / PDF / Markdown / TXT. Requires candidate_approved=true and a valid LinkedIn URL. Refuses if placeholder metrics like [N] remain. Also returns LinkedIn alignment suggestions and, if jd_text is given, the final ATS score. |
| build_application_kitA | Everything needed to actually apply, generated from the JD and the candidate's materials: an apply-today checklist with portal-specific tips (Workday, Greenhouse, Lever…), an auto-reject check (years, degree, sponsorship, location, must-haves), copy-paste answers to application form questions (including honest 'years with X' computed from role dates), a cover letter, referral and recruiter messages with LinkedIn search links, a LinkedIn connection note, follow-up and thank-you emails, LinkedIn headline/About/skills updates, interview prep (elevator pitch, likely questions, 'defend every bullet'), and a tracker entry. Call it after render_resume, passing the final resume. |
| scaffold_bridge_projectB | Generates a runnable starter repository for a bridge project: a Go, Python (FastAPI) or TypeScript service with a /health endpoint and a passing test, CI, a docker-compose for the stack's databases and brokers, a README carrying the build plan, results table and resume-bullet templates, and a BUILD_LOG. Java gets a Spring Initializr command. Pass a project from analyze_gaps or suggest_bridge_projects. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| tailor_resume | Guided flow: collect your details and LinkedIn, decode the JD, close gaps, and produce an ATS-optimized resume. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| playbook | |
| ats-rules |
TDQS
Scored across 9 tools
Each tool maps to a distinct stage in the resume workflow: intake, JD analysis, gap analysis, scoring, rendering, and application kit assembly. The only slight overlap is analyze_gaps and suggest_bridge_projects both proposing bridge projects, but their roles are differentiated enough in the descriptions.
All tool names follow a consistent verb-first snake_case pattern with clear action nouns like analyze, render, score, start, build, scaffold, suggest, and validate. Minor singular/plural variation in bridge_project vs bridge_projects is trivial and does not harm predictability.
Nine tools is well within the optimal range and each one earns its place by covering a distinct phase of the resume tailoring and application process. The set feels intentional rather than padded, and the overall scope is coherent.
The surface covers nearly the full lifecycle: session onboarding, intake validation, job description parsing, gap analysis, project ideation/scaffolding, scoring, rendering, and application kit generation. The main gap is the lack of an explicit tool for editing/updating resume content between gap analysis and rendering, which likely depends on external state.