hh-radar
Server Quality Checklist
Latest release: v0.4.0
- Disambiguation5/5
Each tool targets a distinct function: lexical vs semantic search, individual vacancy detail, skill statistics, market aggregates, candidate-fit comparison, and database metadata. The overlapping search/stat tools explicitly cross-reference each other to prevent misselection.
Naming Consistency4/5Most names are lowercase snake_case and use clear noun/verb tokens, but the pattern is mixed: search_vacancies/get_vacancy/compare_to_profile are verb-first, while skill_stats/market_overview/db_status are noun-first. Still predictable and readable.
Tool Count5/5Seven tools cover the job-search niche without redundancy; each one serves a clear use case and none feel like filler.
Completeness5/5The surface covers the full workflow: discover via search/semantic search, inspect via get_vacancy, analyze via skills/market tools, evaluate fit via compare_to_profile, and understand data boundaries via db_status. No critical missing operation for the stated purpose.
Average 4.3/5 across 7 of 7 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 51 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly reveals the aggregate nature and specifies the exact computed metrics: salary percentiles, remote share, experience breakdown, and top employers. Minor gaps like data freshness or source are not addressed, but they are not critical for this read-style aggregate tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The output summary is front-loaded and the usage caveat is placed after, making it easy to scan and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is informative for an aggregate tool and there is an output schema to cover return shapes. However, the total absence of parameter semantics and the lack of clarification about what the top-10 employers are ranked by leaves invocation partially underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 0% and the description does not compensate. It only says 'by filter' without explaining the meaning or format of query, area_id, or published_within_days. An agent cannot reliably construct filter values from this definition alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: it returns an aggregated market snapshot by filter, with vacancy count, salary percentiles (p25/p50/p75), remote share, experience breakdown, and top-10 employers. It also explicitly distinguishes itself from tools that return specific vacancy lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use examples ('what are current salaries', 'is there much remote work') and an explicit when-not-to-use case: not for a list of specific vacancies. It does not name a specific sibling tool like search_vacancies, which keeps it just shy of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the core behavior, output details, and blockers list, plus the default profile loading behavior and profile_path override. It omits potential failure modes like a missing profile.yaml, which would be useful, but overall it is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences cover purpose, output, usage guidance, and parameter details without redundancy. Front-loaded with the main comparison action and outcome, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are covered. The description provides enough context for an agent to know when to call it, what inputs matter, and what to expect. It could mention error conditions like missing profile, but this is a minor gap for a comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description explicitly explains profile_path (default, template). Vacancy_id is only implied as 'вакансию' and not described in terms of source or format, so the description partially compensates for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the specific verb 'сопоставляет' and resource (vacancy vs candidate profile), and enumerates concrete outputs: verdict, matched/missing skills, and blockers. This distinguishes it from sibling tools focused on search, market analysis, or database status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use: 'Используйте перед тем, как рекомендовать вакансию кандидату как хороший вариант' and warns against self-assessment. Does not name specific alternative tools, but the directive is clear enough for an agent to decide appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the source (hh.ru), the fact that the description is not truncated, and the returned contents. It does not mention potential latency, error conditions, access constraints, or that this is a live fetch, so the behavioral picture is only partially complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, and the core purpose is front-loaded before the usage guidance. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema and clear siblings, the description is nearly complete: it covers what is returned and when to invoke it. Minor gaps around failure modes and availability are acceptable because the tool is simple and the output schema already defines the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by specifying 'by its id' and linking the id to the output of search_vacancies/semantic_search. For a single integer parameter, this adds enough semantic meaning beyond the schema's 'Vacancy Id' title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieving the full card of one vacancy by id from hh.ru. It also enumerates the card contents (description, employer, skills, link) and implicitly distinguishes itself from sibling tools by positioning it as the detailed follow-up to search_vacancies/semantic_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit context: use after search_vacancies or semantic_search to study a concrete vacancy, or before compare_to_profile. It does not explicitly state when not to use it or name exclusions, but the intended workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the aggregate nature of the result, mentions share and median salary, and clarifies that no vacancy list is returned. It does not describe edge cases like empty filters or pagination, but the core behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the result, then use cases, then an exclusion with a sibling tool. Every sentence adds value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for purpose and routing, and an output schema exists, so the return shape is covered elsewhere. However, with four parameters completely undocumented and no annotations, the description is not fully sufficient for an agent to construct a correct call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain what query, top_n, area_id, or published_within_days mean semantically. It only refers vaguely to "фильтр" (filter). An agent receives almost no guidance on how to populate these parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool computes skill statistics: which technologies appear most often in matching vacancies, their share, and median salaries for vacancies requiring each skill. It also distinguishes itself from search_vacancies by explicitly saying it does not return a vacancy list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool: for questions like "what is currently in demand" or "what to learn". It also gives an exclusion and names the alternative tool, search_vacancies, for retrieving vacancy lists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden and does well: it reveals the vector-embedding mechanism, the semantic rather than lexical matching behavior, the similarity score in results, and implicitly the requirement of the `rag` extra. It does not explicitly state failure behavior if `rag` is missing, but overall it is transparent for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it front-loads the core distinction, then provides usage guidance, a comparative alternative, and the return characteristic. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low parameter count and the presence of an output schema, the description covers the essential context: what semantic search does, when to use it, when not to, and what kind of results to expect. Minor omissions like explicit `limit`/`min_similarity` semantics and the explicit `rag` prerequisite are present but not fully detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does 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 effectively explains the meaning of `query` by describing semantic intent and hints at `min_similarity` through the mention of similarity scores. However, it does not explicitly describe `min_similarity` as a threshold or explain `limit`, leaving some parameter semantics to inference from names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool performs semantic search over vacancies using vector embeddings, not exact word matching, and returns vacancies with similarity scores. It explicitly distinguishes itself from search_vacancies, making the tool's unique purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use this tool: when the query describes a task in one's own words or searches by concept. It also provides a clear alternative for exact-term search, search_vacancies, and explains why that alternative is preferable (faster, no extra `rag` dependency).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it does well by stating the tool is a service/inspection call, clarifying it accepts no parameters, and explaining what data boundaries it reveals. It stops short of explicitly saying it is read-only or describing the response structure, but the output schema covers return-format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence packs the substantive status contents, the second gives the usage rationale, and the final short clause confirms zero parameters. Every sentence earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status tool, this is complete: it tells the agent what data it will receive, why it matters, and when to invoke it relative to other work. The existence of an output schema compensates for any missing return-format details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already fully describes the input contract. The description reinforces this with the explicit statement that it takes no parameters, which is sufficient for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb and resource: it provides status information about the database. It enumerates the exact contents (counts of vacancies/employers/skills, embedding index status, model, data period, last collection time). This differentiates it from the sibling search/analytics tools and leaves little ambiguity about its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to call this tool at the beginning of work to understand data boundaries and avoid fabricating vacancies or statistics. While it does not name alternatives or specify when not to use it, the directive is concrete and actionable for a preflight status check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the burden falls on description. It discloses important behaviors: empty query not an error, sorted by publication date, resul descriptions truncated, full text via get_vacancy by id. Does not mention pagination, auth, or read-only nature, but core runtime behavior is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Fully front-loaded with core mechanism, then usage, then edge-case behavior and result truncation. Every sentence adds value; no filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 optional parameters with defaults and an output schema, the description covers usage conditions, query syntax, empty-query behavior, sorting, and result truncation with a pointer to get_vacancy. No critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage and 7 params, so description must compensate. It thoroughly explains query syntax (websearch, quotes, minus prefix) and mentiones filters generally. Individual filters like area_id, experience, remote_only are not semantically described, but the core parameter is well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function is full-text vacancy search by words in title and description, including the Postgres tsvector and websearch syntax. It explicitly contrasts itself with semantic_search ('Для поиска по смислy и синонимам без точных слов используйте semantic_search'), so the agent can distinguish sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: when the query contains concrete terms (должноst, технологию, компанию), and names the alternatives for semantic search. It also covers edge case with empty query and says what will be returned, which is actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Denmurzik/hh-radar'
If you have feedback or need assistance with the MCP directory API, please join our Discord server