MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

CATS MCP by usefulapi

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

Checks passed
14 / 22

0 failed · 8 not measured

Median response
58 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
34

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Outdated check

Last connection measurement is over 24 hours old. Current availability is unknown.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 58 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name cats-ats-mcp.

  • Pass
    Lists tools

    tools/list returned 34 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 58 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 58 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    92 of 100 parameters have a description (92%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-11-10T23:34:36.795389Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using CATS MCP by usefulapi

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http cats-mcp-by-usefulapi https://cats-ats.usefulapi.io/mcp

Capabilities

Tools 34

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.

Discovered
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 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.

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

Discovered
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.

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

Discovered
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.

Discovered
cats_get_candidate

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

Discovered
cats_get_company

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

Discovered
cats_get_contact

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

Discovered
cats_get_job

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

Discovered
cats_get_pipeline

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

Discovered
cats_get_pipeline_status_history

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

Discovered
cats_get_site

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

Discovered
cats_get_task

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

Discovered
cats_list_activities

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

Discovered
cats_list_candidate_activities

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

Discovered
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.

Discovered
cats_list_candidate_pipelines

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

Discovered
cats_list_candidate_tasks

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

Discovered
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.

Discovered
cats_list_companies

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

Discovered
cats_list_contacts

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

Discovered
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.

Discovered
cats_list_job_statuses

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

Discovered
cats_list_jobs

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

Discovered
cats_list_pipelines

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

Discovered
cats_list_tasks

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

Discovered
cats_list_users

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

Discovered
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.

Discovered
cats_list_workflows

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

Discovered
cats_search_candidates

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

Discovered
cats_search_companies

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

Discovered
cats_search_contacts

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

Discovered
cats_search_jobs

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

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected58 ms34