Breathe HR MCP server
Breathe HR in any MCP client, through Memtro: Breathe HR does not publish this server. Memtro's Breathe HR connector reads Breathe HR through its API with the credentials you connect, and one endpoint hands those tools, every other system you connect and Memtro's memory tools to Claude Code, Cursor, Claude Desktop or anything else that speaks Streamable HTTP, as you.
What the model can do
HR directory from Breathe (UK): who works here with job title, department, division, location, line manager, working pattern, start date and status; departments, divisions, locations, working patterns and holiday allowances; holiday and other absences, sickness and training records by period. Never reads salary, bank, address, date of birth or other personal details. When asked, it can approve, reject or book leave, cancel an absence, record, change or delete sickness and training records, add an employee with directory details, and approve or reject an expense claim.
Reads
breathe_employeesThe Breathe HR directory: every employee's name, work email, job title, department, division, location, line manager, working pattern…breathe_employeeOne Breathe employee by id, work email or name, with their absences (holiday and other leave) and sickness records in a period…breathe_structureHow the Breathe account is organised: departments, divisions and locations (each with its headcount from the directory), working patterns (name…breathe_absencesHoliday and other leave in Breathe for a period (default: the next 30 days, so 'who is off this week' works): each absence with the employee, type…breathe_sicknessesSickness records in Breathe for a period (default: the last 90 days): employee, sickness type, dates, half days, days deducted, status…breathe_trainingsTraining courses recorded in Breathe: course name, type, category, provider, employee, dates, hours, cost, status (e.g. Booked, Completed)…breathe_leave_requestsLeave requests in Breathe for a period (default: from 30 days ago to 90 days ahead), each with its id, employee, dates, half days, status (pending…breathe_training_typesThe training types defined in the Breathe account (id and name), which breathe_create_training takes.breathe_expense_claimsExpense claims in Breathe, each with its id, employee, description, state (e.g. submitted, approved, rejected, paid), dates and its expenses (date…
Acts, when you ask
These change something in Breathe HR. The model is told to use them only when you ask for exactly that, and each one is granted by name: per team on a shared connection, by the owner on a personal one.
breathe_approve_leave_requestApproves a pending leave request in Breathe, so the leave is booked and deducted from the employee's allowance.breathe_reject_leave_requestRejects a pending leave request in Breathe with a reason the employee sees.breathe_create_leave_requestBooks leave for one employee in Breathe as a leave request (Holiday, or Other leave), which then follows the account's approval process.breathe_cancel_absenceCancels an absence (booked holiday or other leave) in Breathe, returning the days to the employee's allowance.breathe_create_sicknessRecords a sickness absence for one employee in Breathe.breathe_update_sicknessChanges a sickness record in Breathe: its end date (the person is back), status, type, dates or reason.breathe_delete_sicknessDeletes one sickness record from Breathe, permanently, with the days it deducted.breathe_create_employeeAdds a new employee to Breathe with directory details only: name, work email, join date, job title, department, division, location, working pattern…breathe_create_trainingRecords a training course for one employee in Breathe.breathe_update_trainingChanges a training record in Breathe: its name, status (e.g. Completed), dates, cost, outcome or notes.breathe_delete_trainingDeletes one training record from Breathe, permanently.breathe_decide_expense_claimApproves or rejects an employee's expense claim in Breathe, as the approver named.
Connect it
First connect Breathe HR on Dashboard → Connections, then add Memtro to your client once. The Breathe HR tools appear alongside the tools of everything else you have connected; nothing is configured per connector.
Claude Code
The Memtro plugin registers the server and a skill for when to use it; the tools are then available in every session.
claude plugin marketplace add memtro-org/claude-memtro
claude plugin install memtro@memtro --config api_key=sk-memtro-...Cursor
Add the server to .cursor/mcp.json in the project, or to the global file under ~/.cursor/.
{
"mcpServers": {
"memtro": {
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Claude Desktop
Create a personal API key on Dashboard → Profile → API keys. In Claude Desktop add an MCP server of type HTTP with URL https://platform.memtro.com/api/mcp and the header Authorization: Bearer sk-memtro-…
OpenCode
A remote server in opencode.json.
{
"mcp": {
"memtro": {
"type": "remote",
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Pi
One command: pi mcp add memtro --url https://platform.memtro.com/api/mcp --bearer-token-env-var MEMTRO_API_KEY. Tools arrive as mcp__memtro__*. The pi-memtro extension registers it for you, alongside Memtro as the model.
Any other client
Add an MCP server of type HTTP (Streamable HTTP, stateless) at https://platform.memtro.com/api/mcp with the header Authorization: Bearer sk-memtro-.... Codex, Zed, Windsurf, Cline and the SDKs all take a remote server this way.
Who may use it
The key identifies the person, and the server offers that person the tools they may use everywhere else in Memtro. A shared Breathe HR connection is used by the teams an administrator granted it to, tool by tool, on the Permissions page; a personal connection is used by its owner alone, and its tools that act stay off until the owner allows them. See Teams and permissions and Connectors.
Ask it like this
- › Who is off next week in the Finance team?
- › Who does Hannah Reid report to, and what is her working pattern?
- › Which sickness absences in the last 90 days still need a fit note?
- › Whose first-aid training expires before March?
- › Approve Tom Gallagher's holiday request for 2 to 6 December
Questions
- Is this an official Breathe HR MCP server?
- No. It is Memtro's MCP server with Memtro's Breathe HR connector behind it: the connector reads Breathe HR through its API with the credentials you connect on Dashboard → Connections, and Breathe HR publishes nothing here. The same endpoint carries every other system you connect and Memtro's memory tools.
- What does it cost?
- Nothing on top of Memtro. One price per organisation by its number of users, from $50 a month for up to 10 users after a 7-day free trial, with every connector, the MCP server, jobs and memory included. You bring your own model keys.
- Can it change anything in Breathe HR?
- Only when you ask, and only what it has been granted: approve a pending leave request; reject a pending leave request with a reason; book leave for an employee as a leave request; cancel an absence (booked leave), returning the days; record a sickness absence for an employee; change a sickness record (end date, status, type, reason); delete a sickness record, permanently; add an employee with directory details only; record a training course for an employee; change a training record; delete a training record, permanently; approve or reject an expense claim (approving commits the company to pay it). Every other tool reads, searches or lists. An administrator grants each acting tool by name per team, and a personal connection acts only after its owner allows it.
- Which clients work?
- Any MCP client that speaks Streamable HTTP: Claude Code, Cursor, Claude Desktop, OpenCode, Codex, Zed, Windsurf, Cline and the Anthropic and OpenAI SDKs. There is no local process to run; the server is remote and authenticated with your key.