ATS Jobs
Server Details
Open jobs read from a company's own careers system: Greenhouse, Ashby, Lever.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- groundtruthtools/ats-jobs-mcp
- GitHub Stars
- 0
- Server Listing
- io.github.groundtruthtools/ats-jobs-mcp
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: compare_companies aggregates across multiple companies, find_company_board identifies the ATS provider, and list_open_jobs retrieves jobs for a single company. The descriptions explicitly clarify when to use each, leaving no ambiguity.
All tool names follow a consistent verb_noun pattern (compare_companies, find_company_board, list_open_jobs). This predictable naming makes the set easy to navigate.
With only three tools, the set is well-scoped for the domain of cross-ATS job search. Each tool earns its place by covering a distinct step: discovery, aggregation, and retrieval.
The tools cover the full workflow: finding a company's board, listing its open jobs, and comparing across companies. There are no obvious missing operations for the stated purpose of querying applicant-tracking systems.
Available Tools
3 toolscompare_companiesCompare several companies' jobsBInspect
Open jobs across several companies at once, in one schema. This is the thing no single applicant-tracking system can do: each vendor only knows about its own customers. Companies on different systems come back with the same field names. One company failing does not lose the others.
| Name | Required | Description | Default |
|---|---|---|---|
| companies | Yes | Up to 20 company board names or careers URLs. | |
| per_company | No | Maximum postings per company. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely valuable trait: partial-failure tolerance ('One company failing does not lose the others') and cross-system field-name normalization. It omits auth requirements, rate limits, result ordering, and how invalid company identifiers are reported, so the behavioral picture is partial.
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 capability and scope lead the description, which is good front-loading. But the middle sentence ('This is the thing no single applicant-tracking system can do...') is promotional filler that does not help an agent decide or invoke, costing roughly a quarter of the text.
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?
Two parameters, no output schema, no annotations: the description covers the merged-schema return shape and partial failure, which are the two hardest things to guess. It still leaves the result envelope, ordering, and deduplication behavior unstated, and with no output schema those gaps matter.
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 both 'companies' and 'per_company' with bounds and defaults. The description adds no format guidance for company identifiers or per-company limits, so it does not exceed the baseline set by a fully documented schema.
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 precisely what the tool returns: open jobs across several companies merged into one schema. The multi-company scope implicitly distinguishes it from list_open_jobs and find_company_board, but neither sibling is named, so the agent must infer the routing.
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 phrase 'across several companies at once' implies this is the batch alternative to the single-company siblings, and the maxItems=20 constraint is implied by the schema. However there is no explicit when-to-use, when-not-to-use, or named alternative, leaving the agent to infer the split from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_company_boardFind a company's job boardAInspect
Find which applicant-tracking system a company's careers page runs on. Greenhouse, Ashby and Lever all publish open job board APIs, and all of them are unusable unless you already know the company's board name. None publishes a directory of its customers, and none could, since no vendor knows about the others. Use this first when you have a company name rather than a careers URL.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return. | |
| company | Yes | Company name or board name, for example 'anthropic' or '1Password'. Case and punctuation do not matter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses useful domain context (no vendor publishes a customer directory, so this lookup exists to bridge that gap) and implies a read-only lookup, but says nothing about what is returned, how partial or ambiguous matches are handled, or whether failure to match is an error or an empty result.
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, purpose front-loaded, and the ecosystem explanation earns its place by justifying the tool's existence. Slightly more domain narrative than an agent strictly needs, but nothing is padding.
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?
There is no output schema and no annotations, so the description is the only source of behavioral information. It explains why the tool is needed but never says what the agent gets back (ATS vendor, board name, multiple candidates) or how to chain the result into list_open_jobs — the exact next step it sets up.
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% and both parameters are documented in the schema, so the baseline is 3. The description adds the useful framing that a company name is the input when a careers URL is unavailable, but no syntax or matching-behavior detail beyond the schema's own note that case and punctuation are ignored.
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: 'Find which applicant-tracking system a company's careers page runs on.' It also implicitly positions itself as a first-step lookup relative to a careers URL, but it never names the siblings (compare_companies, list_open_jobs) so differentiation is inferred rather than stated.
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 an explicit trigger — 'Use this first when you have a company name rather than a careers URL' — plus the rationale that vendor APIs require a board name. There is no stated when-not condition and no named alternative, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_open_jobsList a company's open jobsAInspect
Every open job at one company, read from its own careers system. Returns title, department, location, employment type, workplace type, posted date, a parsed salary range where the employer publishes one, and a verify_url pointing at the employer's own advert. Salaries are refused rather than guessed: an hourly rate, an ambiguous currency, or bands in two currencies all yield no figure, and salary_text keeps whatever the employer wrote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum postings to return. | |
| company | Yes | A board name ('stripe'), a careers URL ('https://jobs.ashbyhq.com/ramp'), or system:name ('ashby:ramp'). | |
| include_description | No | Include the full job description. Off by default because descriptions are long; contact details are removed either way. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and handles it well: it discloses the exact returned fields, the salary-parsing policy ('refused rather than guessed', with concrete failure cases), the salary_text fallback, and that contact details are stripped either way. It stops short of stating auth needs, rate limits, or pagination behavior beyond the limit cap.
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, front-loaded with the scope and source before the return-value list and the salary caveat. Dense but each sentence earns its place; the return-field enumeration is long but functional.
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?
No output schema exists, so the description must describe return values, and it does so thoroughly, including the salary edge cases and verify_url. It leaves pagination semantics (how to page past limit=200) and permission requirements unstated, a minor gap for a read-only list tool.
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 company, limit, and include_description, and the description adds no parameter-specific syntax or format detail. Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('List') and resource ('Every open job at one company'), and scopes the source ('read from its own careers system'), so an agent knows exactly what this returns. The purpose is unambiguous and clearly distinct from compare_companies and find_company_board.
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?
Usage is implied rather than stated: 'Every open job at one company' signals a single-company lookup, which contrasts by omission with the comparison and board-discovery siblings. There is no explicit when-to-use/when-not-to-use statement or named alternative, so the agent must infer the routing.
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.
3 tool updates
- First observed
compare_companies - First observed
find_company_board - First observed
list_open_jobs
Related MCP Connectors
Read job postings live from employer career sites across 10 applicant tracking systems.
Job postings: German roles from StepStone, and any company's Greenhouse or Lever board.
Ashby ATS job scraper pulls live postings via API with team filtering.
Semantic search over 3.5M+ live US job postings pulled straight from company ATSes. Read-only.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables real-time job search across thousands of companies' open roles from Greenhouse, Lever, Ashby, and SmartRecruiters, with full-text filtering and company-specific queries, no API key required.2MIT
- AlicenseAqualityBmaintenanceSearch and read public Ashby job boards for named companies, with filtering, full job details, and side-by-side compensation comparison. No API key required.6552 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to pull live job listings from major ATS platforms (Greenhouse, Lever, Ashby, Workable), Hacker News hiring threads, and detect hiring signals on company career pages.-
- AlicenseAqualityCmaintenanceEnables asking what companies are hiring right now by querying live job postings from their applicant-tracking system board APIs (Greenhouse, Lever, Ashby, Recruitee, Rippling, Personio), with filters, parsed location, remote flag, and structured salary.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.