# `io.usefulapi/breathe-hr` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/io.usefulapi/breathe-hr
- JSON: https://anlyon.dev/api/v1/servers/io.usefulapi/breathe-hr
- Version: 1.4.3 (active)
- Publisher: io.usefulapi (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/m190/usefulapi-mcp
- Metadata from the official MCP Registry, synced 2026-10-21T19:23:16.065Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Breathe HR MCP by usefulapi
Read Breathe HR employees, absences, sickness and leave; create and review leave requests.
```

Scanned 2026-10-21T19:36:55.322Z over streamable-http.

**25 tools: 3 can delete or cancel things and 22 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 3 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 0 | ask |
| Only reads | read | 22 | allow |

## Findings

No check matched anything in these tool definitions.


## Deletes or cancels (3)

Removes, cancels or revokes something. Claude Code: deny.

### `breathehr_approve_leave_request`

- 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:

```untrusted-server-text
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.
```

### `breathehr_create_leave_request`

- 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:

```untrusted-server-text
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.
```

### `breathehr_reject_leave_request`

- 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:

```untrusted-server-text
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.
```

## Only reads (22)

Looks things up and changes nothing. Claude Code: allow.

### `breathehr_get_account`

- The name "breathehr_get_account" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
The Breathe HR account (company) this API key belongs to: id, name, domain and enabled modules. GET /account.
```

### `breathehr_get_employee`

- The name "breathehr_get_employee" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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}.
```

### `breathehr_get_holiday_years`

- The name "breathehr_get_holiday_years" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_get_leave_request`

- The name "breathehr_get_leave_request" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
One leave request by id, with its status. GET /leave_requests/{id}.
```

### `breathehr_list_absences`

- The name "breathehr_list_absences" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_benefits`

- The name "breathehr_list_benefits" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_bonuses`

- The name "breathehr_list_bonuses" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List bonus records (amount, date, description) for the whole company, one employee or one department. GET /bonuses, /employees/{id}/bonuses or /departments/{id}/bonuses.
```

### `breathehr_list_change_requests`

- The name "breathehr_list_change_requests" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_departments`

- The name "breathehr_list_departments" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List the company's departments (id, name). Use the ids to filter absences, leave, sickness and pay. GET /departments.
```

### `breathehr_list_divisions`

- The name "breathehr_list_divisions" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List the company's divisions (id, name). All of them are returned in one reply. GET /divisions.
```

### `breathehr_list_employee_jobs`

- The name "breathehr_list_employee_jobs" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List job history records (job title, start/end dates, department, location) for all employees or one employee. GET /employee_jobs.
```

### `breathehr_list_employees`

- The name "breathehr_list_employees" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_expense_claims`

- The name "breathehr_list_expense_claims" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List expense claims (employee, total, state, approver) filtered by employee and state. GET /employee_expense_claims.
```

### `breathehr_list_expenses`

- The name "breathehr_list_expenses" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List individual expense items (date, description, type, amount, VAT, project). By default only unclaimed items; set include_claimed to see all. GET /employee_expenses.
```

### `breathehr_list_holiday_allowances`

- The name "breathehr_list_holiday_allowances" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_leave_requests`

- The name "breathehr_list_leave_requests" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_locations`

- The name "breathehr_list_locations" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List the company's work locations (id, name). All of them are returned in one reply. GET /locations.
```

### `breathehr_list_other_leave_reasons`

- The name "breathehr_list_other_leave_reasons" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_salaries`

- The name "breathehr_list_salaries" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_sicknesses`

- The name "breathehr_list_sicknesses" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `breathehr_list_training_courses`

- The name "breathehr_list_training_courses" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List employee training records (course name, type, status, dates, cost) for all employees or one employee. GET /employee_training_courses.
```

### `breathehr_list_working_patterns`

- The name "breathehr_list_working_patterns" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List the working patterns (hours per weekday, total weekly hours, default flag). All of them are returned in one reply. GET /working_patterns.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `breathe-hr`:

```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"
    ]
  }
}
```
