Skip to main content
Glama

Headcount Labs

Rank a job market dimension

market_breakdown
Read-onlyIdempotent

Rank one dimension (by: title, state, city, company, seniority, employment_type or remote) by jobs, pay or another figure, optionally inside a filter. Daily snapshot (see as_of). For live counts or who is hiring now, use count_jobs. Cells with fewer than 30 jobs are omitted. No account needed.

Input Schema

NameRequiredDescriptionDefault
byNobreakdown only: what to rank (title, state, city, company, seniority, employment_type or remote; place means state).
roleNoA standard job title such as "Registered Nurse" or "Software Engineer"; leave out for every job. Same as title.
sortNobreakdown only: jobs (the default), pay_median, pay_p75, pay_p90, share_with_pay, remote_share, new_7_days or new_30_days.
limitNobreakdown rows or dimension values to return.
placeNoUS (the default), a state code such as TX, a state name, or a city such as "Austin, TX" (cities only for lookup, breakdown and negotiate).
titleNoA standard job title; lookup, breakdown and negotiate match more than 6,000 titles. Same as role.
remoteNoremote, hybrid or in_person (lookup and breakdown).
companyNoAn employer name (lookup and breakdown).
seniorityNointern, entry, senior, lead, manager, director or executive, read from the job title (lookup, breakdown, negotiate).
employment_typeNofull_time, part_time, contract, temporary, internship or per_diem (lookup and breakdown).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, idempotent behavior, so the description focuses its budget elsewhere and delivers real added context: the data is a daily snapshot rather than live ('see as_of'), low-volume cells under 30 jobs are silently dropped, and no account is required. Those three facts materially change how an agent should interpret sparse or stale results; only freshness granularity (timezone/refresh cadence) and result shape remain unstated.

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?

Four short sentences, front-loaded with the core action before the alternative tool and the caveats. Every clause carries information an agent needs — enumerated dimensions, sort targets, freshness, suppression threshold, auth — with no filler or restatement of the name.

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 10 optional parameters, no output schema, and a read-only annotation set, the description covers the essentials: what gets ranked, how to sort, filter scoping, freshness, minimum-cell suppression, and auth. The main residual gap is that with no output schema the description never sketches the shape of a breakdown row (dimension value plus metric), leaving an agent to infer the response.

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 the schema already defines every parameter and the baseline would be 3. The description still earns credit by framing role/title/place/company/seniority/employment_type/remote as filters that narrow the ranking ('optionally inside a filter') and by naming the sort family ('jobs, pay or another figure'), which clarifies the relationship between 'by' and 'sort' that the schema documents only per-field.

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 bounded resource: 'Rank one dimension (by: title, state, city, company, seniority, employment_type or remote) by jobs, pay or another figure'. The enumerated dimensions and sort targets make the operation concrete, and the closing pointer to count_jobs clearly separates it from the sibling that returns live totals rather than ranked breakdowns.

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 the key routing rule explicitly: 'For live counts or who is hiring now, use count_jobs', which is the most likely confusion given the sibling set. It also implies the filter parameters are optional scoping ('optionally inside a filter'). It does not distinguish against market_dimensions, market_lookup or salary_range, so the guidance is clear but not exhaustive across all siblings.

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.