Ceipal MCP by usefulapi

Read job postings, applicants, submissions, clients, vendors, interviews and placements in Ceipal.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
95%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,969Tokens (tool definitions)
~1.6 KBTypical response size
Significant attention impact (3.88% of 128k context)

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-http

What it can do

Tool inventory

Tools (24)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded24 tools