Skip to content

Jet HR MCP by usefulapi

io.usefulapi/jet-hrusefulapi.iostreamable-httpv1.0.0Scanned

Read Jet HR employees, absences, clockings, payroll; create, approve, delete leave; create expenses.

33 tools: 2 can delete or cancel things, 2 change things and 29 only read.

Tools: 2 delete, 0 irreversible, 2 write, 29 read.
  • Reads private data · 6
  • Reads text others write · 3
  • Can send data out · 0
  • No findings

Anlyon alternative

4 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

33 tools

Deletes or cancels 2Claude Code: deny
  • jethr_delete_absence_requestPermanently delete a presence/absence request (it disappears from the employee's calendar and balance).No findings

    Why it is in this group

    • The name "jethr_delete_absence_request" says "delete": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently delete a presence/absence request (it disappears from the employee's calendar and balance). Cannot be undone; needs confirm=true. DELETE /public-api/v1/presence-absence-requests/{uuid}/.

    Annotations the server declares

    • title: Delete a presence or absence request
    • destructiveHint: true
  • jethr_update_absence_requestChange a presence/absence request: dates, hours, note, or its status (APPROVED, REJECTED, PENDING; give rejection_reason when rejecting).No findings

    Why it is in this group

    • The name "jethr_update_absence_request" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change a presence/absence request: dates, hours, note, or its status (APPROVED, REJECTED, PENDING; give rejection_reason when rejecting). WRITES to the company's HR records; approving or rejecting is visible to the employee, and send_notification=true notifies the people involved (default false; needs confirm_notification=true). Only the fields you pass change. PATCH /public-api/v1/presence-absence-requests/{uuid}/.

    Annotations the server declares

    • title: Update, approve or reject an absence request
    • destructiveHint: true
Changes things 2Claude Code: ask
  • jethr_create_absence_requestCreate a leave, sickness, remote-work or other presence/absence request for an employee.No findings

    Why it is in this group

    • The name "jethr_create_absence_request" says "create": a word for a change.
    Description, as the server wrote it
    Create a leave, sickness, remote-work or other presence/absence request for an employee. WRITES to the company's HR records. codename is the request kind (from jethr_list_absence_policies); give start_date and end_date for day requests, or start_date + start_time + time_duration for hourly requests. send_notification=true makes Jet HR notify the people involved (approvers/employee) and needs confirm_notification=true; default false. Some kinds need extra fields (child data, trip data, sickness certificate): Jet HR answers with a validation error naming them. POST /public-api/v1/presence-absence-requests/.

    Annotations the server declares

    • title: Create a presence or absence request
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
  • jethr_create_expenseCreate an expense reimbursement request for an employee (no receipt files; those are uploaded in Jet HR).No findings

    Why it is in this group

    • The name "jethr_create_expense" says "create": a word for a change.
    Description, as the server wrote it
    Create an expense reimbursement request for an employee (no receipt files; those are uploaded in Jet HR). WRITES to the company's records as a reimbursement request. amount is the EUR amount; amount_total is the amount in amount_total_currency (the same value for EUR). POST /public-api/v1/expenses/.

    Annotations the server declares

    • title: Create an expense reimbursement request
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
Only reads 29Show 29 read-only tools
  • jethr_get_absence_request_kindOne absence request kind setting: codename, whether it needs approval or a note, whether it can be requested in hours or days, duration limits.Reads private dataNo findings

    Why it is in this group

    • The name "jethr_get_absence_request_kind" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    Description, as the server wrote it
    One absence request kind setting: codename, whether it needs approval or a note, whether it can be requested in hours or days, duration limits. GET /public-api/v1/company-absence-request-kinds/{uuid}/.

    Annotations the server declares

    • title: Get an absence request kind
    • readOnlyHint: true
  • jethr_get_contractorOne contractor with their collaborations.No findings

    Why it is in this group

    • The name "jethr_get_contractor" says "get": a word for reading.
    Description, as the server wrote it
    One contractor with their collaborations. GET /public-api/v1/contractors/{uuid}/.

    Annotations the server declares

    • title: Get a contractor
    • readOnlyHint: true
  • jethr_get_deviceOne company device with its assignment.No findings

    Why it is in this group

    • The name "jethr_get_device" says "get": a word for reading.
    Description, as the server wrote it
    One company device with its assignment. GET /public-api/v1/devices/{uuid}/.

    Annotations the server declares

    • title: Get a device
    • readOnlyHint: true
  • jethr_get_employeeOne employee's full record (contract, salary, manager, headquarters, custom fields).No findings

    Why it is in this group

    • The name "jethr_get_employee" says "get": a word for reading.
    Description, as the server wrote it
    One employee's full record (contract, salary, manager, headquarters, custom fields). GET /public-api/v1/employees/{uuid}/.

    Annotations the server declares

    • title: Get an employee
    • readOnlyHint: true
  • jethr_get_employee_overviewOne employee's overview record (job title, contract dates, manager, headquarters, custom fields).No findings

    Why it is in this group

    • The name "jethr_get_employee_overview" says "get": a word for reading.
    Description, as the server wrote it
    One employee's overview record (job title, contract dates, manager, headquarters, custom fields). GET /public-api/v1/employee-overviews/{uuid}/.

    Annotations the server declares

    • title: Get an employee (overview)
    • readOnlyHint: true
  • jethr_get_hiringOne hiring process with its status and data.No findings

    Why it is in this group

    • The name "jethr_get_hiring" says "get": a word for reading.
    Description, as the server wrote it
    One hiring process with its status and data. GET /public-api/v1/hirings/{uuid}/.

    Annotations the server declares

    • title: Get a hiring
    • readOnlyHint: true
  • jethr_list_absence_policiesList the company's absence policies with their active request kinds (codename, name, approval and attachment rules) and the employees assigned to each.No findings

    Why it is in this group

    • The name "jethr_list_absence_policies" says "list": a word for reading.
    Description, as the server wrote it
    List the company's absence policies with their active request kinds (codename, name, approval and attachment rules) and the employees assigned to each. The codename is what jethr_create_absence_request needs. Paged: pass next_page as page. GET /public-api/v1/company-absence-policies/.

    Annotations the server declares

    • title: List absence policies
    • readOnlyHint: true
  • jethr_list_absence_requestsList leave, sickness, remote-work and other presence/absence requests with status (APPROVED, REJECTED, PENDING), kind, dates, hours, note and approver.Reads private dataNo findings

    Why it is in this group

    • The name "jethr_list_absence_requests" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "note": it reads notes.
    Description, as the server wrote it
    List leave, sickness, remote-work and other presence/absence requests with status (APPROVED, REJECTED, PENDING), kind, dates, hours, note and approver. Filters combine with AND. Use status filtering on the result for pending requests. Paged: pass next_page as page. GET /public-api/v1/presence-absence-requests/.

    Annotations the server declares

    • title: List presence and absence requests
    • readOnlyHint: true
  • jethr_list_bonus_kindsList the bonus kinds (categories) the company can use in payroll.No findings

    Why it is in this group

    • The name "jethr_list_bonus_kinds" says "list": a word for reading.
    Description, as the server wrote it
    List the bonus kinds (categories) the company can use in payroll. Paged: pass next_page as page. GET /public-api/v1/bonus-kinds/.

    Annotations the server declares

    • title: List bonus kinds
    • readOnlyHint: true
  • jethr_list_bonusesList payroll bonuses (employee, payroll month, amount, kind, note), optionally for one employee, year or month.Reads private dataNo findings

    Why it is in this group

    • The name "jethr_list_bonuses" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "note": it reads notes.
    Description, as the server wrote it
    List payroll bonuses (employee, payroll month, amount, kind, note), optionally for one employee, year or month. Paged: pass next_page as page. GET /public-api/v1/bonuses/.

    Annotations the server declares

    • title: List bonuses
    • readOnlyHint: true
  • jethr_list_clockingsList time-clock events (in, out, work and break start/end, overtime) with employee, timestamp, method (web, mobile, badge, QR code), workplace and location.Reads text others writeNo findings

    Why it is in this group

    • The name "jethr_list_clockings" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "list" and "web": it reads web pages, which anyone can write.
    Description, as the server wrote it
    List time-clock events (in, out, work and break start/end, overtime) with employee, timestamp, method (web, mobile, badge, QR code), workplace and location. Paged: pass next_page as page. GET /public-api/v1/clockings/.

    Annotations the server declares

    • title: List clockings
    • readOnlyHint: true
  • jethr_list_company_ccnlList the national collective labour agreements (CCNL) the company applies.No findings

    Why it is in this group

    • The name "jethr_list_company_ccnl" says "list": a word for reading.
    Description, as the server wrote it
    List the national collective labour agreements (CCNL) the company applies. Paged: pass next_page as page. GET /public-api/v1/company-ccnl/.

    Annotations the server declares

    • title: List company CCNL
    • readOnlyHint: true
  • jethr_list_company_headquartersList the company's headquarters (legal and operative sites), optionally by kind.No findings

    Why it is in this group

    • The name "jethr_list_company_headquarters" says "list": a word for reading.
    Description, as the server wrote it
    List the company's headquarters (legal and operative sites), optionally by kind. Paged: pass next_page as page. GET /public-api/v1/company-headquarters/.

    Annotations the server declares

    • title: List company headquarters
    • readOnlyHint: true
  • jethr_list_contractorsList external contractors (collaborators) and their collaborations, optionally filtered by contractor, linked employee or a collaboration date window.No findings

    Why it is in this group

    • The name "jethr_list_contractors" says "list": a word for reading.
    Description, as the server wrote it
    List external contractors (collaborators) and their collaborations, optionally filtered by contractor, linked employee or a collaboration date window. Paged: pass next_page as page. GET /public-api/v1/contractors/.

    Annotations the server declares

    • title: List contractors
    • readOnlyHint: true
  • jethr_list_devicesList company devices (laptops, phones...) and the employee each is assigned to, optionally by employee or device uuid.No findings

    Why it is in this group

    • The name "jethr_list_devices" says "list": a word for reading.
    Description, as the server wrote it
    List company devices (laptops, phones...) and the employee each is assigned to, optionally by employee or device uuid. Paged: pass next_page as page. GET /public-api/v1/devices/.

    Annotations the server declares

    • title: List devices
    • readOnlyHint: true
  • jethr_list_documentsList documents stored in Jet HR (payslips, contracts and other files): metadata per document, optionally by employee, kind name, payroll period or last-update window.Reads private dataNo findings

    Why it is in this group

    • The name "jethr_list_documents" says "list": a word for reading.

    What it can reach

    • private-dataThe name "jethr_list_documents" says "list" and "document": it reads documents.
    • private-dataThe description's first sentence says "list" and "document": it reads documents.
    Description, as the server wrote it
    List documents stored in Jet HR (payslips, contracts and other files): metadata per document, optionally by employee, kind name, payroll period or last-update window. Paged: pass next_page as page. GET /public-api/v1/documents/.

    Annotations the server declares

    • title: List documents
    • readOnlyHint: true
  • jethr_list_employee_overviewsList employees with the lighter overview record: name, fiscal code, work email, job title, contract dates, probation end, manager, headquarters and custom fields (no salary or pers…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "jethr_list_employee_overviews" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List employees with the lighter overview record: name, fiscal code, work email, job title, contract dates, probation end, manager, headquarters and custom fields (no salary or personal contact data). Needs only the employee_overview:read scope. Paged: pass next_page as page. GET /public-api/v1/employee-overviews/.

    Annotations the server declares

    • title: List employees (overview)
    • readOnlyHint: true
  • jethr_list_employeesList the company's employees with the full record: name, fiscal code, work and personal email, job title and level, contract kind and dates, annual gross salary (RAL), manager, hea…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "jethr_list_employees" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List the company's employees with the full record: name, fiscal code, work and personal email, job title and level, contract kind and dates, annual gross salary (RAL), manager, headquarters and custom fields. Contains personal data; for a lighter list use jethr_list_employee_overviews. Paged: pass next_page as page. GET /public-api/v1/employees/.

    Annotations the server declares

    • title: List employees
    • readOnlyHint: true
  • jethr_list_expense_policiesList the company's expense policies (which expense kinds and limits apply to which employees).No findings

    Why it is in this group

    • The name "jethr_list_expense_policies" says "list": a word for reading.
    Description, as the server wrote it
    List the company's expense policies (which expense kinds and limits apply to which employees). Paged: pass next_page as page. GET /public-api/v1/company-expense-policies/.

    Annotations the server declares

    • title: List expense policies
    • readOnlyHint: true
  • jethr_list_expensesList expense reimbursement requests (employee, amount, currency, kind, description, payment date, receipts, status).No findings

    Why it is in this group

    • The name "jethr_list_expenses" says "list": a word for reading.
    Description, as the server wrote it
    List expense reimbursement requests (employee, amount, currency, kind, description, payment date, receipts, status). Paged: pass next_page as page. GET /public-api/v1/expenses/.

    Annotations the server declares

    • title: List expense reimbursement requests
    • readOnlyHint: true
  • jethr_list_fringe_benefit_kindsList the fringe benefit kinds (categories) available in payroll.No findings

    Why it is in this group

    • The name "jethr_list_fringe_benefit_kinds" says "list": a word for reading.
    Description, as the server wrote it
    List the fringe benefit kinds (categories) available in payroll. Paged: pass next_page as page. GET /public-api/v1/fringe-benefit-kinds/.

    Annotations the server declares

    • title: List fringe benefit kinds
    • readOnlyHint: true
  • jethr_list_fringe_benefitsList fringe benefits assigned in payroll (employee, payroll month, amount, kind), optionally for one employee, year or month.No findings

    Why it is in this group

    • The name "jethr_list_fringe_benefits" says "list": a word for reading.
    Description, as the server wrote it
    List fringe benefits assigned in payroll (employee, payroll month, amount, kind), optionally for one employee, year or month. Paged: pass next_page as page. GET /public-api/v1/fringe-benefits/.

    Annotations the server declares

    • title: List fringe benefits
    • readOnlyHint: true
  • jethr_list_hiringsList hiring processes (drafts and onboarding in progress), optionally by status (for example INCOMPLETE or COMPLETED).No findings

    Why it is in this group

    • The name "jethr_list_hirings" says "list": a word for reading.
    Description, as the server wrote it
    List hiring processes (drafts and onboarding in progress), optionally by status (for example INCOMPLETE or COMPLETED). Paged: pass next_page as page. GET /public-api/v1/hirings/.

    Annotations the server declares

    • title: List hirings
    • readOnlyHint: true
  • jethr_list_payrollsList the company's monthly payrolls (year and month, status and totals).No findings

    Why it is in this group

    • The name "jethr_list_payrolls" says "list": a word for reading.
    Description, as the server wrote it
    List the company's monthly payrolls (year and month, status and totals). Sensitive financial data. Paged: pass next_page as page. GET /public-api/v1/payrolls/.

    Annotations the server declares

    • title: List payrolls
    • readOnlyHint: true
  • jethr_list_payslip_extra_deduction_kindsList the extra deduction kinds (categories) available on payslips.No findings

    Why it is in this group

    • The name "jethr_list_payslip_extra_deduction_kinds" says "list": a word for reading.
    Description, as the server wrote it
    List the extra deduction kinds (categories) available on payslips. Paged: pass next_page as page. GET /public-api/v1/payslip-extra-deduction-kinds/.

    Annotations the server declares

    • title: List payslip extra deduction kinds
    • readOnlyHint: true
  • jethr_list_payslip_extra_deductionsList extra deductions applied to payslips (employee, payroll month, amount, kind), optionally for one employee, year or month.No findings

    Why it is in this group

    • The name "jethr_list_payslip_extra_deductions" says "list": a word for reading.
    Description, as the server wrote it
    List extra deductions applied to payslips (employee, payroll month, amount, kind), optionally for one employee, year or month. Paged: pass next_page as page. GET /public-api/v1/payslip-extra-deductions/.

    Annotations the server declares

    • title: List payslip extra deductions
    • readOnlyHint: true
  • jethr_list_payslipsList employee payslips, optionally for one employee, year or month.No findings

    Why it is in this group

    • The name "jethr_list_payslips" says "list": a word for reading.
    Description, as the server wrote it
    List employee payslips, optionally for one employee, year or month. Sensitive payroll data. Paged: pass next_page as page. GET /public-api/v1/payslips/.

    Annotations the server declares

    • title: List payslips
    • readOnlyHint: true
  • jethr_list_terminationsList employee terminations (resignations and dismissals recorded in Jet HR).No findings

    Why it is in this group

    • The name "jethr_list_terminations" says "list": a word for reading.
    Description, as the server wrote it
    List employee terminations (resignations and dismissals recorded in Jet HR). Paged: pass next_page as page. GET /public-api/v1/terminations/.

    Annotations the server declares

    • title: List terminations
    • readOnlyHint: true
  • jethr_list_trip_refund_policiesList the company's business-trip daily refund policies (needed as trip_name for trip absence requests).No findings

    Why it is in this group

    • The name "jethr_list_trip_refund_policies" says "list": a word for reading.
    Description, as the server wrote it
    List the company's business-trip daily refund policies (needed as trip_name for trip absence requests). Paged: pass next_page as page. GET /public-api/v1/company-trip-daily-refund-policies/.

    Annotations the server declares

    • title: List trip daily refund policies
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads text others write3
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http jet-hr https://jet-hr.usefulapi.io/mcp
claude mcp add --transport http jet-hr https://jet-hr.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__jet-hr__jethr_list_employees",
      "mcp__jet-hr__jethr_get_employee",
      "mcp__jet-hr__jethr_list_employee_overviews",
      "mcp__jet-hr__jethr_get_employee_overview",
      "mcp__jet-hr__jethr_list_terminations",
      "mcp__jet-hr__jethr_list_hirings",
      "mcp__jet-hr__jethr_get_hiring",
      "mcp__jet-hr__jethr_list_contractors",
      "mcp__jet-hr__jethr_get_contractor",
      "mcp__jet-hr__jethr_list_absence_requests",
      "mcp__jet-hr__jethr_list_absence_policies",
      "mcp__jet-hr__jethr_get_absence_request_kind",
      "mcp__jet-hr__jethr_list_clockings",
      "mcp__jet-hr__jethr_list_payrolls",
      "mcp__jet-hr__jethr_list_payslips",
      "mcp__jet-hr__jethr_list_bonuses",
      "mcp__jet-hr__jethr_list_bonus_kinds",
      "mcp__jet-hr__jethr_list_fringe_benefits",
      "mcp__jet-hr__jethr_list_fringe_benefit_kinds",
      "mcp__jet-hr__jethr_list_payslip_extra_deductions",
      "mcp__jet-hr__jethr_list_payslip_extra_deduction_kinds",
      "mcp__jet-hr__jethr_list_documents",
      "mcp__jet-hr__jethr_list_expenses",
      "mcp__jet-hr__jethr_list_expense_policies",
      "mcp__jet-hr__jethr_list_devices",
      "mcp__jet-hr__jethr_get_device",
      "mcp__jet-hr__jethr_list_company_headquarters",
      "mcp__jet-hr__jethr_list_company_ccnl",
      "mcp__jet-hr__jethr_list_trip_refund_policies"
    ],
    "ask": [
      "mcp__jet-hr__jethr_create_absence_request",
      "mcp__jet-hr__jethr_create_expense"
    ],
    "deny": [
      "mcp__jet-hr__jethr_update_absence_request",
      "mcp__jet-hr__jethr_delete_absence_request"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as jet-hr. Review it before you use it.

Capability tags behind 7 rules
  • mcp__jet-hr__jethr_list_employees private-data, untrusted-input
  • mcp__jet-hr__jethr_list_employee_overviews private-data, untrusted-input
  • mcp__jet-hr__jethr_list_absence_requests private-data
  • mcp__jet-hr__jethr_get_absence_request_kind private-data
  • mcp__jet-hr__jethr_list_clockings untrusted-input
  • mcp__jet-hr__jethr_list_bonuses private-data
  • mcp__jet-hr__jethr_list_documents private-data

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/jet-hr/verify?hash=4e48bd79b23f3b3df3d6ada53f5d9bc4dc5fb9be64e5dca750a06fd698a98898" | jq -e '.changed == false'

Pinned hash 4e48bd79b23f, from Oct 24, 2026, 16:20 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/jet-hr/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/jet-hr
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/jet-hr.svg)](https://anlyon.dev/servers/io.usefulapi/jet-hr)

Source: MCP Registry · repository. Synced Oct 24, 2026, 17:17 UTC.