io.usefulapi/cats-ats · v1.2.0 · productivity
CATS MCP by usefulapi is healthy: it completed an MCP handshake in 1499 ms and exposes 34 tools.
Read CATS candidates, jobs and pipelines, and make explicitly confirmed recruiting changes.
Endpoint: https://cats-ats.usefulapi.io/mcp (streamable-http)
Repository · Website · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 34 |
| Latency | 1499 ms |
| Last checked (UTC) | 2026-10-31T13:25:27.928Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-31T13:25:27.928Z | Healthy | 1499 |
cats_get_site | The CATS site (account) this API key belongs to: id, mode (recruiter or employer) and subdomain. GET /site. |
cats_list_users | List the CATS users (recruiters) with id, name, title and access level. Use the ids as owner or assignee. GET /users. |
cats_list_candidates | List candidates (personal data: name, emails, address, employer, skills, notes), one page at a time, max 100 per page. Use cats_search_candidates or cats_filter_candidates to find specific people. GET /candidates. |
cats_get_candidate | One candidate by id (personal data). GET /candidates/{id}. |
cats_search_candidates | Free-text search over candidates (name, email, skills, resume text...), paged. GET /candidates/search?query=. |
cats_filter_candidates | Filter candidates by fields (read-only, although it is a POST): first_name, last_name, title, emails.primary, address.city/state/postal_code, country_code, current_employer, key_skills, notes, dates (date_created, date_modified), owner_id, is_hot... Each condition is {field, filter, value}; filters: |
cats_list_candidate_pipelines | The jobs a candidate is in the pipeline for, with rating, workflow and current status id. GET /candidates/{id}/pipelines. |
cats_list_candidate_activities | The activity log of a candidate (calls, meetings, notes, pipeline changes), paged. GET /candidates/{id}/activities. |
cats_list_candidate_tasks | Tasks attached to a candidate. GET /candidates/{id}/tasks. |
cats_list_candidate_attachments | File names, sizes and whether each file is a resume, for a candidate's attachments. Metadata only: file contents are never downloaded. GET /candidates/{id}/attachments. |
cats_list_jobs | List job orders with title, location, company, recruiter, status and workflow ids, dates. Paged. GET /jobs. |
cats_get_job | One job order by id, with its description. GET /jobs/{id}. |
cats_search_jobs | Free-text search over job orders, paged. GET /jobs/search?query=. |
cats_list_job_pipelines | The candidates in the pipeline of a job: pipeline id, candidate id, rating and current status id. Paged. GET /jobs/{id}/pipelines. |
cats_list_job_statuses | The statuses a job order can have (Active, OnHold, Closed...). GET /jobs/statuses. |
cats_list_pipelines | List candidate-to-job pipelines (candidate id, job id, rating, workflow id, status id), paged. GET /pipelines. |
cats_get_pipeline | One pipeline (a candidate on a job) by id. GET /pipelines/{id}. |
cats_filter_pipelines | Filter pipelines by id, candidate_id, job_id, status_id, rating, date_created or date_modified (read-only, although it is a POST). Each condition is {field, filter, value}. Paged. POST /pipelines/search. |
cats_get_pipeline_status_history | The status changes of a pipeline over time (status, who, when). GET /pipelines/{id}/statuses. |
cats_list_workflows | The pipeline workflows (sets of statuses such as Contacted, Interviewing, Offered). GET /pipelines/workflows. |
cats_list_workflow_statuses | The statuses of one pipeline workflow (id, title, prerequisites, triggers). Use the ids with cats_change_pipeline_status. GET /pipelines/workflows/{id}/statuses. |
cats_list_companies | List client companies (name, address, website, owner), paged. GET /companies. |
cats_get_company | One company by id. GET /companies/{id}. |
cats_search_companies | Free-text search over companies, paged. GET /companies/search?query=. |
cats_list_contacts | List client contacts (personal data: name, title, emails, company), paged. GET /contacts. |
cats_get_contact | One client contact by id (personal data). GET /contacts/{id}. |
cats_search_contacts | Free-text search over client contacts, paged. GET /contacts/search?query=. |
cats_list_tasks | List tasks (description, priority 1-5, due date, assignee, completion, the record it is about), paged. GET /tasks. |
cats_get_task | One task by id. GET /tasks/{id}. |
cats_list_activities | The site-wide activity log (calls, emails logged, meetings, notes) with the record each is about, paged. GET /activities. |
cats_add_candidate_activity | WRITE: Requires confirm:true. log an activity (a call, meeting, note...) on a candidate's record. It only records the entry in CATS: no email/SMS-send request is made, even for type 'email' or 'text_message'. Creates a new entry each time (not idempotent). POST /candidates/{id}/activities. |
cats_create_task | WRITE: Requires confirm:true. create a task in CATS, optionally about a candidate, contact, company or job and assigned to a user. Creates a new task each time (not idempotent); CATS may notify the assignee. POST /tasks. |
cats_change_pipeline_status | WRITE: Requires confirm:true. change the status of a pipeline (move a candidate to another stage of a job's workflow, e.g. Interviewing, Offered, Rejected). Get the pipeline id from cats_list_candidate_pipelines and the status id from cats_list_workflow_statuses. Requires confirm:true. Requests that |
cats_create_candidate | WRITE: Requires confirm:true. create one candidate record (personal data) with name, optional contact details and notes. Refuses when CATS finds a duplicate (check_duplicate=true, the default). Creates a new record each time (not idempotent); no email-send request is made to the candidate and no log |