Glassdoor Remote MCP Server
Server Details
Glassdoor job listings and full postings with company ratings and salary estimates, as JSON.
- Status
- Healthy
- Uptime
- 97.2% over 42 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
- Repository
- HasData/glassdoor-mcp
- GitHub Stars
- 12
- Server Listing
- Glassdoor MCP Server
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one retrieves a single job posting by URL, the other searches listings by keyword/location. An agent can unambiguously choose between detail retrieval and search/feed building.
Both names follow a consistent prefix + getX pattern (hasdata_glassdoor_*_getY), which is predictable. The only minor deviation is that the resource segment differs (job vs listing) rather than the job/listing distinction being uniform across the pair.
Two tools is thin for a server covering Glassdoor job data, though the search+detail pairing is a sensible minimal read surface. It sits at the borderline of feeling under-scoped.
For a job-posting domain, search plus full-detail retrieval with rich filters and pagination covers the core lifecycle; read-only is appropriate so no create/update/delete gap exists. Minor gaps include no separate company/review or salary-only endpoints, but the listing tool returns enough to work around this.
Available Tools
2 toolshasdata_glassdoor_job_getJobDetailsglassdoor_job: GET /ARead-onlyInspect
Get GlassDoor Job Details
Fetches a Glassdoor job posting by its vacancy URL. Returns job title, company name and rating, location, salary estimate, posted date, full job description, and qualifications/benefits. Use for ATS ingestion, job aggregators, comp benchmarking, enrichment of company profiles, and feeding descriptions into LLM matching or resume-tailoring pipelines.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the job vacancy to retrieve details for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value beyond that by enumerating what the call returns (title, company, rating, location, salary estimate, posted date, description, qualifications/benefits), which is important given there is no output schema. It omits any note on auth, rate limits, or failure modes.
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 core action and resource are front-loaded in the first two sentences, with the use-case list following. The five-item use-case enumeration is somewhat long but still earns its place by orienting downstream consumers; nothing is padded or redundant.
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 single-parameter read tool with no output schema, the description supplies both the input semantics (vacancy URL) and a solid enumeration of the returned fields, which is what an agent needs to decide to call it. It does not cover failure behavior or URL validation, leaving a small gap.
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?
Only one parameter and schema coverage is 100%, so the schema already documents the required url field. The description's phrase 'by its vacancy URL' adds only a mild hint about the expected URL shape and nothing about format or validation, so this lands at the baseline 3.
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 ('Fetches a Glassdoor job posting by its vacancy URL') and names the returned entity precisely. It is clearly distinguishable from the sibling hasdata_glassdoor_listing_getJobListings, since this one operates on a single posting identified by URL.
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?
Gives concrete contexts for use (ATS ingestion, job aggregators, comp benchmarking, company-profile enrichment, LLM matching/resume tailoring), which tells the agent when this tool is appropriate. It stops short of naming an alternative or stating exclusions, so it does not reach 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_glassdoor_listing_getJobListingsglassdoor_listing: GET /ARead-onlyInspect
Get GlassDoor Job Listings
Searches Glassdoor job listings by keyword and location with sort (recent/relevant), domain targeting, filters (date posted, distance, salary range, company rating, easy apply, remote), and nextPageToken pagination that keeps the filters. Returns an array of jobs with title, company, location, salary estimate, posted date, job URL, and jobId, plus per-page tokens. Use to build job feeds, monitor hiring trends for roles/companies/regions, power candidate sourcing tools, and collect URLs for downstream full-detail scraping via the Glassdoor Job endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | The sorting option for the search results. | |
| domain | No | The domain of the Glassdoor site (optional). | |
| radius | No | Search radius around the location, in miles. `0` keeps only jobs in the location itself. Glassdoor uses 25 miles when this is not set. | |
| keyword | Yes | The keyword used to search for job listings. | |
| location | Yes | The location to search for job listings. | |
| maxSalary | No | Upper bound of the yearly pay range, must be greater than `minSalary`. Can be used on its own. | |
| minRating | No | Returns jobs from companies rated at least this high. Glassdoor applies the filter approximately, so a few companies rated slightly below the value can appear. | |
| minSalary | No | Lower bound of the yearly pay range. A job is kept when its estimated pay range overlaps the requested one; hourly and monthly pay are converted to yearly. Jobs without a pay estimate are excluded when a salary filter is set. | |
| datePosted | No | Returns only jobs posted within the given number of days. | |
| remoteOnly | No | Returns only remote jobs. Defaults to false. | |
| easyApplyOnly | No | Returns only jobs that can be applied to directly on Glassdoor. Defaults to false. | |
| nextPageToken | No | Token for fetching the next page of jobs, taken from the pagination of a previous response. The token keeps the filters of the search it came from, so they do not need to be sent again. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: it describes the returned job fields and notes that nextPageToken pagination preserves the original filters. It does not disclose rate limits or authentication requirements, but that is a minor gap given the annotation coverage.
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 front-loaded with a direct statement of purpose, then moves through filters, return values, and use cases in a single efficient paragraph. It is slightly dense and could be better structured with bullet points, but every sentence carries relevant information and there is no filler.
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 12-parameter search tool with no output schema, the description is complete enough: it explains the search surface, the returned fields (title, company, location, salary estimate, posted date, job URL, jobId, page tokens), and the pagination behavior. Combined with annotations that cover safety and open-world scope, an agent has what it needs to invoke the tool 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 the schema already documents all 12 parameters in detail. The description summarizes filter categories (date posted, distance, salary range, company rating, easy apply, remote), sort, domain, and pagination behavior, but adds little semantic detail beyond what the schema provides. Baseline 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 ('Searches Glassdoor job listings by keyword and location') and enumerates supported filters and pagination. It also distinguishes itself from the sibling tool:'collect URLs for downstream full-detail scraping via the Glassdoor Job endpoint' points to the separate job-details endpoint.
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 clear usage contexts ('build job feeds, monitor hiring trends for roles/companies/regions, power candidate sourcing tools') and identifies the downstream sibling for full-detail scraping. However, it does not explicitly state when not to use this tool or list alternatives beyond that one reference, so it stops short of the 5-level specificity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
hasdata_glassdoor_listing_getJobListings8 fields changed- added
Input schema / properties / datePostedAdded value: +{ + "description": "Returns only jobs posted within the given number of days.", + "enum": [ + 1, + 3, + 7, + 14, + 30 + ], + "type": "number" +} - added
Input schema / properties / easyApplyOnlyAdded value: +{ + "description": "Returns only jobs that can be applied to directly on Glassdoor. Defaults to false.", + "type": "boolean" +} - added
Input schema / properties / maxSalaryAdded value: +{ + "description": "Upper bound of the yearly pay range, must be greater than `minSalary`. Can be used on its own.", + "type": "number" +} - added
Input schema / properties / minRatingAdded value: +{ + "description": "Returns jobs from companies rated at least this high. Glassdoor applies the filter approximately, so a few companies rated slightly below the value can appear.", + "enum": [ + 1, + 2, + 3, + 4 + ], + "type": "number" +} - added
Input schema / properties / minSalaryAdded value: +{ + "description": "Lower bound of the yearly pay range. A job is kept when its estimated pay range overlaps the requested one; hourly and monthly pay are converted to yearly. Jobs without a pay estimate are excluded when a salary filter is set.", + "type": "number" +} - changed
Input schema / properties / nextPageToken / descriptionPrevious value: -"Token for fetching the next page of jobs."New value: +"Token for fetching the next page of jobs, taken from the pagination of a previous response. The token keeps the filters of the search it came from, so they do not need to be sent again." - added
Input schema / properties / radiusAdded value: +{ + "description": "Search radius around the location, in miles. `0` keeps only jobs in the location itself. Glassdoor uses 25 miles when this is not set.", + "enum": [ + 0, + 5, + 10, + 15, + 25, + 50, + 100 + ], + "type": "number" +} - added
Input schema / properties / remoteOnlyAdded value: +{ + "description": "Returns only remote jobs. Defaults to false.", + "type": "boolean" +}
2 tool updates
- First observed
hasdata_glassdoor_job_getJobDetails - First observed
hasdata_glassdoor_listing_getJobListings
Publisher details
- Operator
- HasData ยท Publisher source
- Operator website
- https://hasdata.com ยท Publisher source
- Vendor relationship
- Independent ยท Publisher source
- Documentation
- https://docs.hasdata.com/mcp-server ยท Publisher source
- Trust center
- Not available
- Restrictions
- A free HasData account covers 1,000 credits a month with no card. Heavier use needs a paid plan. No admin approval, no regional limits and no custom OAuth app. ยท Publisher source
Related MCP Connectors
Indeed job listings by keyword and location, and full postings, as structured JSON.
Open jobs from Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio as JSON.
LinkedIn job listings as JSON: salary, recruiter, applicants, company data. No login. From $0.40/1k
Live Google for Jobs postings: salary, apply links, remote and date filters. Pay per job.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables searching job postings across multiple boards like Indeed and LinkedIn from a single request, returning titles, companies, and salaries as JSON.-
- FlicenseNot gradedqualityCmaintenanceEnables users to retrieve live job postings from any iCIMS career site, providing structured data including title, requisition ID, employer, locations, employment type, dates, salary, and apply links.-
- FlicenseNot gradedqualityBmaintenanceEnables pulling public Oracle Fusion Recruiting and Taleo career-site job postings as structured JSON, including locations, skills, pay ranges, and apply URLs. It also supports career-site discovery, scheduled new-posting monitoring, and Markdown output for AI assistants.-
- AlicenseAqualityBmaintenanceEnables searching live job postings, aggregating labour-market slices, and reporting how long listings have been open, with filters for titles, location, salary, and more.421 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.