Skip to content
Agentmart
Submit a tool

OpenHire · 哨兵

Jobs with the employer's real posting date, from employers' own ATS.

Connector by gzchenhao · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 13
Write a review

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.

We use your email only for this newsletter. Privacy

About

Jobs with the employer's real posting date, from employers' own ATS. HR family. Résumé stays local.

Use cases: recruiting-hr

No 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_employer
  • get_company_info
  • list_portals
  • read_board
  • search_jobs

Write 6 · Create, change, send or run things.

  • add_employer
  • authorize_application
  • check_watches
  • record_job_facts
  • refresh_index
  • watch_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 index

    Put 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 application

    Record 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-only

    Facts 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 watches

    Pull 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-only

    Aggregate, 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-only

    The 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-only

    Read 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_facts

    Record structured facts extracted from a job description.

  • refresh_indexRefresh one employer

    Re-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 data

    Take 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-only

    Search 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 intent

    Register 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
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)