
ATS Jobs
io.github.benkrasinPublished by GitHub account benkrasinv0.2.2Updated Oct 24, 2026
Open jobs from public Greenhouse, Lever and Ashby boards; keyword search across 14,000+ companies.
Overview
Looks up open jobs on public Greenhouse, Lever and Ashby company boards, and keyword-searches a large directory of company career boards.
- What you can do
- List a company's open jobs from its Greenhouse, Lever or Ashby board, with keyword, location, remote and posting-date filters and an optional full description field, returned in one normalized shape (title, company, location, salary, URL and more). Detect which of the three ATSs hosts a given company slug and how many jobs each board has. Search a built-in directory of 16,000+ company career boards by keywords, locations, remote-only, posting date and minimum salary. Run the same lookups from the command line with JSON or CSV output.
- When to use it
- Useful when an assistant should answer hiring questions with live data instead of guessing: checking whether a set of companies is hiring a given role, watching a target company's openings, comparing roles across companies, or pulling a company's jobs into a spreadsheet.
- Requirements
- Runs as a local stdio process needing Node.js 18+ and network access; the package is fetched from its GitHub repository, and the README warns that the bare npm name belongs to an unrelated package. The two single-company tools need no key. The all-companies search needs an APIFY_TOKEN environment variable and a free Apify account.
Installation
In SourceWeft
- Open ATS Jobs in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
ats-jobs-mcp
Look up a company's open jobs from its Greenhouse, Lever or Ashby job board, from the command line or from any MCP client (Claude Desktop, Claude Code, Cursor, ...).
- Zero dependencies. Plain Node.js 18+, no build step, no API keys.
- Official public APIs only. It calls the same public job-board endpoints that the companies' own careers pages use. No HTML scraping, no headless browser, no proxies.
- One normalized shape across all three ATSs:
title, company, location, remote, workplaceType, department, team, employmentType, salary, url, postedAt, ats, id. - Slug auto-detect. Give it
ramp,ashby:ramporhttps://jobs.ashbyhq.com/ramp; if you don't say which ATS, it checks all three.
Useful for: "which of these 10 companies are hiring a staff backend engineer?", watching a target account's hiring, pulling a company's roles into a spreadsheet, or letting an assistant answer job questions with live data instead of guessing.
New: search 16,000+ companies at once
No company list? The search_jobs_all_companies tool searches a built-in directory of 16,000+ public company career boards (Greenhouse, Lever, Ashby, BambooHR, Personio, Rippling, SmartRecruiters, Teamtailor, Breezy, Recruitee, Workable; about 490k open jobs) by keyword, location, remote and posting date: "data engineer jobs in Berlin or remote, posted this week". It runs the hosted ATS Jobs Feed actor on Apify, so it needs an APIFY_TOKEN (a free Apify account works) and Apify bills about $1 per 1,000 jobs returned (max_results defaults to 100, about $0.10). The two single-company tools stay free and keyless.
MCP Registry name: mcp-name: io.github.benkrasin/ats-jobs-mcp
Use it with an MCP client
The server speaks MCP over stdio. It needs Node.js 18+ and network access; npx fetches it straight from this GitHub repo. Always use github:benkrasin/ats-jobs-mcp. The bare npm name ats-jobs-mcp is an unrelated package from another author.
Claude Desktop
Add to claude_desktop_config.json (Settings -> Developer -> Edit Config), then restart Claude Desktop:
Or download ats-jobs-mcp.mcpb from the latest release and double-click it to install in Claude Desktop.
Claude Code
Cursor
Add the same block to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
Any other MCP client that can launch a stdio server works the same way.
Tools
query matches title, department, team and location. Spaces mean AND, commas mean OR: "backend engineer, sre".
Example prompts: "Is Ramp hiring remote engineers? Group them by team." / "Which ATS does Notion use, and what sales roles are open?" / "Compare open data roles at airbnb, palantir and ramp."
Use it from the command line
Real output (October 2026):
(UUIDs shortened above.) The table summary line goes to stderr, so --json and --csv output can be piped cleanly. Exit code is 2 when no board is found.
As a library
Data sources
These are the public, unauthenticated job-board APIs the vendors document for publishing job listings. Requests go directly from your machine to those endpoints; nothing passes through any other server.
Limitations
- You need the board slug. It's usually the company name, but not always (check the careers URL:
jobs.ashbyhq.com/<slug>,jobs.lever.co/<slug>,boards.greenhouse.io/<slug>). Companies on other ATSs (Workday, SmartRecruiters, iCIMS, custom pages, ...) are not supported. - "remote" is a best effort. Lever and Ashby expose a workplace type; Greenhouse doesn't, so remote there is inferred from the location text. Ashby marks a job remote when any of its locations is remote (e.g. a hybrid NYC role also open to "Remote (US)");
workplaceTypeshows the primary arrangement. - Fields vary by ATS. Greenhouse has no team, employment type or salary in this API; salary only appears when the company publishes it (mostly Ashby, sometimes Lever).
postedAtis the first-published/created date reported by the ATS, which companies sometimes reset by reposting. - Lever EU boards (
api.eu.lever.co) aren't queried yet. - No caching or rate limiting. It's meant for interactive lookups of a handful of companies, not crawling thousands. Be polite with the public APIs.
- If the same slug exists on more than one ATS (e.g. an old, empty board), the board with the most open jobs wins; pass
--ats/atsto force one.
Run it in the cloud (no install)
The same five-ATS fetcher is published as an Apify actor: ATS Jobs Feed on Apify. It adds scheduling, a "only new jobs since last run" mode for job alerts, and Slack/email/webhook integrations. Apify bills pay-per-result (about $1 per 1,000 jobs), so it's for people who don't want to host anything. This CLI stays free.
Company on Workday (*.myworkdayjobs.com)? Use workday-jobs-scraper (free CLI) or the hosted Workday Jobs Scraper on Apify.
Development
The MCP server (src/mcp.js) is a small, dependency-free implementation of the MCP stdio transport (newline-delimited JSON-RPC 2.0: initialize, ping, tools/list, tools/call). It has also been checked against the official @modelcontextprotocol/sdk client.
About
Built and maintained by an AI agent (Claude, by Anthropic) as part of an experiment in agent-run open-source projects, on behalf of @benkrasin. Issues and PRs are welcome.
License
MIT
Source: README.md at commit 1c364f0
Tools
0Version history
1- v0.2.2LatestOct 24, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
