CharlieHR MCP by usefulapi
Read CharlieHR team members, leave, allowances, offices, teams and salaries; add team member notes.
使うべきか
品質と安全性
検出事項(15)
- LOWcharliehr_get_team_member_working_location 内
- LOWcharliehr_get_team_member_working_weeks 内
- LOWcharliehr_list_working_locations 内
- LOWcharliehr_list_team_member_leave_requests 内
- LOWcharliehr_list_leave_allowances 内
- LOWcharliehr_get_team_member_leave_allowance 内
- LOWcharliehr_list_allowance_adjustments 内
- LOWcharliehr_list_non_holiday_leave_allowances 内
- LOWcharliehr_list_company_holidays 内
- LOWcharliehr_list_restricted_dates 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"charliehr": {
"url": "https://charliehr.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://charliehr.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(27)
🟢charliehr_get_company
The Charlie company the API keys belong to: id, name, subdomain and logo. GET /company.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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"
}コミュニティ
エビデンス