Skip to main content
Glama
ATS Jobs MCP server

ATS Jobs MCP server

by eosphor

ATS Jobs MCP server

Search live job postings straight from public applicant-tracking-system (ATS) APIs. Give a company website or an ATS handle and get normalized, filterable results — no API keys, no login, no scraping of job boards.

Built on the same data model as the ATS Jobs API & Hiring Signals Apify Actor, but this server calls the ATS endpoints directly, so it runs standalone.

Supported ATS

Greenhouse · Lever · Ashby · Workday · Personio · Recruitee · Teamtailor · Workable · SmartRecruiters · Breezy HR

Most competitors cover only Greenhouse. One tool call here reaches the long tail of European and enterprise ATS, including Workday tenants.

Related MCP server: io.github.groundtruthtools/ats-jobs-mcp

Tools

Tool

What it does

search_jobs

Jobs for one company. Pass a website/domain/careers URL (ATS auto-detected) or vendor + handle. Filters: keywords, location, remote, posted_after, limit 1–50

search_jobs_multi

Same search for up to 5 companies at once, with per-company results and a combined list

detect_company_ats

Detect which ATS a company uses, without fetching jobs

list_supported_ats

The 10 vendors and the input each one needs

Every response includes latest_posted_at. Pass it back as posted_after to get only jobs posted since the previous call — that is the "only new" mode, kept stateless so it works for any number of users.

Example prompts

  • "Find data engineering jobs at Spotify posted in the last two weeks."

  • "Which ATS does nvidia.com use?"

  • "Remote product design roles at Notion, Linear and Figma."

  • "Watch these 5 target accounts for new sales roles; return only postings newer than 2026-10-01."

Example calls and real output

search_jobs with {"company": "stripe.com", "limit": 3}:

{
  "ok": true,
  "ats": {"vendor": "greenhouse", "handle": "stripe", "detected_from": "probed greenhouse API with handle 'stripe'"},
  "total_available": 732,
  "matched": 732,
  "returned": 3,
  "truncated": true,
  "latest_posted_at": "2026-10-16T09:31:53-04:00",
  "source_url": "https://boards-api.greenhouse.io/v1/boards/stripe/jobs?content=true",
  "jobs": [
    {
      "title": "Account Executive, Enterprise Grower (Benelux)",
      "company": "Stripe",
      "location": "Amsterdam",
      "remote": false,
      "department": "8501 Sales",
      "posted_at": "2026-10-16T09:31:53-04:00",
      "url": "https://stripe.com/jobs/search?gh_jid=...",
      "ats": "greenhouse",
      "job_id": "..."
    }
  ]
}

Workday ({"company": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite", "limit": 5}) returns 5 of 2000 postings in ~2.6 s; descriptions are opt-in because each one costs an extra request.

search_jobs_multi with three companies returns companies_ok: 3, per-company blocks and a combined jobs list.

search_jobs with an unknown company returns {"ok": false, "error": "ats_not_detected"} plus a hint — no empty success.

Only-new monitoring

The server is stateless. To poll for new roles:

  1. Call search_jobs; keep latest_posted_at.

  2. Next run, pass it as posted_after (ISO date or datetime).

  3. Jobs without a published date are excluded while the filter is active.

This works for scheduled agents without server-side per-user state.

Limits and behaviour

  • limit 1–50 (default 20); search_jobs_multi 1–20 per company, max 5 companies.

  • Responses are cached for 5 minutes per company and ATS, so repeated calls are instant.

  • Workday requests are concurrency-limited (2 at a time) and paginate 20 jobs per page.

  • Descriptions are truncated to 1500 characters and returned only with include_descriptions: true.

  • Data comes from public ATS endpoints that companies expose for their own careers pages. No login, no bypassing access controls.

Run locally

pip install -r requirements.txt
PORT=8080 python src/server.py
# MCP endpoint: http://localhost:8080/mcp   health: /health

Deploy notes

mcpize.yaml targets Python 3.11+, HTTP transport on $PORT, entry src/server.py. GET /health returns {"status":"ok"}.

Pricing on MCPize

  • Free — 100 tool calls/month, all tools, 10 results per call

  • Pro $12/month — 10,000 calls/month, full limits, priority support

License

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables 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.
      -
    • A
      license
      A
      quality
      C
      maintenance
      Enables querying open job postings directly from company applicant-tracking systems (Greenhouse, Ashby, Lever), finding a company's job board, listing and comparing roles, and accessing salary data, all without scraping or API keys.
      3
      54 PyPI
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables 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.
      2
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      Enables users to look up a company's open job postings from public Greenhouse, Lever, and Ashby boards, returning them in one normalized shape with filtering by keyword, location, remote status, and posting date. It also identifies which of those three ATSs hosts a given company's board and how many roles are open there.
      46 npm
      MIT