Skip to main content
Glama

Headcount Labs

Count jobs

count_jobs
Read-onlyIdempotent

Count matching jobs without listing them. This is the live count; prefer it over market_lookup and market_breakdown for "how many" and "which employers are hiring". Counting by q also needs a title or company filter. Counting by description alone returns an estimate: count_is_estimate is true and count_margin gives the 95% range. To answer "which companies are hiring for X" or "how are these jobs split by ...", pass group_by: employer (company works too), work_arrangement (remote, hybrid or in_person), title, state (US), city, country or employment_type. The answer then also has group_by, groups (the top 25 values by number of matching jobs, each with value and jobs), groups_from_jobs (how many matching jobs were grouped, at most 1,000, taken in the default list order), groups_sampled (true when more jobs matched than were grouped, so the counts are from a sample) and groups_unknown_jobs (grouped jobs with no known value). A job with several locations or postings can count under more than one value. group_by employer keeps its own keys: employers (each with employer_name, company_id and jobs), employers_from_jobs, employers_sampled and employers_unknown_jobs. When a filter is too broad to count exactly in time, count is an estimate: the answer then has count_is_estimate: true, count_margin (the 95% range either side of count) and count_note.

Input Schema

NameRequiredDescriptionDefault
filtersNo
group_byNoBreak the matching jobs down by employer (company), work_arrangement, title, state, city, country or employment_type.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, non-destructive, but the description adds behavior an agent could not infer: description-only counting degrades to an estimate with count_is_estimate and a 95% count_margin, broad filters also trigger estimation with count_note, and grouping is capped at 1,000 jobs with groups_sampled flagging sampling. It also warns that a job with several locations can count under more than one value, which materially affects how a count should be interpreted.

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 core statement and the sibling preference are front-loaded, and each subsequent sentence carries substantive information. It is dense and long, and the estimate behavior is described in two separate places (description-only counting and broad filters), which could be consolidated, but there is little pure 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 takes on the return-shape burden and does so for the grouped responses (groups, groups_from_jobs, groups_sampled, groups_unknown_jobs and the employer-specific keys) and the estimate fields. What remains thin is the non-grouped base response and the bulk of the nested filter parameters, which the description largely leaves to the schema.

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 50%, and the description compensates for the most consequential gaps: q matching semantics (every word must match, use description_advanced for OR), the q + title/company constraint, and the full group_by enum behavior with per-value response keys. It does not explain most of the long filter tail (pay_min/pay_max, posted_since, radius_miles pairing), so it adds value but does not fully close the coverage gap.

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?

"Count matching jobs without listing them" gives a specific verb (count) and resource (jobs), and explicitly scopes it as the live count versus the sibling tools market_lookup and market_breakdown. An agent can distinguish it from search_jobs and the market_* tools 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 Guidelines5/5

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

It states exactly when to prefer this tool ("how many", "which employers are hiring") and names the alternatives it supersedes. It also gives concrete routing rules for the group_by variants ("which companies are hiring for X", "how are these jobs split by ...") and a constraint on how to count by q (needs a title or company filter).

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.