CATS MCP by usefulapi
Read CATS candidates, jobs and pipelines, and make explicitly confirmed recruiting changes.
我該用這個嗎
品質與安全性
發現項目(2)
- LOW在 cats_list_candidate_attachments 中
- LOW在 cats_get_pipeline_status_history 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"cats-ats": {
"url": "https://cats-ats.usefulapi.io/mcp"
}
}
}遠端端點
https://cats-ats.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(34)
🟢cats_get_site
The CATS site (account) this API key belongs to: id, mode (recruiter or employer) and subdomain. GET /site.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_users(page, per_page)
List the CATS users (recruiters) with id, name, title and access level. Use the ids as owner or assignee. GET /users.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_candidates(page, per_page)
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.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_get_candidate(candidate_id)
One candidate by id (personal data). GET /candidates/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"candidate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS candidate id."
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_search_candidates(query, page, per_page)
Free-text search over candidates (name, email, skills, resume text...), paged. GET /candidates/search?query=.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Search text."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_filter_candidates(conditions, match, page, per_page)
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.
輸入結構描述
{
"type": "object",
"properties": {
"conditions": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "A filterable field, e.g. last_name, emails.primary, date_created, status_id."
},
"filter": {
"type": "string",
"enum": [
"exactly",
"contains",
"between",
"greater_than",
"less_than",
"is_empty",
"geo_distance"
],
"description": "exactly (string/int/boolean), contains (string), between ({gte,lte}), greater_than/less_than (int or date), is_empty (value true), geo_distance ({postal_code,distance,unit}); which fields allow which filters is per resource."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "object",
"properties": {},
"additionalProperties": {}
}
],
"description": "The value; its type depends on the filter."
}
},
"required": [
"field",
"filter",
"value"
]
},
"description": "One or more conditions."
},
"match": {
"description": "How several conditions combine: all = AND (default), any = OR.",
"type": "string",
"enum": [
"all",
"any"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"conditions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_candidate_pipelines(candidate_id, page, per_page)
The jobs a candidate is in the pipeline for, with rating, workflow and current status id. GET /candidates/{id}/pipelines.
輸入結構描述
{
"type": "object",
"properties": {
"candidate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS candidate id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_candidate_activities(candidate_id, page, per_page)
The activity log of a candidate (calls, meetings, notes, pipeline changes), paged. GET /candidates/{id}/activities.
輸入結構描述
{
"type": "object",
"properties": {
"candidate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS candidate id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_candidate_tasks(candidate_id, page, per_page)
Tasks attached to a candidate. GET /candidates/{id}/tasks.
輸入結構描述
{
"type": "object",
"properties": {
"candidate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS candidate id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_candidate_attachments(candidate_id, page, per_page)
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.
輸入結構描述
{
"type": "object",
"properties": {
"candidate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS candidate id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_jobs(page, per_page)
List job orders with title, location, company, recruiter, status and workflow ids, dates. Paged. GET /jobs.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_get_job(job_id)
One job order by id, with its description. GET /jobs/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"job_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS job id."
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_search_jobs(query, page, per_page)
Free-text search over job orders, paged. GET /jobs/search?query=.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Search text."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_job_pipelines(job_id, page, per_page)
The candidates in the pipeline of a job: pipeline id, candidate id, rating and current status id. Paged. GET /jobs/{id}/pipelines.
輸入結構描述
{
"type": "object",
"properties": {
"job_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS job id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_job_statuses(page, per_page)
The statuses a job order can have (Active, OnHold, Closed...). GET /jobs/statuses.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_pipelines(page, per_page)
List candidate-to-job pipelines (candidate id, job id, rating, workflow id, status id), paged. GET /pipelines.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_get_pipeline(pipeline_id)
One pipeline (a candidate on a job) by id. GET /pipelines/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"pipeline_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS pipeline id."
}
},
"required": [
"pipeline_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_filter_pipelines(conditions, match, page, per_page)
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.
輸入結構描述
{
"type": "object",
"properties": {
"conditions": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "A filterable field, e.g. last_name, emails.primary, date_created, status_id."
},
"filter": {
"type": "string",
"enum": [
"exactly",
"contains",
"between",
"greater_than",
"less_than",
"is_empty",
"geo_distance"
],
"description": "exactly (string/int/boolean), contains (string), between ({gte,lte}), greater_than/less_than (int or date), is_empty (value true), geo_distance ({postal_code,distance,unit}); which fields allow which filters is per resource."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "object",
"properties": {},
"additionalProperties": {}
}
],
"description": "The value; its type depends on the filter."
}
},
"required": [
"field",
"filter",
"value"
]
},
"description": "One or more conditions."
},
"match": {
"description": "How several conditions combine: all = AND (default), any = OR.",
"type": "string",
"enum": [
"all",
"any"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"conditions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_get_pipeline_status_history(pipeline_id, page, per_page)
The status changes of a pipeline over time (status, who, when). GET /pipelines/{id}/statuses.
輸入結構描述
{
"type": "object",
"properties": {
"pipeline_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS pipeline id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"pipeline_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_workflows(page, per_page)
The pipeline workflows (sets of statuses such as Contacted, Interviewing, Offered). GET /pipelines/workflows.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_workflow_statuses(workflow_id, page, per_page)
The statuses of one pipeline workflow (id, title, prerequisites, triggers). Use the ids with cats_change_pipeline_status. GET /pipelines/workflows/{id}/statuses.
輸入結構描述
{
"type": "object",
"properties": {
"workflow_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Workflow id, from cats_list_workflows or a pipeline's workflow_id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"workflow_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_companies(page, per_page)
List client companies (name, address, website, owner), paged. GET /companies.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_get_company(company_id)
One company by id. GET /companies/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"company_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS company id."
}
},
"required": [
"company_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_search_companies(query, page, per_page)
Free-text search over companies, paged. GET /companies/search?query=.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Search text."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_contacts(page, per_page)
List client contacts (personal data: name, title, emails, company), paged. GET /contacts.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_get_contact(contact_id)
One client contact by id (personal data). GET /contacts/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS contact id."
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_search_contacts(query, page, per_page)
Free-text search over client contacts, paged. GET /contacts/search?query=.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Search text."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_tasks(page, per_page)
List tasks (description, priority 1-5, due date, assignee, completion, the record it is about), paged. GET /tasks.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_get_task(task_id)
One task by id. GET /tasks/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS task id."
}
},
"required": [
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cats_list_activities(page, per_page)
The site-wide activity log (calls, emails logged, meetings, notes) with the record each is about, paged. GET /activities.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cats_add_candidate_activity(confirm, candidate_id, type, notes, regarding_job_id, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Confirm this change to the CATS account."
},
"candidate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS candidate id."
},
"type": {
"type": "string",
"enum": [
"email",
"meeting",
"call_talked",
"call_lvm",
"call_missed",
"text_message",
"other"
],
"description": "Activity type; use 'other' for a plain note."
},
"notes": {
"type": "string",
"minLength": 1,
"maxLength": 10000,
"description": "The note text."
},
"regarding_job_id": {
"description": "The job order this activity is about; omit for a general activity.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"date": {
"description": "When it happened (ISO 8601); default now.",
"type": "string"
}
},
"required": [
"confirm",
"candidate_id",
"type",
"notes"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cats_create_task(confirm, description, about_type, about_id, assigned_to_id, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Confirm this change to the CATS account."
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "What has to be done."
},
"about_type": {
"description": "Kind of record the task is about; omit for a general task. Needs about_id.",
"type": "string",
"enum": [
"candidate",
"contact",
"company",
"job"
]
},
"about_id": {
"description": "Id of that record.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"assigned_to_id": {
"description": "CATS user id of the assignee (see cats_list_users).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"priority": {
"description": "1 (lowest) to 5.",
"type": "integer",
"minimum": 1,
"maximum": 5
},
"date_due": {
"description": "Due date (ISO 8601); omit for ASAP.",
"type": "string"
}
},
"required": [
"confirm",
"description"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cats_change_pipeline_status(confirm, pipeline_id, status_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Confirm this change to the CATS account."
},
"pipeline_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "CATS pipeline id."
},
"status_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The status to move to; must belong to the pipeline's workflow."
}
},
"required": [
"confirm",
"pipeline_id",
"status_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cats_create_candidate(confirm, first_name, last_name, email, phone, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Confirm this change to the CATS account."
},
"first_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"last_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"description": "Primary e-mail address (stored only, never mailed).",
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"description": "Phone number with country code.",
"type": "string",
"minLength": 3,
"maxLength": 40
},
"phone_type": {
"description": "Phone type (default mobile).",
"type": "string",
"enum": [
"mobile",
"home",
"work",
"fax",
"main",
"other"
]
},
"title": {
"description": "Current job title.",
"type": "string",
"maxLength": 200
},
"current_employer": {
"type": "string",
"maxLength": 200
},
"city": {
"type": "string",
"maxLength": 100
},
"state": {
"type": "string",
"maxLength": 100
},
"postal_code": {
"type": "string",
"maxLength": 30
},
"country_code": {
"description": "ISO 3166 two-letter country code.",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"key_skills": {
"type": "string",
"maxLength": 2000
},
"source": {
"description": "Where the candidate came from.",
"type": "string",
"maxLength": 200
},
"notes": {
"type": "string",
"maxLength": 10000
},
"owner_id": {
"description": "CATS user id of the record owner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"check_duplicate": {
"description": "Refuse to create when a duplicate exists (default true).",
"type": "boolean"
}
},
"required": [
"confirm",
"first_name",
"last_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據