Breathe HR integration
Breathe (breatheHR) is HR software for small and medium-sized businesses. Read and create employees; book, approve, reject and cancel leave; record and update sicknesses; manage expense records, expense claims, training records and change requests to employee records; read salaries, bonuses, benefits, job history and holiday years, and the company's departments, divisions, locations, working patterns, holiday allowance schemes, projects, documents (names only) and statutory holiday countries. Every answer is one key named after the record type holding an array, even for a single record. Actions tied to a user, such as approving a leave request, are recorded against Breathe's placeholder API Employee. A second, duplicate other-leave-reasons list is not exposed. Authentication is a production API key (it starts with prod-, shown in the Breathe account's API settings once the API is enabled) sent in the X-API-KEY header; sandbox keys only work on Breathe's sandbox host, which this integration does not call. Breathe allows 60 requests per 60 seconds per customer.
Say what should happen.
The workflow builds itself.
What you can do with Breathe HR
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Employee expense, 5 operations
create_employee_expenseCreate employee expensePOSTRecords an expense for an employee: date, description, expense type, amount and whether it is payable to the employee; optionally VAT, project, mileage rate and miles, client recharge and receipt flag.delete_employee_expenseDelete employee expenseDELETEDeletes an expense record.get_employee_expenseGet employee expenseGETReturns one expense record, inside an employee_expenses array of one.list_employee_expensesList employee expensesGETLists expense records, optionally for one employee; show_claimed true also returns expenses already part of a claim. Paginated: page, per_page (max 100).update_employee_expenseUpdate employee expensePUTEdits an expense record that is not yet part of a claim. Send only the fields to change.
Employee expense claim, 5 operations
approve_or_reject_expense_claimApprove or reject expense claimPUTApproves (approve true) or rejects (approve false) an expense claim, naming the deciding employee in approver_rejector_id, with an optional rejection reason.create_employee_expense_claimCreate employee expense claimPOSTSubmits an expense claim for an employee, grouping expense records created with create_employee_expense (their ids from list_employee_expenses).delete_employee_expense_claimDelete employee expense claimDELETEDeletes an expense claim.get_employee_expense_claimGet employee expense claimGETReturns one expense claim with its state, approval, rejection and payment details and the expenses it groups, inside an employee_expense_claims array of one.list_employee_expense_claimsList employee expense claimsGETLists expense claims, optionally for one employee or in one state (submitted, approved, completed, rejected), with the expenses each claim groups. Paginated: page, per_page (max 100).
Leave request, 5 operations
create_leave_requestCreate leave requestPOSTCreates a leave request for an employee: start and end dates, whether it starts or ends on a half day (am or pm), type Holiday or OtherLeave, and notes.get_leave_requestGet leave requestGETReturns one leave request (dates, half days, action, status, notes), inside a leave_requests array of one.list_department_leave_requestsList department leave requestsGETLists the leave requests of every employee in one department, optionally without cancelled ones. Paginated: page, per_page (max 100).list_employee_leave_requestsList employee leave requestsGETLists one employee's leave requests (dates, half days, status, notes), optionally without cancelled ones.list_leave_requestsList leave requestsGETLists leave requests across the account, filterable by start date range, employee and department, optionally without cancelled ones. Paginated: page, per_page (max 100).
Sickness, 5 operations
create_sicknessCreate sicknessPOSTRecords a sickness absence for an employee: sickness type and start date are required; end date, half days, status, reason and review notes are optional.delete_sicknessDelete sicknessDELETEDeletes a sickness record.list_employee_sicknessesList employee sicknessesGETLists one employee's sickness records (type, dates, half days, days deducted, status, reason).list_sicknessesList sicknessesGETLists sickness records across the account, filterable by start date range, employee and department. Paginated: page, per_page (max 100).update_sicknessUpdate sicknessPUTUpdates a sickness record (type, dates, half days, status, reason, review notes). Send only the fields to change.
Employee training course, 4 operations
create_employee_training_courseCreate employee training coursePOSTRecords a training course for an employee: name and training type are required; status, dates, half day, cost and currency, category, provider, outcome, follow-up date and notes are optional.delete_employee_training_courseDelete employee training courseDELETEDeletes a training record.list_employee_training_coursesList employee training coursesGETLists training records (course name, dates, cost, status, outcome, training type, category and provider), optionally for one employee. Paginated: page, per_page (max 100).update_employee_training_courseUpdate employee training coursePUTUpdates a training record. Send only the fields to change.
Absence, 3 operations
list_absencesList absencesGETLists absences (holiday and other leave booked for employees) across the account, filterable by type, leave reason, employee, department and date range. Paginated: page, per_page (default 25, max 100).list_department_absencesList department absencesGETLists the absences of every employee in one department. Paginated: page, per_page (max 100).list_employee_absencesList employee absencesGETLists one employee's absences (holiday and other leave), optionally without cancelled ones. Paginated: page, per_page (max 100).
Benefit, 3 operations
list_benefitsList benefitsGETLists employee benefit records across the account: amount, provider, start, end and review dates, pension opt-out and employer and employee contributions. Paginated: page, per_page (max 100).list_department_benefitsList department benefitsGETLists the benefit records of the employees in one department: amount, provider, dates and pension contributions. Paginated: page, per_page (max 100).list_employee_benefitsList employee benefitsGETLists one employee's benefit records: amount, provider, dates, pension opt-out and contributions. Paginated: page, per_page (max 100).
Bonuse, 3 operations
list_bonusesList bonusesGETLists employee bonus records across the account: description, amount and award date. Paginated: page, per_page (max 100).list_department_bonusesList department bonusesGETLists the bonus records of the employees in one department: description, amount and award date. Paginated: page, per_page (max 100).list_employee_bonusesList employee bonusesGETLists one employee's bonus records: description, amount and award date. Paginated: page, per_page (max 100).
Change request, 3 operations
create_change_requestCreate change requestPOSTProposes a change to one field of an employee record (field from a fixed list, new value). approved true applies the change at once; otherwise approve it later with approve_change_request.list_change_requestsList change requestsGETLists change requests across the account: proposed changes to an employee record (field name, new value, whether and when it was approved). Paginated: page, per_page (max 100).list_employee_change_requestsList employee change requestsGETLists the change requests raised on one employee record. Paginated: page, per_page (max 100).
Employee, 3 operations
create_employeeCreate employeePOSTCreates an employee record. first_name, last_name, email and company_join_date are required; job, organisation, contact, personal, permission and starting salary fields are optional.get_employeeGet employeeGETReturns one employee record (personal details including National Insurance number, contact, address, job, organisation and bank details), inside an employees array of one.list_employeesList employeesGETLists full employee records: job, contact, address, organisation, National Insurance number and bank details; filter narrows to HR managers, line managers, either or neither. Paginated: page, per_page (default 25, max 100).
Salary, 3 operations
list_department_salariesList department salariesGETLists the salary records of the employees in one department: amount, basis, start and end dates. Paginated: page, per_page (max 100).list_employee_salariesList employee salariesGETLists one employee's salary history: amount, basis, start and end dates. Paginated: page, per_page (max 100).list_salariesList salariesGETLists salary records across the account: amount, basis, start and end dates. Paginated: page, per_page (max 100).
Approve, 2 operations
approve_change_requestApprove change requestPOSTApproves a pending change request on an employee record, which applies the change.approve_leave_requestApprove leave requestPOSTApproves a pending leave request. Breathe records approvals made through the API as performed by its placeholder API Employee.
Company project, 2 operations
get_company_projectGet company projectGETReturns one company project (name, due date, completion flag), inside a company_projects array of one.list_company_projectsList company projectsGETLists company projects (name, due date, completion flag). An expense record can reference one through company_project_id. Paginated: page, per_page (max 100).
Account, 1 operation
get_accountGet accountGETReturns the Breathe account the API key belongs to (id, name, domain, uuid and module flags). A cheap way to check that a key works.
Cancel, 1 operation
cancel_absenceCancel absencePOSTCancels an absence, with an optional reason for the cancellation.
Cancelling, 1 operation
get_cancelled_leave_requestGet cancelled leave requestGETFor a leave request that cancels an earlier one, returns the leave request it is cancelling.
Company document, 1 operation
list_company_documentsList company documentsGETLists the company documents stored in Breathe: id, display name and timestamps (not the files). Paginated: page, per_page (max 100).
Company training type, 1 operation
list_company_training_typesList company training typesGETLists the training types configured for the company. create_employee_training_course needs one as company_training_type_id. Paginated: page, per_page (max 100).
Department, 1 operation
list_departmentsList departmentsGETLists the company departments (id and name). A department id feeds the department-scoped list tools and the department field of create_employee. Paginated: page, per_page (max 100).
Division, 1 operation
list_divisionsList divisionsGETLists the company divisions (id and name). A division id feeds the division field of create_employee.
Employee holiday year, 1 operation
list_employee_holiday_yearsList employee holiday yearsGETReturns an employee's holiday years: allowance, carry-over, adjustment and leave used from last, this and next year; for_date narrows to the year that includes that date.
Employee job, 1 operation
list_employee_jobsList employee jobsGETLists job history records (title, full or part time, start, end and contract end dates), optionally for one employee. Paginated: page, per_page (max 100).
Holiday allowance, 1 operation
list_holiday_allowancesList holiday allowancesGETLists the holiday allowance schemes configured for the company. An id feeds the holiday_allowance field of create_employee.
Location, 1 operation
list_locationsList locationsGETLists the company locations (id and name). A location id feeds the location field of create_employee.
Other leave reason, 1 operation
list_other_leave_reasonsList other leave reasonsGETLists the other-leave reasons configured for the company (id and name). An id filters list_absences through other_leave_reason_id.
Reject, 1 operation
reject_leave_requestReject leave requestPOSTRejects a pending leave request, giving the reason for the rejection.
Statutory holiday country, 1 operation
list_statutory_holiday_countriesList statutory holiday countriesGETLists the countries whose statutory (public) holidays Breathe can apply to employees. An id feeds statutory_holiday_country_id on create_employee.
Working pattern, 1 operation
list_working_patternsList working patternsGETLists the working patterns configured for the company: working days and hours per weekday and total weekly hours. An id feeds the working_pattern field of create_employee.
Use Breathe HR from Claude Code, Cursor or Codex
Connect Breathe HR in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Breathe HR operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Breathe HR
- Create your workspace
Sign up free. Nothing to install.
- Connect Breathe HR once
Add your Breathe HR connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Breathe HR integration FAQ
What can you do with the Breathe HR integration?
LiveContext exposes 61 operations on Breathe HR, covering employee expense, employee expense claim, leave request and sickness.
