Ceipal MCP by usefulapi
Read job postings, applicants, submissions, clients, vendors, interviews and placements in Ceipal.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"ceipal": {
"url": "https://ceipal.usefulapi.io/mcp"
}
}
}Remote endpoints
https://ceipal.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (24)
🟢ceipal_list_job_postings(limit, page, searchKey, jobCode, positionTitle, ...)
List job postings, one page at a time. Read only. GET /v2/getJobPostingsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"searchKey": {
"description": "Search job code, title and descriptions. Space-separated words mean AND; use double quotes for a phrase.",
"type": "string",
"minLength": 1
},
"jobCode": {
"description": "Job code, case-insensitive partial match.",
"type": "string",
"minLength": 1
},
"positionTitle": {
"description": "Exact position title.",
"type": "string",
"minLength": 1
},
"client": {
"description": "Client id.",
"type": "string",
"minLength": 1
},
"jobStatus": {
"description": "Job status id.",
"type": "string",
"minLength": 1
},
"businessUnitId": {
"description": "Business unit id (an id from the Ceipal business units list).",
"type": "string",
"minLength": 1
},
"city": {
"description": "City name, case-insensitive partial match.",
"type": "string",
"minLength": 1
},
"country": {
"description": "Country id.",
"type": "string",
"minLength": 1
},
"state": {
"description": "State id.",
"type": "string",
"minLength": 1
},
"remoteOpportunities": {
"description": "1 for remote jobs, 0 for on-site jobs.",
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
}
]
},
"postOnCareerportal": {
"description": "1 for jobs posted on the career portal.",
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
}
]
},
"isActive": {
"description": "1 active jobs (default), 0 deleted jobs, 2 archived jobs.",
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
}
]
},
"postedAgoDays": {
"description": "Only jobs posted in the last N days.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"assignedRecruiter": {
"description": "Recruiter user id.",
"type": "string",
"minLength": 1
},
"skills": {
"description": "Required skills: a technology id or comma-separated skill names.",
"type": "string",
"minLength": 1
},
"modifiedAfter": {
"description": "Only records modified after this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
},
"modifiedBefore": {
"description": "Only records modified before this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_job_requisitions(limit, page, jobCode, businessUnitId, modifiedAfter, ...)
List job requisitions, one page at a time. Read only. GET /v2/getRequisitionsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"jobCode": {
"description": "Job code, case-insensitive partial match.",
"type": "string",
"minLength": 1
},
"businessUnitId": {
"description": "Business unit id (an id from the Ceipal business units list).",
"type": "string",
"minLength": 1
},
"modifiedAfter": {
"description": "Only records modified after this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
},
"modifiedBefore": {
"description": "Only records modified before this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_applicants(limit, page, email, mobileNumber, applicantId, ...)
List applicants (candidates), one page at a time. Read only. GET /v2/getApplicantsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"email": {
"description": "Exact email address.",
"type": "string",
"minLength": 1
},
"mobileNumber": {
"description": "Exact mobile number.",
"type": "string",
"minLength": 1
},
"applicantId": {
"description": "Applicant id.",
"type": "string",
"minLength": 1
},
"skills": {
"description": "Comma-separated skill names, case-insensitive partial match.",
"type": "string",
"minLength": 1
},
"workAuthorization": {
"description": "Work authorization status.",
"type": "string",
"minLength": 1
},
"source": {
"description": "Source id.",
"type": "string",
"minLength": 1
},
"createdBy": {
"description": "Creator user id.",
"type": "string",
"minLength": 1
},
"createdAgoDays": {
"description": "Only applicants created in the last N days.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"modifiedAfter": {
"description": "Only records modified after this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
},
"modifiedBefore": {
"description": "Only records modified before this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_submissions(limit, page, jobId, jobSeekerId, submissionId, ...)
List submissions of applicants to a job, one page at a time. Read only. GET /v2/getSubmissionsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"jobId": {
"type": "string",
"minLength": 1,
"description": "Job id (required) from ceipal_list_job_postings."
},
"jobSeekerId": {
"description": "Only submissions of this applicant id.",
"type": "string",
"minLength": 1
},
"submissionId": {
"description": "A submission id.",
"type": "string",
"minLength": 1
},
"isPipeline": {
"description": "1 for pipeline submissions only.",
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
}
]
},
"submittedAgoDays": {
"description": "Only submissions made in the last N days.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"businessUnitId": {
"description": "Business unit id (an id from the Ceipal business units list).",
"type": "string",
"minLength": 1
},
"modifiedAfter": {
"description": "Only records modified after this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
},
"modifiedBefore": {
"description": "Only records modified before this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
}
},
"required": [
"jobId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_talent_bench(limit, page, benchStatus, email, createdAt)
List bench consultants, one page at a time. Read only. GET /v2/getBenchList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"benchStatus": {
"description": "Bench status id.",
"type": "string",
"minLength": 1
},
"email": {
"description": "Consultant email address.",
"type": "string",
"minLength": 1
},
"createdAt": {
"description": "Creation date, dd-mm-yyyy.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_clients(limit, page, status, category, businessUnitId, ...)
List clients, one page at a time. Read only. GET /v2/getClientsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status": {
"description": "Client status.",
"type": "string",
"minLength": 1
},
"category": {
"description": "Client category.",
"type": "string",
"minLength": 1
},
"businessUnitId": {
"description": "Business unit id (an id from the Ceipal business units list).",
"type": "string",
"minLength": 1
},
"modifiedAfter": {
"description": "Only records modified after this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
},
"modifiedBefore": {
"description": "Only records modified before this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_client_notes(limit, page, clientId, leadType, modifiedAfter, ...)
List notes of a client or lead, one page at a time. Read only. GET /v2/getClientNotesList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"clientId": {
"description": "Client id.",
"type": "string",
"minLength": 1
},
"leadType": {
"description": "Module type, to tell client notes from lead notes.",
"type": "string",
"minLength": 1
},
"modifiedAfter": {
"description": "Only records modified after this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
},
"modifiedBefore": {
"description": "Only records modified before this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_client_contacts(limit, page, modifiedAfter, modifiedBefore)
List client contacts, one page at a time. Read only. GET /v2/getClientContactsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"modifiedAfter": {
"description": "Only records modified after this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
},
"modifiedBefore": {
"description": "Only records modified before this time, for example 2025-06-10 00:00:00.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_leads(limit, page)
List sales leads, one page at a time. Read only. GET /v2/getLeadsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_vendors(limit, page)
List vendors (staffing partners), one page at a time. Read only. GET /v2/getVendorsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_interviews(limit, page, jobSeekerId)
List interviews, one page at a time. Read only. GET /v2/getInterviewsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"jobSeekerId": {
"description": "Only interviews of this applicant id.",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_placements(limit, page, jobId, clientId, businessUnitId)
List placements, one page at a time. Read only. GET /v2/getPlacementsList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"jobId": {
"description": "Job id.",
"type": "string",
"minLength": 1
},
"clientId": {
"description": "Client id.",
"type": "string",
"minLength": 1
},
"businessUnitId": {
"description": "Business unit id (an id from the Ceipal business units list).",
"type": "string",
"minLength": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_list_users(limit, page)
List users of the Ceipal account, one page at a time. Read only. GET /v2/getUsersList/. Reads are limited to 60 a minute per account token.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 5 to 50.",
"type": "integer",
"minimum": 5,
"maximum": 50
},
"page": {
"description": "Page number, sent as `page`. The reply carries the vendor's own paging fields.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_job_posting(job_id)
Get one job posting by its encrypted id from ceipal_list_job_postings. Read only. GET /v2/getJobPostingDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_job_postings."
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_job_requisition(requisition_id)
Get one job requisition by its encrypted id from ceipal_list_job_requisitions. Read only. GET /v2/getRequistionsDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"requisition_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_job_requisitions."
}
},
"required": [
"requisition_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_applicant(applicant_id)
Get one applicant with documents and custom fields by its encrypted id from ceipal_list_applicants. Read only. GET /v2/getApplicantDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"applicant_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_applicants."
}
},
"required": [
"applicant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_submission(submission_id)
Get one submission by its encrypted id from ceipal_list_submissions. Read only. GET /v2/getSubmissionDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"submission_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_submissions."
}
},
"required": [
"submission_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_bench_consultant(bench_id)
Get one bench consultant by its encrypted id from ceipal_list_talent_bench. Read only. GET /v2/getBenchDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"bench_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_talent_bench."
}
},
"required": [
"bench_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_client(client_id)
Get one client with contacts and accounts by its encrypted id from ceipal_list_clients. Read only. GET /v2/getClientDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"client_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_clients."
}
},
"required": [
"client_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_lead(lead_id)
Get one sales lead with contacts by its encrypted id from ceipal_list_leads. Read only. GET /v2/getLeadsDetail/{id}/.
Input Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_leads."
}
},
"required": [
"lead_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_vendor(vendor_id)
Get one vendor with contacts by its encrypted id from ceipal_list_vendors. Read only. GET /v2/getVendorDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"vendor_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_vendors."
}
},
"required": [
"vendor_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_interview(interview_id)
Get one interview by its encrypted id from ceipal_list_interviews. Read only. GET /v2/getInterviewDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"interview_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_interviews."
}
},
"required": [
"interview_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_placement(placement_id)
Get one placement with pay details by its encrypted id from ceipal_list_placements. Read only. GET /v2/getPlacementDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"placement_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_placements."
}
},
"required": [
"placement_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢ceipal_get_user(user_id)
Get one user by its encrypted id from ceipal_list_users. Read only. GET /v2/getUserDetails/{id}/.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Encrypted id from ceipal_list_users."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence