CharlieHR MCP by usefulapi

Read CharlieHR team members, leave, allowances, offices, teams and salaries; add team member notes.

我该使用它吗

质量与安全性

A
描述质量
95%
模式完整度
93%
命名质量
69%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(15)

  • LOWTool 'charliehr_get_team_member_working_location' name length outside 3-30 range在 charliehr_get_team_member_working_location 中
  • LOWTool 'charliehr_get_team_member_working_weeks' name length outside 3-30 range在 charliehr_get_team_member_working_weeks 中
  • LOWTool 'charliehr_list_working_locations' name length outside 3-30 range在 charliehr_list_working_locations 中
  • LOWTool 'charliehr_list_team_member_leave_requests' name length outside 3-30 range在 charliehr_list_team_member_leave_requests 中
  • LOWTool 'charliehr_list_leave_allowances' name length outside 3-30 range在 charliehr_list_leave_allowances 中
  • LOWTool 'charliehr_get_team_member_leave_allowance' name length outside 3-30 range在 charliehr_get_team_member_leave_allowance 中
  • LOWTool 'charliehr_list_allowance_adjustments' name length outside 3-30 range在 charliehr_list_allowance_adjustments 中
  • LOWTool 'charliehr_list_non_holiday_leave_allowances' name length outside 3-30 range在 charliehr_list_non_holiday_leave_allowances 中
  • LOWTool 'charliehr_list_company_holidays' name length outside 3-30 range在 charliehr_list_company_holidays 中
  • LOWTool 'charliehr_list_restricted_dates' name length outside 3-30 range在 charliehr_list_restricted_dates 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~4,972token 数(工具定义)
~1.1 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 3.88%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `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"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本27 个工具