Traffit MCP by usefulapi
Read candidates, jobs, stages and clients; add notes to candidates in Traffit.
我该使用它吗
质量与安全性
发现(1)
- LOW在 traffit_get_candidate_activities 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"traffit": {
"url": "https://traffit.usefulapi.io/mcp"
}
}
}远程端点
https://traffit.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(24)
🟢traffit_list_candidates(page, page_size, filter, sort)
List candidates in the ATS with paging, filters (e.g. created_at, name, lastname) and sort. Returns total_count and items. Scope: employee. GET /employees/.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_candidate(candidate_id)
Get one candidate by id with contact data, status, files list and custom fields. Scope: employee. GET /employees/{id}.
输入模式
{
"type": "object",
"properties": {
"candidate_id": {
"type": "string",
"minLength": 1,
"description": "The candidate id (numeric id)."
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_candidate_tags(candidate_id)
List the tags of one candidate. Scope: employee. GET /employees/{id}/tags.
输入模式
{
"type": "object",
"properties": {
"candidate_id": {
"type": "string",
"minLength": 1,
"description": "The candidate id (numeric id)."
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_candidate_jobs(candidate_id)
List the jobs (recruitments) a candidate takes part in. Scope: employee. GET /employees/{id}/recruitments.
输入模式
{
"type": "object",
"properties": {
"candidate_id": {
"type": "string",
"minLength": 1,
"description": "The candidate id (numeric id)."
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_candidate_activities(candidate_id, page, page_size, filter, sort)
List the activity history of one candidate (notes, stage moves, mails). Scope: employee. GET /employees/{id}/activities.
输入模式
{
"type": "object",
"properties": {
"candidate_id": {
"type": "string",
"minLength": 1,
"description": "The candidate id (numeric id)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_candidate_files(candidate_id)
List the files (file names and upload dates) of one candidate. Scope: employee. GET /employees/{id}/files.
输入模式
{
"type": "object",
"properties": {
"candidate_id": {
"type": "string",
"minLength": 1,
"description": "The candidate id (numeric id)."
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_candidate_sources(candidate_id)
List where one candidate came from (source records). Scope: source. GET /sources/employees/{id}.
输入模式
{
"type": "object",
"properties": {
"candidate_id": {
"type": "string",
"minLength": 1,
"description": "The candidate id (numeric id)."
}
},
"required": [
"candidate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_jobs(page, page_size, filter, sort)
List jobs (recruitments) with paging, filters and sort. Scope: recruitment. GET /recruitments/.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_job(job_id)
Get one job (recruitment) by id with client, responsible people, status and custom fields. Scope: recruitment. GET /recruitments/{id}.
输入模式
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id (numeric id)."
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_job_candidates(job_id, page, page_size, filter, sort)
List the candidates attached to one job. Scope: recruitment. GET /recruitments/{id}/employees.
输入模式
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id (numeric id)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_job_states(job_id, page, page_size, filter, sort)
List the pipeline stages (states) of one job. Scope: recruitment. GET /recruitments/{id}/states.
输入模式
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id (numeric id)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_job_stage_counts(job_id)
Count the candidates in each stage of one job. Scope: recruitment. GET /recruitments/{id}/states/counter.
输入模式
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id (numeric id)."
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_stage_candidates(job_id, state_id, page, page_size, filter, ...)
List the candidates that are now in one stage of one job. Get stage ids from traffit_list_job_states. Scope: recruitment. GET /recruitments/{job}/states/{state}/employees.
输入模式
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job id (numeric id)."
},
"state_id": {
"type": "string",
"minLength": 1,
"description": "The stage (state) id (numeric id)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"required": [
"job_id",
"state_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_clients(page, page_size, filter, sort)
List client companies (CRM) with paging, filters and sort. Scope: client. GET /clients/.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_client(client_id)
Get one client company by id. Scope: client. GET /clients/{id}.
输入模式
{
"type": "object",
"properties": {
"client_id": {
"type": "string",
"minLength": 1,
"description": "The client id (numeric id)."
}
},
"required": [
"client_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_contacts(page, page_size, filter, sort)
List contact people (crm_persons) of client companies. Scope: crm_person. GET /crm_persons/.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_contact(contact_id)
Get one contact person by id. Scope: crm_person. GET /crm_persons/{id}.
输入模式
{
"type": "object",
"properties": {
"contact_id": {
"type": "string",
"minLength": 1,
"description": "The contact (crm_person) id (numeric id)."
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_crm_activities(page, page_size, filter, sort)
List CRM activities (calls, meetings, notes on clients and contacts). Scope: crm_activity. GET /crm_activities/.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_users(page, page_size, filter, sort)
List users of the Traffit account with their groups and permission groups. Scope: user. GET /users/.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_user(user_id)
Get one Traffit user by id. Scope: user. GET /users/{id}.
输入模式
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"minLength": 1,
"description": "The user id (numeric id)."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_talent_pools(page, page_size, filter, sort)
List talent pools (named groups of candidates). Scope: talent. GET /talents.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_list_sources(page, page_size, filter, sort)
List candidate sources (job boards, referrals). Scope: source. GET /sources.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page_size": {
"description": "Records per page (default 20, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"filter": {
"description": "Filters joined by AND, keyed by field name, e.g. {\"created_at\":{\"value\":\"2026-01-01\",\"comparison\":\">=\"}}. Custom fields work when exposed in the API.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Value to compare with."
},
"comparison": {
"type": "string",
"enum": [
"=",
"!=",
"<=",
">=",
"in",
"like"
],
"description": "Comparison operator."
}
},
"required": [
"value",
"comparison"
]
}
},
"sort": {
"description": "Sort order keyed by field name, e.g. {\"created_at\":\"DESC\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢traffit_get_workflow(workflow_id)
Get one recruitment workflow by id with its stages. Scope: dictionary. GET /workflows/{id}.
输入模式
{
"type": "object",
"properties": {
"workflow_id": {
"type": "string",
"minLength": 1,
"description": "The workflow id (a job shows its workflow_id) (numeric id)."
}
},
"required": [
"workflow_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴traffit_add_candidate_note(candidate_id, content)
WRITE: add a text note to one candidate's activity history. Each call adds a new note, so do not repeat a call that succeeded. Scope: employee. POST /employees/{id}/notes.
输入模式
{
"type": "object",
"properties": {
"candidate_id": {
"type": "string",
"minLength": 1,
"description": "The candidate id (numeric id)."
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 10000,
"description": "The note text."
}
},
"required": [
"candidate_id",
"content"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据