Skip to main content
Glama

Voxjobs (Portugal)

get_salary_stats

Read-onlyIdempotent

Get salary statistics for a slice of the Portugal job market: how many listings match, how many publish a salary, the median annual salary, the p25–p75 range and a breakdown by seniority. Use this when the user asks what a role pays, or how two locations/seniorities compare — instead of listing individual jobs. Takes the same filters as search_jobs and describes exactly the set that tool would return. Reports percentiles rather than averages, because job salaries have a long right tail and a single executive listing moves an average. All figures normalised to the yearly period.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
escoCodeNoESCO occupation code (see europa.eu/esco). Optional and precise: when the caller has one, it filters much more sharply than free text.
locationNoCity or region within the market (e.g. Lisbon, Porto, Berlin). Do not include the country — it is set by the host.
scheduleNoHours: FULL_TIME, PART_TIME, SHIFTS or FLEXIBLE.
seniorityNoLevel of the role.
remoteModeNoWork arrangement. REMOTE, HYBRID or ONSITE.
contractTypeNoContract type in market-local vocabulary (e.g. permanent, CDI, B2B, umowa o pracę).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesListings matching the filters, with or without a published salary.
marketYes
pricedYesSubset that publishes a salary — the base of every figure below. A large gap to `count` means many listings in this slice hide compensation.
salaryNoYearly salary distribution, in percentiles. null when no matching listing publishes a salary. There is deliberately no min or max: extremes on a third-party aggregator are set by data errors, not the market.
currencyYes
bySeniorityYesUp to 6 most represented seniority levels, each with its own median.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: it reports percentiles rather than averages and explains why, normalizes figures to a yearly period, and states that results correspond exactly to the set search_jobs would return.

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 dense but front-loaded with the core result set, then moves to usage conditions, an important comparison to search_jobs, and a rationale for percentile reporting. Every sentence contributes unique information and none repeats schema or annotation content.

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 rich output schema, full parameter coverage, and strong annotations, nothing critical is missing. The description covers the market scope, the exact statistics, the normalization rule, the relationship to search_jobs, and the intended use cases, making it fully sufficient for correct tool selection and invocation.

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 100%, so the baseline is 3. The description adds cross-tool parameter semantics by stating it 'takes the same filters as search_jobs' and highlights the important aggregation dimensions (locations/seniorities), which is meaningful context beyond the per-parameter schema descriptions.

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 names a specific verb ('Get salary statistics'), a clear resource ('a slice of the Portugal job market'), and enumerates exactly what it returns: match count, salary-published count, median, p25–p75, and seniority breakdown. It also distinguishes itself from search_jobs by contrasting aggregate statistics with listing individual jobs.

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 gives explicit when-to-use conditions: 'when the user asks what a role pays, or how two locations/seniorities compare — instead of listing individual jobs.' It also names the relevant alternative (search_jobs) and clarifies that the same filters apply, so an agent can decide between the two tools without inference.

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.

TDQS

A4.4/5.0
Disambiguation4/5

Each tool targets a different job-search intent: listing results, a single record, similar roles, salary aggregates, companies, and articles. The only mild overlap is search_jobs vs get_salary_stats, since both accept the same filters and can report match counts, but their outputs and suggested use cases are clearly differentiated.

Naming Consistency5/5

All six tools use lowercase snake_case with a leading verb (search_, get_, find_) followed by the resource. The pattern is uniform and predictable across search_articles, search_companies, search_jobs, get_job_detail, get_salary_stats, and find_similar_jobs.

Tool Count5/5

Six tools is well-scoped for a Portugal job-market server: search, detail, similar-jobs, salary stats, companies, and articles each cover a distinct use case. There are no redundant or filler tools.

Completeness4/5

The read-only job search workflow is well covered: discover jobs, open details, find alternatives, compare salaries, explore employers, and read guidance. Minor gaps remain, such as no dedicated article-detail drill-down or company-profile tool, but agents can likely complete core tasks.

Resources