Skip to main content
Glama
jobvision-mcp
by sepehr071

Job market counts

jv_market
Read-onlyIdempotent

Count open job ads by category, province, work type, seniority, experience, pay band, or age, and apply keyword, city, or category filters to answer hiring-market questions.

Instructions

Count open Jobvision ads per category, province, work type, seniority, experience, pay band or age.

Use for market questions ("which categories hire most in Shiraz", "how many python ads per province"). Totals for the whole site come with every call. keyword, city and category narrow the counted ads; a split by category or province makes 77 or 32 small requests (cached for two minutes), the other splits at most 10. Lower max_requests to cap them; a cut-short split then has groups_checked below groups_total. Pay bands count only ads that show pay; work types can overlap, so groups may add up to more than the total. Then use jv_search with the same filters to read the ads.

Input Schema

NameRequiredDescriptionDefault
byNoSplit of the open ads: overall (totals only), category (77 job categories), province (32), work_type, seniority, experience, salary_range or posted_within.overall
topNoShow only the largest N groups.
cityNoCity, province or Tehran area, by name (اصفهان, Isfahan) or slug (isfahan, all-cities-of-tehran, tehran-shomal). One place only. See jv_locations.
keywordNoJob title or skill, Persian or English, e.g. python, حسابدار, برنامه نویس.
categoryNoJob category slug or name from jv_options('categories'), e.g. developer, sales, accounting.
max_requestsNoMost requests one call may make for a split (category has 77 groups).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.2

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent/openWorld annotations: discloses caching (two minutes), request fan-out per split (77 for category, 32 for province, at most 10 otherwise), the max_requests cap, and how truncation surfaces as groups_checked below groups_total. It also warns of two counting quirks — pay bands only count ads showing pay, and overlapping work types can make groups sum above the total — which materially affect interpretation of results.

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?

Purpose and example questions are front-loaded in the first two sentences, followed by operational caveats in descending importance. Dense but every clause carries distinct information — request counts, caching, truncation semantics, counting caveats — with no filler.

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 no output schema, the description does the necessary work: it states that whole-site totals accompany every call and that groups_checked/groups_total signal truncation. It stops short of describing the exact response shape (e.g., group label fields per split), but an agent has enough to call and interpret 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 coverage is 100%, so baseline is 3, but the description adds real semantics: keyword, city and category all narrow the counted set, and max_requests caps fan-out with a visible truncated-split signal. It stops short of clarifying interactions between keyword and category (intersection vs. union) or how `top` interacts with `by`.

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?

Opens with a specific verb+resource and scope: 'Count open Jobvision ads per category, province, work type, seniority, experience, pay band or age.' It also explicitly separates itself from siblings by ending with 'use jv_search with the same filters to read the ads', so the agent knows this tool aggregates while jv_search retrieves ads.

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 concrete triggering questions ('which categories hire most in Shiraz', 'how many python ads per province') and names the follow-up alternative (jv_search) with the condition that selects it. It also points to jv_locations and jv_options('categories') for identifier lookup, covering the main navigation decisions.

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