ToolMint

Catalog / ats-jobs-public

MCP package · coming soon Research & health

ats-jobs-public

"What jobs does this company have open on its public Greenhouse or Lever job board?" Optionally filtered by a keyword in the title, location or team.

This is a local MCP / CLI package today. Hosted pay-per-call access is not live yet; the text below describes the current code.

What question it answers

"What jobs does this company have open on its public Greenhouse or Lever job board?" Optionally filtered by a keyword in the title, location or team.

Sources

  • Greenhouse public Job Board API: allowed.
  • Lever public Postings API: allowed.
  • Ashby: not supported. Requests for Ashby boards are refused on purpose (terms).

When to use it

  • Sourcing or monitoring roles at a named employer that uses Greenhouse or Lever.
  • An agent needs a clean list: id, title, URL, location, remote guess.

When not to

  • Not a job search engine: you must name the employer's board (a slug or board URL).
  • Not for employers on other systems (Ashby, Workday, etc.).
  • The remote flag is a text guess, not data from the employer.
  • Job titles and locations are the employer's own words; no salary, no description text is returned.

Example (MCP tool `ats_search_jobs`, or CLI)

npx tsx src/cli.ts search airbnb engineer 10
npx tsx src/cli.ts list lever:activecampaign 5

target can be airbnb (Greenhouse is the default), lever:activecampaign, greenhouse:slug, or a board URL.

Trimmed output (shape from samples/greenhouse-airbnb.json):

{
  "tool": "ats-jobs-public",
  "version": "0.2.0",
  "kind": "greenhouse",
  "company": "airbnb",
  "boardUrl": "https://boards-api.greenhouse.io/v1/boards/airbnb/jobs",
  "totalCached": 202,
  "returned": 15,
  "remoteOnly": false,
  "jobs": [
    {
      "id": "8306554",
      "title": "AirCover Specialist, Claims Experience",
      "url": "https://careers.airbnb.com/positions/8306554?gh_jid=8306554",
      "location": "Canada",
      "updatedAt": "2026-10-28T10:52:05-04:00",
      "remote": false,
      "source": "greenhouse",
      "company": "airbnb"
    }
  ],
  "termsChecked": { "id": "greenhouse", "checkedAt": "2026-10-31", "termsUrls": ["..."] },
  "billing": { "sku": "ats_jobs_list", "plannedPriceUsd": 0.03, "x402Enabled": false }
}

Lever rows also carry team and commitment. Searches add query. Every response also lists the source allowlist and a note.

Data source and licence

Each employer's public board JSON from Greenhouse or Lever. The postings belong to the employers. The tool's allowlist records the terms pages reviewed on 2026-10-31 (Greenhouse job board docs and MSA; Lever postings API docs and terms). That record is not legal advice; check the terms for your own use.

Freshness and limits

  • Board data cached 1 hour, so a new posting can take up to an hour to appear.
  • list: 1 to 5,000 rows. search: scans up to 5,000 rows, returns up to 200. No truncated flag if a board is larger than 5,000.
  • Unknown prefixes such as foo:acme are treated as Greenhouse.
  • Lever EU-hosted boards are not supported.
  • 20 s timeout, 5 MB response cap per fetch.

Errors are not charged

Payment settles only on a successful answer. Any response with status 400 or higher (bad input, not found, upstream failure) is never settled.