MCP server for JobSync job application management system. Provides tools for adding jobs, finding jobs, updating jobs, managing questions, saving match results, batch operations, and resume reviews.
Critical failures across all dimensions. Descriptions exist but are generic and lack parameter documentation. Tool names show poor verb-noun clarity (e.g., 'match_job' vs 'save_match_result' are confusingly similar). Duplicate tool definitions (add_job appears twice, review_resume appears twice, get_resume/review_resume conflate). No parameter descriptions, no output schemas documented, no error handling guidance. This server is not production-ready.
Add a job application to JobSync. Resolves or creates company, job title, location, and source by name. Returns a transparency report of what was matched vs. created.
Add a job application to JobSync. Resolves or creates company, job title, location, and source by name. Returns a transparency report of what was matched vs. created.
Add several jobs in one call. Same per-item behaviour as add_job (including upsert and the match directive); returns one labelled result per item. Use this for scheduled runs instead of N sequential add_job calls.
Add an entry to the Question Bank. Resolves or creates tags by name. Returns a transparency report of what was matched vs. created.
Look up whether a job posting is already saved in JobSync, by URL. Call this before add_job when re-running a search. With no URL to look up, use add_job's upsert instead of skipping dedupe.
Persist a resume review (produced by you, the agent) against the resume previously handed to you by review_resume. Call this after review_resume hands you a review directive.
ALL 14 tools have empty input schemas ({}). No parameters are defined, typed, or constrained.
Duplicate tool definitions: add_job listed twice (evals/agent-chat/tools.ts and src/lib/mcp/toolDescriptions.ts), review_resume listed 3 times with conflicting descriptions, get_resume and review_resume have identical descriptions. LLM cannot disambiguate.
Confusing naming: 'save_match_result' vs 'match_job' both persist match analyses but have different names. 'save_resume_review' vs 'review_resume' conflate reading and writing. LLM will struggle to select the right tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Fetch the user's default resume so you can review it. Returns the normalized resume text plus a directive — produce the review yourself, then call save_resume_review with the result.
Persist a job-fit match analysis (produced by you, the agent) against a job previously created with add_job. Call this after add_job hands you a match directive.
Fetch the user's default resume so you can review it. Returns the normalized resume text plus a directive — produce the review yourself, then call save_resume_review with the result.
Fetch the user's default resume so you can review it. Returns the normalized resume text plus a directive — produce the review yourself, then call save_resume_review with the result.
Persist a job-fit match analysis (produced by you, the agent) against a job previously created with add_job. Call this after add_job hands you a match directive.
Persist several job-fit match analyses in one call. Same per-item behaviour as save_match_result; returns one labelled result per item.
Persist a resume review (produced by you, the agent) against the resume previously handed to you by review_resume. Call this after review_resume hands you a review directive.
Correct or enrich a job previously added through MCP. Only the fields you supply change. Supplying a fuller jobDescription re-classifies the posting and requests a fresh match analysis — use this instead of re-adding with allowDuplicate.
No parameter descriptions. Tools like add_job and update_job have empty schemas, LLM cannot know what fields to pass (company name? job title? URL? salary?). Descriptions mention 'company, job title, location, source' but these are not in the schema.
No output schemas documented. Descriptions mention 'transparency report' and 'match directive' but LLM cannot know what fields to expect in responses. Breaks tool chaining and downstream planning.