HireHeat
Server Details
Company hiring signals + open jobs from Greenhouse, Lever, Ashby boards, API + MCP. 20 free/day.
- Status
- Healthy
- Uptime
- 98.3% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
company_jobs and hiring_signals are explicitly differentiated: one returns full job postings, the other returns aggregate hiring signals. Each description cross-references the other and warns against misuse, eliminating overlap.
Both tool names use consistent snake_case with two descriptive nouns (company_jobs, hiring_signals). No verb_noun pattern is present, but the convention is uniformly applied and clear.
Two tools is below the typical 3-15 range, but each is substantial and covers a distinct, well-defined operation. The focused read-only API scope makes the low count reasonable rather than thin.
The surface covers both reading job postings and summarizing hiring signals, matching the stated domain. Minor gaps exist (e.g., no location filter or full job description text), but core workflows are complete.
Available Tools
2 toolscompany_jobsOpen jobs at a companyARead-onlyIdempotentInspect
Full LIST of open jobs at one company (up to 500), newest first, read live from its public Greenhouse, Lever, Ashby, SmartRecruiters and Recruitee job board. Use this when you need the actual postings: to read, filter or export them, find a role to apply to, or pull salaries. For counts and hiring trends use hiring_signals instead. Input: company (website domain, website URL or job-board URL); optional keywords (title contains any), remote (true = remote only) and limit (1-500, default 100). Returns company, domain, found, boards, summary, count, totalMatching and results[]: one job each with title, department, location, remote flag, posted date, apply URL, salary when the employer publishes it, function and seniority. found=false (empty results) means no supported public board was found. Limits: one company per call; answers cached for 1 hour; 20 free companies a day per IP without a key, more with a paid key in the x-api-key header. Read-only: nothing is stored or sent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum jobs to return, 1-500 (default 100) | |
| remote | No | true = remote roles only (default false: all roles) | |
| company | Yes | The company, one per call: its website domain, website URL, or a job-board URL (boards.greenhouse.io/acme, jobs.lever.co/acme, jobs.ashbyhq.com/acme) | |
| keywords | No | Optional job-title keywords; a job matches if its title contains any of them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, it discloses caching (1 hour), rate limits (20 free companies/day per IP, more with a paid key in x-api-key), the empty-result semantics (found=false means no supported board), and that data is read live with nothing stored. These are behavioral facts the annotations cannot convey.
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?
Front-loads the purpose and packs a lot of useful detail into a few dense sentences. It is longer than typical but nearly every clause earns its place (routing, return fields, limits); minor redundancy with the schema keeps it from a 5.
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?
With no output schema, the description fully documents the return shape (company, domain, found, boards, summary, count, totalMatching, results[] with per-job fields including salary). Combined with rate-limit and scoping notes, an agent has everything needed to call and interpret the response.
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 four parameters (company formats, keywords as title-substring match, remote boolean, limit 1-500 default 100). The description restates these without adding syntax or edge-case detail, so the baseline 3 applies.
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 ('Full LIST of open jobs at one company'), including scope (up to 500), ordering (newest first) and data source (public Greenhouse/Lever/Ashby/SmartRecruiters/Recruitee boards). It names the sibling hiring_signals as the thing it is not, so an agent can distinguish them immediately.
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?
Explicitly enumerates when to use it ('read, filter or export them, find a role to apply to, or pull salaries') and routes the alternative case to hiring_signals ('For counts and hiring trends use hiring_signals instead'). This is a clear when/when-not/alternative statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hiring_signalsCompany hiring signalsARead-onlyIdempotentInspect
Hiring SUMMARY for one company, read live from its public Greenhouse, Lever, Ashby, SmartRecruiters and Recruitee job board. Use this when you need to know whether a company is hiring, how fast and in which teams: sales triggers, account research, investor or competitor signals. Do not use it to read the postings themselves (use company_jobs). Input: company (website domain, website URL or job-board URL); optional keywords narrow the counts to matching job titles. Returns results[0] with found, the job board detected (ATS and URL), signals (open roles, roles posted in the last 7 and 30 days, hiring level, counts by function and seniority, top departments and locations, remote share, the 10 newest jobs), a one-line summary, checkedAt and cached. found=false means no supported public board was found (for example a Workday-only company). Limits: one company per call; answers cached for 1 hour; 20 free companies a day per IP without a key, more with a paid key in the x-api-key header. Read-only: nothing is stored or sent.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | The company to check, one per call: its website domain, website URL, or a job-board URL (boards.greenhouse.io/acme, jobs.lever.co/acme, jobs.ashbyhq.com/acme) | |
| keywords | No | Optional job-title keywords; only jobs whose title contains any of them are counted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds substantial context beyond them: caching for 1 hour, a rate limit of 20 free companies/day per IP, one company per call, the meaning of found=false (e.g. Workday-only companies), and confirmation that nothing is stored or sent.
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?
Front-loaded with the core purpose and the sibling exclusion, then usage, input, returns, limits. It is dense and runs long, with some overlap between the Input sentence and the schema, but nearly every clause carries useful information.
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?
With no output schema, the description fully carries the burden of explaining return values: results[0] fields, found flag, ATS/URL, signals breakdown, summary, checkedAt and cached. Limits, inputs, and failure semantics are all covered, leaving nothing an agent needs 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 both parameters are already documented. The description restates the same input semantics (domain/URL/job-board URL, optional keyword narrowing) without adding syntax or format detail beyond the schema, so the baseline 3 applies.
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+resource ('Hiring SUMMARY for one company') and enumerates the exact data sources (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee). It explicitly distinguishes itself from the sibling company_jobs, so an agent can route without opening either schema.
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 explicit when-to-use contexts (sales triggers, account research, investor/competitor signals) and an explicit when-not ('Do not use it to read the postings themselves') with the named alternative company_jobs. Nothing is left to inference.
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.
2 tool updates
- Changed
company_jobs6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / company / descriptionPrevious value: -"Company domain or job-board URL, e.g. stripe.com or jobs.lever.co/acme"New value: +"The company, one per call: its website domain, website URL, or a job-board URL (boards.greenhouse.io/acme, jobs.lever.co/acme, jobs.ashbyhq.com/acme)" - added
Input schema / properties / company / examplesAdded value: +[ + "stripe.com" +] - changed
Input schema / properties / keywords / descriptionPrevious value: -"Optional title keywords; a job matches if its title contains any of them, e.g. [\"engineer\", \"sales\"]"New value: +"Optional job-title keywords; a job matches if its title contains any of them" - added
Input schema / properties / keywords / examplesAdded value: +[ + [ + "engineer", + "sales" + ] +] - changed
Input schema / properties / remote / descriptionPrevious value: -"true = remote roles only"New value: +"true = remote roles only (default false: all roles)"
- Changed
hiring_signals5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / company / descriptionPrevious value: -"e.g. stripe.com or jobs.lever.co/acme"New value: +"The company to check, one per call: its website domain, website URL, or a job-board URL (boards.greenhouse.io/acme, jobs.lever.co/acme, jobs.ashbyhq.com/acme)" - added
Input schema / properties / company / examplesAdded value: +[ + "stripe.com" +] - changed
Input schema / properties / keywords / descriptionPrevious value: -"optional title keywords"New value: +"Optional job-title keywords; only jobs whose title contains any of them are counted" - added
Input schema / properties / keywords / examplesAdded value: +[ + [ + "engineer", + "sales" + ] +]
1 tool update
- Changed
company_jobs4 fields changed- added
Input schema / properties / company / descriptionAdded value: +"Company domain or job-board URL, e.g. stripe.com or jobs.lever.co/acme" - added
Input schema / properties / keywords / descriptionAdded value: +"Optional title keywords; a job matches if its title contains any of them, e.g. [\"engineer\", \"sales\"]" - added
Input schema / properties / limit / descriptionAdded value: +"Maximum jobs to return, 1-500 (default 100)" - added
Input schema / properties / remote / descriptionAdded value: +"true = remote roles only"
2 tool updates
- First observed
company_jobs - First observed
hiring_signals
Related MCP Connectors
Open jobs and hiring signals for any company, from its public careers page or job board.
Jobs from Greenhouse, Lever, Ashby, Workday, career pages, Google Jobs, SEEK, plus hiring signals.
1Open jobs and hiring changes per company, daily. Free keyless lookup. AI-compiled from job boards.
Live open jobs from the career sites of companies you name (Workday, Greenhouse, Lever +14 ATS).
Related MCP Servers
AlicenseAqualityAmaintenanceLive open jobs from companies' own Greenhouse, Lever and Ashby boards via their official public APIs, with publish-verified dates, age, long-open and repost signals, filters and change tracking.5MIT- AlicenseNot gradedqualityAmaintenanceEnables users to discover applicant tracking system job boards from company domains, list open roles, detect hiring changes over time, and generate hiring summaries across multiple ATS platforms.MIT
- AlicenseNot gradedqualityCmaintenanceGives AI agents a daily-refreshed index of 350k+ open jobs scraped from 12,000+ company career sites on Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee and Personio. Enables keyword, country, remote, seniority and recency job searches, discovery of roles opened since yesterday, and weekly company hiring-signal rankings, with per-call cost caps.MIT
- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1250 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.