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.
- 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 private data6
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- 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/mcpclaude mcp add --transport http jet-hr https://jet-hr.usefulapi.io/mcpRun 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.
{
"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.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.usefulapi/jet-hr)Source: MCP Registry · repository. Synced Oct 24, 2026, 17:17 UTC.