Skip to main content
Glama
AndreyTepaykin

hh-mcp

collect_vacancy_resumes

Collect resumes from a vacancy funnel by fetching each resume via topic_id, exporting raw JSON and CSV, and returning a cursor to resume if the batch is truncated.

Instructions

Walk a vacancy funnel (collection/sub_collection), fetch each resume with topic_id through the gated budget, write raw JSON + manifest/csv under out_dir (HH_EXPORT_DIR). Bounded by max (default 25) and max_wait_ms; returns an id-based cursor/remaining when truncated (safe when new responses arrive between calls). Prefer this over spawning subagents. Requires HH_ACCESS_TOKEN.

Input Schema

NameRequiredDescriptionDefault
maxNoMax resumes to fetch this call (default 25, max 100)
rawNoReturn structured JSON instead of the compact Russian summary.
cursorNoOpaque resume point from a previous truncated call
out_dirNoExport directory (default HH_EXPORT_DIR)
collectionNoFunnel stage id, default "response"
vacancy_idYesVacancy id whose responses to collect
max_wait_msNoStop starting new gated reads after this many ms (cap 110000)
sub_collectionNoSame resolution rules as list_applications
stop_on_captchaNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.2.4

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the gated budget, the bound via max/max_wait_ms, that it writes raw JSON + manifest/csv under out_dir, that truncation returns an id-based cursor with remaining, that cursor reuse is safe when new responses arrive, and that HH_ACCESS_TOKEN is required. Remaining gaps (overwrite behavior of out_dir, rate-limit specifics, captcha handling) prevent a 5.

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

Conciseness4/5

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

A single dense paragraph that front-loads the core action (walk funnel, fetch, write) before the bounds and cursor semantics. Every clause carries information. It is tightly packed rather than wasteful, though the run-on structure could be broken for readability.

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

Completeness4/5

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

For a 9-parameter mutation/export tool with no annotations and no output schema, the description covers what the tool does, where it writes, the gating/bounding behavior, and the return cursor contract. The absence of an output schema is offset by the described cursor/remaining contract. Only captcha and file-overwrite semantics are unaddressed.

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

Parameters3/5

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

Schema coverage is 89%, so the schema already documents nearly every parameter, including defaults for max, max_wait_ms, collection, and out_dir. The description adds only marginal context (HH_EXPORT_DIR default, cursor safety across calls, topic_id for each resume) and does not compensate for or extend the outstanding parameter. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb+resource+scope: walk a vacancy funnel (collection/sub_collection), fetch each resume, and write exports to disk. This is clearly distinguishable from sibling reads like get_resumes and list_applications. It stops short of naming a specific sibling as the alternative, so it doesn't quite reach 5.

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?

Gives one explicit routing cue — 'Prefer this over spawning subagents' — and clarifies that the cursor is safe across calls with fresh responses. However, it never says when to use this instead of search_resumes, get_resumes, or list_applications, which are the closest siblings. Usage is implied rather than contrasted with tool alternatives.

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