jobhunt-copilot
This server provides job-search workflow tools for resumes, JD matching, project recommendations, application tailoring, tracking, schedules, and analytics.
Generate PDF and Word resumes from a local profile using modern or minimal templates.
Analyze a job description against the candidate profile for fit scoring, skill gaps, and a tailored cover-letter draft.
Recommend GitHub projects for skill gaps, with learning paths and STAR resume templates.
Run a one-click tailoring pipeline: JD analysis, project reinforcement, STAR polishing, resume compilation, application report, and optional tracker registration.
Track applications, update stages, record schedules, notes, salary range, and location.
Retrieve upcoming interview and assessment reminders for the next N days.
Get funnel analytics including application totals, assessment/interview/offer counts, and conversion rates.
Provides tools for searching GitHub repositories by keywords, filtering by stars and difficulty, and recommending open-source projects suitable for skill gap practice, along with templates for converting open-source contributions into STAR resume entries.
Integrates with OpenAI's API as an LLM provider for resume polishing, JD matching, skill gap analysis, and mock interview generation.
Provides tools for managing job application tracking records in a local SQLite database, including creating, updating, and querying applications, interviews, and deadlines.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jobhunt-copilotPolish my resume using STAR method for a software engineer role."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
JobHunt-Copilot
本地优先的求职工具:简历生成、JD 匹配、经历润色、开源项目推荐、岗位雷达、模拟面试和投递看板。
开始使用
需要 Python ≥ 3.12 和 uv。在项目根目录执行:
uv sync按配置指南从 example 模板创建个人档案、偏好和模型设置,填写真实经历及可用的模型凭证。已有本地配置请保留。
uv run python -X utf8 check_config.py
uv run jobhunt --helpRelated MCP server: job-tracker
常用命令
# 从本地档案导出 PDF / Word
uv run jobhunt resume -o my_resume
# 按 JD 定制草稿;也可传入本地 JD 文本文件路径
uv run jobhunt tailor "示例岗位要求:React 与可访问性" --no-track
# 批量匹配本地 .txt 岗位文件
uv run jobhunt radar --dir storage/raw_jds
# 原流式面试 / 可选自适应训练
uv run jobhunt interview
uv run jobhunt interview --flow adaptive --mode practice --company 示例企业 --target-role 前端开发
# 看板 / 近期待办 / MCP 服务
uv run jobhunt tracker
uv run jobhunt tracker schedules --days 7
uv run jobhunt mcp各命令的完整参数见 uv run jobhunt <命令> --help。
面试恢复与管理
回答在请求模型前保存;恢复沿用创建时的事实快照、岗位、流程和预算。
uv run jobhunt interview --resume-session <session_id>
uv run jobhunt interview-sessions list
uv run jobhunt interview-sessions show <session_id>
uv run jobhunt interview-sessions compare <fixed_id> --with-session <adaptive_id>
uv run jobhunt interview-sessions delete <session_id>回答后输入空行或 /send 提交;/next 跳过、/pause 暂停、/retry 重试、/finish 交卷。示例中的 <session_id> 等需替换为实际 ID。删除会话不删除已导出的 Markdown 报告。
默认 --flow fixed 保持流式流程;adaptive 在完整校验并保存后显示问题。--mode practice 允许提示和重答。预算、指标和比较方法见面试说明。
生成结果与数据边界
定制输出简历草稿、修改对比和原始快照;改写按快照内 ID 校验,存疑项保留原文。使用前核对事实。
生成物料表示“已准备”;CLI 默认登记
wishlist,--no-track可关闭,实际投递后再推进applied。GitHub 推荐有预算、带日期缓存和失败降级;STAR 文本是完成任务后才可使用的模板。
基础简历排版、看板和会话查看/对比在本地运行;匹配、润色、推荐和面试生成会调用配置的外部服务。
--no-github只关闭 GitHub。个人配置、图片、数据库与生成物保留本地,不提交。目录和删除范围见存储说明。
文档与开发
内容 | 入口 |
配置与图片 | |
业务模块与仓库 Skill | |
数据契约、编排与基础工具 | |
MCP 的 13 个工具 | |
M01~M09 改动、使用方法和后续规划 |
离线回归使用合成材料和模拟服务,当前为 157 项;真实模型的质量与延迟需另行评审。
uv run pytest -qAvailable Tools
7 toolstool_analyze_jdB
深度穿透解析目标企业招聘 JD,与求职者画像进行全维度技术契合度打分,列出技能匹配点、短板缺口及量身定制的自荐信草稿。
Args: jd_text: 目标岗位的招聘 JD 纯文本或包含岗位要求的描述 provider: 可选的大模型供应商 (如 deepseek/aliyun/custom)
| Name | Required | Description | Default |
|---|---|---|---|
| jd_text | Yes | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add useful context beyond the name — the analysis relies on the user's 求职者画像 and produces a scoring/gap/cover-letter bundle rather than a bare analysis — but it says nothing about permissions, cost/latency of the LLM call, whether results are persisted, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and dense with concrete deliverables, and the Args block is short. The Args block partially duplicates the input schema, but it is the only place the parameter meaning is documented given 0% schema coverage, so it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out (the description does so anyway, mildly redundantly). However, with zero annotations and no output-schema visibility into error/empty cases, the definition omits behavioral essentials such as profile prerequisites and whether the generated cover letter is stored, leaving the picture only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains jd_text as raw JD text or a requirements description, and characterizes provider as an optional LLM vendor with concrete examples (deepseek/aliyun/custom). It stops short of stating the default/fallback provider behavior, which would be needed for a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('深度穿透解析目标企业招聘 JD') and enumerates concrete outputs (fit scoring, skill match points, gap list, cover-letter draft), so the agent knows exactly what the tool produces. It does not explicitly distinguish itself from overlapping siblings such as tool_one_click_tailor, which also appears to tailor application material, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. whether a stored job-seeker profile must already exist), and no named alternatives. Given the sibling set contains tool_one_click_tailor and tool_generate_resume, which plausibly overlap with JD-driven tailoring, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_generate_resumeB
根据本地求职者主档案 (config/profile.yaml),排版并编译输出高质量 PDF 与 Word (docx) 双格式简历。
Args: template: 简历视觉主题模板,支持 'modern'(现代专业风)或 'minimal'(极简学术风) output_name: 输出文件基本名称(无需后缀)
| Name | Required | Description | Default |
|---|---|---|---|
| template | No | modern | |
| output_name | No | resume_default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral disclosure. It states it reads a local profile and outputs two formats, but does not disclose whether it overwrites existing files, what permissions are required, error behavior if the profile is missing, or any rate limits. This is a significant gap for a generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by a compact Args section. Every sentence earns its place, with no redundant or filler text. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations, the description should provide more behavioral context, such as prerequisites (profile.yaml must exist), overwrite behavior, or error handling. It covers purpose and parameters adequately but leaves key operational details unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by documenting both parameters: 'template' with allowed values ('modern' or 'minimal') and 'output_name' with the note that no suffix is needed. This adds meaningful semantics beyond the schema, though it omits default values that are present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: '排版并编译输出高质量 PDF 与 Word (docx) 双格式简历' (typeset and compile high-quality PDF and Word dual-format resume). This clearly distinguishes it from siblings like tool_analyze_jd or tool_track_application, but it does not explicitly name or differentiate from any alternative, so it falls short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by saying it uses the local profile (config/profile.yaml), but provides no explicit when-to-use guidance, no conditions for selecting this tool over alternatives like tool_one_click_tailor, and no prerequisites or exclusions. This is no guidance beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_get_funnel_analyticsA
获取当前个人求职全流程转化漏斗统计(投递总量、正式投递量、笔试数、进面数、Offer数、进面率%、Offer转化率%及各阶段分布)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It tells the agent the returned metric categories, which is useful context, and the read-oriented verb 获取 implies a safe retrieval operation. However, it does not disclose whether this requires authentication, whether data is scoped to the current user, or any other operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence that states the action and resource immediately. The parenthetical metric list is long but serves the purpose of specifying the output scope, so it earns its place, though it slightly bloats the sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and an output schema exists, so the description does not need to enumerate return values; it nonetheless lists them for scope. For a simple parameterless read tool, this is nearly complete, with the only gap being the absence of explicit usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline score is 4. There is nothing for the description to clarify beyond confirming that the call requires no inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (获取/get) and a precise resource (个人求职全流程转化漏斗统计/personal job-seeking conversion funnel statistics). No sibling tool provides analytics or funnel data, so it is clearly distinguishable from the resume, JD, project, tracking, and schedule tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the exact metrics returned, but it never states when an agent should call this tool versus other tracking tools. There is no direct sibling alternative for funnel analytics, so the lack of explicit guidance is less harmful, but the description does not actively route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_get_upcoming_schedulesA
查询未来若干天内(默认 7 天)以及近 3 天未关闭的笔试与面试待办日程提醒及倒计时。
Args: days_ahead: 检索未来多少天内的日程(默认 7 天)
| Name | Required | Description | Default |
|---|---|---|---|
| days_ahead | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose a non-obvious behavioral trait: results include unclosed items from the past 3 days in addition to the future window, which the agent could not infer. It does not state read-only nature or sorting/limit behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. The Args block is slightly redundant with the schema, but the size is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a one-parameter read tool, the description covers the lookup window and the past-3-day inclusion, which is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does by explaining days_ahead as the future search window and its default of 7 days. It adds little about type or valid range, but the core semantics are conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (查询) and resource (笔试与面试待办日程提醒及倒计时), plus the time scope. It clearly distinguishes the retrieval of schedules from sibling write/analysis tools like tool_generate_resume or tool_track_application, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (fetching upcoming to-do reminders) and supplies the default window, but gives no explicit when-not guidance or routing against alternatives. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_one_click_tailorB
【一键岗位定向全套交付流】输入目标岗位招聘 JD,端到端自动完成: JD深度比对 ➔ 开源项目补强 ➔ 重点经历 STAR 强化 ➔ 编译专属双格式简历 ➔ 生成投递战报 ➔ 自动登记入库跟踪(防腐零污染)。
Args: jd_text: 目标岗位的招聘 JD 纯文本或文件路径 auto_track: 是否在生成定制简历后自动将其登记到投递看板(默认 True) provider: 可选的大模型供应商
| Name | Required | Description | Default |
|---|---|---|---|
| jd_text | Yes | ||
| provider | No | ||
| auto_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden for a multi-step, side-effecting pipeline. It hints at a write (auto-registering the resume into the tracking board) but says nothing about permissions, files written to disk, cost/latency of the multi-step flow, failure modes, or what '防腐零污染' actually guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The pipeline is front-loaded in a single arrow-separated line followed by an Args block, which is well ordered. However, decorative jargon such as '防腐零污染' consumes space without conveying actionable meaning, and the header mixes branding with specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the pipeline stages are enumerated. Still, for a complex mutation-heavy orchestrator with zero annotation coverage, the description omits partial-failure behavior, side effects beyond tracking, and prerequisites, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description documents all three params and adds real meaning beyond the bare schema: jd_text accepts plain text or a file path, auto_track controls post-generation registration with a stated default, and provider is flagged as an optional LLM selector. Only provider lacks any semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete composite verb chain (JD comparison → project augmentation → STAR reinforcement → dual-format resume → battle report → tracking registration), so an agent knows exactly what the tool delivers. It clearly reads as an orchestration superset of siblings like analyze_jd/generate_resume, but it never names or contrasts with them, so differentiation stays implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '一键...全套交付流' framing implies the usage context (one call for the full pipeline), but there is no explicit when-to-use statement, no exclusions, and no mention of the granular sibling tools an agent could choose instead. Guidance is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_recommend_projectsA
针对技能短板(如 Kafka, K8s, Redis, 分布式存储等),检索 GitHub 高价值开源实战项目,并由大模型提供极简速成学习路线与简历 STAR 范文。
Args: skills: 待攻坚的技能关键词列表,例如 ["Kafka", "Redis"] language: 偏好的主语言(默认 python) provider: 可选的大模型供应商
| Name | Required | Description | Default |
|---|---|---|---|
| skills | Yes | ||
| language | No | python | |
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that it searches GitHub and uses an LLM to generate learning paths and resume STAR examples, but it omits operational details such as authentication needs, rate limits, latency, or cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the core purpose, and uses an Args section to document parameters efficiently. Every part earns its place, though the title is absent and the parameter list could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values. For a three-parameter recommendation tool with no annotations and zero schema coverage, it adequately covers purpose and parameters, but it lacks usage alternatives and deeper behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It documents all three parameters with useful meaning: skills are skill keywords with examples, language is the preferred primary language with default python, and provider is an optional LLM provider.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieves GitHub high-value open-source projects for skill gaps, then has an LLM generate a crash learning path and resume STAR examples. The purpose is clear, but it does not explicitly distinguish itself from sibling tools such as resume or JD analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '针对技能短板' gives an implied when-to-use context, so the agent can infer this is for skill-gap project discovery. However, it does not state when not to use it or compare it to alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_track_applicationA
求职投递看板管理:登记新投递记录,或根据 record_id 推进已有求职流程阶段(如更新为一面/预约面试时间/录入复盘笔记)。
Args: company: 企业名称(如:字节跳动) role: 岗位名称(如:后端开发工程师) status: 投递状态 (wishlist / applied / assessment / interview_1 / interview_2 / hr_stage / offer / rejected / closed) record_id: 若提供已有记录 ID 则执行状态更新与日程录入;若不传则创建新投递 next_schedule_time: 下一次面试或笔试时间(如 "2026-09-28 14:00") next_schedule_notes: 日程备忘(如 "飞书会议号 123-456-789") salary_range: 薪资预期或待遇范围 location: 工作城市 note: 本次状态变更或面试复盘备忘流水
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| role | Yes | ||
| status | No | applied | |
| company | Yes | ||
| location | No | ||
| record_id | No | ||
| salary_range | No | ||
| next_schedule_time | No | ||
| next_schedule_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the create-vs-update branching and that notes accumulate as a per-change log. It does not state permissions, whether updates are reversible, or what happens to omitted fields, leaving meaningful behavioural gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one sentence, followed by a compact parameter list where each line adds distinct information. Slightly verbose in the repeated framing of the Args block, but there is no redundant prose to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter dual-mode tool, the description covers both modes, every parameter, and example values; an output schema exists so return values need not be explained. The remaining omission is behavioural detail (permissions, partial-update semantics) rather than anything blocking correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the inline Args block has to do all the work and largely does: it enumerates the accepted status values (wishlist/applied/assessment/interview_1/interview_2/hr_stage/offer/rejected/closed), explains the record_id branch, and supplies concrete format examples for time ('2026-09-28 14:00') and free-text fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource (求职投递看板管理/登记投递记录) and immediately states the dual behaviour: create a new record or advance an existing one via record_id. This distinguishes it cleanly from siblings like tool_get_funnel_analytics and tool_get_upcoming_schedules, so an agent can pick it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit mode-selection logic: pass record_id to update stage/schedule, omit it to create a new application, and lists concrete update cases (interview_1, scheduling, review notes). It does not name any alternative sibling (e.g. tool_get_upcoming_schedules for reading schedules back), which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
tool_analyze_jd - First observed
tool_generate_resume - First observed
tool_get_funnel_analytics - First observed
tool_get_upcoming_schedules - First observed
tool_one_click_tailor - First observed
tool_recommend_projects - First observed
tool_track_application
TDQS
Scored across 7 tools
Most tools have clearly distinct purposes (resume generation, JD analysis, project recommendation, tracking, schedules, analytics). However, tool_one_click_tailor orchestrates and overlaps heavily with tool_analyze_jd, tool_recommend_projects, and tool_generate_resume, so an agent may be unsure when to invoke the composite pipeline versus the individual steps.
Nearly all tools follow a consistent snake_case verb_noun pattern with a uniform 'tool_' prefix (generate_resume, analyze_jd, recommend_projects, track_application, get_upcoming_schedules, get_funnel_analytics). The only minor deviation is tool_one_click_tailor, whose naming doesn't fit the verb_noun mold as cleanly.
Seven tools is well-scoped for a personal job-hunting copilot, covering the core workflow stages without filler. Each tool earns its place, with the composite tailor tool providing convenience over the granular steps.
The surface covers resume generation, JD matching, skill-gap project discovery, application tracking (create/update), schedule reminders, and funnel analytics — a strong lifecycle. Minor gaps remain, such as no delete/archive operation for tracked applications and no standalone profile-editing tool, but these are workable.
Maintenance
Related MCP Connectors
Tailor your resume to any job, get an ATS score with fixes, and export a PDF, right inside ChatGPT or Claude. Try asking: - "Tailor my resume to this job description: [paste the job]" - "Score my resume against this job and list the fixes" - "Make a Product Manager version of my resume" - "Export my tailored resume as a PDF" Why you can trust it: - Uses only your real experience. Nothing is invented. - Your original resume never changes. Every tailored copy is saved as a new version you can restore. - Secure OAuth sign-in with your CVEmber account. No API keys to paste. Pricing: CVEmber MCP is included with Pro and Pro Lifetime, one-time passes with no subscription and nothing that renews. Separately, building and scoring a resume on the cvember.com website is free. Works with: ChatGPT, Claude and any MCP client that supports remote servers with OAuth. Cover letters are written on cvember.com with the same account. Topics: resume, CV, ATS, job search, career, resume tailoring, cover letter. Website: https://cvember.com Setup guide: https://cvember.com/integrations Privacy: https://cvember.com/privacy Terms: https://cvember.com/terms Support: support@cvember.com
CareerProof MCP gives AI agents direct access to a professional-grade career and workforce intelligence platform. Two namespaces: atlas_* for HR/TA teams (candidate evaluation, batch shortlisting, competency scoring, interview generation, JD analysis, custom eval frameworks, research reports) and ceevee_* for professionals (CV optimization, career positioning, salary intelligence, market reports). Backed by RAG knowledge from 50+ premium research sources (McKinsey, BCG, HBR, Gartner, WEF)
Resume builder with native MCP — create and edit resumes from your AI assistant.
Build, version and render resumes as PDFs from Claude or any MCP client.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables searching job listings, tracking applications, managing resumes, and tailoring resumes to job posts, all locally via MCP.20-
- AlicenseAqualityBmaintenanceEnables managing a job search through natural language: tracking applications, discovery leads, interview prep, and resume generation. Connects to Claude via MCP to read and update local Excel files and documents.35ISC
- FlicenseNot gradedqualityBmaintenanceEnables Claude Desktop to manage a job search end-to-end: find and score job listings, tailor resumes, generate application messages, and track application history, while leaving final external actions to the user.-
- AlicenseBqualityCmaintenanceEnables job seekers to run the entire job-search workflow through natural-language chat in MCP clients: mining verifiable strengths via an evidence-to-role-signal chain, scoring resumes against job descriptions, tailoring rewrites, ATS keyword checks, interview question banks and mock interviews, plus application tracking and review. All data stays on the local machine, and the server refuses to store strengths or fabricate content that lacks supporting evidence.40MIT