Off-device BOSS直聘 (com.hpbr.bosszhipin) search + login — pure-Python libyzwg reproduction. Exposes BOSS直聘 job search as an MCP tool.
Two tools with complete input schemas and descriptions, but significant gaps in output documentation and parameter clarity. boss_search and boss_filters both have descriptions (194 and 156 chars respectively, within baseline 34-392 range) and typed parameters. However, output schemas are only documented in prose within descriptions, not as formal JSON Schema. Parameter descriptions lack constraint details (e.g., city code format, page bounds, filter_params structure). No error handling guidance. Tool names follow verb_noun pattern (search, filters) but descriptions embed example values ('Python', '101210100') which LLMs may reuse literally. Missing idempotency and retry guidance for read-only operations.
List the filter/sort options a live search advertises (sorts, industry/position codes, labelFilter tags), so an agent can pick valid values for boss_search's sort/filter_params. Returns: {sorts, nlpFilters, labelFilter}.
Search BOSS直聘 jobs off-device. Args: query: keyword, e.g. "Python" / "安卓逆向". city: city code, e.g. "101210100" (Hangzhou); default = session city. page: 1-based page number. sort: -1 comprehensive (default), others per BOSS. filter_params: extra filterParams, e.g. {"salary":"407","experience":"104,105"}; discover valid codes with boss_filters. Returns: {count, jobs:[{name,salary,company,city,labels,jobId,securityId}], outer_code, cardlist_code}.
Output schemas documented only in prose descriptions, not as formal JSON Schema. LLMs cannot parse return structure from text alone. boss_search returns {count, jobs:[...], outer_code, cardlist_code, message} but no schema defines job object fields or types.
Parameter descriptions embed example values (city='101210100', query='Python') which LLMs tend to reuse literally in real calls. Should use enum constraints or format declarations instead.
Numeric parameters lack bounds. page (1-based), sort (-1 or others), and filter_params lack documented ranges or constraints. Unbounded numbers let LLMs pass absurd values.
No error handling guidance. Descriptions do not explain what happens on invalid city code, network failure, or auth expiration. LLM has no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
filter_params parameter is a free-form dict with no schema or enumeration of valid keys. Description says 'discover valid codes with boss_filters' but does not document the structure or expected key names.