Read CharlieHR team members, leave, allowances, offices, teams and salaries; add team member notes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The note's content.
Charlie team member id.
The note type this note belongs to (team_member_note_type_XXX).
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
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.
| Argument | Type | Description |
|---|---|---|
| content* | string | The note's content. |
| team_member_id* | string | Charlie team member id. |
| team_member_note_type_id* | string | The note type this note belongs to (team_member_note_type_XXX). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id",
"team_member_note_type_id",
"content"
],
"properties": {
"content": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The note's content."
},
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
},
"team_member_note_type_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The note type this note belongs to (team_member_note_type_XXX)."
}
}
}The Charlie company the API keys belong to: id, name, subdomain and logo. GET /company.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One leave request by id. GET /leave_requests/{id}.
| Argument | Type | Description |
|---|---|---|
| leave_request_id* | string | Charlie leave request id, e.g. leave_request_XXX. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"leave_request_id"
],
"properties": {
"leave_request_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie leave request id, e.g. leave_request_XXX."
}
}
}One leave type by id. GET /leave_types/{id}.
| Argument | Type | Description |
|---|---|---|
| leave_type_id* | string | Charlie leave type id, e.g. leave_type_XXX. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"leave_type_id"
],
"properties": {
"leave_type_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie leave type id, e.g. leave_type_XXX."
}
}
}One office by id. GET /offices/{id}.
| Argument | Type | Description |
|---|---|---|
| office_id* | string | Charlie office id, e.g. office_XXXX (see charliehr_list_offices). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"office_id"
],
"properties": {
"office_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie office id, e.g. office_XXXX (see charliehr_list_offices)."
}
}
}One team by id, with the ids of its team members. GET /teams/{id}.
| Argument | Type | Description |
|---|---|---|
| team_id* | string | Charlie team id, e.g. team_XXXX (see charliehr_list_teams). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_id"
],
"properties": {
"team_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team id, e.g. team_XXXX (see charliehr_list_teams)."
}
}
}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}.
| Argument | Type | Description |
|---|---|---|
| team_member_id* | string | Charlie team member id, e.g. team_member_XXX (see charliehr_list_team_members). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id, e.g. team_member_XXX (see charliehr_list_team_members)."
}
}
}The current holiday allowance of one team member (allowance, used, remaining, in days and hours, with the period). GET /team_members/{id}/leave_allowance.
| Argument | Type | Description |
|---|---|---|
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
}
}
}One note type by id. GET /team_member_note_types/{id}.
| Argument | Type | Description |
|---|---|---|
| note_type_id* | string | Charlie note type id, e.g. team_member_note_type_XXX. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"note_type_id"
],
"properties": {
"note_type_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie note type id, e.g. team_member_note_type_XXX."
}
}
}Where one team member works on a date (custom overrides win over the default assignment). Defaults to today. GET /team_members/{id}/working_location.
| Argument | Type | Description |
|---|---|---|
| date | string | Date, yyyy-mm-dd (default today). |
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Date, yyyy-mm-dd (default today)."
},
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie 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.
| Argument | Type | Description |
|---|---|---|
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
},
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
}
}
}The company's holidays (bank holidays and closures): name, start/end date, duration, deductible. Optionally only those in a date window. GET /company_holidays.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date | string | End date, yyyy-mm-dd. Must be used together with start_date. |
| per_page | integer | Results per page, 1-25 (default 25). |
| start_date | string | Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "End date, yyyy-mm-dd. Must be used together with start_date."
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date."
}
}
}The current holiday allowance of every team member: allowance, used and remaining, in days and hours, with the leave period. GET /leave_allowances.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date | string | End date, yyyy-mm-dd. Must be used together with start_date. |
| per_page | integer | Results per page, 1-25 (default 25). |
| start_date | string | Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "End date, yyyy-mm-dd. Must be used together with start_date."
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date."
}
}
}The enabled leave types (Holiday, Sick...): id, name, deductible, default, auto-approved, sensitive. GET /leave_types.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}Days taken and limit for each non-holiday leave type (sick, compassionate...) of one team member. GET /team_members/{id}/non_holiday_leave_allowances.
| Argument | Type | Description |
|---|---|---|
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
}
}
}List the company's offices: id, name, whether it is the head office, address, timezone, phone and email. GET /offices.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date | string | End date, yyyy-mm-dd. Must be used together with start_date. |
| per_page | integer | Results per page, 1-25 (default 25). |
| start_date | string | Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "End date, yyyy-mm-dd. Must be used together with start_date."
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}The leave requests of one team member, optionally only those in a date window. GET /team_members/{id}/leave_requests.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| end_date | string | End date, yyyy-mm-dd. Must be used together with start_date. |
| per_page | integer | Results per page, 1-25 (default 25). |
| start_date | string | Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date. |
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "End date, yyyy-mm-dd. Must be used together with start_date."
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Only items overlapping this window: start date, yyyy-mm-dd. Must be used together with end_date."
},
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
}
}
}The custom note types (fields such as Employee No. or Laptop Serial Number) with who may see them. GET /team_member_note_types.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
},
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
}
}
}SENSITIVE: the salary history of one team member (job title, pay rate, currency, effective date). GET /team_members/{id}/salaries.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
| team_member_id* | string | Charlie team member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"team_member_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
},
"team_member_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Charlie team member id."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}List the company's teams with the ids of their team members. GET /teams.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}List the active working locations (the catalog). With a date, instead returns where each active team member works on that date. GET /working_locations.
| Argument | Type | Description |
|---|---|---|
| date | string | Date, yyyy-mm-dd: return each team member's resolved location on that day. |
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-25 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"date": {
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
"description": "Date, yyyy-mm-dd: return each team member's resolved location on that day."
},
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 25,
"description": "Results per page, 1-25 (default 25).",
"exclusiveMinimum": 0
}
}
}