CharlieHR MCP by usefulapi
Read CharlieHR team members, leave, allowances, offices, teams and salaries; add team member notes.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (15)
- LOWen charliehr_get_team_member_working_location
- LOWen charliehr_get_team_member_working_weeks
- LOWen charliehr_list_working_locations
- LOWen charliehr_list_team_member_leave_requests
- LOWen charliehr_list_leave_allowances
- LOWen charliehr_get_team_member_leave_allowance
- LOWen charliehr_list_allowance_adjustments
- LOWen charliehr_list_non_holiday_leave_allowances
- LOWen charliehr_list_company_holidays
- LOWen charliehr_list_restricted_dates
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"charliehr": {
"url": "https://charliehr.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://charliehr.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (27)
🟢charliehr_get_company
The Charlie company the API keys belong to: id, name, subdomain and logo. GET /company.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_offices(page, per_page)
List the company's offices: id, name, whether it is the head office, address, timezone, phone and email. GET /offices.
Esquema de entrada
{
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_office(office_id)
One office by id. GET /offices/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"office_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie office id, e.g. office_XXXX (see charliehr_list_offices)."
}
},
"required": [
"office_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_teams(page, per_page)
List the company's teams with the ids of their team members. GET /teams.
Esquema de entrada
{
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_team(team_id)
One team by id, with the ids of its team members. GET /teams/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"team_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team id, e.g. team_XXXX (see charliehr_list_teams)."
}
},
"required": [
"team_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_team_members(page, per_page)
List the company's team members (employees): name, work and personal email, phone, address, office, manager, teams, job title, start date, employment status and leaving date. Sensitive fields included: date_of_birth, gender, married, personal email, phone and home address. National Insurance numbers, payroll id, starter declaration and student-loan flags are never returned. GET /team_members.
Esquema de entrada
{
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_team_member(team_member_id)
One team member by id with the full profile (contact details, address, office, manager, teams, dates, employment status, job title, notes). Sensitive fields included: date_of_birth, gender, married, personal email, phone, home address and notes. National Insurance numbers (also inside notes), payroll id, starter declaration and student-loan flags are never returned. GET /team_members/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member id, e.g. team_member_XXX (see charliehr_list_team_members)."
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_team_member_working_location(team_member_id, date)
Where one team member works on a date (custom overrides win over the default assignment). Defaults to today. GET /team_members/{id}/working_location.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member id."
},
"date": {
"description": "Date, yyyy-mm-dd (default today).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_team_member_working_weeks(team_member_id)
The working-week segments of one team member (which days are full_day/morning/afternoon, weekly hours, from/to dates), company defaults and custom overrides. Not paginated. GET /team_members/{id}/working_weeks.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member id."
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_working_locations(date, page, per_page)
List the active working locations (the catalog). With a date, instead returns where each active team member works on that date. GET /working_locations.
Esquema de entrada
{
"type": "object",
"properties": {
"date": {
"description": "Date, yyyy-mm-dd: return each team member's resolved location on that day.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_leave_requests(start_date, end_date, page, per_page)
List leave requests of the whole company (id, team member, approver, status, request type, start/end date, amount and units, duration, details). Optionally only those in a date window. GET /leave_requests.
Esquema de entrada
{
"type": "object",
"properties": {
"start_date": {
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"end_date": {
"description": "End date, yyyy-mm-dd. Must be used together with start_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_leave_request(leave_request_id)
One leave request by id. GET /leave_requests/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"leave_request_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie leave request id, e.g. leave_request_XXX."
}
},
"required": [
"leave_request_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_team_member_leave_requests(team_member_id, start_date, end_date, page, per_page)
The leave requests of one team member, optionally only those in a date window. GET /team_members/{id}/leave_requests.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member id."
},
"start_date": {
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"end_date": {
"description": "End date, yyyy-mm-dd. Must be used together with start_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_leave_allowances(page, per_page)
The current holiday allowance of every team member: allowance, used and remaining, in days and hours, with the leave period. GET /leave_allowances.
Esquema de entrada
{
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_team_member_leave_allowance(team_member_id)
The current holiday allowance of one team member (allowance, used, remaining, in days and hours, with the period). GET /team_members/{id}/leave_allowance.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member id."
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_allowance_adjustments(team_member_id, page, per_page)
All holiday allowance adjustments of one team member across every leave period (description, days/hours, carryover flag, creator, period). GET /team_members/{id}/allowance_adjustments.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member 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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_non_holiday_leave_allowances(team_member_id)
Days taken and limit for each non-holiday leave type (sick, compassionate...) of one team member. GET /team_members/{id}/non_holiday_leave_allowances.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member id."
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_leave_types(page, per_page)
The enabled leave types (Holiday, Sick...): id, name, deductible, default, auto-approved, sensitive. GET /leave_types.
Esquema de entrada
{
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_leave_type(leave_type_id)
One leave type by id. GET /leave_types/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"leave_type_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie leave type id, e.g. leave_type_XXX."
}
},
"required": [
"leave_type_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_company_holidays(start_date, end_date, page, per_page)
The company's holidays (bank holidays and closures): name, start/end date, duration, deductible. Optionally only those in a date window. GET /company_holidays.
Esquema de entrada
{
"type": "object",
"properties": {
"start_date": {
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"end_date": {
"description": "End date, yyyy-mm-dd. Must be used together with start_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_restricted_dates(start_date, end_date, page, per_page)
The dates on which leave is restricted (e.g. a year-end freeze): name, start/end date, duration. Optionally only those in a date window. GET /restricted_dates.
Esquema de entrada
{
"type": "object",
"properties": {
"start_date": {
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"end_date": {
"description": "End date, yyyy-mm-dd. Must be used together with start_date.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_salaries(page, per_page)
SENSITIVE: the salary records of all team members (job title, pay rate, pay period, frequency, currency, effective date, employment type). Needs API keys with access to salary data. GET /salaries.
Esquema de entrada
{
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_team_member_salaries(team_member_id, page, per_page)
SENSITIVE: the salary history of one team member (job title, pay rate, currency, effective date). GET /team_members/{id}/salaries.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member 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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_team_member_note_types(page, per_page)
The custom note types (fields such as Employee No. or Laptop Serial Number) with who may see them. GET /team_member_note_types.
Esquema de entrada
{
"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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_get_team_member_note_type(note_type_id)
One note type by id. GET /team_member_note_types/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"note_type_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie note type id, e.g. team_member_note_type_XXX."
}
},
"required": [
"note_type_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢charliehr_list_team_member_notes(team_member_id, page, per_page)
The custom notes (label and content) stored on one team member (the content of a note labelled as a National Insurance number, and NI-number-looking text, is redacted). GET /team_members/{id}/notes.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member 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-25 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"required": [
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴charliehr_create_team_member_note(team_member_id, team_member_note_type_id, content)
WRITE: add a custom note (a value for one note type, e.g. an employee number) to a team member in Charlie. It is created immediately and visible to whoever the note type's permissions allow. Use charliehr_list_team_member_note_types for the note type id. POST /team_members/{id}/notes.
Esquema de entrada
{
"type": "object",
"properties": {
"team_member_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Charlie team member id."
},
"team_member_note_type_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The note type this note belongs to (team_member_note_type_XXX)."
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "The note's content."
}
},
"required": [
"team_member_id",
"team_member_note_type_id",
"content"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia