ats_jobs

Pack: ats-boards · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)

No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/ats_jobs for the schema, then POST the same URL with its arguments for the data.

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/Teamtailor/Breezy DO distinguish a real zero-job board (found:true, jobs:[]) from an unknown one; SmartRecruiters cannot (ambiguous:true); Pinpoint and iCIMS have not had a confirmed-empty real board observed live, so a 0-job result from those two is NOT independently confirmed to mean “real board, no jobs” versus a mis-detected token. Workday board_token is “.wd/” (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. Dover is NOT supported: its public board is a Cloudflare-Turnstile-gated SPA with no keyless jobs endpoint.

Parameters

NameTypeRequiredDescription
atsstringyesWhich ATS to query.
board_tokenstringyesThe board identifier: Greenhouse/Lever/Ashby/SmartRecruiters/Teamtailor/Personio/Breezy/Pinpoint company slug or subdomain label; Recruitee/BambooHR subdomain label; Jobvite slug (path segment after jobs.jobvite.com/); Rippling slug (path segment after ats.rippling.com/); iCIMS full subdomain label before .icims.com (e.g. “careers-acme” — prefixes vary by customer); Workable account slug; Workday “.wd/”.
filtersobjectnoOptional post-fetch filters and Workday pagination controls.
propertiesstringnoCase-insensitive substring match on job title. For Workday this is also sent upstream as the search text.
title_querystringnoCase-insensitive substring match on job title. For Workday this is also sent upstream as the search text.
location_querystringnoCase-insensitive substring match on location.
remote_onlybooleannoKeep only jobs flagged remote (where the ATS reports it).
regionstringnoLever only: “eu” queries api.eu.lever.co instead of api.lever.co.
limitnumbernoWorkday only: page size, clamped to 20 (Workday itself rejects anything higher with HTTP 400).
offsetnumbernoWorkday only: pagination offset, clamped to 10000 (Workday’s own cap).

Example call

Arguments

{
  "ats": "greenhouse",
  "board_token": "airbnb"
}

curl

curl -X POST https://gateway.pipeworx.io/ats-boards/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ats_jobs","arguments":{"ats":"greenhouse","board_token":"airbnb"}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('ats_jobs', {
  "ats": "greenhouse",
  "board_token": "airbnb"
});

More examples

{
  "ats": "teamtailor",
  "board_token": "career"
}
{
  "ats": "personio",
  "board_token": "kertos"
}
{
  "ats": "jobvite",
  "board_token": "bagleybagelbites"
}
{
  "ats": "breezy",
  "board_token": "duolingo"
}
{
  "ats": "pinpoint",
  "board_token": "workwithus"
}
{
  "ats": "rippling",
  "board_token": "skillable-careers"
}
{
  "ats": "icims",
  "board_token": "careers-intrepidsolutions"
}

Connect

Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://pipeworx.io/mcp"
    }
  }
}
Connect to just the ats-boards pack
{
  "mcpServers": {
    "ats-boards": {
      "url": "https://gateway.pipeworx.io/ats-boards/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build October 27, 2026