quantjobs
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| add_jobsA | Add jobs to the database (use after a web search for quant roles). Each job dict should include at least |
| search_jobsC | Search the job database. Empty filters are ignored. Returns job records. |
| get_jobB | Get a single job by id, including full description and skills. |
| update_jobC | Update editable fields on a job (e.g. notes, status, comp_min, role_type). |
| star_jobC | Star (save) or unstar a job you like. |
| archive_jobA | Archive a job (sets status='archived'); kept for pattern history. |
| set_statusB | Set a job's status: active | applied | archived | closed. |
| run_queryA | Run a READ-ONLY SQL query against the job DB for ad-hoc pattern analysis. Only a single SELECT/WITH statement is permitted (enforced on a read-only connection). Handy tables: jobs, job_skills(job_id, skill), skills_profile, pending_projects, skill_flags. Example: SELECT skill, COUNT(*) n FROM job_skills GROUP BY skill ORDER BY n DESC |
| analyze_trendsC | Skill demand across tracked jobs; flags in-demand skills you don't have. |
| skills_gap_reportA | Skills you're missing (overall, for a job, or across starred jobs), each with a suggested project + hours to close the gap. |
| list_flagsB | List flagged skills (recommendations to learn). Optionally filter by status. |
| update_flagB | Update a skill flag's status: new | acknowledged | learning | dismissed. |
| add_pending_projectC | Add a project to your backlog (e.g. to earn a missing skill). Always
record an honest time estimate in |
| list_pending_projectsB | List backlog projects (optionally filter: idea|planned|in_progress|done). |
| update_pending_projectA | Update a pending project (e.g. status, priority, est_hours, notes). |
| generate_cvA | Generate a CV PDF — base (job_id=0) or tailored to a job. Tailoring only reorders/selects your real experience; missing skills become pending projects + flags rather than fabricated bullets. stretch_level: conservative | balanced | aggressive. |
| cv_draft_createA | Start a conversational CV draft — base (job_id=0) or tailored to a job. Returns {draft_id, content, missing_skills, suggested_projects}. POLICY: bullets may be reframed and strengthened (the user wants punchy bullets). Any change that goes beyond a literal restatement MUST be logged via cv_reframe_bullet (preferred — it edits and logs atomically) or cv_note_add, classified as reframe | stretch | fabrication, so it lands in cv_notes.md. Never silently invent. Missing skills are returned (and logged as pending projects). |
| cv_draft_getA | Get the current state of a CV draft (id, content, status, timestamps). |
| cv_draft_updateA | Apply a structural edit to a CV draft (summary, ordering, skills) and return content. Use this for the summary, reordering, and skills. For rewording individual experience bullets, prefer cv_reframe_bullet (it logs the change). Patch keys: profile (str summary), contact (dict), experience ([{org, role?, location?, start?, end?, bullets?}] merged by org), skills_rows ([{label, value}] merged by label), education/awards/volunteering (replace the list). If you reword bullets here, also call cv_note_add for anything beyond a literal restatement. |
| cv_draft_renderA | Render the agreed CV draft to a PDF. Returns {tex_path, pdf_path}. |
| cv_draft_listC | List recent CV drafts. |
| cv_reframe_bulletA | Reword (or add) one experience bullet on a draft AND log it to cv_notes.md. This is the right tool for making bullets punchy. |
| cv_note_addA | Log a CV claim change to cv_notes.md (reframe | stretch | fabrication). Use when you reframe/embellish a bullet or summary outside cv_reframe_bullet, so the
audit trail stays complete. |
| cv_notes_getA | Return the CV claim notes (cv_notes.md) — review before interviews. |
| get_profileA | Return your CV profile (contact, experience, skills, etc.) from profile.yaml. |
| add_or_update_skillA | Record that you have/are learning a skill (updates profile + fit scoring). source: have | learning | pending. Use this when you complete a project. |
| run_scrapersA | Run the job-board scrapers (Greenhouse/Lever). Empty = all firms; or pass a source kind ('greenhouse'/'lever') or a firm name. |
| save_searchB | Save a search/pattern so you can re-run it later. |
| list_saved_searchesB | List saved searches/patterns. |
| init_dbA | Create the database and seed your CV profile (safe to call repeatedly). |
| get_settingsA | Get current settings (stretch_level, trend thresholds, location filter). |
| set_settingB | Update a setting, e.g. stretch_level=aggressive or location_filter=New York. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Each tool has a clearly distinct purpose, with no overlapping functionality. For example, CV drafting tools are separated by action (create, update, get, list, render), and job tools cover distinct operations (add, search, get, update, archive, star). Even similar tools like analyze_trends and skills_gap_report target different aspects (demand vs. personal gaps).
All tool names follow a consistent verb_noun pattern (e.g., add_jobs, get_job, analyze_trends, cv_draft_create). The naming is predictable and uses underscores uniformly, with no mixing of conventions like camelCase. Even longer names like add_or_update_skill adhere to this pattern.
With 32 tools, the count is high for a typical MCP server, which often has 3-15 tools. However, the server covers a broad domain (quant job search, CV drafting, skill tracking, and analysis), and each tool seems justified. It borders on being too heavy but is still manageable given the comprehensive scope.
The tool set covers the full lifecycle of quant job hunting and CV management: job discovery (add, search, get, archive, star), skills tracking (add, analyze, gap report), CV drafting (create, update, get, list, render, reframe, notes), project management, settings, and ad-hoc analysis. No obvious gaps are apparent; even edge cases like job status updates and skill flags are handled.