{"id":299976,"recorded_at":"2026-10-26T22:20:02.983827Z","observed_at":"2026-10-26T22:20:02.983674Z","subject_kind":"endpoint","subject":"af5925cd-ca22-4618-ae13-8c5134777185","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":25,"tools":[{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"leave_request_id":{"description":"Breathe leave request id (from breathehr_list_leave_requests).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["leave_request_id"],"type":"object"},"name":"breathehr_approve_leave_request"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Breathe employee id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"end_date":{"description":"Last day of leave (yyyy-mm-dd), same as start_date for one day.","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"},"half_end":{"description":"The last day is a half day (default false).","type":"boolean"},"half_end_am_pm":{"description":"Which half of the last day: am or pm (with half_end).","enum":["am","pm"],"type":"string"},"half_start":{"description":"The first day is a half day (default false).","type":"boolean"},"half_start_am_pm":{"description":"Which half of the first day: am or pm (with half_start).","enum":["am","pm"],"type":"string"},"notes":{"description":"Notes for the approver.","maxLength":2000,"type":"string"},"start_date":{"description":"First day of leave (yyyy-mm-dd).","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"},"type":{"description":"Holiday (default) or OtherLeave.","enum":["Holiday","OtherLeave"],"type":"string"}},"required":["employee_id","start_date","end_date"],"type":"object"},"name":"breathehr_create_leave_request"},{"description":"The Breathe HR account (company) this API key belongs to: id, name, domain and enabled modules. GET /account.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"breathehr_get_account"},{"description":"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}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Breathe employee id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["employee_id"],"type":"object"},"name":"breathehr_get_employee"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Breathe employee id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"for_date":{"description":"Only the holiday year that includes this date (yyyy-mm-dd), e.g. today.","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"}},"required":["employee_id"],"type":"object"},"name":"breathehr_get_holiday_years"},{"description":"One leave request by id, with its status. GET /leave_requests/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"leave_request_id":{"description":"Breathe leave request id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["leave_request_id"],"type":"object"},"name":"breathehr_get_leave_request"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"department_id":{"description":"Only absences of employees in this department.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"employee_id":{"description":"Only this employee's absences.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"end_date":{"description":"Only absences up to this date (yyyy-mm-dd).","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"},"exclude_cancelled":{"description":"Leave out cancelled absences.","type":"boolean"},"other_leave_reason_id":{"description":"Only other leave with this reason (ids from breathehr_list_other_leave_reasons).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"start_date":{"description":"Only absences on or after this date (yyyy-mm-dd).","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"},"type":{"description":"Holiday or OtherLeave.","enum":["Holiday","OtherLeave"],"type":"string"}},"type":"object"},"name":"breathehr_list_absences"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"department_id":{"description":"Only records of employees in this department.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"employee_id":{"description":"Only this employee's records.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_benefits"},{"description":"List bonus records (amount, date, description) for the whole company, one employee or one department. GET /bonuses, /employees/{id}/bonuses or /departments/{id}/bonuses.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"department_id":{"description":"Only records of employees in this department.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"employee_id":{"description":"Only this employee's records.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_bonuses"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Only this employee's change requests.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_change_requests"},{"description":"List the company's departments (id, name). Use the ids to filter absences, leave, sickness and pay. GET /departments.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_departments"},{"description":"List the company's divisions (id, name). All of them are returned in one reply. GET /divisions.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"breathehr_list_divisions"},{"description":"List job history records (job title, start/end dates, department, location) for all employees or one employee. GET /employee_jobs.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Only this employee's jobs.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_employee_jobs"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filter":{"description":"Only employees with this role: hr (HR managers), line_manager, either, or neither.","enum":["hr","line_manager","either","neither"],"type":"string"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_employees"},{"description":"List expense claims (employee, total, state, approver) filtered by employee and state. GET /employee_expense_claims.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Only this employee's claims.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"state":{"description":"Only claims in this state.","enum":["submitted","approved","completed","rejected"],"type":"string"}},"type":"object"},"name":"breathehr_list_expense_claims"},{"description":"List individual expense items (date, description, type, amount, VAT, project). By default only unclaimed items; set include_claimed to see all. GET /employee_expenses.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Only this employee's expenses.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"include_claimed":{"description":"Also return expenses already part of a claim.","type":"boolean"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_expenses"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"breathehr_list_holiday_allowances"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"department_id":{"description":"Only requests of employees in this department.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"employee_id":{"description":"Only this employee's requests.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"end_date":{"description":"Only requests starting on or before this date (yyyy-mm-dd).","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"},"exclude_cancelled":{"description":"Leave out cancelled requests.","type":"boolean"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"start_date":{"description":"Only requests starting on or after this date (yyyy-mm-dd).","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"}},"type":"object"},"name":"breathehr_list_leave_requests"},{"description":"List the company's work locations (id, name). All of them are returned in one reply. GET /locations.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"breathehr_list_locations"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"breathehr_list_other_leave_reasons"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"department_id":{"description":"Only records of employees in this department.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"employee_id":{"description":"Only this employee's records.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_salaries"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"department_id":{"description":"Only sickness of employees in this department.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"employee_id":{"description":"Only this employee's sickness.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"end_date":{"description":"Only sickness starting on or before this date (yyyy-mm-dd).","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"start_date":{"description":"Only sickness starting on or after this date (yyyy-mm-dd).","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})$","type":"string"}},"type":"object"},"name":"breathehr_list_sicknesses"},{"description":"List employee training records (course name, type, status, dates, cost) for all employees or one employee. GET /employee_training_courses.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"employee_id":{"description":"Only this employee's training.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"per_page":{"description":"Results per page, 1-100 (default 25).","exclusiveMinimum":0,"maximum":100,"type":"integer"}},"type":"object"},"name":"breathehr_list_training_courses"},{"description":"List the working patterns (hours per weekday, total weekly hours, default flag). All of them are returned in one reply. GET /working_patterns.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"breathehr_list_working_patterns"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"leave_request_id":{"description":"Breathe leave request id (from breathehr_list_leave_requests).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"rejection_reason":{"description":"Why the request is rejected (shown to the employee).","maxLength":2000,"minLength":1,"type":"string"}},"required":["leave_request_id","rejection_reason"],"type":"object"},"name":"breathehr_reject_leave_request"}]},"body_sha256":"b2b9d3495d3e6a32bcebd48e662d2eed9f0b8fb13d8729de721920dd9599eb95","prev_id":null,"leaf":"0xa07cf9abdd27cba308a4a2830a82e83bb0ea988af84d725e155bbe9a5872aa8d","leaf_text":"{\"body\":\"b2b9d3495d3e6a32bcebd48e662d2eed9f0b8fb13d8729de721920dd9599eb95\",\"id\":299976,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793053202983674,\"prev\":null,\"subject\":\"af5925cd-ca22-4618-ae13-8c5134777185\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xa07d3fdbc4c0dc0c65bdd59ceb5d0236921951df5d62fe5f11b38208034a54df","0x8bf8962932231e612da2527bf4257d99163e12eb235e03a9eaa8746043ac3b85","0xe8543bf6d29240142eea5117642a9fb32c203fb0de930c3d6670d876997d01e5","0x22d2b572bbf06e2d2cc5afc04bccb1fe810d30748ffd44a0fa770cd64982caf2","0xb5acb2299c59563a9b7ee643704fa4592f86ac6bdc288475d36e35d30679ffdb","0x24dc93d647a859398c0698f39639506c9c64d8787b45f8414c198e67f1fa8168","0xd491caf19fec480eb7a0f4595bcbbb924fda332225ff742321bd3dbe9c70fe24","0x924cb223023ed5a7a8e51c93e16beb3ace20245eada6544982a134582e3b1b97","0x9aace6008a443ba750b03c0c28d93d0189196c609db59107298363e8229ec54c","0xfc1c15deb00c4c3458cd5fe1ee472da303593b7fe5af49038ad8aa811e480c14","0x201e001c6e19ae71acc15269442af8d1874e41df9926feb22cbf8a2b7fd3180b","0x6367dad81ab5c2e6f424ad3e06310c9b75079293d62a08dfbde98ef993c35229","0xf8d3e004d9a208d2c5e82ab676956d80f8a3c78387c61dad15a3a8269efee0d8","0x6713795704ddd9c528d421fadd9cc96b0200a4ddbba84f88e718d4968dde888b","0x62a900133713919f4eed33d8336876b7a6d538233b8a4f3ed03b29aa44f5bad0","0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f","0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9","0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}