kiwiHR MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.15.4Updated Nov 7, 2026

Read kiwiHR employees, time off, timesheets, projects; create and update employees, timesheets.

The publisher's own server: Ably MCP by usefulapi

Overview

AI-generated overview

Hosted kiwiHR (HR software) connector that lets an assistant read employees, time off, timesheets and projects, and create or update HR records.

What you can do
  • List and search employees, teams, locations, positions and custom fields, with optional personal details
  • Read time off types, balances and usage reports for a date range
  • Read timesheets, attendance statements, overtime balances and time-tracking projects
  • List onboarding and offboarding journeys, templates and types
  • Create, update and delete timesheet entries; create and update projects
  • Create and update employees, activate or deactivate them, and create journeys
When to use it
Useful when an assistant should answer HR questions from live kiwiHR data — who is off next week, remaining vacation, attendance and overtime — or log and correct time entries and maintain employee and onboarding records without opening the kiwiHR web app.
Requirements
Remote MCP endpoint connected by URL only; sign-in is via OAuth with kiwiHR credentials, and on first connect you paste a kiwiHR company API key created in the kiwiHR web app. No API key or Authorization header goes in the client config. A plan is needed: free tier of 50 tool calls per month, or a paid Pro/Pro+ subscription.
Before you install
Write tools change real HR data: timesheet entries can be created, changed and permanently deleted, employees created, updated, deactivated (removing their access) or reactivated, and journeys created; ask before running them. Employee lookups can return personal data such as birth date, private contact details, nationality and home address when include_personal is set. The company API key is a sensitive credential. Usage is metered and paid plans are billed through a payment link, with no…

Installation

In SourceWeft

  1. Open kiwiHR MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fkiwihr/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "kiwihr-by-usefulapi": {
      "type": "http",
      "url": "https://kiwihr.usefulapi.io/mcp"
    }
  }
}

README

kiwiHR MCP by usefulapi

Read kiwiHR employees, time off, timesheets, projects; create and update employees, timesheets.

Live endpoint: https://kiwihr.usefulapi.io/mcp · Homepage: https://usefulapi.io/kiwihr

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://kiwihr.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http kiwihr https://kiwihr.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "kiwihr": {      "url": "https://kiwihr.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your kiwiHR credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/kiwihr/

On first connect you'll paste your kiwiHR (Tellent HR) company API key (create it in the kiwiHR web app under Company Settings / Configuration > Integrations > API Keys).

Tools

ToolTypeWhat it does
kiwihr_list_usersreadList employees
kiwihr_get_userreadGet employee
kiwihr_list_teamsreadList teams
kiwihr_list_locationsreadList locations
kiwihr_list_positionsreadList positions
kiwihr_list_custom_fieldsreadList custom fields
kiwihr_list_time_off_typesreadList time off types
kiwihr_list_time_off_balancesreadList time off balances
kiwihr_get_time_off_usagereadGet time off usage
kiwihr_list_timesheetsreadList timesheets
kiwihr_get_timesheetreadGet timesheet
kiwihr_get_attendance_statementreadGet attendance statement
kiwihr_list_attendance_statementsreadList attendance statements
kiwihr_list_overtime_balancesreadList overtime balances
kiwihr_list_projectsreadList projects
kiwihr_get_projectreadGet project
kiwihr_list_journeysreadList journeys
kiwihr_get_journeyreadGet journey
kiwihr_list_journey_templatesreadList journey templates
kiwihr_list_journey_typesreadList journey types
kiwihr_create_timesheet_entrywriteCreate timesheet entry
kiwihr_update_timesheet_entrywriteUpdate timesheet entry
kiwihr_delete_timesheet_entrywriteDelete timesheet entry
kiwihr_create_projectwriteCreate project
kiwihr_update_projectwriteUpdate project
kiwihr_create_userwriteCreate employee
kiwihr_update_userwriteUpdate employee
kiwihr_deactivate_userwriteDeactivate employee
kiwihr_activate_userwriteActivate employee
kiwihr_create_journeywriteCreate journey
kiwihr_usage_statusmetaUsage status (free-tier meter)
kiwihr_request_featuremetaRequest a missing feature
kiwihr_upgrademetaUpgrade to Pro or Pro+
kiwihr_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per user)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with kiwihr_upgrade (it returns a Stripe Checkout link). Cancel any time with kiwihr_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running kiwihr_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT © usefulapi. Not affiliated with or endorsed by kiwiHR.

Source: servers/kiwihr/README.md at commit 4046075

Tools

30

kiwihr_list_users

List employees

List or search employees (kiwiHR 'users') with name, work email, active flag, employee number, employment dates, position, team, location and manager. Filter by active state, team, location, position, e-mail or name. Payroll, bank, tax and insurance data are never included. GraphQL query users.

Parametersemaillimitoffsetsort_byteam_iduser_idsis_activelast_namefirst_namelocation_idposition_idsort_direction+1 more

kiwihr_get_user

Get employee

One employee by id: the list fields plus probation end, about-me, language, invitation status, work phones, all teams, work schedule and custom field values. With include_personal=true it also returns birth date, private e-mail and phone, nationality, gender, pronouns, home address, emergency contact and custom fields of the personal sections. Payroll, bank (IBAN/BIC), tax and insurance data are never returned. GraphQL query user.

Parametersuser_idrequiredinclude_personal

kiwihr_list_teams

List teams

List teams and departments (id, name, kind GROUP or DEPARTMENT). Use the ids to filter employees. GraphQL query teams.

Parameterslimitoffsetsort_bysort_direction

kiwihr_list_locations

List locations

List office locations (id, name). Use the ids to filter employees. GraphQL query locations.

Parameterslimitoffsetsort_bysort_direction

kiwihr_list_positions

List positions

List job positions (id, name). Use the ids to filter employees. GraphQL query positions.

Parameterslimitoffsetsort_bysort_direction

kiwihr_list_custom_fields

List custom fields

List the company's custom employee profile fields (id, name, section, data type, choice options). Payroll and bank sections are listed by name only; their values are never returned by any tool. GraphQL query customFields.

Parameterslimitoffsetsort_bysort_direction

kiwihr_list_time_off_types

List time off types

List time off (absence) types such as vacation or sick leave: id, name, colour, visibility to team members. Use the ids with kiwihr_get_time_off_usage and kiwihr_list_time_off_balances. GraphQL query timeOffTypes.

Parameterslimitoffsetsort_bysort_direction

kiwihr_list_time_off_balances

List time off balances

Time off balances of all employees: per employee and time off rule the allowance, accrued, used, requested, planned and available days, carry-over and the accrual/usage periods. Filter by time off type, active state and usage period. The API has no per-employee filter or paging for this query; read the result per user. GraphQL query timeOffBalances.

Parameterssort_byis_activesort_directiontime_off_type_idusage_period_end_tousage_period_start_from

kiwihr_get_time_off_usage

Get time off usage

Who took (or requested) how much time off in a date range: per employee the request count and used days for each time off rule of the chosen time off types. Use it for absence reports ('who was off in March?'). Optional employee filters as in kiwihr_list_users. GraphQL query timeOffRequestUsageStatements.

Parameterslimitoffsetdate_torequiredsort_byteam_iddate_fromrequiredis_activelocation_idsort_directiontime_off_type_idsrequired

kiwihr_list_timesheets

List timesheets

Daily timesheets of one employee (or the key's admin user when user_id is omitted) in a date range: expected, tracked, time off, holiday and break time in SECONDS, approval flag, time offs, holidays, entries (start/end, type, note, project) and break-rule violations. GraphQL query timesheets.

Parameterslimitoffsetdate_torequireduser_iddate_fromrequired

kiwihr_get_timesheet

Get timesheet

The timesheet of ONE employee for ONE day (user_id omitted = the admin user the key acts as), with all entries and their ids (needed to update or delete an entry). Times in seconds. GraphQL query timesheet.

Parametersdaterequireduser_id

kiwihr_get_attendance_statement

Get attendance statement

Attendance summary of ONE employee over a date range: expected, tracked, total, time off and holiday time (seconds) and days, balance, overtime, meal vouchers, and tracked time per project. GraphQL query attendanceStatement.

Parametersdate_torequireduser_idrequireddate_fromrequired

kiwihr_list_attendance_statements

List attendance statements

Attendance summaries of ALL employees over a date range (expected vs tracked time, time off, holidays, balance, overtime, tracked time per project). Optionally only employees with time tracked on a project, or with uncategorized time; inactive employees can be included. GraphQL query attendanceStatements.

Parametersdate_torequiredsort_bydate_fromrequiredproject_idsort_directionhas_uncategorized_timeinclude_inactive_users

kiwihr_list_overtime_balances

List overtime balances

Current overtime balance (seconds) per employee. GraphQL query overtimeBalanceStatements.

Parameterslimitoffsetsort_bysort_direction

kiwihr_list_projects

List projects

List time-tracking projects (id, name, status ACTIVE or INACTIVE). GraphQL query projects.

Parameterslimitoffsetstatussort_bysort_direction

kiwihr_get_project

Get project

One time-tracking project by id (name, status). GraphQL query project.

Parametersproject_idrequired

kiwihr_list_journeys

List journeys

List onboarding/offboarding journeys (id, name, status DRAFT/ONGOING/COMPLETED/CANCELLED, assignee, journey type, custom date). Filter by status, assignee, type or team. GraphQL query journeys.

Parameterslimitoffsetstatusteam_idsassignee_idsjourney_type_ids

kiwihr_get_journey

Get journey

One journey by id with its steps (name, description, fixed start and due dates). With include_personal=true it also returns the private e-mail address stored on the journey. GraphQL query journey.

Parametersjourney_idrequiredinclude_personal

kiwihr_list_journey_templates

List journey templates

List journey templates (id, name, description, type). Use a template id with kiwihr_create_journey. GraphQL query journeyTemplates.

Parameterslimitoffsetjourney_type_id

kiwihr_list_journey_types

List journey types

List journey types such as pre-onboarding, onboarding or offboarding (id, name, key, archived date). GraphQL query journeyTypes.

Parameterslimitoffset

kiwihr_create_timesheet_entry

Create timesheet entry

WRITE: add a time entry to the timesheet of one employee on one day (user_id omitted = the admin user the key acts as). type MANUAL = worked time (give start_at and end_at as HH:mm:ss, or a part_of_day), BREAK = a break. Optional project and note. Creates a new entry each call (not idempotent). Returns the updated day. GraphQL mutation createTimesheetEntry.

Parametersdaterequirednotetyperequiredend_atuser_idstart_atproject_idpart_of_day

kiwihr_update_timesheet_entry

Update timesheet entry

WRITE: change an existing timesheet entry (get its id from kiwihr_get_timesheet): times, part of day, project or note. Only the fields you pass are changed. Setting the same values again gives the same result. Returns the updated day. GraphQL mutation updateTimesheetEntry.

Parametersnoteend_atentry_idrequiredstart_atproject_idpart_of_day

kiwihr_delete_timesheet_entry

Delete timesheet entry

WRITE, DESTRUCTIVE: permanently delete one timesheet entry by id (get it from kiwihr_get_timesheet). This cannot be undone. Returns true when deleted. GraphQL mutation deleteTimesheetEntry.

Parametersentry_idrequired

kiwihr_create_project

Create project

WRITE: create a time-tracking project (name, status ACTIVE or INACTIVE; default ACTIVE). Creates a new project each call (not idempotent). GraphQL mutation createProject.

Parametersnamerequiredstatus

kiwihr_update_project

Update project

WRITE: rename a project or switch it ACTIVE/INACTIVE (INACTIVE projects can no longer be used for time tracking). Only the fields you pass are changed. GraphQL mutation updateProject.

Parametersnamestatusproject_idrequired

kiwihr_create_user

Create employee

WRITE: add a new employee record (first name, last name and work e-mail are required; optional start date, manager, teams, position, location and phones). Creates a new employee each call (not idempotent). No invitation is sent by this tool. Payroll and bank data cannot be set. GraphQL mutation createUser.

Parametersemailrequiredgenderteam_idslast_namerequiredfirst_namerequiredmanager_idlocation_idposition_idwork_phonesemployment_start_date

kiwihr_update_user

Update employee

WRITE: change an employee's work profile: name, start date, about-me, work phones, position, team(s), location, manager. Only the fields you pass are changed (team_ids replaces the whole team list). Private, payroll and bank data cannot be changed with this tool. GraphQL mutation updateUser.

Parametersuser_idrequiredabout_meteam_idslast_namefirst_namemanager_idlocation_idposition_idwork_phonesemployment_start_date

kiwihr_deactivate_user

Deactivate employee

WRITE, ACCESS-CHANGING: deactivate an active employee (typically after they leave): they lose access to kiwiHR and drop out of active lists. Reversible with kiwihr_activate_user. GraphQL mutation deactivateUser.

Parametersuser_idrequired

kiwihr_activate_user

Activate employee

WRITE: re-activate a deactivated employee so they appear in active lists and can use kiwiHR again. GraphQL mutation activateUser.

Parametersuser_idrequired

kiwihr_create_journey

Create journey

WRITE: create an onboarding/offboarding journey for an employee from a journey type and optionally a template (ids from kiwihr_list_journey_types / kiwihr_list_journey_templates). Creates a new journey each call (not idempotent). It does not publish it; check the status in the reply. GraphQL mutation createJourney.

Parametersnameassignee_idrequiredcustom_datepersonal_emailjourney_type_idrequiredcustom_date_namejourney_template_idpre_onboarding_access

Version history

14
  1. v1.15.4LatestNov 7, 2026
  2. v1.14.3Nov 5, 2026
  3. v1.14.2Nov 5, 2026
  4. v1.14.1Nov 4, 2026
  5. v1.14.0Nov 3, 2026
  6. v1.13.1Nov 3, 2026
  7. v1.12.0Nov 1, 2026
  8. v1.10.0Oct 31, 2026
  9. v1.9.0Oct 31, 2026
  10. v1.8.2Oct 30, 2026
  11. v1.8.0Oct 30, 2026
  12. v1.3.0Oct 26, 2026
  13. v1.0.3Oct 25, 2026
  14. v1.0.0Oct 25, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations