A side-by-side look at the Dreamwork and Hirejack MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Dreamwork for workplace & productivity work over a hosted endpoint; choose Hirejack MCP for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.
list_matches, get_job, save_job.search_jobs, get_job, get_company_profile.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 71/100 · Great | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Remote HTTP/SSE | Local subprocess (stdio) |
| Auth | API key required | OAuth 2.0 |
| Pricing | Not declared | Freemium |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 11 | 0 |
| Directory activity | 2 views 0 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | 69 | 31 |
| Full listing | View Dreamwork | View Hirejack MCP |
list_matchesReturns the account's ranked live match pool with job id, its Dreamwork page url, title, company, location, remote terms, salary, dates, match percent and saved/applied state. Filters narrow that pool; nextCursor continues a page with identical filters, and null ends the walk. A page holds 10 jobs by default and limit accepts up to 50; the next page is the previous nextCursor, which keeps the page size it was issued with. addedAfter supports overlapping discovery windows because listings can become servable after first discovery. notes describe applied filters and coverage.get_jobReturns one saved or corpus role by id with full description, company, location and remote terms, salary, posted date, match score, saved state, board column, application id, material readiness and work-eligibility verdict. url is the Dreamwork listing page; sourceUrl is the employer's direct posting. eligible is true for an unrestricted role or a confirmed allowed country, false for a high-confidence restriction excluding confirmed countries, and null when eligibility is unknown. Only false blocks applying or Autopilot: null means eligibility is not yet known, so proceed with applying — the application itself surfaces any real restriction. whyItMatches may be empty when no matcher explanation is stored.save_jobSaves one role to the account's pipeline at SAVED as a bookmark. No application is submitted or queued until apply is called. Application materials may start preparing in the background. An already saved role returns a no-op receipt.dismiss_matchHides one listing from the account's match feed, job alerts and Autopilot until the account restores or saves it. The receipt offers undo for one minute; restore_match reverses it at any time and list_dismissed_matches lists dismissed listings. The supplied reason is not stored. It does not hide other listings from the same company and does not move or remove an existing pipeline card.restore_matchReverses a dismissal of one listing so it can return to the account's match feed, job alerts and Autopilot. Restoring a listing that is not dismissed returns a no-op receipt. Restoring does not save the listing. A closed listing stays out of the feed.list_dismissed_matchesReturns the account's dismissed listings, newest first, with listing id, title, company, Dreamwork page url, dismissal time and whether the listing is still active. total counts all dismissed listings. limit defaults to 20 and accepts up to 50; nextOffset continues the list and null ends it.get_pipelineReturns saved and applied roles as board cards with column, application id and last-updated time. total and counts cover all matching records; complete identifies whether cards are truncated by limit. limit defaults to 50 cards and accepts up to 100; there is no next page, so when complete is false narrow the read with status. Column values describe board state and do not establish employer receipt or response.move_pipelineMoves one role's board card to the requested column using the account holder's reported state. No employer is contacted. APPLIED records an application rather than submitting one; INTERVIEWING creates a durable interview record. WITHDRAWN removes the card from the active board. Closing a role can remove its listing from the feed. A receipt offers undo only when reversible.mark_applied_offsiteRecords an application the account holder submitted outside Dreamwork. Exactly one of matchId, listingId or url names the role; a role not yet in the pipeline is added in Applied without generating materials, and an unlisted URL is imported in the background. appliedAt (YYYY-MM-DD or ISO 8601, not in the future) is the reported application date and defaults to now; repeating the call with a new appliedAt corrects it. attestation:true is required and represents the person's confirmation that submission occurred. Recorded roles are excluded from matches and Autopilot. Applications Dreamwork is still sending are refused. There is no undo. This call does not send an application.import_jobFetches a public job-posting URL and imports it as a private role in the account's pipeline. Extraction runs asynchronously and the card appears when it finishes. A posting already held by Dreamwork returns completed without another fetch.cancel_applyStops a queued or in-progress application when submission can still be prevented. Already submitted applications cannot be recalled; the receipt reports that boundary.generate_packQueues a tailored resume, cover letter and employer-question answers for one saved role. assets optionally selects a subset; omission requests all three. Each request spends one pack allowance, regardless of subset, and generation settles asynchronously. Existing materials can be overwritten by generation.search_jobsSearch HireJack's database of live tech job postings. Filter by keyword, role family, seniority, skill, location, salary, remote policy, or visa sponsorship, and sort by newest or highest pay. Returns a slim list of jobs with title, company, location, salary range, posted date, and key skills. Use this for queries like 'remote senior backend roles paying $200K+', 'highest paying Rust jobs' (sort='salary'), 'data engineer jobs at fintech companies', 'who is hiring Rust developers in NYC'. Not for a single known posting (`get_job`), company-level questions (`get_company_profile`), personalized ranking (`recommendations`), or aggregate market stats (`get_market_pulse`).get_jobFetch one job posting by domain + jobId, or by HireJack detail URL. Returns title, company, location, salary, skills, seniority, posted date, visa/remote/education metadata, and (when available) the AI summary. Use after `search_jobs` when the user picks a specific role to discuss, or when the user pastes a HireJack job URL. Not for browsing or filtering postings (`search_jobs`) or personal fit scoring (`match_job`).get_company_profileFetch HireJack's full hiring profile for a single company by domain. Returns: tech stack (top skills with counts), role distribution, seniority breakdown, location breakdown, hiring trend (% MoM), salary medians where disclosed, and an AI-generated hiring brief. Use this for queries like 'what is Stripe hiring?', 'what tech does Anthropic use?', or before comparing companies. Not for historical trends (`get_company_history`, Analyst) or the user's personal fit (`company_fit`).search_companiesList HireJack's tracked companies with hiring volume. Filter by name/domain (`q`) or industry. Returns slim records with domain, name, industry, total open jobs, and engineering job count. Use this to find companies in a sector ('which fintech companies are hiring?') or to resolve a company name to its domain before calling get_company_profile. Not for deep per-company data (`get_company_profile`) or multi-axis segmentation by trend/skill/job-count (`find_companies`, Analyst).get_market_pulseGet HireJack's market-wide snapshot: total open tech jobs, tracked companies, remote share, top skills by demand, top companies by hiring volume, and trending skills (week-over-week movers). Use for high-level market questions like 'how is the tech job market right now?' or 'what skills are trending?'. Not for history or time-series (`get_market_history`, Analyst) or job-level search (`search_jobs`).match_jobScore how well the authenticated user matches a specific job. Pro tier. Returns matchPct (0-100, the same score the website shows for this job), requirementsPct (how much of this posting's own requirement list the user meets), a dimension breakdown (skills, role, seniority, location, remote — plus experience when both the user's resume-derived years and the job's required years are known, and semantic when both the user's profile and the job carry embeddings), matched/missing/bonus skill lists, an experienceFit comparison, ATS-specific resume tips for the company's ATS, and a priorityScore that factors hiring velocity. Use for queries like 'how well do I match this job?' or 'should I apply?'. Not for company-level fit (`company_fit`) or discovering new jobs (`recommendations`).company_fitScore how well the authenticated user fits a company. Pro tier. Returns fitScore (0-100), 5-dimension breakdown (tech stack 40%, roles 25%, seniority 15%, location 10%, hiring trend 10%), matching skills, skill gaps, role alignment, and a hiring-momentum signal. Use for 'is Anthropic a good fit for me?' or 'compare these companies for me'. Not for scoring a specific job posting — use `match_job` for that.recommendationsGet top job recommendations for the authenticated user, scored against their profile (skills, desired roles, seniority, location, remote preference) and hard-filtered by their remote/US-only/minimum-salary preferences. Pro tier. Returns jobs ranked by composite match score with per-job match details (default 10, `limit` up to 50). Use for 'show me jobs that match me' or 'what should I apply to this week?'. Not for unpersonalized filter searches (`search_jobs`) or scoring one known job (`match_job`).salary_benchmarkCompare a salary against the live HireJack market for a role family + seniority slice. Pro tier. Returns precomputed P10/P25/P50/P75/P90 percentiles, the user's percentile ranking (when `salary` is supplied), and a career-ladder progression of medians by seniority. Use for 'am I paid well as a senior backend engineer?' or 'what should I ask for?'. Not for a specific job's posted range (`get_job`) or market-wide comp stats (`get_market_pulse`).skill_gapAnalyze the gap between the authenticated user's current skills and what their desired roles require in the live market. Pro tier. Returns matchPct (0-100), the list of skills the user already has that map to their target roles, and the list of missing skills ranked by impact (how often the skill appears in target-role postings). Use for 'what should I learn next?' or 'how close am I to senior PM roles?'. Not for simulating the payoff of skills the user might LEARN — use `skill_impact` for that.market_positionCompute the authenticated user's market position score (0-100). Pro tier. Weighted: 50% skill demand against current market, 20% seniority fit, 15% remote availability for the user's preference, 15% skill breadth. Returns score, matchingJobs count, salaryMedian for matching roles, per-skill demand breakdown, and the top companies whose tech stacks align best with the user's skills. Use for queries like 'how do I stack up against the market?' or 'what's my market position right now?'. Not for job-specific (`match_job`) or company-specific (`company_fit`) scores.skill_impactFor each skill the authenticated user does NOT have, simulate adding it and compute the market impact. Pro tier. Returns a ranked list of skills with: newJobsUnlocked (jobs that previously didn't match but would after learning the skill), boostedJobs (existing matches that would score higher), companiesNeedingIt, relevantRoles, and a composite impactScore. Also returns profileCompleteness so the caller can suggest filling missing profile fields. Use for queries like 'what should I learn next?' or 'which skill would unlock the most jobs for me?'. Not for auditing the user's CURRENT skills against their target roles — use `skill_gap` for that.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"dreamwork-2": {
"command": "npx",
"args": [
"-y",
"@dreamworkhq/mcp"
]
}
}
}
{
"mcpServers": {
"tvlss-hirejack-mcp": {
"command": "npx",
"args": [
"-y",
"@hirejack/mcp"
]
}
}
}