Integrate BambooHR MCP server into your Slack workspace for instant access to your AI agent.
Tools that your AI agent can use through this MCP server to interact with BambooHR
Update an existing time off request using merge-patch semantics — only the fields you set are changed. Fails with 409 if the request is denied, canceled, or already-started/approved. Editing a request while it's still REQUESTED replaces it with a new request, restarting its approval workflow; the returned id may differ from the one in the path, and the original id then returns 410 on subsequent calls. Use the id from this action's response for later steps. Use List Time Off Requests to find the request ID; use Approve Time Off Request / Deny Time Off Request / Cancel Time Off Request for status changes instead. See the documentation
Edit an existing legacy Hours API record's hours worked and links. Send the corrected total hours worked, not a delta. Use Get Time Tracking Record to check current values first. See the documentation
Update fields on an existing employee. Only supplied fields are changed; unknown field names are silently ignored. Use Get Employees Directory to find the employee ID. See the documentation
Update the status of an application. Not every status returned by List Status ID Options is a valid transition from the application's current status — an "Invalid status" error means the target stage isn't reachable from here; check the application's current status and try an adjacent stage. See the documentation
List a date-sorted feed of employees who are out and company holidays for a period. Returns 403 if the Who's Out feature is disabled for the account. See the documentation
List timesheets with optional OData filtering and sorting. Status values are OPEN, PENDING_APPROVAL, APPROVED. Use returned IDs with Get Timesheet and Approve Timesheet. See the documentation
List legacy timesheet entries grouped by employee within a date range. Dates must be within the last 365 days. See the documentation
List active company time off types plus the default hours-per-day. Use the returned type IDs with Create Time Off Request and List Time Off Requests. See the documentation
List time off requests within a date range. To fetch your own requests, set the Action parameter to myRequests (passing employeeId=0 returns an empty array). Use List Time Off Types to find type IDs. See the documentation
List the comments on a time off request, oldest first. An empty thread returns an empty array. Use List Time Off Requests to find the request ID; use Create Time Off Request Comment to add one. See the documentation
List all non-deleted company time off policies, sorted alphabetically by name. Each policy is accruing, discretionary, or manual and links to a time off type. Use List Time Off Types for the type-level metadata; use Adjust Time Off Balance to modify balances for the type a policy is tied to. See the documentation
Retrieves available application status IDs for use with applicant-tracking actions. See the documentation
Retrieves available job IDs for use with applicant-tracking actions. See the documentation
List time-tracking hour entries with optional OData filtering. Use returned IDs with Delete Hour Entry. See the documentation
List employees with optional filtering, sorting, and cursor-based pagination. Every record includes employeeId, firstName, lastName, preferredName, photoUrl, jobTitleName, status, and _restrictedFields by default; use fields for more. Restricted fields you can't read return null and are listed in _restrictedFields. See the documentation
List file metadata (grouped by category) for an employee. Use the returned file IDs with Get Employee File. Run Get Employees Directory to find the employee ID. See the documentation
List company holidays with optional OData filtering, sorting, and pagination. See the documentation
List time-tracking clock entries with optional OData filtering. An entry with a null end is still open, so this action also serves to check clocked-in status (filter by employeeId and inspect end). Use returned IDs with Get Clock Entry and Delete Clock Entry. See the documentation
List employee IDs that changed since a given time. Returns employeeId, change type, and last-changed timestamp per entry. See the documentation
List all applications. See the documentation
Retrieves available application IDs for use with applicant-tracking actions. See the documentation
Get a single timesheet by ID. Returns derived status (OPEN, PENDING_APPROVAL, APPROVED) and type. Use List Timesheets to find IDs. See the documentation
Get a legacy Hours API time-tracking record by ID. Returns hours, date, employee, project, task, and shift differential. Note: missing records may return an empty/null payload rather than 404. See the documentation
Get time off balances for an employee as of a date. Returns one entry per assigned policy. Run Get Employees Directory to find the employee ID. See the documentation
Get the company employee directory from BambooHR. Returns the company-configured fieldset for every employee in the published directory; filter client-side, or use fields to keep the response small. The directory may omit inactive/former employees and anyone the company excludes from sharing, so it is not an authoritative employee roster. Use this to discover employee IDs before calling Get Employee, Update Employee, or time-tracking actions. See the documentation
Get a single employee record. Only id is returned unless you request fields. Use Get Employees Directory to find an employee ID. Pass 0 as the ID to fetch the authenticated user. See the documentation
Download a single employee file and save it to /tmp. Use List Employee Files to discover file IDs. See the documentation
Get a saved company report by ID. Report IDs are company-specific. In JSON, returns {title, fields, employees}. See the documentation
Get a single clock entry by ID. While the entry is open, end and clockOutLocation are null. Use List Clock Entries to find IDs. See the documentation
Get an application by its application ID. Use List Applications to find the application ID before retrieving the full application details. See the documentation
Download a resume from an application. See the documentation
Deny a time off request. A single denial is final — it discards any remaining approval steps, so the request always ends in DENIED status. Fails with 409 if the request is not currently REQUESTED. Use List Time Off Requests to find the request ID. See the documentation
Permanently delete a legacy Hours API record and all its stored revisions. This cannot be undone. Use Get Time Tracking Record to confirm the ID first. See the documentation
Permanently delete a time-tracking hour entry. Idempotent (returns 204); returns 409 if the entry belongs to an approved timesheet. Use List Hour Entries to find IDs. See the documentation
Permanently delete an employee record and all associated data. This cannot be undone. Use Get Employees Directory or Get Employee to find the employee ID first. See the documentation
Permanently delete a clock entry. Idempotent (returns 204); returns 409 if the entry belongs to an approved timesheet or is still open. Use List Clock Entries to find IDs. See the documentation
Create a time off request for an employee. Use List Time Off Types to find a valid time off type ID and Get Employees Directory for the employee ID. See the documentation
Add a comment to a time off request. Use List Time Off Requests to find the request ID and List Time Off Request Comments to review the existing thread first. See the documentation
Bulk add or edit approved hour records in the legacy Hours API. Records whose ID already exists are updated; unrecognized IDs are created. The API can return HTTP 201 even when individual items fail validation — check each item's success flag in the response. Use Create Hour Record for a single record. See the documentation
Add a single approved hour record to the legacy Hours API, separate from Time Tracking timesheets — use Create Hour Entry instead for timesheet-integrated hours. You choose the record's ID; save it to update or delete this record later with Update Hour Record / Delete Hour Record. See the documentation
Create a time-tracking hour entry. Records worked hours for an employee on a date. See the documentation
Create a new employee. firstName and lastName are required; any other valid writable field can be supplied via Additional Fields. Returns a Location header with the new employee ID. See the documentation
Create a manual/retroactive clock entry with explicit start and end. For real-time punches use Clock In / Clock Out instead. See the documentation
Clock an employee out in real time. Separate endpoint from Clock In; returns 409 if the employee is not currently clocked in. See the documentation
Clock an employee in in real time. This is a separate endpoint from Clock Out. For manual/retroactive entries use Create Clock Entry. See the documentation
Change the status of a time off request, including cancellation. Setting status to canceled cancels the request; this same endpoint covers both status changes and cancellation. Use List Time Off Requests to find request IDs. See the documentation
Cancel a time off request. Available to the requester and anyone with authority to manage it; a request can be canceled while REQUESTED, and after approval only if it hasn't started yet. Takes no request body. Use List Time Off Requests to find the request ID. See the documentation
Approve a timesheet. Only approval is supported by the API; there is no reject/deny endpoint. lastChangedAt must be the timesheet's hoursLastChangedAt value from Get Timesheet. See the documentation
Approve a time off request, completing the caller's step in the approval chain — or every remaining step when Bypass is true. Fails with 409 if the request is not currently REQUESTED. Use List Time Off Requests to find the request ID. See the documentation
Create a balance adjustment for an employee's time off type, recorded as an override history item. Cannot adjust discretionary (unlimited) time off types. Use Get Time Off Balance to check current balances and List Time Off Types for a valid type ID first. See the documentation
Add a comment to an application. See the documentation