Skip to main content
Glama
gzchenhao

OpenHire — Real Job Postings, Ghost Jobs Scored

Company trust signals

get_company_info
Read-onlyIdempotent

Aggregate, anonymous trust signals for one employer.

Instructions

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 than the employer's timeline.

claimed is true only when the employer has claimed this tenant and we verified them by corporate identity, never by payment, and it never affects ranking. It is the only signal here that comes from the employer rather than from their public ATS data, and it is what makes response_sla_days non-null on their postings.

Takes an id or any part of the name in either language, like search_jobs' company.

Known-but-not-indexed employers (Momenta, 小马智行 Pony.ai, 智元 AgiBot, MiniMax, 智谱 Zhipu, 商汤 SenseTime, 逐际动力 LimX, 自变量 X Square, 千寻智能 Spirit AI, 加速进化 Booster, 穹彻智能 Noematrix, 众擎 EngineAI) return a structured answer instead of ERR_COMPANY_NOT_FOUND: indexed: false, careers_url (their own portal), reason (their careers site runs on Feishu Recruitment, whose job-list API requires a request signature; we treat that as access control and do not work around it) and employer_opt_in (the employer can authorize the read-only Feishu open-platform scopes hire:site:readonly and hire:site_job_post:readonly). 蔚来 NIO gets the same shape with its own reason: its careers page's security policy blocks this crawler (HTTP 567), which we do not work around. There are no trust signals in that answer because we hold none of their postings; do not read the absence as a verdict on the employer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
company_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.2

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial context: it asserts no individual candidate data is ever returned, explains the semantics of posting_dates_reported and postings_without_reported_date as a lower bound on age, clarifies that 'claimed' is identity-verified and never affects ranking, and specifies the structured non-error fallback (indexed/careers_url/reason/employer_opt_in) plus the ERR_COMPANY_NOT_FOUND alternative. This is well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and return fields are front-loaded, which is good, but the definition runs to several dense paragraphs, including a 13-entry enumeration of known-but-not-indexed employers and a detailed rationale about Feishu request signatures. That material is informative but heavy for a one-parameter read tool and slows the agent's scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return-value burden, and it does: every returned field is explained (ghost_score_avg, active_jobs, index_built_at, posting_dates_reported, postings_without_reported_date, median_days_open, claimed, response_sla_days) along with the two distinct failure/fallback shapes and an explicit warning not to read absence of signals as a verdict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single company_id parameter carries no description, so the description must compensate — and it does by stating the parameter accepts an id or any part of the company name in either language, referencing search_jobs' company field as a precedent. The only gap is that it doesn't specify case-sensitivity, whitespace handling, or a canonical id format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource — 'Aggregate, anonymous trust signals for one employer' — and then enumerates the exact fields returned (ghost_score_avg, active_jobs, index_built_at). This is clearly distinguishable from search_jobs (which discovers postings) and check_employer (a different check), so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by explaining that it takes an id or any part of the name in either language, 'like search_jobs' company', and by detailing what happens for known-but-not-indexed employers. However, it never states explicitly when to call this versus siblings such as check_employer or search_jobs, nor any prerequisites beyond input format.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.