Skip to main content
Glama

Voxjobs (Portugal)

Server Details

Job listings in Portugal: search, salary statistics, comparables and companies.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

6 tools
find_similar_jobsA
Read-onlyIdempotent
Inspect

Given one job listing, find comparable ones: same occupation family and area, close seniority. Use this when the user likes a role but wants alternatives — 'find me similar jobs', 'the same but remote', 'what else is around'. Comparability is by role (ESCO code) and geography, not by text similarity: it answers 'is there anything else out there for someone with this profile', which a keyword search misses.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug of the reference listing, as returned by search_jobs or get_job_detail.
limitNoMaximum number of comparables (default 6, max 20).

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYes
totalYesComparables returned.
marketYes
currencyNo
referenceYesThe listing the comparables are measured against, echoed back for the comparison.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context beyond annotations: comparability is by ESCO code and geography, not text similarity, and it answers a specific user intent. This enriches the agent's mental model without contradicting the annotations.

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?

Three sentences with zero filler. The core behavior is front-loaded, followed by concrete usage examples and a clarifying contrast. Every sentence earns its place.

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?

The tool is simple (2 params, no nesting), has an output schema, and benefits from safety annotations. The description explains the core matching logic, when to use it, and how it differs from alternatives. Nothing essential is missing for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both slug and limit are already well described in the schema. The description does not add new parameter-level detail but provides useful context about how the slug's role and geography drive matching. This meets the baseline for high schema coverage.

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 and resource ('find comparable jobs'), defines the comparison criteria (occupation family, area, seniority), and clearly differentiates from sibling tools by stating it is not text-based. This leaves no ambiguity about what the tool does.

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?

The description gives explicit when-to-use scenarios with natural-language examples ('find me similar jobs', 'the same but remote') and contrasts the tool with keyword search, implicitly distinguishing it from search_jobs. It stops short of explicitly naming the alternative tool and when to prefer it, but the guidance is strong.

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

get_job_detailA
Read-onlyIdempotent
Inspect

Get the complete record of one job listing in Portugal by its slug. Use this after search_jobs when the user asks about a specific role: full description, requirements, salary (gross/net/estimated), employer, contract type and the outbound URL to apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesUnique listing slug, as returned by search_jobs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
cityNo
slugYes
titleYes
closedYestrue when the listing is EXPIRED or REMOVED at the source — recommend it and the user applies for a dead post.
regionNo
salaryYes
statusYes
companyNo
countryYes
applyUrlNoOutbound URL. Fallback to sourceUrl when the ATS did not publish a separate apply link.
postedAtNo
scheduleNo
seniorityNo
sourceUrlNo
experienceNo
remoteModeNo
descriptionNo
contractTypeNo
employerNameNo
publicSectorNo
qualityScoreNo
validThroughNo
educationLevelNo
lastVerifiedAtNo
sourcePlatformNo
languagesRequiredNo
positionsAvailableNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds value by enumerating what the 'complete record' contains, such as requirements, salary breakdown, employer, contract type, and application URL. This informs the agent what information it can expect to retrieve without contradicting any annotations.

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?

Two concise sentences with no filler. The core purpose is front-loaded, and the second sentence efficiently lists the important result fields. Every sentence earns its place.

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?

For a one-parameter read-only tool with an output schema and safety annotations, this description is complete. It tells the agent when to use it, how to identify the job, and what the result contains. No critical guidance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'slug' is fully documented in the input schema, including the fact that it comes from search_jobs. The description repeats this relationship but does not add meaningful new semantic information beyond the schema. Baseline 3 is appropriate given 100% schema coverage.

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 resource: 'Get the complete record of one job listing in Portugal by its slug.' The scope is clear and it is easily distinguished from siblings like search_jobs (list-level search) and find_similar_jobs (recommendations).

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?

The description explicitly says to use this 'after search_jobs when the user asks about a specific role,' which gives clear context for when to invoke it. It does not explicitly enumerate when not to use it or compare it to other siblings, but the intended workflow is obvious.

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

get_salary_statsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

search_articlesA
Read-onlyIdempotent
Inspect

Search editorial articles about the Portugal job market: job-hunting guides, salary analysis, career advice. Use this when the user asks how something works — the interview process, an ATS, a specific market or benefit — rather than asking for jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (default 5, max 10).
queryNoFree-text topic (optional). Empty → the most recent articles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
marketYes
articlesYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the editorial scope and content type, but it does not disclose any additional behavioral traits such as result ordering, pagination, or relevance semantics beyond what the schema and output schema already imply.

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?

Two sentences with no filler. The first sentence states the core purpose and scope, and the second provides routing guidance. Every phrase earns its place, and the most actionable instruction is front-loaded.

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 presence of a full output schema, complete parameter descriptions, and safety annotations, the description covers everything an agent needs to select and invoke the tool correctly. It also includes enough context to distinguish it from job-search siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/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. Both parameters, 'limit' and 'query', are clearly described in the schema. The description adds little beyond the schema; the optional-query behavior and default limit are already documented.

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 ('Search') and resource ('editorial articles about the Portugal job market'), then lists concrete content types such as job-hunting guides, salary analysis, and career advice. The closing phrase 'rather than asking for jobs' clearly differentiates it from sibling tool search_jobs.

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?

The description gives explicit when-to-use guidance: 'Use this when the user asks how something works — the interview process, an ATS, a specific market or benefit.' It also provides a when-not condition ('rather than asking for jobs'), though it does not name the alternative sibling tool explicitly.

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

search_companiesA
Read-onlyIdempotent
Inspect

Search employers with active listings in Portugal. Returns sector, headquarters, size band and the number of active jobs in this market. Use this when the user wants to explore who is hiring, or to restrict a subsequent search_jobs by employer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFull or partial employer name.
limitNoMaximum number of results (default 8, max 20).
sectorNoSector (e.g. technology, healthcare, retail).

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
marketYes
companiesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the tool read-safe and idempotent. The description adds meaningful behavioral context: results are limited to employers with active listings, the market is Portugal, and it reveals the specific metrics returned. This goes beyond what annotations provide without contradicting them.

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?

Three compact sentences: the first states purpose and scope, the second previews return fields, and the third gives usage guidance. Every sentence earns its place, and the core action is front-loaded.

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?

The tool is simple (no required params, no nested objects, 100% schema coverage, and an output schema exists). The description covers purpose, scope, return contents, and a concrete follow-up use case, leaving no material gap for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (name, limit, sector) are already documented. The description adds no parameter-specific semantics beyond reinforcing that the search targets employers, which is the baseline expectation. A 3 is appropriate.

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 states a specific verb and resource ('Search employers') with a clear geographic scope ('with active listings in Portugal'), and enumerates the returned data fields. It is readily distinguishable from sibling tools like search_jobs and search_articles.

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?

The description explicitly tells the agent when to use this tool ('when the user wants to explore who is hiring') and even suggests using it to restrict a subsequent search_jobs call. It does not explicitly list exclusions or alternative conditions, but the guidance is clear enough.

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

search_jobsA
Read-onlyIdempotent
Inspect

Search active job listings in Portugal. Use this whenever the user wants to find a job — by title, skills, location, salary or schedule. Combines semantic ranking on the query (title/skills) with structural filters. Returns company, city, region, remote mode, seniority, salary and a citable URL, plus total: the exact number of listings matching the filters, which makes this useful for market-size questions. Listings are aggregated from ATSs, boards and public-sector portals and refreshed daily; each result carries postedAt and lastSeenAt. Salaries are published in EUR.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (default 10, max 20).
queryNoFree-text semantic hint: job title, skills or field (e.g. 'data engineer', 'react developer', 'marketing manager'). Ranks results by meaning; combine with structural filters.
companyNoRestrict to jobs from this employer (free-text name).
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ę).
salaryMinYearlyNoMinimum gross yearly salary, in the market currency (EUR, GBP or PLN). Non-yearly periods are normalised.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYes
shownYes
totalYesExact number of listings matching the filters.
marketYes
currencyYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark this read-only, idempotent, and non-destructive; the description adds useful behavioral context: aggregation sources, daily refresh, postedAt/lastSeenAt, semantic ranking, and an exact result total. The only minor caveat is that 'Salaries are published in EUR' sits awkwardly against the schema's EUR/GBP/PLN wording, but it doesn't contradict the annotations.

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?

Six sentences deliver purpose, usage, return value, data provenance, freshness, and currency without repetition. The most important information is front-loaded before the output and behavior details.

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?

For a 10-parameter read-only search tool with full schema coverage and an output schema, the description covers searchable criteria, return fields, exact-count behavior, data sources, and refresh cadence. It is slightly less than perfect because it doesn't reconcile the Portugal/EUR framing with the schema's Berlin example and EUR/GBP/PLN currency option.

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?

The schema already documents all 10 parameters, so the baseline is 3; the description adds value by explaining the semantic-query ranking behavior, how structural filters combine with the query, and how `total` supports market-size questions. It doesn't need to repeat per-parameter details because the schema is complete.

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 opening line states a specific action and resource: searching active job listings in Portugal. It goes on to enumerate search dimensions and distinctive output fields, which clearly separates it from sibling search/similar/detail/stats tools.

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?

It explicitly says to use the tool whenever the user wants to find a job and lists the common criteria, so the intended invocation context is clear. It doesn't name sibling alternatives or give exclusion cases, so it stops at clear context without full when-not guidance.

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

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Search live startup.jobs listings with filters for role, location, and employment type, plus get job details, company profiles, hiring trends, and salary benchmarks.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables searching live, normalized job postings from 30+ ATS feeds and job boards, with tools for job search, source listing, pricing plans, and Upwork jobs.
  • A
    license
    A
    quality
    B
    maintenance
    Enables querying open job postings directly from company applicant-tracking systems (Greenhouse, Ashby, Lever), finding a company's job board, listing and comparing roles, and accessing salary data, all without scraping or API keys.
    3
    MIT
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