CATS MCP by usefulapi

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

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count34
Latency1499 ms
Last checked (UTC)2026-10-31T13:25:27.928Z

Health history

Checked (UTC)StatusLatencyError
2026-10-31T13:25:27.928ZHealthy1499

Tools (34)

cats_get_siteThe CATS site (account) this API key belongs to: id, mode (recruiter or employer) and subdomain. GET /site.
cats_list_usersList the CATS users (recruiters) with id, name, title and access level. Use the ids as owner or assignee. GET /users.
cats_list_candidatesList 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_candidateOne candidate by id (personal data). GET /candidates/{id}.
cats_search_candidatesFree-text search over candidates (name, email, skills, resume text...), paged. GET /candidates/search?query=.
cats_filter_candidatesFilter 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_pipelinesThe jobs a candidate is in the pipeline for, with rating, workflow and current status id. GET /candidates/{id}/pipelines.
cats_list_candidate_activitiesThe activity log of a candidate (calls, meetings, notes, pipeline changes), paged. GET /candidates/{id}/activities.
cats_list_candidate_tasksTasks attached to a candidate. GET /candidates/{id}/tasks.
cats_list_candidate_attachmentsFile 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_jobsList job orders with title, location, company, recruiter, status and workflow ids, dates. Paged. GET /jobs.
cats_get_jobOne job order by id, with its description. GET /jobs/{id}.
cats_search_jobsFree-text search over job orders, paged. GET /jobs/search?query=.
cats_list_job_pipelinesThe candidates in the pipeline of a job: pipeline id, candidate id, rating and current status id. Paged. GET /jobs/{id}/pipelines.
cats_list_job_statusesThe statuses a job order can have (Active, OnHold, Closed...). GET /jobs/statuses.
cats_list_pipelinesList candidate-to-job pipelines (candidate id, job id, rating, workflow id, status id), paged. GET /pipelines.
cats_get_pipelineOne pipeline (a candidate on a job) by id. GET /pipelines/{id}.
cats_filter_pipelinesFilter 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_historyThe status changes of a pipeline over time (status, who, when). GET /pipelines/{id}/statuses.
cats_list_workflowsThe pipeline workflows (sets of statuses such as Contacted, Interviewing, Offered). GET /pipelines/workflows.
cats_list_workflow_statusesThe statuses of one pipeline workflow (id, title, prerequisites, triggers). Use the ids with cats_change_pipeline_status. GET /pipelines/workflows/{id}/statuses.
cats_list_companiesList client companies (name, address, website, owner), paged. GET /companies.
cats_get_companyOne company by id. GET /companies/{id}.
cats_search_companiesFree-text search over companies, paged. GET /companies/search?query=.
cats_list_contactsList client contacts (personal data: name, title, emails, company), paged. GET /contacts.
cats_get_contactOne client contact by id (personal data). GET /contacts/{id}.
cats_search_contactsFree-text search over client contacts, paged. GET /contacts/search?query=.
cats_list_tasksList tasks (description, priority 1-5, due date, assignee, completion, the record it is about), paged. GET /tasks.
cats_get_taskOne task by id. GET /tasks/{id}.
cats_list_activitiesThe site-wide activity log (calls, emails logged, meetings, notes) with the record each is about, paged. GET /activities.
cats_add_candidate_activityWRITE: 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_taskWRITE: 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_statusWRITE: 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_candidateWRITE: 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