Cezanne HR MCP by usefulapi

Read people, employments, org units, absences and timesheets in Cezanne HR.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
94%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'cezannehr_get_current_employment' name length outside 3-30 rangein cezannehr_get_current_employment

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,512Tokens (tool definitions)
~1.9 KBTypical response size
Moderate attention impact (1.18% 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": {
    "cezanne-hr": {
      "url": "https://cezanne-hr.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://cezanne-hr.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢cezannehr_list_people(active_only, top, skip, filter, select)

List people in Cezanne HR, including leavers and new hires unless active_only is true. Returns one page; use next_skip to read more. OData: People.

Input Schema

{
  "type": "object",
  "properties": {
    "active_only": {
      "description": "Only active employees (ActiveEmployee eq 1).",
      "type": "boolean"
    },
    "top": {
      "description": "Rows to return, 1 to 500 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Rows to skip, for paging (default 0). Use the reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "filter": {
      "description": "OData $filter, for example ActiveEmployee eq 1.",
      "type": "string",
      "maxLength": 2000
    },
    "select": {
      "description": "Comma-separated fields to return, for example FamilyName,FirstName.",
      "type": "string",
      "maxLength": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cezannehr_get_person(person_code, select)

Get one person by Person Code, optionally with selected fields. OData: People('<code>').

Input Schema

{
  "type": "object",
  "properties": {
    "person_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The person's Person Code, for example CEZ01."
    },
    "select": {
      "description": "Comma-separated fields to return, for example FamilyName,FirstName.",
      "type": "string",
      "maxLength": 1000
    }
  },
  "required": [
    "person_code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cezannehr_get_current_employment(person_code)

Get the current primary employment of one person by Person Code. OData: People('<code>')/PeopleToEmploymentCurrentPrimary.

Input Schema

{
  "type": "object",
  "properties": {
    "person_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The person's Person Code, for example CEZ01."
    }
  },
  "required": [
    "person_code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cezannehr_list_org_units(top, skip, filter, select)

List organisational units (departments, teams, locations as set up in Cezanne HR). OData: OrgUnits.

Input Schema

{
  "type": "object",
  "properties": {
    "top": {
      "description": "Rows to return, 1 to 500 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Rows to skip, for paging (default 0). Use the reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "filter": {
      "description": "OData $filter, for example ActiveEmployee eq 1.",
      "type": "string",
      "maxLength": 2000
    },
    "select": {
      "description": "Comma-separated fields to return, for example FamilyName,FirstName.",
      "type": "string",
      "maxLength": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cezannehr_list_absence_events(top, skip, filter, select)

List absence events (leave and sickness) for people. Filter by date or person in $filter. OData: PersonAbsenceEvents.

Input Schema

{
  "type": "object",
  "properties": {
    "top": {
      "description": "Rows to return, 1 to 500 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Rows to skip, for paging (default 0). Use the reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "filter": {
      "description": "OData $filter, for example ActiveEmployee eq 1.",
      "type": "string",
      "maxLength": 2000
    },
    "select": {
      "description": "Comma-separated fields to return, for example FamilyName,FirstName.",
      "type": "string",
      "maxLength": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cezannehr_list_timesheets(top, skip, filter, select)

List person timesheets (time recorded per person and period). OData: PersonTimesheets.

Input Schema

{
  "type": "object",
  "properties": {
    "top": {
      "description": "Rows to return, 1 to 500 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Rows to skip, for paging (default 0). Use the reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "filter": {
      "description": "OData $filter, for example ActiveEmployee eq 1.",
      "type": "string",
      "maxLength": 2000
    },
    "select": {
      "description": "Comma-separated fields to return, for example FamilyName,FirstName.",
      "type": "string",
      "maxLength": 1000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cezannehr_read_table(table, top, skip, filter, select)

Read one page of any allowed Cezanne HR OData table (for example Employments, Jobs, PersonTimesheetDetails, OrgUnitPositionDeployments). Sensitive tables are not offered. Read-only.

Input Schema

{
  "type": "object",
  "properties": {
    "table": {
      "type": "string",
      "enum": [
        "PersonAbsencePlanAdjustments",
        "PersonAbsenceEvents",
        "PersonAbsenceEventDetails",
        "Addresses",
        "CompanyCalendarEvents",
        "PersonCalendarEvents",
        "Communications",
        "CostCentreDeployments",
        "OrgUnitPositionDeployments",
        "EducationDetails",
        "EmployeeWorkingTimePattern",
        "EmployeeWorkingTimePatternDetails",
        "EmployeeWorkingTimePatternFTE",
        "Employments",
        "EmploymentContracts",
        "EmploymentStatus",
        "ExternalWorkHistory",
        "JobDeployments",
        "Jobs",
        "LanguageSkills",
        "Licences",
        "LocationDeployments",
        "OrgUnits",
        "People",
        "PersonGrades",
        "PersonTimesheetPlans",
        "PersonTimesheets",
        "PersonTimesheetActivities",
        "PersonTimesheetDetails",
        "PersonTimesheetSettings",
        "PersonalSkills",
        "ProfessionalQualifications",
        "TimesheetPlanTypes",
        "TimesheetProjects",
        "TimesheetProjectActivities",
        "TimesheetProjectActivityTimeTypes"
      ],
      "description": "The table name."
    },
    "top": {
      "description": "Rows to return, 1 to 500 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "skip": {
      "description": "Rows to skip, for paging (default 0). Use the reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "filter": {
      "description": "OData $filter, for example ActiveEmployee eq 1.",
      "type": "string",
      "maxLength": 2000
    },
    "select": {
      "description": "Comma-separated fields to return, for example FamilyName,FirstName.",
      "type": "string",
      "maxLength": 1000
    }
  },
  "required": [
    "table"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools