Job Tracker
MCPB · JOB-TRACKER-0.3.3.MCPB
Local job-search tracker: roles, a status machine with evidence, rules, interviews, daily reports.
Available components
Last scanned (5 hours ago)
Scores higher than 73% of MCPB servers
Category Project Management
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security13
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- No install/post-install scripts declared.Pass
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency19
- Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 3 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability68
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 2681 tokens (~83/item across 32 items; 32 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "check_pay" implies "pay" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 33 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Oct 26 35
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Oct 2026 · Analysed mcpb/https://github.com/adamwardecki/job-hunt-mcp/releases/download/v0.3.3/job-tracker-0.3.3.mcpb@0.3.3
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_alias ~46
Add an alias to a company (brand, former name, parent) so dedupe catches it.
| Name | Type | Req | Description |
|---|---|---|---|
| alias | string | yes | Alias |
| company_id | integer | yes | Company id |
No output schema declared.
No examples provided.
add_artifact ~110
Save a cover note, PDF, Gmail draft id, form answers, confirmation or note. Prose is linted. gmail_draft stays unverified until verify_artifact.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | Text content |
| kind | string | yes | cover_note | cover_letter_pdf | gmail_draft | form_answers | confirmation | note |
| ref | string | – | Path, URL or Gmail draft id |
| role_id | integer | – | Role id (omit for drafts not tied to a role) |
No output schema declared.
No examples provided.
add_interview ~115
Record an interview (or a booking link still to book: omit starts_at). Moves the role to interviewing.
| Name | Type | Req | Description |
|---|---|---|---|
| booked_by | string | – | user | employer |
| link | string | – | Booking or meeting link |
| notes | string | – | Notes |
| people | string | – | Interviewers |
| role_id | integer | yes | Role id |
| stage | string | yes | Stage name |
| starts_at | string | – | ISO datetime, omit if not booked yet |
| tz | string | – | IANA timezone |
No output schema declared.
No examples provided.
add_rule ~69
Add a user preference or correction as a rule, with reason and example.
| Name | Type | Req | Description |
|---|---|---|---|
| added_by | string | – | user | pipeline |
| example | string | – | Concrete example |
| reason | string | yes | Why (the incident or the user words) |
| text | string | yes | The rule, imperative |
No output schema declared.
No examples provided.
audit ~86
Post-run rule check for a run (preferred) or a local day: excluded industries, drops without evidence, applied without confirmation, prose lint, drafts not read back, no_cold_apply. Pass run_id or date.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | YYYY-MM-DD, a day in filters.timezone (ignored when run_id is given) |
| run_id | integer | – | Run id |
No output schema declared.
No examples provided.
check_pay ~127
Deterministic pay-floor check. Drops only if the band maximum is below the floor; straddling bands are kept and flagged. Pass fx_rate when the currency differs from the floor (look it up, never guess).
| Name | Type | Req | Description |
|---|---|---|---|
| comp_max | number | – | Band maximum |
| comp_min | number | – | Band minimum |
| currency | string | yes | ISO code |
| equity | string | – | Equity, if any |
| fx_rate | number | – | Floor-currency units per 1 unit of currency |
| period | string | – | year | month | week | day | hour |
No output schema declared.
No examples provided.
deactivate_rule ~22
Deactivate a rule.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Rule id |
No output schema declared.
No examples provided.
find_company ~73
Dedupe check. Fuzzy match on name, aliases, domain and ATS slug. verdict: new | seen | skip (live application, same posting, or no_cold_apply).
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | Website domain |
| name | string | – | Company name |
| url | string | – | Posting URL |
No output schema declared.
No examples provided.
finish_run ~38
Close a run with a one-paragraph summary.
| Name | Type | Req | Description |
|---|---|---|---|
| run_id | integer | yes | From start_run |
| summary | string | – | What happened |
No output schema declared.
No examples provided.
gate_check ~42
Pre-submit check: role verified, dedupe clean, not no_cold_apply, no live application at the company.
| Name | Type | Req | Description |
|---|---|---|---|
| role_id | integer | yes | Role id |
No output schema declared.
No examples provided.
get_document ~42
Read a user document: profile (CV distilled), stories, reusable-answers, voice.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | profile | stories | reusable-answers | voice |
No output schema declared.
No examples provided.
get_profile ~28
All config sections: filters, prefs, writing, accounts, autonomy, schedule, sources, capabilities.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_role ~31
Role with its company, full event history, artifacts and interviews.
| Name | Type | Req | Description |
|---|---|---|---|
| role_id | integer | yes | Role id |
No output schema declared.
No examples provided.
import_legacy ~113
One-off import of the manual pipeline: applied-log.md, outreach-preferences.md, queue/*.md, and user documents. Pass the contents, or path to a local pipeline/ folder.
| Name | Type | Req | Description |
|---|---|---|---|
| applied_log | string | – | applied-log.md contents |
| documents | object | – | {profile, stories, "reusable-answers"} markdown |
| path | string | – | Local path to the pipeline/ folder |
| preferences | string | – | outreach-preferences.md contents |
| queue | array | – | Queue notes |
No output schema declared.
No examples provided.
lint_prose ~56
Lint outbound prose: em/en dashes, "not X but Y", fake-candid openers, volunteered gaps, length.
| Name | Type | Req | Description |
|---|---|---|---|
| max_words | integer | – | Word limit |
| text | string | yes | Text to lint |
No output schema declared.
No examples provided.
list_artifacts ~91
Artifacts for a run, a local day or a role, with lint results and read-back state. The auditor uses this.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | YYYY-MM-DD, a day in filters.timezone (ignored when run_id is given) |
| kind | string | – | Artifact kind |
| role_id | integer | – | Role id |
| run_id | integer | – | Artifacts from this run |
No output schema declared.
No examples provided.
list_rules ~26
Active rules with provenance.
| Name | Type | Req | Description |
|---|---|---|---|
| include_inactive | boolean | – | Include deactivated rules |
No output schema declared.
No examples provided.
open_items ~47
Queue (fresh and stale), unverified drafts, interviews to book, upcoming interviews.
| Name | Type | Req | Description |
|---|---|---|---|
| stale_after_days | integer | – | Queue items untouched this long are listed as stale (default 14) |
No output schema declared.
No examples provided.
pipeline_summary ~36
Counts by status, live processes, rejections, queue (fresh and stale).
| Name | Type | Req | Description |
|---|---|---|---|
| stale_after_days | integer | – | Default 14 |
No output schema declared.
No examples provided.
record ~181
Append a validated event without the state-machine check: outcomes from outside (rejection, invite, user decision) or a note (omit status).
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | yes | user | employer | pipeline |
| blocked_by | string | – | browser | user | login | captcha | other |
| category | string | – | Drop category |
| evidence | string | – | Verbatim quote, feedback, or URL |
| outcome | string | – | rejected | withdrawn | role_closed |
| question | string | – | Blocking question for the user (shown under Needs you until a later event) |
| reason | string | yes | Why |
| role_id | integer | yes | Role id |
| run_id | integer | – | Current run id |
| status | string | – | found | verified | scored | queued | applied | interviewing | offer | dropped | closed (omit for a note) |
No output schema declared.
No examples provided.
record_setup_decision ~59
Record the user decision for an amber setup item (e.g. "no browser, accepted"), so setup can complete.
| Name | Type | Req | Description |
|---|---|---|---|
| decision | string | yes | The user's decision, in their words |
| key | string | yes | setup_status item key |
No output schema declared.
No examples provided.
render_report ~97
Markdown daily report. With run_id it covers that run; otherwise the local day. Lead with the outcome via headline. Only read-back drafts and confirmed submissions are claimed.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | YYYY-MM-DD, a day in filters.timezone (report title; ignored for scope when run_id is given) |
| headline | string | – | One or two sentences: the outcome |
| run_id | integer | – | Run id (preferred) |
No output schema declared.
No examples provided.
save_config ~72
Validate and save one config section. Unknown fields are rejected. Field names and types are in templates/settings.example.yaml; an invalid call returns the section's expected fields.
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | Section contents |
| section | string | yes | filters | prefs | writing | accounts | autonomy | schedule | sources | capabilities |
No output schema declared.
No examples provided.
save_document ~39
Save a user document (markdown).
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Markdown |
| name | string | yes | profile | stories | reusable-answers | voice |
No output schema declared.
No examples provided.
set_no_cold_apply ~64
Mark a company as no_cold_apply (an intro or recruiter process is open), or clear it.
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | integer | yes | Company id |
| on | boolean | – | true to set, false to clear |
| reason | string | – | Why |
No output schema declared.
No examples provided.
set_source_status ~75
Record a source result for this run. Three consecutive failures mark it degraded.
| Name | Type | Req | Description |
|---|---|---|---|
| applied | integer | – | Applications from it |
| error | string | – | Error text |
| found | integer | – | Leads found |
| name | string | yes | Source name |
| status | string | yes | ok | degraded | failed | disabled |
No output schema declared.
No examples provided.
setup_status ~26
Checklist of what is configured, missing or degraded. Call at the start of every run.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
source_health ~17
Per-source status, consecutive failures, yield.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
start_run ~84
Start a run and record detected capabilities (connectors, browser, local folder). Returns run_id.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | object | yes | {connectors: {gmail, calendar, linkedin}, browser: "claude-in-chrome" | "built-in" | null, local_folder: bool} |
| kind | string | yes | sweep | apply | triage | setup | calibration |
No output schema declared.
No examples provided.
transition ~313
Move a role through found → verified → scored → queued → applied → interviewing → offer (dropped from found/verified/scored/queued; closed from queued/applied/interviewing/offer). Rejects illegal moves. verified needs evidence (URL + verbatim location line), location_line and location_type. dropped needs evidence (quote or rule:<id>). applied needs the confirmation text. closed needs outcome.
| Name | Type | Req | Description |
|---|---|---|---|
| blocked_by | string | – | For queued: browser | user | login | captcha | other |
| category | string | – | For drops: location | pay | industry | role_shape | stack | culture | duplicate | gated | other |
| evidence | string | – | Verbatim quote with URL, rule:<id>, or confirmation text |
| location_line | string | – | verified only: verbatim from the ATS |
| location_type | string | – | verified only: remote | hybrid | onsite | unknown |
| outcome | string | – | rejected | withdrawn | role_closed (closed only) |
| question | string | – | For queued: the single blocking question for the user |
| reason | string | yes | Why, one sentence |
| role_id | integer | yes | Role id |
| run_id | integer | – | Current run id |
| score | number | – | scored only: 0 to 10 |
| score_notes | string | – | scored only: short notes, including gaps kept internal |
| to | string | yes | found | verified | scored | queued | applied | interviewing | offer | dropped | closed |
No output schema declared.
No examples provided.
upsert_role ~286
Create or update a role (creates the company if needed). New roles start as found. Returns the dedupe result for new roles.
| Name | Type | Req | Description |
|---|---|---|---|
| ats | string | – | ashby | greenhouse | lever | workable | teamtailor | personio | join | workday | other |
| comp_currency | string | – | ISO currency code |
| comp_max | number | – | Band maximum |
| comp_min | number | – | Band minimum |
| comp_period | string | – | year | month | day | hour |
| company | string | – | Company name as the employer writes it |
| company_aliases | array | – | Other names, e.g. a brand vs the legal entity |
| company_domain | string | – | Employer website domain |
| equity | string | – | Equity as stated |
| id | integer | – | Existing role id to update |
| industry | string | – | Industry of the business line the role sits in |
| location_line | string | – | Verbatim location line from the employer ATS |
| location_type | string | – | remote | hybrid | onsite | unknown |
| posted_at | string | – | Posting date if shown |
| source | string | – | Where the lead came from |
| stack | string | – | Stack as stated |
| title | string | yes | Role title, verbatim |
| url | string | – | Posting URL (employer ATS preferred) |
No output schema declared.
No examples provided.
verify_artifact ~61
Mark an artifact verified after reading it back. For gmail_draft, readback must be the get_draft/list_drafts output containing the draft id.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | integer | yes | Artifact id |
| readback | string | yes | Read-back output |
No output schema declared.
No examples provided.
How do I install the Job Tracker MCP server?
Job Tracker ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, d1cf80fdbd48e4a5a15d07792aa450ad4ae1e925367dd4ec1f5cad56ea45bcb9; the commands to do that are on this page. If it does not match, do not open it.
mcpb · job-tracker-0.3.3.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
d1cf80fdbd48e4a5a15d07792aa450ad4ae1e925367dd4ec1f5cad56ea45bcb9
macOS / Linux
echo "d1cf80fdbd48e4a5a15d07792aa450ad4ae1e925367dd4ec1f5cad56ea45bcb9 job-tracker-0.3.3.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\job-tracker-0.3.3.mcpb).Hash -eq "d1cf80fdbd48e4a5a15d07792aa450ad4ae1e925367dd4ec1f5cad56ea45bcb9"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the Job Tracker MCP server?
Job Tracker is an MCP server listed in the public MCP registry as io.github.adamwardecki/job-tracker. Local job-search tracker: roles, a status machine with evidence, rules, interviews, daily reports. This page covers its MCPB bundle (https://github.com/adamwardecki/job-hunt-mcp/releases/download/v0.3.3/job-tracker-0.3.3.mcpb).
Is the Job Tracker MCP server safe to use?
Job Tracker scores 35 out of 100 on VerifyMCP. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Job Tracker MCP server expose?
Job Tracker exposes 32 tools: setup_status, record_setup_decision, start_run, finish_run, get_profile, and 27 more. Their descriptions and schemas cost roughly 2,572 tokens of context every time the server is loaded.
What licence is the Job Tracker MCP server under?
Job Tracker declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.