CATS MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.8.4Updated Nov 7, 2026

Read CATS candidates, jobs and pipelines, and make explicitly confirmed recruiting changes.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBusiness & Commerce

Overview

AI-generated overview

Read and search CATS recruiting data — candidates, jobs, pipelines, companies and contacts — and make explicitly confirmed recruiting changes.

What you can do
  • Look up account, users, candidates, client companies and contacts, with paging, free-text search and field filters
  • Review job orders, job statuses, pipelines and pipeline status history, and list the candidates on a job
  • Inspect a candidate's pipelines, activity log, tasks and attachment metadata (file contents are never downloaded)
  • List site-wide tasks and activities, and read pipeline workflows and their statuses
  • Write with confirmation: create a candidate, log a candidate activity, create a task, or move a candidate to another pipeline status
  • Check usage, request a feature, and upgrade or cancel the paid plan
When to use it
Useful when a recruiter or recruiting team wants an assistant to answer questions over their CATS account — summarizing a candidate's history, finding people or jobs, or reviewing pipeline stages — and to make small, confirmed updates such as logging a note or advancing a candidate.
Requirements
Remote MCP endpoint added by URL only; sign-in is via OAuth, and the login page asks for CATS credentials. A CATS v3 API key is created in CATS under Administration → API Keys (legacy Transaction Codes do not work). No API key or Authorization header goes in the client config. Free plan allows 50 tool calls per month; paid plans are billed separately.
Before you install
Handles personal data from candidate and contact records; the README warns against government IDs, health data and personal financial information, and says free text and custom fields still need review. Tool results go to your AI client and its LLM provider. Four write tools require confirm:true, are not idempotent, and may trigger notifications or account webhooks; inspect CATS before retrying. Paid plans involve Stripe checkout and no refund for the current period.

Installation

In SourceWeft

  1. Open CATS MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fcats-ats/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "cats-by-usefulapi": {
      "type": "http",
      "url": "https://cats-ats.usefulapi.io/mcp"
    }
  }
}

README

CATS MCP server

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://cats-ats.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http cats-ats https://cats-ats.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "cats-ats": {      "url": "https://cats-ats.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your CATS credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/cats-ats/

Tools

ToolTypeWhat it does
cats_get_sitereadGet CATS site
cats_list_usersreadList users
cats_list_candidatesreadList candidates
cats_get_candidatereadGet candidate
cats_search_candidatesreadSearch candidates
cats_filter_candidatesreadFilter candidates
cats_list_candidate_pipelinesreadList a candidate's pipelines
cats_list_candidate_activitiesreadList a candidate's activities
cats_list_candidate_tasksreadList a candidate's tasks
cats_list_candidate_attachmentsreadList a candidate's attachments (metadata)
cats_list_jobsreadList jobs
cats_get_jobreadGet job
cats_search_jobsreadSearch jobs
cats_list_job_pipelinesreadList a job's pipeline
cats_list_job_statusesreadList job statuses
cats_list_pipelinesreadList pipelines
cats_get_pipelinereadGet pipeline
cats_filter_pipelinesreadFilter pipelines
cats_get_pipeline_status_historyreadGet pipeline status history
cats_list_workflowsreadList pipeline workflows
cats_list_workflow_statusesreadList workflow statuses
cats_list_companiesreadList companies
cats_get_companyreadGet company
cats_search_companiesreadSearch companies
cats_list_contactsreadList contacts
cats_get_contactreadGet contact
cats_search_contactsreadSearch contacts
cats_list_tasksreadList tasks
cats_get_taskreadGet task
cats_list_activitiesreadList activities
cats_add_candidate_activitywriteAdd an activity (note) to a candidate
cats_create_taskwriteCreate a task
cats_change_pipeline_statuswriteMove a candidate to another pipeline status
cats_create_candidatewriteCreate a candidate
cats_usage_statusmetaUsage status (free-tier meter)
cats_request_featuremetaRequest a missing feature
cats_upgrademetaUpgrade to Pro or Pro+
cats_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free (per connected CATS site)$050 tool calls / month
Pro (per connected CATS site)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with cats_upgrade (it returns a Stripe Checkout link). Cancel any time with cats_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running cats_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT

Access, personal data and limits

Create a v3 API key in CATS under Administration → API Keys. Legacy Transaction Codes do not work. The generation form offers no read-only scope selector. Authorize UsefulAPI and your selected AI client to process only data you are entitled to share. CATS account eligibility and vendor charges remain separate from UsefulAPI plans. This independent connector makes no claim of vendor approval or endorsement.

Candidate/contact records contain personal information. Do not use this workflow for government IDs, health data, personal financial information or other CATS Prohibited Data. Known credential and sensitive financial/health fields and HAL link blocks are filtered; customers must still review free text and custom fields. Tool results reach your chosen AI client and LLM provider, whose privacy and retention policies also apply. Revoke the API key in CATS to stop vendor access; disconnect UsefulAPI to end this connection.

CATS documents a rolling 500 API requests/hour limit; its counter scope is not specified. Collection pages default to 25, maximum 100. Authentication is capped at 10 seconds/64 KiB; operation replies at 30 seconds/8 MiB. Billing follows the verified CATS site ID, so rotation of a key within the same site keeps the account identity.

Changes and automation

All four writes require confirm:true: create a candidate, log candidate activity, create a task or change pipeline status. Assigned tasks may notify a user. No email/SMS-send request is made by an activity note, even when its activity type is email or text_message. Independently configured account automation and webhooks can still react to changes.

Pipeline moves read the workflow/status metadata, explicitly request every returned trigger be suppressed with fire:false, and send create_activity=false. An already-current status makes no write. Preflight reads are not an atomic lock, so concurrent changes remain possible; independent webhooks are not suppressed. No email delivery, delete, attachment download, bulk-export endpoint or webhook-management tool is exposed.

No vendor request is automatically replayed. Creates require the documented 201 and a matching Location record ID; inconsistent or uncertain acknowledgements are errors. Inspect CATS before retrying a write. Date-only task/activity dates are sent at midnight UTC.

Verification

The 34 vendor tools were checked against the current API reference and local mocks. Actual own-trial reads verified account identity and HAL response structures, including vendor-supplied sample records. No real customer recruiting records or business writes were tested. Current terms allow customer-directed third-party software, and the vendor publishes external API-key setup guidance; this does not assert CATS reviewed UsefulAPI.

References: API v3, terms, external-key setup.

Source: servers/cats-ats/README.md at commit 4046075

Tools

34

cats_get_site

Get CATS site

The CATS site (account) this API key belongs to: id, mode (recruiter or employer) and subdomain. GET /site.

Takes no parameters.

cats_list_users

List users

List the CATS users (recruiters) with id, name, title and access level. Use the ids as owner or assignee. GET /users.

Parameterspageper_page

cats_list_candidates

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.

Parameterspageper_page

cats_get_candidate

Get candidate

One candidate by id (personal data). GET /candidates/{id}.

Parameterscandidate_idrequired

cats_search_candidates

Search candidates

Free-text search over candidates (name, email, skills, resume text...), paged. GET /candidates/search?query=.

Parameterspagequeryrequiredper_page

cats_filter_candidates

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: exactly, contains, between {gte,lte}, greater_than, less_than, is_empty, geo_distance. Paged. POST /candidates/search.

Parameterspagematchper_pageconditionsrequired

cats_list_candidate_pipelines

List a candidate's pipelines

The jobs a candidate is in the pipeline for, with rating, workflow and current status id. GET /candidates/{id}/pipelines.

Parameterspageper_pagecandidate_idrequired

cats_list_candidate_activities

List a candidate's activities

The activity log of a candidate (calls, meetings, notes, pipeline changes), paged. GET /candidates/{id}/activities.

Parameterspageper_pagecandidate_idrequired

cats_list_candidate_tasks

List a candidate's tasks

Tasks attached to a candidate. GET /candidates/{id}/tasks.

Parameterspageper_pagecandidate_idrequired

cats_list_candidate_attachments

List a candidate's attachments (metadata)

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.

Parameterspageper_pagecandidate_idrequired

cats_list_jobs

List jobs

List job orders with title, location, company, recruiter, status and workflow ids, dates. Paged. GET /jobs.

Parameterspageper_page

cats_get_job

Get job

One job order by id, with its description. GET /jobs/{id}.

Parametersjob_idrequired

cats_search_jobs

Search jobs

Free-text search over job orders, paged. GET /jobs/search?query=.

Parameterspagequeryrequiredper_page

cats_list_job_pipelines

List a job's pipeline

The candidates in the pipeline of a job: pipeline id, candidate id, rating and current status id. Paged. GET /jobs/{id}/pipelines.

Parameterspagejob_idrequiredper_page

cats_list_job_statuses

List job statuses

The statuses a job order can have (Active, OnHold, Closed...). GET /jobs/statuses.

Parameterspageper_page

cats_list_pipelines

List pipelines

List candidate-to-job pipelines (candidate id, job id, rating, workflow id, status id), paged. GET /pipelines.

Parameterspageper_page

cats_get_pipeline

Get pipeline

One pipeline (a candidate on a job) by id. GET /pipelines/{id}.

Parameterspipeline_idrequired

cats_filter_pipelines

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.

Parameterspagematchper_pageconditionsrequired

cats_get_pipeline_status_history

Get pipeline status history

The status changes of a pipeline over time (status, who, when). GET /pipelines/{id}/statuses.

Parameterspageper_pagepipeline_idrequired

cats_list_workflows

List pipeline workflows

The pipeline workflows (sets of statuses such as Contacted, Interviewing, Offered). GET /pipelines/workflows.

Parameterspageper_page

cats_list_workflow_statuses

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.

Parameterspageper_pageworkflow_idrequired

cats_list_companies

List companies

List client companies (name, address, website, owner), paged. GET /companies.

Parameterspageper_page

cats_get_company

Get company

One company by id. GET /companies/{id}.

Parameterscompany_idrequired

cats_search_companies

Search companies

Free-text search over companies, paged. GET /companies/search?query=.

Parameterspagequeryrequiredper_page

cats_list_contacts

List contacts

List client contacts (personal data: name, title, emails, company), paged. GET /contacts.

Parameterspageper_page

cats_get_contact

Get contact

One client contact by id (personal data). GET /contacts/{id}.

Parameterscontact_idrequired

cats_search_contacts

Search contacts

Free-text search over client contacts, paged. GET /contacts/search?query=.

Parameterspagequeryrequiredper_page

cats_list_tasks

List tasks

List tasks (description, priority 1-5, due date, assignee, completion, the record it is about), paged. GET /tasks.

Parameterspageper_page

cats_get_task

Get task

One task by id. GET /tasks/{id}.

Parameterstask_idrequired

cats_list_activities

List activities

The site-wide activity log (calls, emails logged, meetings, notes) with the record each is about, paged. GET /activities.

Parameterspageper_page

cats_add_candidate_activity

Add an activity (note) to a candidate

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.

Parametersdatetyperequirednotesrequiredconfirmrequiredcandidate_idrequiredregarding_job_id

cats_create_task

Create a 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.

Parametersconfirmrequiredabout_iddate_duepriorityabout_typedescriptionrequiredassigned_to_id

cats_change_pipeline_status

Move a candidate to another 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 status triggers (which can e-mail people or change records) be suppressed: every trigger attached to the target status is sent with fire=false. CATS remains responsible for enforcing its trigger semantics; independently configured webhooks may still run. The change is recorded in the pipeline's status history. POST /pipelines/{id}/status.

Parametersconfirmrequiredstatus_idrequiredpipeline_idrequired

cats_create_candidate

Create a 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 login is created. POST /candidates.

Parameterscityemailnotesphonestatetitlesourceconfirmrequiredowner_idlast_namerequiredfirst_namerequiredkey_skills+5 more

Version history

10
  1. v1.8.4LatestNov 7, 2026
  2. v1.7.3Nov 5, 2026
  3. v1.7.2Nov 5, 2026
  4. v1.7.1Nov 4, 2026
  5. v1.7.0Nov 3, 2026
  6. v1.6.1Nov 3, 2026
  7. v1.5.0Nov 1, 2026
  8. v1.3.0Oct 31, 2026
  9. v1.2.0Oct 31, 2026
  10. v1.1.0Oct 31, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations