MCP Server for AI Agents: Multi-ATS Career Jobs Search avatar

MCP Server for AI Agents: Multi-ATS Career Jobs Search

Pricing

Pay per usage

Go to Apify Store
MCP Server for AI Agents: Multi-ATS Career Jobs Search

MCP Server for AI Agents: Multi-ATS Career Jobs Search

Standby MCP Server (/mcp) and JSON API for AI agents to search live public job postings across 71 companies + any public career board URL on Greenhouse, Lever, Ashby, SmartRecruiters, and Workable with normalized USD salary, remote/hybrid filters, and incremental deduplication.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Mutualistic Labs

Mutualistic Labs

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Standby MCP Server for AI Agents: Multi-ATS Career Jobs Search

An always-on Model Context Protocol (MCP) server for AI agents (Claude Desktop, Cursor, Windsurf, OpenAI Agents, LangChain) to search live public job postings across 71 built-in companies + any public career board URL on five applicant tracking systems: Greenhouse, Lever, Ashby, SmartRecruiters and Workable. Results are normalized (USD salary, remote/hybrid filters, incremental deduplication). Only official, unauthenticated public job-board JSON APIs are used: no scraping, no logins, no proxies.

The Actor runs in two modes on a single codebase:

  1. Standby MCP mode (primary): an MCP server at /mcp exposing the search_jobs and list_supported_companies tools to AI agents.
  2. Batch dataset mode: provide input, get a clean, de-duplicated dataset.

Quick start: MCP for AI agents

Standby URL: https://mutualistic-housing--multi-ats-career-jobs-mcp.apify.actor/mcp (authenticate with your Apify API token).

Claude Desktop (claude_desktop_config.json, via the mcp-remote bridge):

{
"mcpServers": {
"ats-jobs": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://mutualistic-housing--multi-ats-career-jobs-mcp.apify.actor/mcp",
"--header", "Authorization: Bearer <APIFY_API_TOKEN>"
]
}
}
}

Cursor (.cursor/mcp.json):

{
"mcpServers": {
"ats-jobs": {
"url": "https://mutualistic-housing--multi-ats-career-jobs-mcp.apify.actor/mcp",
"headers": { "Authorization": "Bearer <APIFY_API_TOKEN>" }
}
}
}

Tool call examples (JSON-RPC tools/call):

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_jobs","arguments":{"query":"python engineer","remoteOnly":true,"minAnnualSalaryUsd":150000,"maxItems":10}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_supported_companies","arguments":{"atsProviders":["greenhouse","ashby"]}}}

Batch dataset mode is described under Input below.

Features

  • Unified NormalizedJob schema across all providers (deterministic SHA-256 uid, UTC timestamps, workplace type, structured compensation).
  • Built-in curated registry of 71 built-in companies + any public career board URL, or bring your own slugs / career URLs.
  • Filters: keyword query, locations, remote only, posted within N hours, only new since a date, minimum annual USD salary, excluded job IDs.
  • Clean plain-text descriptions (HTML stripped, entities decoded).
  • Resilient fetching: timeouts, retry with backoff on 429/5xx, dead company slugs (404) skipped without failing the run.
  • Hard spending caps: maxItems and maxTotalChargeUsd are never exceeded. Invalid input is rejected with INVALID_INPUT_ZERO_CHARGE before any network call or charge.

Supported providers

ProviderPublic API used
Greenhousehttps://boards-api.greenhouse.io/v1/boards/{slug}/jobs?content=true
Leverhttps://api.lever.co/v0/postings/{slug}?mode=json
Ashbyhttps://api.ashbyhq.com/posting-api/job-board/{slug}?includeCompensation=true
SmartRecruitershttps://api.smartrecruiters.com/v1/companies/{slug}/postings
Workablehttps://apply.workable.com/api/v1/widget/accounts/{slug}

Recognized career URL formats: boards.greenhouse.io/{slug}, job-boards.greenhouse.io/{slug}, jobs.lever.co/{slug}, jobs.ashbyhq.com/{slug}, jobs.smartrecruiters.com/{slug}, apply.workable.com/{slug} (EU variants, www., trailing paths and query strings are handled). SmartRecruiters slugs are case-sensitive (e.g. Visa, BoschGroup).

Input

FieldTypeDescription
querystringAll whitespace-separated tokens must appear in title, department, team or description.
companySlugsstring[]provider:slug (e.g. greenhouse:stripe) or bare slug (tried on every selected provider).
careerUrlsstring[]Public board URLs; provider and slug are extracted automatically.
atsProvidersstring[]Subset of greenhouse, lever, ashby, smartrecruiters, workable. Empty = all.
locationsstring[]Keep jobs whose location contains any substring (case-insensitive).
remoteOnlybooleanOnly remote jobs.
minAnnualSalaryUsdnumberAnnualized upper-bound USD salary threshold. Jobs without USD pay are excluded.
postedWithinHoursnumberPublished (or updated) within the last N hours.
onlyNewSincestringISO-8601 date/time; only jobs published after it (incremental runs).
excludeJobIdsstring[]uid or external_id values to skip.
includeDescriptionbooleanInclude description_plain (default true).
maxItemsinteger0 to 10000, default 100.
maxTotalChargeUsdnumberHard budget cap in USD for the run.

If both companySlugs and careerUrls are empty, the built-in registry is searched (filtered by atsProviders).

Example:

{
"query": "python engineer",
"companySlugs": ["greenhouse:stripe", "ashby:openai", "lever:palantir"],
"remoteOnly": true,
"minAnnualSalaryUsd": 150000,
"maxItems": 50
}

Output

Each dataset item (snake_case):

FieldDescription
uidSHA-256 of provider:slug:external_id
ats_provider, company_slug, company_name, external_idSource identification
title, department, team, employment_typeJob attributes
workplace_typeremote, hybrid, onsite or unspecified
locations, is_remoteLocations list and remote flag
published_at, updated_atISO-8601 UTC (YYYY-MM-DDTHH:MM:SSZ)
compensation{min_amount, max_amount, currency, interval, raw_text} or null
apply_url, source_api_urlApplication link and API endpoint used
description_plainPlain-text description (when enabled)

Standby MCP mode

When the Actor runs in Standby mode it serves HTTP on the Standby port:

  • GET /health returns 200 {"status":"ok"}.
  • POST /mcp accepts JSON-RPC 2.0: initialize, ping, tools/list, tools/call.

Tools:

  • search_jobs: same arguments as the batch input (camelCase; maxItems defaults to 20). Returns structuredContent with jobs, count and charged.
  • list_supported_companies: lists the built-in registry, optionally filtered by atsProviders.

Example MCP client configuration (replace the token):

{
"mcpServers": {
"ats-jobs": {
"url": "https://mutualistic-housing--multi-ats-career-jobs-mcp.apify.actor/mcp",
"headers": { "Authorization": "Bearer <APIFY_API_TOKEN>" }
}
}
}

Quick check:

curl -X POST "https://mutualistic-housing--multi-ats-career-jobs-mcp.apify.actor/mcp" \
-H "Authorization: Bearer <APIFY_API_TOKEN>" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_jobs","arguments":{"query":"data scientist","maxItems":5}}}'

Pricing

This Actor is currently Free to use (Pay for usage): there is a $0.00 Actor fee. You only pay the standard Apify platform compute usage on your own Apify account.

The maxItems and maxTotalChargeUsd hard caps are enforced in code (src/billing.py and .actor/pay_per_event.json), so runs never exceed the limits you configure. Invalid input is never charged.

Limitations

  • No descriptions for SmartRecruiters and Workable. Their public list endpoints do not include job descriptions or compensation. For these providers, query matches only the title and metadata (department, team, location), and compensation/minAnnualSalaryUsd cannot be derived. Searching "python" will miss jobs whose title lacks the word.
  • EU boards. Greenhouse and Lever EU career URLs (boards.eu.greenhouse.io, job-boards.eu.greenhouse.io, jobs.eu.lever.co) are detected as EU boards. Lever EU career URLs (jobs.eu.lever.co) are fetched from api.eu.lever.co. Greenhouse EU career URLs (boards.eu.greenhouse.io, job-boards.eu.greenhouse.io) are served via boards-api.greenhouse.io (the EU board API host does not resolve). The region is tracked per request/target; there is no process-global state, so an EU URL never affects later requests. Built-in registry entries are US-hosted; supply EU boards through careerUrls.
  • SmartRecruiters pagination cap. Pagination stops after 10 pages of 100 (1000 postings per company). If a company has more, a warning is logged, the fetch result is flagged truncated, and the run/MCP errors list gets a truncated_at_1000 entry with severity: "warning"; the remaining postings are not returned.
  • Pay-per-event limits. The platform's charge limit is respected: when the run's max total charge is reached, items beyond the limit are not returned (neither pushed to the dataset nor returned by MCP search_jobs), in addition to the maxItems and maxTotalChargeUsd caps. The remaining platform charge capacity is read before every charge, in both batch and Standby mode (shared across all MCP calls of a run), so nothing is delivered once the limit is exhausted.

Notes

  • Only publicly available job postings are accessed. Respect each company's terms when reusing the data.
  • Company slugs that do not exist are reported in the run log and skipped.
ActorCoversStoreStandby MCP URL
Multi-ATS Career Jobs Search MCPGreenhouse, Lever, Ashby, SmartRecruiters, Workablehttps://apify.com/mutualistic_housing/multi-ats-career-jobs-mcphttps://mutualistic-housing--multi-ats-career-jobs-mcp.apify.actor/mcp
Google Ads Transparency & Ad Spy MCPSearchCreatives, SearchSuggestions, content.js ad-copy & video metadatahttps://apify.com/mutualistic_housing/google-ads-transparency-mcphttps://mutualistic-housing--google-ads-transparency-mcp.apify.actor/mcp
Multi-Engine Keyword & Autocomplete MCPGoogle, YouTube, Amazon, Bing, DuckDuckGo, Brave + google:suggestrelevance & search intenthttps://apify.com/mutualistic_housing/keyword-autocomplete-mcphttps://mutualistic-housing--keyword-autocomplete-mcp.apify.actor/mcp
Discourse Forum Search & Threads MCPcommunity.openai.com, discuss.huggingface.co, meta.discourse.org + any public Discoursehttps://apify.com/mutualistic_housing/discourse-forum-mcphttps://mutualistic-housing--discourse-forum-mcp.apify.actor/mcp
Google Trends Realtime & Entities MCPi0OFE realtime trends, trending/rss news, Knowledge Graph autocomplete entitieshttps://apify.com/mutualistic_housing/google-trends-realtime-mcphttps://mutualistic-housing--google-trends-realtime-mcp.apify.actor/mcp