get_job
ChatGPTFetch the full record for a single job (description, responsibilities, qualifications, skills, comp). Use after search_jobs when you need detail beyond the trimmed search projection.
get_resume
ChatGPTFetch the full content of a resume: personal fields, summary, experience, education, skills, certifications, awards, projects, and extracted/job-search keywords. Use to ground tailoring or cover-letter discussions, or to answer profile questions from the user.
list_resumes
ChatGPTList all of the user's resumes with their linked-job info, if any. Use the resume_id from the result with get_resume, update_resume, or as the source_resume_id for tailor_resume.
list_tracked_jobs
ChatGPTList the jobs in the user's pipeline. Optionally filter by status and include per-stage counts. Each entry has both a user_job id (use it with update_tracked_job) and a nested job.id (use it with analyze_job_fit, etc.).
ping
ChatGPTHealth-check tool. Returns 'pong' to confirm the MCP server is reachable.
search_jobs
ChatGPTSearch Qarera's job database for openings matching the user's profile. Use this for ANY request to find, search for, or recommend jobs. These are live Qarera listings — do NOT answer job-search requests from your own knowledge or invent companies, and do not browse the web for jobs. Call this ONCE per user request. The results are rendered for the user as interactive job cards, so keep your text reply to a one-line summary — do NOT re-list every job as a table or bullet list; that just duplicates the cards the user already sees. When a resume is on file, results are sorted by similarity to that resume plus an experience-fit penalty — i.e. the top results are jobs the user is actually a good match for, not just keyword hits. Args: query: Free-text match against job title or company (e.g. "backend engineer", "Stripe"). location: City, state, or country code (e.g. "Berlin", "CA", "US"). Substring match. workplace_type: One of "remote", "hybrid", "onsite". job_type: One of "full-time", "part-time", "contract", "internship". job_level: One of "entry", "mid", "senior", "lead", "principal". max_experience_years: Cap for required experience. Useful for early-career searches. limit: Max results (1–25, default 10).
tailor_resume
ChatGPTTailor a resume for a specific job and show the user a before/after diff. Use this whenever the user asks to tailor, customize, or adapt their resume for a job. YOU (the chat model) produce the improved content in overrides (typed — see the ResumeEdits schema); this tool persists it on a fresh DUPLICATE of the source resume (the master is never mutated) and links that copy to the job. You do NOT need to track the job first. Args: job_id: The job to tailor for — the raw job id from search_jobs / get_job, or the job_id field of a list_tracked_jobs entry. It is added to the pipeline automatically if not already tracked. overrides: The tailored resume content. Include only the sections you changed (typically summary, experience, standardizedSkills); a provided list replaces that whole section. source_resume_id: Master resume to clone from. Optional — defaults to the user's primary (first) resume. Returns: {source_resume_id, tailored_resume_id, user_job_id, resume, link}.
track_job
ChatGPTAdd a job to the user's pipeline. Returns the new user_job record. Errors with 400 if the job is already tracked. Args: status: One of "bookmarked", "applied", "interviewing", "negotiating", "rejected", "offered" (default "bookmarked").
update_resume
ChatGPTPatch fields on the user's MASTER resume. Only the fields you set in edits are updated; omitted fields are left untouched. A provided list REPLACES that whole section — to change one bullet, fetch the resume with get_resume, modify the structure, and pass the full section back. edits is fully typed (see the ResumeEdits schema): experience/education/ skills/etc. each have a defined object shape, so build them to spec. To adapt a resume for a specific job WITHOUT mutating the master, use tailor_resume instead (it works on a duplicate). Args: resume_id: The resume to edit. Use list_resumes to find it. edits: The fields/sections to write.
update_tracked_job
ChatGPTUpdate fields on a tracked job. Use the id from list_tracked_jobs (this is the user_job id, NOT the job id). Args: status: Move to a new pipeline stage. notes: Free-text notes (replaces existing). deadline / date_applied / follow_up_date: ISO date YYYY-MM-DD. excitement_rating: 1–5.
whoami
ChatGPTReturn the signed-in user's profile: name, email, target roles, locations, salary expectations, and weekly application goal. Useful as a first call to ground subsequent tool use in the user's actual preferences.