Voxjobs (Portugal)
Server Details
Job listings in Portugal: search, salary statistics, comparables and companies.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
6 toolsfind_similar_jobsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Slug of the reference listing, as returned by search_jobs or get_job_detail. | |
| limit | No | Maximum number of comparables (default 6, max 20). |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobs | Yes | |
| total | Yes | Comparables returned. |
| market | Yes | |
| currency | No | |
| reference | Yes | The listing the comparables are measured against, echoed back for the comparison. |
TDQS
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.
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.
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.
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.
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.
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_detailARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Unique listing slug, as returned by search_jobs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| city | No | |
| slug | Yes | |
| title | Yes | |
| closed | Yes | true when the listing is EXPIRED or REMOVED at the source — recommend it and the user applies for a dead post. |
| region | No | |
| salary | Yes | |
| status | Yes | |
| company | No | |
| country | Yes | |
| applyUrl | No | Outbound URL. Fallback to sourceUrl when the ATS did not publish a separate apply link. |
| postedAt | No | |
| schedule | No | |
| seniority | No | |
| sourceUrl | No | |
| experience | No | |
| remoteMode | No | |
| description | No | |
| contractType | No | |
| employerName | No | |
| publicSector | No | |
| qualityScore | No | |
| validThrough | No | |
| educationLevel | No | |
| lastVerifiedAt | No | |
| sourcePlatform | No | |
| languagesRequired | No | |
| positionsAvailable | No |
TDQS
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.
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.
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.
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.
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.
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_statsARead-onlyIdempotentInspect
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.
| 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 |
|---|---|---|
| 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. |
TDQS
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.
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.
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.
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.
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.
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_articlesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default 5, max 10). | |
| query | No | Free-text topic (optional). Empty → the most recent articles. |
Output Schema
| Name | Required | Description |
|---|---|---|
| market | Yes | |
| articles | Yes |
TDQS
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.
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.
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.
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.
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.
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_companiesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Full or partial employer name. | |
| limit | No | Maximum number of results (default 8, max 20). | |
| sector | No | Sector (e.g. technology, healthcare, retail). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| market | Yes | |
| companies | Yes |
TDQS
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.
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.
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.
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.
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.
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_jobsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default 10, max 20). | |
| query | No | Free-text semantic hint: job title, skills or field (e.g. 'data engineer', 'react developer', 'marketing manager'). Ranks results by meaning; combine with structural filters. | |
| company | No | Restrict to jobs from this employer (free-text name). | |
| 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ę). | |
| salaryMinYearly | No | Minimum gross yearly salary, in the market currency (EUR, GBP or PLN). Non-yearly periods are normalised. |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobs | Yes | |
| shown | Yes | |
| total | Yes | Exact number of listings matching the filters. |
| market | Yes | |
| currency | Yes |
TDQS
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.
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.
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.
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.
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.
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
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Property listings in Portugal: search, market stats, comparables, neighbourhoods.
71Portugal real estate search — 224,000+ listings, commute times and market prices
Used-car listings in Portugal: search, price statistics, comparables and articles.
61Search remote jobs, compare salaries, create alerts, and request user-confirmed apply links.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceSearch live startup.jobs listings with filters for role, location, and employment type, plus get job details, company profiles, hiring trends, and salary benchmarks.MIT
- FlicenseNot gradedqualityCmaintenanceEnables querying real disclosed salary data across 20 regions, with tools to search jobs, retrieve salary statistics, and find similar roles.

JobsPipe MCP Serverofficial
FlicenseNot gradedqualityBmaintenanceEnables searching live, normalized job postings from 30+ ATS feeds and job boards, with tools for job search, source listing, pricing plans, and Upwork jobs.- AlicenseAqualityBmaintenanceEnables 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.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
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.
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.
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.
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.