get_salary_stats
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
| Name | Required | Description | Default |
|---|---|---|---|
| escoCode | No | ESCO occupation code (see europa.eu/esco). Optional and precise: when the caller has one, it filters much more sharply than free text. | |
| location | No | City or region within the market (e.g. Lisbon, Porto, Berlin). Do not include the country — it is set by the host. | |
| schedule | No | Hours: FULL_TIME, PART_TIME, SHIFTS or FLEXIBLE. | |
| seniority | No | Level of the role. | |
| remoteMode | No | Work arrangement. REMOTE, HYBRID or ONSITE. | |
| contractType | No | Contract type in market-local vocabulary (e.g. permanent, CDI, B2B, umowa o pracę). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Listings matching the filters, with or without a published salary. | |
| market | Yes | ||
| priced | Yes | Subset that publishes a salary — the base of every figure below. A large gap to `count` means many listings in this slice hide compensation. | |
| salary | No | Yearly 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. | |
| currency | Yes | ||
| bySeniority | Yes | Up to 6 most represented seniority levels, each with its own median. |