MCP server exposing 4 tools for ats-boards.
This URL is a JSON-RPC 2.0 endpoint over HTTP. Issue POST requests with a JSON-RPC body. Browsers and search crawlers land here on GET.
POST https://gateway.pipeworx.io/ats-boards/mcp
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
ats_detect — Detect which applicant-tracking system (ATS) a company publishes its public job board on, and its board token. Reads the company's careers page (or a given careers_url) for a Greenhouse/Lever/Ashby/SmartRecruiters/Recruitee/BambooHR/Workday/Workable link; falls back to slug-probing the domain name against each board API. Does not read any private/Harvest-key ATS data — only what a public job board already exposes. Discoveries persist so repeat lookups for the same domain are instant.ats_jobs — Fetch normalized job postings from a PUBLIC ATS board you already have the ats + board_token for (use ats_detect or ats_company_jobs if you only have a domain). Returns {found:false, reason:"board_not_found"} for an unknown board — never an empty jobs[] for that case. Lever/Ashby/BambooHR/Recruitee DO distinguish a real zero-job board (found:true, jobs:[]) from an unknown one; SmartRecruiters cannot, and marks that case ambiguous:true. Workday board_token is "<tenant>.wd<N>/<site>" (e.g. "workday.wd5/Workday"); its response states capped:true if your limit/offset hit Workday's own pagination limits (limit<=20, offset<=10000). Workable is currently blocked by Cloudflare from this platform's edge and will throw a loud error naming the 429, not an empty result.ats_company_jobs — Detect a company's public ATS board from its domain, then fetch its postings in one call — ats_detect + ats_jobs combined. Returns the same {found:false, reason:"no_ats_detected"} shape as ats_detect when no board can be found.ats_new_postings — Diff a board's current postings against the last time this tool was called for the same ats+board_token (snapshot kept in KV, dated). The FIRST call for a board has no prior snapshot, so it returns every current job as new (snapshot_bootstrap:true) rather than a misleading empty diff. Pass "since" (ISO date) to also require posted_at >= since where the ATS reports a date.Code samples (curl / TypeScript / one-click client install), schemas, and the live playground are on the pack page:
https://pipeworx.io/packs/ats-boards/
Pipeworx is an open MCP gateway connecting AI agents to live data. pipeworx.io