OpenHire · 哨兵
Jobs with the employer's real posting date, from employers' own ATS.
Connector by gzchenhao · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/gzchenhao-openhire
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: recruiting-hr
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 5 read · 6 write · 1 delete
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 12
Read from the source code; the running server may list different tools.
Read 5 · Look things up without changing anything.
check_employerget_company_infolist_portalsread_boardsearch_jobs
Write 6 · Create, change, send or run things.
add_employerauthorize_applicationcheck_watchesrecord_job_factsrefresh_indexwatch_intent
Delete 1 · Delete, drop, revoke or wipe things.
remove_employer
Secrets and settings it asks for
Other settings (environment variables or headers).
OPENHIRE_DATABASE_URL
Files it touches
- Any path the agent passes to its tools
Tools (12)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_employerAdd an employer to my indexPut one employer's public job board into the index on THIS machine, and crawl it now. The public index is a curated list (AI infra, autonomous driving, embodied AI). The employers a user actually targets are wider than that, so any board a vendor adapter can read goes into the user's own index on request: Greenhouse, Lever, Ashby, Moka, 北森, Workable, SmartRecruiters or Workday (<account>.wd5.myworkdayjobs.com/<site>), any sector. After this call the employer behaves like a seeded one: search_jobs(company=...) with the board's own posting dates, days_open and ghost_score; watch_intent on it; r…
authorize_applicationAuthorize applicationRecord an authorized, employer-direct application. REFUSES résumés. Idempotent: the same fingerprint authorizing the same job again gets the original receipt back (`already_authorized: true`); no second record is written. (Formerly `apply` — renamed to make explicit that this only records the user's authorization to apply as themselves; it never submits anything on their behalf.) This tool never accepts a résumé, file, cover letter, name, email or phone — a résumé never transits the server. It only takes a job_id, an anonymous fingerprint, and an explicit per-job authorization. On success i…
check_employerCheck an employerread-onlyFacts about one employer, each with a source and a time. Never a score or a verdict. Use it when the user asks "is this company real / legit / what it says it is?" or is about to apply somewhere they have never heard of. It answers with a checklist, not a judgement: a company can fail an item and be fine (a young domain, an overseas site with no ICP record) or pass every item and still waste the user's time. Relay the items; do not total them, and do not call a company "safe" or "a scam" on this basis. What runs for free, with nothing from the user: * `in_index`: whether the employer's own s…
check_watchesCheck watchesPull matches that are new since this fingerprint's last check. stdio has no server push, so clients pull: call this at the start of a session. Returns the new matches per watch and advances each watch's last-notified marker. A board watch (registered with board_url) is read live here: its entry carries `new_matches` (appeared on the board since the last pull), `closed_since_last` (gone from the board) and `total_matching`; a board that does not answer comes back as `board_error` and nothing is marked closed on its account. The FIRST pull on a watch returns everything matching it, not an incr…
get_company_infoCompany trust signalsread-onlyAggregate, anonymous trust signals for one employer. Returns ghost_score_avg, active_jobs, and index_built_at (when the index was last built). NEVER returns any individual candidate data: the server holds none. `posting_dates_reported` is false when no live posting of this employer carries the employer's own posting date (first-party mirrors such as Li Auto report none), and `postings_without_reported_date` counts those rows; their days_open, and so this employer's median_days_open and ghost_score_avg, are counted from the day this index first saw each posting, a lower bound on age rather th…
list_portalsCareers portals OpenHire cannot readread-onlyThe blind spots as a link directory: employers in AI infra, autonomous driving and embodied AI whose postings this index cannot read, each with its own careers portal. Most are Chinese employers on Feishu Recruitment (飞书招聘), whose job-list API needs a request signature this index treats as access control; a few publish only on BOSS直聘 or keep a careers page without a readable list. Their postings are public to a person in a browser; OpenHire cannot index, date or watch them. Use it when the user asks about these sectors broadly (具身智能有哪些公司在招, autonomous driving roles in Shanghai), after the se…
read_boardRead an employer's boardread-onlyRead one employer's public job board live, whether or not the employer is in this index. Use it when the user names an employer this index does not carry (search_jobs returned the empty-result object, or the employer is outside AI infra, autonomous driving and embodied AI) and has, or can find on the employer's careers page, a board URL on a vendor this index knows how to read: Greenhouse (job-boards.greenhouse.io/<board>), Lever (jobs.lever.co/<site>), Ashby (jobs.ashbyhq.com/<board>), Moka (app.mokahr.com/apply/<org>/<siteId>), 北森 (<tenant>.zhiye.com), Workable (apply.workable.com/<subdomai…
record_job_factsRecord structured facts extracted from a job description.
refresh_indexRefresh one employerRe-crawl ONE employer's public ATS now. Takes about a minute. Throttled to 6h. The index is refreshed weekly, so `search_jobs` can be up to seven days behind and `check_watches` has nothing new to report until it moves. This is the manual nudge for the case that matters: the user is about to act on one employer and wants today's truth. Rules worth knowing before you call it: * ONE employer per call. A full crawl is 20+ minutes and no client will wait; a vague word like "robot" is refused with the list of candidates rather than fanned out into eleven live crawls. * At most one crawl per …
remove_employerRemove an employer I addedcan change or delete dataTake an employer the user added (add_employer) and its postings out of this machine's index. Employers in the public index cannot be removed this way (ERR_NOT_USER_ADDED). Args: company: the company_id add_employer returned, or any part of the employer's name.
search_jobsSearch jobsread-onlySearch the live job index by hard filters; returns ranked JobPosting[]. The server does ONLY a hard filter plus a fixed ranking of match-quality × freshness — precise re-ranking is left to you, the client, which holds the user's context. Every result includes the five protocol fields (verified_at, source, ghost_score, response_sla_days, apply_channel) plus datePosted, days_open, remote_scope, eligible_regions, role_group and ghost_reason. `verified_at` and `ghost_score` answer DIFFERENT questions and routinely disagree: a posting confirmed live today can score 1.0. Live means the employer's …
watch_intentWatch a job intentRegister a standing intent so new matches can be pulled later. The caller supplies its OWN anonymous fingerprint (e.g. "#a3f9-k2p7-x8q1"; make it 12+ random characters, a four-character tag collides with strangers) — the client generates and owns it; the server stores but can never recover it, so persist it client-side and pass the identical one to check_watches. Only the fingerprint and non-PII filter keys are stored — never a name, email, phone or résumé. Accepted filter keys mirror search_jobs: `skills` (ANY-overlap), `required_skills` (ALL/AND — use this to keep sales / solutions-architec…
Signals
- Stars
- 13
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 1,862
- Last commit
- Oct 23, 2026 (5 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
- Last package publish
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.gzchenhao/openhire- Version
- 0.8.27
- Auth
- No auth
- Packages
- pypi openhire
- License
- MIT
- Repository
- github.com/gzchenhao/openhire
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
OpenHire · 哨兵 MCP server. Agent Mart. https://agentmart.dev/connectors/gzchenhao-openhire (last updated 2026-10-24)