MCP server for job data and hiring change detection across Greenhouse, Lever, Ashby, Workable, Teamtailor and SmartRecruiters. Give it a company domain, it finds the board itself.
Four tools with clear, action-oriented names (find_, list_, detect_, hiring_) and solid descriptions (150 - 250 chars each). All tools have input schemas with typed parameters and descriptions. However, output schemas are completely undocumented, responses are returned as JSON text blobs with no formal schema declaration. Error handling is present but minimal (unresolved ATS returns a text object; no recovery guidance). Parameter descriptions lack format constraints (e.g., domain format, limit bounds). No tool annotations (readOnlyHint, idempotentHint). Naming is strong; schema and error handling are weak.
Report what changed in a company hiring since the last time this tool looked at it: roles opened, roles closed, titles or locations changed, compensation changed. The first call for a company records a baseline and reports no changes; every call after that returns only the difference. Use this to monitor competitors, track expansion, or detect hiring freezes.
Given a company website, find which applicant tracking system it uses and the board token needed to read its jobs. Supports Greenhouse, Lever, Ashby, Workable, Teamtailor and SmartRecruiters. Use this when you know a company by its domain but not by its job board.
Summarise what a company is hiring for right now: how many open roles, which functions they fall into (engineering, sales, AI/ML, security, data...), and where they are located. Useful for answering "what is this company building" or "are they expanding" without reading every posting.
List all currently open roles at a company. Accepts a plain company website — the job board is detected automatically. Returns title, location, department, employment type and a direct link for every open position.
Output schemas completely undocumented. Tools return JSON text blobs (via text() helper) with no formal schema declaration. LLMs cannot predict response structure, forcing them to parse unstructured output.
Parameter 'limit' in list_jobs lacks bounds. No min/max specified; LLMs could pass absurd values (0, 999999). Should declare 1 - 100 range.
Domain parameter description lacks format guidance. Should state: 'Company domain without protocol (e.g., stripe.com, not https://stripe.com)' to prevent LLM errors.
Error responses lack recovery guidance. 'This company is not on a supported ATS' tells LLM nothing, should suggest 'Try a different company domain' or 'Check if careers page is JavaScript-rendered'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No tool annotations. All tools are read-only but lack readOnlyHint. detect_changes is idempotent on first call but not marked. Annotations help agents reason about safety and retry logic.