Breathe HR MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.4.3 · published by io.usefulapi
Read Breathe HR employees, absences, sickness and leave; create and review leave requests.
25 tools: 3 can delete or cancel things and 22 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads22Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http breathe-hr https://breathe-hr.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
25 tools
Deletes or cancels 3Claude Code: deny
breathehr_approve_leave_requestWRITE: approve a pending leave request; it becomes an absence and is deducted from the allowance.No findings
Why it is in this group
- The name "breathehr_approve_leave_request" says "approve": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: approve a pending leave request; it becomes an absence and is deducted from the allowance. Recorded as done by the "API Employee". POST /leave_requests/{id}/approve.
Annotations the server declares
- title: Approve leave request
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
breathehr_create_leave_requestWRITE: request leave for an employee (holiday by default, or other leave).No findings
Why it is in this group
- The name "breathehr_create_leave_request" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: request leave for an employee (holiday by default, or other leave). It is created as a request, then follows the account's approval rules; the employee's approver is notified. Each call creates a new request. POST /employees/{id}/leave_requests.
Annotations the server declares
- title: Create leave request
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
breathehr_reject_leave_requestWRITE: reject a pending leave request with a reason the employee will see.No findings
Why it is in this group
- The name "breathehr_reject_leave_request" says "reject": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: reject a pending leave request with a reason the employee will see. Recorded as done by the "API Employee". POST /leave_requests/{id}/reject.
Annotations the server declares
- title: Reject leave request
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Only reads 22Claude Code: allow
breathehr_get_accountThe Breathe HR account (company) this API key belongs to: id, name, domain and enabled modules.No findings
Why it is in this group
- The name "breathehr_get_account" says "get": a word for reading.
Description, as the server wrote it The Breathe HR account (company) this API key belongs to: id, name, domain and enabled modules. GET /account.
Annotations the server declares
- title: Get account
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_get_employeeOne employee's record by id (personal and job details, contacts, manager, working pattern).No findings
Why it is in this group
- The name "breathehr_get_employee" says "get": a word for reading.
Description, as the server wrote it One employee's record by id (personal and job details, contacts, manager, working pattern). Bank details and NI number are never returned. GET /employees/{id}.
Annotations the server declares
- title: Get employee
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_get_holiday_yearsAn employee's holiday years: start/end, allowance, days or hours taken, booked and remaining.No findings
Why it is in this group
- The name "breathehr_get_holiday_years" says "get": a word for reading.
Description, as the server wrote it An employee's holiday years: start/end, allowance, days or hours taken, booked and remaining. Pass for_date to get only the year that contains that date. GET /employees/{id}/employee_holiday_years.
Annotations the server declares
- title: Get holiday years
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_get_leave_requestOne leave request by id, with its status.No findings
Why it is in this group
- The name "breathehr_get_leave_request" says "get": a word for reading.
Description, as the server wrote it One leave request by id, with its status. GET /leave_requests/{id}.
Annotations the server declares
- title: Get leave request
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_absencesList approved absences (holiday and other leave) with employee, dates, half days, days deducted and cancelled flag.No findings
Why it is in this group
- The name "breathehr_list_absences" says "list": a word for reading.
Description, as the server wrote it List approved absences (holiday and other leave) with employee, dates, half days, days deducted and cancelled flag. Filter by employee, department, type, other-leave reason and dates. GET /absences.
Annotations the server declares
- title: List absences
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_benefitsList employee benefits (type, value, start/end) for the whole company, one employee or one department.No findings
Why it is in this group
- The name "breathehr_list_benefits" says "list": a word for reading.
Description, as the server wrote it List employee benefits (type, value, start/end) for the whole company, one employee or one department. GET /benefits, /employees/{id}/benefits or /departments/{id}/benefits.
Annotations the server declares
- title: List benefits
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_bonusesList bonus records (amount, date, description) for the whole company, one employee or one department.No findings
Why it is in this group
- The name "breathehr_list_bonuses" says "list": a word for reading.
Description, as the server wrote it List bonus records (amount, date, description) for the whole company, one employee or one department. GET /bonuses, /employees/{id}/bonuses or /departments/{id}/bonuses.
Annotations the server declares
- title: List bonuses
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_change_requestsList employee self-service change requests (field, requested value, approval state) for all employees or one employee.No findings
Why it is in this group
- The name "breathehr_list_change_requests" says "list": a word for reading.
Description, as the server wrote it List employee self-service change requests (field, requested value, approval state) for all employees or one employee. Requested values of bank and NI fields are redacted. GET /change_requests or /employees/{id}/change_requests.
Annotations the server declares
- title: List change requests
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_departmentsList the company's departments (id, name).No findings
Why it is in this group
- The name "breathehr_list_departments" says "list": a word for reading.
Description, as the server wrote it List the company's departments (id, name). Use the ids to filter absences, leave, sickness and pay. GET /departments.
Annotations the server declares
- title: List departments
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_divisionsList the company's divisions (id, name).No findings
Why it is in this group
- The name "breathehr_list_divisions" says "list": a word for reading.
Description, as the server wrote it List the company's divisions (id, name). All of them are returned in one reply. GET /divisions.
Annotations the server declares
- title: List divisions
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_employee_jobsList job history records (job title, start/end dates, department, location) for all employees or one employee.No findings
Why it is in this group
- The name "breathehr_list_employee_jobs" says "list": a word for reading.
Description, as the server wrote it List job history records (job title, start/end dates, department, location) for all employees or one employee. GET /employee_jobs.
Annotations the server declares
- title: List employee jobs
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_employeesList employees with job title, department, division, location, line manager, holiday approver, working pattern, join/leaving dates and status.No findings
Why it is in this group
- The name "breathehr_list_employees" says "list": a word for reading.
Description, as the server wrote it List employees with job title, department, division, location, line manager, holiday approver, working pattern, join/leaving dates and status. Bank details and National Insurance numbers are never returned. GET /employees.
Annotations the server declares
- title: List employees
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_expense_claimsList expense claims (employee, total, state, approver) filtered by employee and state.No findings
Why it is in this group
- The name "breathehr_list_expense_claims" says "list": a word for reading.
Description, as the server wrote it List expense claims (employee, total, state, approver) filtered by employee and state. GET /employee_expense_claims.
Annotations the server declares
- title: List expense claims
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_expensesList individual expense items (date, description, type, amount, VAT, project).No findings
Why it is in this group
- The name "breathehr_list_expenses" says "list": a word for reading.
Description, as the server wrote it List individual expense items (date, description, type, amount, VAT, project). By default only unclaimed items; set include_claimed to see all. GET /employee_expenses.
Annotations the server declares
- title: List expenses
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_holiday_allowancesList the holiday allowance schemes (id, default flag, year_1 to year_10 = the allowance for each year of service, created_at, updated_at).No findings
Why it is in this group
- The name "breathehr_list_holiday_allowances" says "list": a word for reading.
Description, as the server wrote it List the holiday allowance schemes (id, default flag, year_1 to year_10 = the allowance for each year of service, created_at, updated_at). All of them are returned in one reply. GET /holiday_allowances.
Annotations the server declares
- title: List holiday allowances
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_leave_requestsList leave requests (pending, approved, rejected and cancelling requests) with employee, dates, half days, type, status and notes.No findings
Why it is in this group
- The name "breathehr_list_leave_requests" says "list": a word for reading.
Description, as the server wrote it List leave requests (pending, approved, rejected and cancelling requests) with employee, dates, half days, type, status and notes. Filter by employee, department and start-date range. GET /leave_requests.
Annotations the server declares
- title: List leave requests
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_locationsList the company's work locations (id, name).No findings
Why it is in this group
- The name "breathehr_list_locations" says "list": a word for reading.
Description, as the server wrote it List the company's work locations (id, name). All of them are returned in one reply. GET /locations.
Annotations the server declares
- title: List locations
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_other_leave_reasonsList the reasons for non-holiday leave (e.g.No findings
Why it is in this group
- The name "breathehr_list_other_leave_reasons" says "list": a word for reading.
Description, as the server wrote it List the reasons for non-holiday leave (e.g. compassionate, jury service). Use the ids to filter absences. All of them are returned in one reply. GET /other_leave_reasons.
Annotations the server declares
- title: List other leave reasons
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_salariesList salary records (amount, basis, payment schedule, start date) for the whole company, one employee or one department.No findings
Why it is in this group
- The name "breathehr_list_salaries" says "list": a word for reading.
Description, as the server wrote it List salary records (amount, basis, payment schedule, start date) for the whole company, one employee or one department. GET /salaries, /employees/{id}/salaries or /departments/{id}/salaries.
Annotations the server declares
- title: List salaries
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_sicknessesList sickness absence records (health data): employee, sickness type, dates, half days, days deducted, status (open, returned, closed…) and reason.No findings
Why it is in this group
- The name "breathehr_list_sicknesses" says "list": a word for reading.
Description, as the server wrote it List sickness absence records (health data): employee, sickness type, dates, half days, days deducted, status (open, returned, closed…) and reason. Filter by employee, department and start-date range. GET /sicknesses.
Annotations the server declares
- title: List sickness records
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_training_coursesList employee training records (course name, type, status, dates, cost) for all employees or one employee.No findings
Why it is in this group
- The name "breathehr_list_training_courses" says "list": a word for reading.
Description, as the server wrote it List employee training records (course name, type, status, dates, cost) for all employees or one employee. GET /employee_training_courses.
Annotations the server declares
- title: List training courses
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
breathehr_list_working_patternsList the working patterns (hours per weekday, total weekly hours, default flag).No findings
Why it is in this group
- The name "breathehr_list_working_patterns" says "list": a word for reading.
Description, as the server wrote it List the working patterns (hours per weekday, total weekly hours, default flag). All of them are returned in one reply. GET /working_patterns.
Annotations the server declares
- title: List working patterns
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: 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.
Install
Pinned to version 1.4.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http breathe-hr https://breathe-hr.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__breathe-hr__breathehr_get_account",
"mcp__breathe-hr__breathehr_list_departments",
"mcp__breathe-hr__breathehr_list_divisions",
"mcp__breathe-hr__breathehr_list_locations",
"mcp__breathe-hr__breathehr_list_working_patterns",
"mcp__breathe-hr__breathehr_list_holiday_allowances",
"mcp__breathe-hr__breathehr_list_other_leave_reasons",
"mcp__breathe-hr__breathehr_list_employees",
"mcp__breathe-hr__breathehr_get_employee",
"mcp__breathe-hr__breathehr_get_holiday_years",
"mcp__breathe-hr__breathehr_list_absences",
"mcp__breathe-hr__breathehr_list_leave_requests",
"mcp__breathe-hr__breathehr_get_leave_request",
"mcp__breathe-hr__breathehr_list_sicknesses",
"mcp__breathe-hr__breathehr_list_salaries",
"mcp__breathe-hr__breathehr_list_bonuses",
"mcp__breathe-hr__breathehr_list_benefits",
"mcp__breathe-hr__breathehr_list_employee_jobs",
"mcp__breathe-hr__breathehr_list_training_courses",
"mcp__breathe-hr__breathehr_list_expense_claims",
"mcp__breathe-hr__breathehr_list_expenses",
"mcp__breathe-hr__breathehr_list_change_requests"
],
"ask": [],
"deny": [
"mcp__breathe-hr__breathehr_create_leave_request",
"mcp__breathe-hr__breathehr_approve_leave_request",
"mcp__breathe-hr__breathehr_reject_leave_request"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as breathe-hr. Review it before you use it.