Skip to main content
Glama
ilyautov

hh-mcp-ru

hh-mcp-ru

API hh.ru для ИИ-ассистентов: вакансии, отклики и приглашения, резюме, справочники, статистика зарплат. Каталог из официальной спеки, у каждого метода класс доступа.

PyPI CI License: MIT Методов Сайт Звёзды

Install in VS Code Install in Cursor

Каталог собран из первоисточника (официальная спека api.hh.ru/openapi/specification/public) и лежит в репозитории как hh_mcp/endpoints.yaml: 133 метода, из них 92 на чтение, 32 на запись и 9 необратимых. Сервер исполняет ровно этот файл, поэтому таблица ниже не может разойтись с кодом.

Установка

uvx hh-mcp-ru

Claude Desktop, claude_desktop_config.json:

{
  "mcpServers": {
    "hh-mcp": {
      "command": "uvx",
      "args": ["hh-mcp-ru"],
      "env": { "HH_TOKEN": "...", "HH_APP_NAME": "..." }
    }
  }
}

Related MCP server: 100Hires MCP Server

Ключи

dev.hh.ru → Мои приложения → создать приложение → access token. HH_APP_NAME заполняется обязательно: hh отклоняет запросы без внятного User-Agent, и это первая причина непонятных ошибок 400.

переменная

секрет

что это

HH_TOKEN

да

Токен приложения hh.ru (dev.hh.ru → Мои приложения).

HH_APP_NAME

нет

Имя приложения и контактный email для заголовка HH-User-Agent: без него hh отклоняет запросы.

Ключи можно не держать в окружении: сервер умеет кабинеты и кладёт их в ~/.ru-mcp/cabinets.json с правами 600, вне репозитория.

Карта методов

раздел

методов

чтение

запись

необратимое

Работодатель и менеджеры

30

23

5

2

Вакансии

21

12

7

2

Общие справочники

14

6

7

1

Подсказки

11

11

0

0

Отклики и приглашения

10

5

5

0

Сохранённые поиски

6

2

3

1

Статистика зарплат

5

5

0

0

Вебхуки

4

1

2

1

Комментарии к соискателю

4

1

2

1

Резюме

3

3

0

0

Звонки

3

3

0

0

Регионы

3

3

0

0

Токены

2

0

1

1

Учебные заведения

2

2

0

0

Локали

2

2

0

0

Метро

2

2

0

0

Текущий пользователь

1

1

0

0

Аккаунты менеджеров

1

1

0

0

Отрасли

1

1

0

0

Словари

1

1

0

0

Профессиональные роли

1

1

0

0

Языки

1

1

0

0

Навыки

1

1

0

0

Clickme

1

1

0

0

Районы

1

1

0

0

Шаблоны сообщений

1

1

0

0

Условия публикации вакансий

1

1

0

0

всего

133

92

32

9

Как это выглядит в чате

Вы: поиск вакансий

hh_search_methods("поиск вакансий")
  hh_get_vacancies                     GET  /vacancies                                 чтение
  hh_get_vacancies_related_to_vacancy  GET  /vacancies/{vacancy_id}/related_vacancies  чтение
  hh_get_vacancies_similar_to_vacancy  GET  /vacancies/{vacancy_id}/similar_vacancies  чтение

hh_describe_method("hh_get_vacancies")
  Поиск по вакансиям
  GET api.hh.ru/vacancies
  параметры: page, per_page, text, search_field, experience, employment, schedule, area и ещё 36
  класс доступа: чтение

hh_call_method("hh_get_vacancies", {"page": "...", "per_page": "..."})

Три инструмента вместо 133 функций: агент ищет метод словами, читает его карточку и вызывает. Запись и необратимое спрашивают подтверждение.

Что обычно просят:

  • Выгрузить свои вакансии и отклики за период и свести в таблицу.

  • Посмотреть статистику зарплат по роли перед публикацией вакансии.

  • Найти вакансии конкурентов по региону и профессиональной роли.

  • Ответить кандидатам шаблоном, показав список человеку до отправки.

Безопасность

Сервер работает на машине пользователя, ключи наружу не уходят. У методов три класса доступа: чтение идёт сразу, запись и необратимые действия требуют подтверждения. Заголовок авторизации не покидает домены сервиса даже при вызове произвольного пути.

Проверить установку

uvx hh-mcp-ru doctor

Печатает, сколько методов загрузилось, найдены ли ключи и откуда. Секреты не показывает. С --live делает один дешёвый реальный вызов на чтение.

Родня

Ядро вынесено в schema-mcp-core. Соседние серверы: vk-mcp-ru, diadoc-mcp-ru, sbis-mcp-ru, chestny-znak-mcp-ru. Маркетплейсы живут отдельно: marketplaces-mcp-ru.

MIT. Автор Илья Утов.

Все проекты одним списком, разобранные по назначению: ilyautov.github.io.

Available Tools

14 tools
hh_add_cabinetA
Idempotent

Add or update a cabinet (a named set of API credentials), from chat.

⚠️ This puts the key into the chat transcript — requires i_understand_key_goes_to_chat=true. The terminal-free safe alternative is the installer (install.py / double-click), where the key never enters chat.

Args: credentials: dict with the required fields for this service ({fields}). For Ozon: {{"client_id": "...", "api_key": "..."}}; for WB: {{"token": "..."}}. name: optional label. If omitted, the cabinet is named after the real shop name fetched from the marketplace (falls back to "main"). i_understand_key_goes_to_chat: must be true to proceed. Saved to ~/.marketplace-mcp/cabinets.json (local, chmod 600), never echoed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
credentialsYes
i_understand_key_goes_to_chatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the security consequence (key lands in the chat transcript), the required acknowledgement flag, the on-disk destination and permissions (~/.marketplace-mcp/cabinets.json, chmod 600), and that the value is never echoed back. That is exactly the extra behavioral context the readOnly/idempotent hints cannot convey.

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?

Front-loads the action and the warning, then breaks parameters into a readable Args block — every sentence earns its place. The literal escaped newlines and doubled braces from the raw template add minor noise, but the content density is high.

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?

For a write tool with a nested credentials object, a safety gate, and no parameter documentation in the schema, the description covers inputs, side effects, storage location and the safe alternative. With an output schema present, no return-value prose is needed, and nothing an agent requires to call this correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden and does: it defines the credentials object shape with concrete per-service examples (Ozon client_id/api_key, WB token), and explains that name is optional with a non-obvious fallback to the marketplace shop name or 'main'. The usually-inscrutable boolean is also explained as a hard gate.

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?

Specific verb+resource ('add or update a cabinet — a named set of API credentials') with an explicit scope qualifier ('from chat'), which cleanly separates it from siblings like hh_set_key, hh_list_cabinets, hh_use_cabinet and hh_remove_cabinet. An agent can route correctly without opening any schema.

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

Usage Guidelines4/5

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

It gives a clear conditional ('from chat') and names the preferred alternative path — the installer (install.py / double-click) where the key never enters the chat — which is strong when-to-use guidance. It does not, however, contrast with the closest sibling hh_set_key, so the agent still has to infer which key-writing tool to pick in a non-chat context.

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

hh_call_methodA
Destructive

Execute one catalog endpoint by operation_id.

Read endpoints run immediately. WRITE endpoints require confirm_write=true. DESTRUCTIVE endpoints require confirm_write=true AND i_understand_this_modifies_data=true (nothing is sent otherwise).

Args: operation_id: id from the catalog (see {svc}_search_methods). path_values: values for {placeholders} in the path. query: query-string parameters. body: JSON request body. confirm_write: required for write/destructive operations. i_understand_this_modifies_data: required for destructive operations. Returns JSON: {"ok": true, "status", "data"} or the error envelope.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
queryNo
path_valuesNo
operation_idYes
confirm_writeNo
i_understand_this_modifies_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, yet the description adds real information beyond them: exactly which confirmation flags are required per operation class, and critically that nothing is sent unless the destructive flag is supplied. That gating contract is the key behavioral fact an agent needs before invoking.

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

Conciseness5/5

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

Front-loaded purpose sentence, then the confirmation rules, then a clean Args list and return-envelope line. Every sentence earns its place and the safety-critical constraint appears early rather than buried.

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?

Given destructive annotations, an output schema, and six undocumented schema parameters, the description closes the right gaps: confirmation semantics, parameter meanings, discovery source, and response envelope. An agent has everything needed to call it correctly.

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 description coverage is 0%, so the description carries the full burden, and it does so: every one of the six parameters is named with its meaning (path placeholders, query string, JSON body, and the two confirmation flags). It lacks format/type detail or example values, but the semantics are covered well enough to compensate for the empty schema.

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?

The description states a specific verb and resource: execute one catalog endpoint selected by operation_id, and points to the catalog-discovery sibling ({svc}_search_methods). That is clear and actionable. It does not, however, differentiate itself from the closely related hh_call_raw sibling, so sibling discrimination is left to inference.

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

Usage Guidelines4/5

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

It establishes the workflow context (obtain an operation_id from the catalog via search_methods) and the behavioral conditions under which a call proceeds (read runs immediately, write/destructive require confirmation flags). No exclusion vs hh_call_raw is given, but the usage context is concrete rather than implied.

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

hh_call_rawA
Destructive

Execute ANY endpoint, even ones not in the catalog (full API coverage).

Safety is inferred from the HTTP verb: GET=read, POST/PUT/PATCH=write, DELETE=destructive. Same confirmation rules as {svc}_call_method.

Args: method: HTTP verb (GET/POST/PUT/PATCH/DELETE). path: full path beginning with '/', e.g. "/api/v1/supplier/sales". host: host override; defaults to the service's default host. query: query-string parameters. body: JSON request body. confirm_write / i_understand_this_modifies_data: confirmations. Returns JSON: {"ok": true, "status", "data"} or the error envelope.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
hostNo
pathYes
queryNo
methodYes
confirm_writeNo
i_understand_this_modifies_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply a blanket destructiveHint=true; the description adds the operationally critical per-verb safety model (GET=read, POST/PUT/PATCH=write, DELETE=destructive), names the write-confirmation flags, and states the confirmation regime. This is real disclosure beyond the structured fields and tells the agent what will actually happen for a given call.

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?

Front-loaded with the core capability, then structured Args/Returns sections that are easy to scan. Slightly marred by the unresolved '{svc}' template placeholder in the sibling reference, but no wasted sentences.

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 high-risk arbitrary-endpoint tool, it covers safety inference, confirmation requirements, parameter roles, and the return envelope even though an output schema exists. Missing only peripheral context such as auth prerequisites or pagination/rate-limit behavior on the underlying API.

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 description coverage is 0%, so the description carries the full burden and mostly succeeds: it gives meaning and format for method (with the verb list), path (leading '/' plus a concrete example), host (override/default), and the two confirmation flags. query and body entries are closer to restatement of their titles, so it's strong but not exhaustive.

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?

States a specific verb+resource (execute ANY endpoint) and carves out an unambiguous scope distinction vs siblings: 'even ones not in the catalog (full API coverage)', which directly separates it from the catalog-bound hh_call_method / hh_describe_method. An agent can pick this tool without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear usage condition (raw/uncatalogued endpoints) and points to a confirmation-behavior precedent ('Same confirmation rules as {svc}_call_method'). It stops short of an explicit 'prefer hh_call_method when the endpoint IS in the catalog' exclusion, so the routing rule is implied rather than stated.

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

hh_check_authA
Read-only

Check whether the required credentials are present in the environment.

Does NOT reveal secret values — only reports which variables are set. Returns JSON: {"ready": bool, "missing": [str], "required": [str]}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds the valuable guarantee that secret values are never revealed and only set/unset status is reported. It also sketches the return shape, though the output schema already carries that detail.

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

Conciseness5/5

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

Three short lines, front-loaded with the core purpose, then the security constraint, then the return shape. Every sentence earns its place and nothing is padded.

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?

With zero parameters, full annotation coverage, and an output schema present, the description is nearly complete: purpose, secrecy behavior, and return keys are all stated. The only gap is not tying the result to a next action (e.g., how to populate missing variables), which is a usage concern rather than a completeness failure.

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?

The tool takes no parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter meaning is added or needed.

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?

States a specific verb (check) and resource (required credentials in the environment), making the tool's job unambiguous. It is easily distinguished from siblings like hh_set_key or hh_call_method, which act on credentials or methods rather than reporting their presence.

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?

Usage is implied (run this before credential-dependent calls to see if the environment is ready), but the description never states when to use it, what to do when 'ready' is false, or how it relates to siblings such as hh_set_key. Adequate but leaves the agent to infer the workflow.

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

hh_describe_methodB
Read-only

Return the full catalog record for one endpoint: method, host, path, scope, safety level, pagination style, rate limit, params and doc URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the record includes scope, safety level, pagination style and rate limit, which hints at what the agent learns, but it discloses nothing about auth requirements, error behavior, or whether unknown operation_ids are handled.

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 front-loaded sentence with no filler. It is efficient, though the trailing field list is somewhat padded given an output schema already enumerates the return shape.

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

Completeness3/5

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

For a one-parameter read-only lookup with an output schema, the description covers the purpose but leaves the parameter unexplained and offers no routing guidance relative to its many siblings. Adequate but with a clear gap around how to obtain a valid operation_id.

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

Parameters2/5

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

Schema description coverage is 0% and the single required parameter (operation_id) is never mentioned. The phrase 'for one endpoint' loosely implies an endpoint identifier, but nothing explains where an operation_id comes from (e.g., hh_search_methods) or its expected format.

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 (Return) and resource (full catalog record for one endpoint) and enumerates the record's contents, so an agent can tell it apart from hh_search_methods or hh_call_method. It stops short of naming a sibling explicitly, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

There is no sentence about when to use this over hh_search_methods (find endpoints) or hh_get_section (browse a section). The agent must infer that this is the pre-call inspection step from the purpose alone; no conditions, prerequisites, or alternatives are given.

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

hh_fetch_allA
Read-only

Auto-paginate a read endpoint and return every row in one response.

Handles offset, last_id, cursor (Ozon v4/v5), page and WB lastChangeDate styles. The array path is taken from the catalog automatically.

Args: operation_id: a read endpoint from the catalog. query / body / path_values: base parameters (cursor fields are managed). items_path: override the array path (default: the endpoint's own). limit: page size to request. max_items: hard cap to protect context (default 10000). Returns JSON: {"ok", "items", "total_fetched", "pages_fetched", "truncated"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
limitNo
queryNo
max_itemsNo
items_pathNo
path_valuesNo
operation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations (readOnlyHint, openWorldHint) already cover the safety profile, but the description adds real behavioral value: it enumerates the pagination styles handled (offset, last_id, cursor Ozon v4/v5, page, WB lastChangeDate), the auto-derived array path, and a max_items hard cap to protect context. Truncation behavior is disclosed, though rate-limit/retry behavior is not.

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?

Purpose is front-loaded in the first sentence, followed by a compact Args block and a Returns line. The pagination-style sentence is dense but earns its place; structure is easy to scan with no filler.

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?

For a 7-param tool with an output schema and read-only annotations, the description covers purpose, pagination mechanics, parameter roles, and the truncation/cap contract. Nothing essential to a correct invocation is missing.

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 description coverage is 0%, so the description must carry the load, and it documents all 7 parameters including the key default behaviors (items_path defaults to the endpoint's own path, max_items defaults to 10000, cursor fields auto-managed). It omits the limit default of 1000, so it is strong but not exhaustive.

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?

The opening sentence gives a precise verb+resource: it auto-paginates a read endpoint and returns every row in a single response. It clearly implies a pagination-wrapper role distinct from one-shot callers like hh_call_method, though it never names a sibling to sharpen that contrast.

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?

It signals that the target must be a read endpoint from the catalog and notes that cursor fields are managed for the caller, which implies when to reach for it. However, it never states when NOT to use it or explicitly points to hh_call_method/hh_call_raw as the non-paginating alternatives.

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

hh_get_sectionA
Read-only

List all endpoints in one section.

Args: section: section name (see {svc}_list_sections), e.g. "statistics". Returns JSON list of {operation_id, method, path, safety, summary}.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the description's remaining duty is to add context. It discloses the return shape ('JSON list of {operation_id, method, path, safety, summary}'), which is a useful signal, but says nothing about output size, rate limits, or that safety fields are pre-computed.

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?

The docstring-style Args/Returns layout is front-loaded with the one-line purpose, then the parameter, then the return shape. Every element is relevant, though the Args/Returns scaffolding is mildly verbose for a one-parameter tool.

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 simple read-only, single-parameter listing tool with an output schema present, the description covers purpose, parameter meaning, and child-section discovery adequately. The absence of any guidance on when this beats sibling retrieval tools is the main remaining gap.

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 description coverage is 0%, so the description carries the full burden for the single parameter, and it does compensate: it names the field ('section'), explains what a section is, points to a discovery tool, and gives a concrete example ('statistics'). It stops short of documenting format constraints (e.g. case sensitivity), keeping it from a 5.

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?

The description states a specific verb and resource ('List all endpoints in one section'), which is clearly narrower than the sibling hh_list_sections (which enumerates sections, not endpoints). It does not, however, explicitly contrast itself with routing-relevant siblings like hh_search_methods or hh_map, leaving that distinction to inference.

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 reference to '{svc}_list_sections' implies the workflow for discovering valid section names, giving implied usage guidance. There is no explicit statement of when to prefer this over hh_search_methods, hh_map, or hh_describe_method, and no exclusions.

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

hh_list_cabinetsA
Read-only

List configured cabinets for this marketplace and which one is active.

Returns JSON: {"active": str|null, "cabinets": [names], "fields_needed": [...]}. Secret values are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds value beyond that by disclosing the secret-handling boundary ('Secret values are never returned') and the response shape, which reassures an agent about data exposure.

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

Conciseness5/5

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

Two short sentences; the purpose is front-loaded and the return-shape plus secret note follow compactly. No filler or repetition.

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?

With an output schema present and annotations covering the read-only/finite-world profile, the description is nearly sufficient as written. It could still note the relationship to hh_use_cabinet or that the list reflects this marketplace's configuration, but nothing required to call it correctly is absent.

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?

The tool takes zero parameters, so the baseline is 4 — there is nothing for the description to disambiguate. No parameter semantics are missing because none exist.

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?

States a specific verb and resource ('List configured cabinets') scoped to 'this marketplace', and adds the distinguishing detail of which cabinet is active. Against siblings like hh_add_cabinet, hh_use_cabinet, and hh_remove_cabinet the read-only listing intent is unambiguous without opening any 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?

Usage is only implied: the verb 'List' signals a read-only inspection call, and the mention of an 'active' cabinet hints this is a prerequisite check before hh_use_cabinet. No explicit when-to-use statement, no named alternative, and no conditions are spelled out.

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

hh_list_sectionsA
Read-only

List API sections and how many catalog endpoints each contains.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already establish read-only and non-open-world behavior. The description adds useful return context that each section includes an endpoint count, but it omits auth, pagination, or ordering details; with an output schema present, the added behavioral value is modest.

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

Conciseness5/5

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

A single front-loaded sentence with no wasted words. Every clause contributes distinct information: the resource type and the per-section endpoint count.

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 low-complexity list tool with no parameters, read-only annotations, and an output schema, the description is largely complete. It could still mention any authentication or scope prerequisite implied by the presence of hh_check_auth.

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?

The tool has zero parameters, so there is no parameter documentation burden. The baseline for zero-parameter tools is 4, and no semantic gaps exist.

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 and resource: listing API sections, plus the distinguishing detail that each section includes a catalog endpoint count. It is clear, but it does not identify sibling boundaries such as hh_get_section or hh_search_methods.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no prerequisites, and no alternatives. The list verb implies discovery usage, but nothing tells an agent when this is preferable to sibling tools like hh_get_section.

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

hh_mapA
Read-only

The big picture: business entities this API covers and the go-to methods for each. Call with no args to see the whole map ("you are here"); pass entity="reviews" (or stocks/prices/orders/…) to list every method of one entity. Use this before guessing — it orients you fast.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds valuable orientation context ('you are here', 'orients you fast') and usage hints, but doesn't describe the output format beyond the output schema's existence. It could mention whether the map is static or dynamic, but the added context is still useful.

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

Conciseness5/5

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

The description is concise and front-loaded: the first sentence states the purpose, the second gives usage, the third gives a recommendation. No wasted words, and the structure is easy to parse.

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?

Given the tool's role as an orientation map, the description is complete: it tells the agent what it gets, how to call it, and why to call it. With an output schema present, return details needn't be explained. The description sufficiently covers the tool's purpose and usage.

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 description coverage is 0%, so the description must compensate. It does: it explains that the single parameter 'entity' is optional (call with no args) and provides examples ('reviews', 'stocks/prices/orders'). It doesn't list all possible entities or mention the default value (empty string), but it gives enough to use the parameter correctly.

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 description clearly states what the tool does: it provides a map of business entities and the go-to methods for each. It distinguishes itself from siblings like hh_search_methods or hh_describe_method by being a high-level orientation tool ('the big picture'). The verb+resource is specific: 'map' (verb) of 'business entities and methods' (resource).

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

Usage Guidelines5/5

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

The description explicitly says when to use it: 'Use this before guessing — it orients you fast.' It also gives concrete usage patterns: call with no args to see the whole map, or pass entity='reviews' to list methods of one entity. This provides clear alternatives to other discovery tools like hh_search_methods.

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

hh_remove_cabinetB
Destructive

Delete a stored cabinet. If it was active, another becomes active.

Args: name: the cabinet to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the safety profile is known. The description adds a genuinely non-obvious behavioral consequence: deleting the active cabinet promotes another to active, which the annotations cannot convey. It still omits irreversibility/recoverability and behavior for a nonexistent name.

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?

Front-loaded with the core action in one short sentence, then the side effect. The Args block is slightly redundant with the schema, but the overall size is appropriate and waste is minimal.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the tool is simple with one required param. However, the description says nothing about failure modes (unknown name), permanence of deletion, or auth requirements, leaving gaps for a destructive operation.

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 0% and the single parameter is undocumented in the schema, so the description must carry it. It only restates 'name: the cabinet to remove' with no format, lookup, or matching semantics (e.g., case sensitivity, whether name must match list_cabinets output). Marginal compensation for the coverage gap.

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: 'Delete a stored cabinet.' It is distinguishable from add_cabinet, list_cabinets, and use_cabinet by the deletion framing, though it never explicitly contrasts itself with siblings such as use_cabinet or set_key.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no routing to alternatives. An agent gets no signal about whether removing an active cabinet is safe or whether use_cabinet should be called first. The only conditional provided ('if it was active, another becomes active') describes a side effect, not usage guidance.

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

hh_search_methodsA
Read-only

Search the endpoint catalog by keyword (works in Russian and English).

Args: query: free text, e.g. "остатки", "stocks", "update price". limit: max results (1-50). Returns JSON list of matching endpoints (best first).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: bidirectional Russian/English search, a best-first result ordering, and the 1-50 limit bound. It does not mention pagination or result truncation behavior, a minor gap.

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?

Compact and front-loaded, leading with the core action before the Args block. The Args block format is slightly boilerplate but each line earns its place.

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?

With an output schema present, return-value detail is not required, and the description still notes the JSON list shape and ordering. Combined with the readOnly annotations, an agent has what it needs to call the tool correctly; only the missing default and pagination caveats hold it below 5.

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%, so the description carries the full burden and does so well: 'query' is defined as free text with three concrete examples, and 'limit' is described as max results with an explicit 1-50 range. It does not mention the default value of 15, which the schema supplies.

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 (search) and resource (endpoint catalog) and notes the keyword works in both Russian and English. This distinguishes it from siblings like hh_call_method or hh_list_sections, though it never explicitly contrasts with the other lookup tool hh_describe_method.

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?

Usage is implied: use it to find endpoints by keyword when you know a term but not the exact method. There is no explicit statement of when to prefer this over hh_describe_method, hh_list_sections, or hh_map, and no exclusions are given.

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

hh_set_keyA
Idempotent

Change / rotate the API key from chat (e.g. the old one expired or leaked).

⚠️ The key goes into the chat transcript — requires i_understand_key_goes_to_chat=true. The safe, terminal-free alternative is the installer, where the key never enters chat. Use a scoped key and rotate it in the seller cabinet if it was exposed.

Args: credentials: dict with the required fields ({fields}). cabinet: which cabinet to update. Default: the active one (so "my key expired" just works). If there is none, the cabinet is named from the marketplace's shop name, else "main". i_understand_key_goes_to_chat: must be true to proceed. On success the key is validated against the marketplace and the shop name is reported. Saved locally (chmod 600), never echoed back.

ParametersJSON Schema
NameRequiredDescriptionDefault
cabinetNo
credentialsYes
i_understand_key_goes_to_chatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare this is a non-read-only, idempotent, non-destructive write, and the description is consistent with that. It adds substantial context the annotations cannot convey: the key is written into the chat transcript, it is validated against the marketplace on success, the shop name is reported, and the file is saved locally with chmod 600 and never echoed back.

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?

Front-loaded with the core action and a prominent warning, then structured into Args and success sections; nearly every sentence earns its place. The security aside about scoped keys and the seller cabinet is useful but slightly beyond what is needed to invoke the tool.

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?

For a write tool with annotations and an output schema, the description covers the safety model (chat-exposure warning, confirmation flag), the side effects (local save, permissions), and the success signal (validation + reported shop name). The only gap, credentials field detail, is a schema/templating defect rather than a missing concept.

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?

With 0% schema description coverage the description must carry the load, and it does well for two of three params: cabinet defaulting to the active cabinet (with the shop-name/'main' fallback) and the mandatory boolean flag are both explained. However, the required credentials param is described only as 'dict with the required fields ({fields})' — an unsubstituted template placeholder that leaves the most important parameter undocumented.

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?

States a specific verb and resource ('Change / rotate the API key') and explicitly scopes it to a chat-driven rotation scenario. It also names the alternative path (the installer) and the sibling tools that handle non-key cabinet work, so an agent can distinguish it from hh_add_cabinet/hh_use_cabinet at a glance.

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

Usage Guidelines5/5

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

Gives the triggering conditions ('the old one expired or leaked'), a required precondition (i_understand_key_goes_to_chat=true), and a named alternative (the installer, where the key never enters chat) plus remediation advice for exposed keys. Nothing is left to inference.

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

hh_use_cabinetA
Idempotent

Switch the active cabinet. Subsequent API calls use its credentials.

Args: name: the cabinet to activate (see {svc}_list_cabinets).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare non-read-only, non-open-world, idempotent behavior, and the description adds the crucial stateful effect: the switch persists and changes credentials for all later calls. It does not cover failure modes (e.g. unknown cabinet name) or whether prior session state is discarded.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and its consequence; the Args note is minimal and non-redundant. Nothing is wasted.

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?

An output schema exists, so return values need no explanation. The description covers action, side effect, and value sourcing for a one-parameter tool; only edge-case behavior (invalid name, effect on the previously active cabinet) is left implicit.

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 description coverage is 0%, so the description must carry the parameter. It does define the single param as the cabinet to activate and points to hh_list_cabinets as the source of valid values, which is the key semantic an agent needs.

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?

States a specific verb and resource ('Switch the active cabinet') and immediately names the consequence. It is clearly distinguishable from siblings like hh_list_cabinets, hh_add_cabinet, and hh_set_key, which manage rather than activate cabinets.

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

Usage Guidelines4/5

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

The description implies the workflow context ('Subsequent API calls use its credentials') and routes the agent to hh_list_cabinets for valid names. It stops short of stating exclusions or error conditions, but the activation step's place in the sequence is clear.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.2.0
    • First observedhh_add_cabinet
    • First observedhh_call_method
    • First observedhh_call_raw
    • First observedhh_check_auth
    • First observedhh_describe_method
    • First observedhh_fetch_all
    • First observedhh_get_section
    • First observedhh_list_cabinets
    • First observedhh_list_sections
    • First observedhh_map
    • First observedhh_remove_cabinet
    • First observedhh_search_methods
    • First observedhh_set_key
    • First observedhh_use_cabinet

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation4/5

The discovery cluster (hh_list_sections, hh_get_section, hh_search_methods, hh_map, hh_describe_method) has some conceptual overlap in helping orientation, and hh_add_cabinet vs hh_set_key both write credentials from chat, but each tool has a distinct role. The execution tools (hh_call_method vs hh_call_raw vs hh_fetch_all) are well differentiated by catalog vs arbitrary endpoint vs pagination.

Naming Consistency5/5

All 14 tools use a consistent hh_ prefix with snake_case verb_noun structure (check_auth, list_sections, get_section, search_methods, describe_method, call_method, fetch_all, list_cabinets, add_cabinet, use_cabinet, remove_cabinet). hh_map is the only noun-only name but fits the otherwise uniform convention.

Tool Count5/5

14 tools sit comfortably in the well-scoped 3-15 range. The set cleanly splits into discovery, execution, and credential-management clusters, each earning its place without redundancy.

Completeness4/5

Credential lifecycle (list/add/set/use/remove plus auth check) is fully covered, discovery is thorough, and execution handles catalog calls, raw calls, and pagination. Minor gap: no bulk/multi-call orchestration, but core workflows have no dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search job vacancies, manage resumes, and apply to jobs on HeadHunter (hh.ru), Russia's largest job search platform. Includes OAuth 2.0 integration for secure job applications and an automated vacancy hunter agent with intelligent matching.
    30
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Official Model Context Protocol server for 100Hires — the applicant tracking system for recruiting teams. Exposes the full 100Hires API v2 as 130 MCP tools, enabling AI assistants to manage candidates, jobs, applications, interviews, messages, and more.
    100
    16 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI assistants to access and manage HeadHunter job platform data, including vacancies, resumes, negotiations, and employer settings via 167+ tools.
    83 npm
    5
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables to interact with hh.ru (a Russian job platform) through browser automation, allowing users to search for jobs, manage resumes, apply to vacancies with cover letters, and track application statuses via natural language.
    9
    3
    -