# BambooHR MCP connector

Connect BambooHR to Elaichi and Claude, ChatGPT, Cursor, or any MCP client can look up and update employees, time off, open jobs, and applicants, with every action running as the signed-in person and landing in an audit log.

Source: https://elaichi.ai/connectors/bamboohr/

## Facts

| | |
| --- | --- |
| Application | BambooHR |
| Category | HRIS |
| AI tools | 95 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 95 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once BambooHR is connected

- List time off requests awaiting approval this week.
- Who has the lowest time off balance in Support?
- Show open jobs and how many applications each has.

## Connect BambooHR in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick BambooHR.
2. Optionally set Share with, then press Connect.
3. Paste a BambooHR API key. One person generates a token in BambooHR and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which BambooHR tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect BambooHR to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect BambooHR to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect BambooHR to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect BambooHR to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a BambooHR tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with BambooHR through Elaichi

### Catch an employee record up after a change

People Ops. When someone changes title, manager, or home address, ask for their BambooHR record and have the details corrected in one go instead of clicking through every field.

### Move applicants through the pipeline

Recruiting. See who has applied to an open job, read an application, and change its status after an interview without leaving the conversation.

### Check who is out before approving leave

Managers. Ask which team members are on time off next week and how much balance someone has left before a new request is booked.

### Pull a headcount report for the month

Finance. Build a custom BambooHR report of employees by location and job title so budgeting starts from live numbers rather than last quarter's export.

### Set up a new starter on day one

IT. Create the new employee in BambooHR with their start date, job, and location so account creation and equipment orders can follow.

### Find the current policy document

Office. Look up the handbook or a specific policy in BambooHR company files, download the latest version, or file a new one once it is signed off.

## Frequently asked questions

### How do I connect BambooHR to Claude?

First connect BambooHR in Elaichi, which asks for your BambooHR API key and your company subdomain, then paste https://api.elaichi.ai/mcp into Claude under Customize, then Connectors, then Add. There is no OAuth application to register and no client ID or secret to generate. Once Claude is connected, it signs you in through Elaichi and BambooHR is ready to use.

### Does BambooHR work with ChatGPT and Cursor as well as Claude?

Yes. BambooHR is connected once in Elaichi, and the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You do not set BambooHR up again for each one.

### What can an AI agent actually do with my BambooHR data?

With BambooHR connected, an agent can look up an employee, update their record, add a new starter, check time off requests and balances, book leave, list open jobs and applicants, change an application's status, build a custom report, and find or add company files. Because BambooHR has a large catalog of actions, short concrete asks such as "show Priya's remaining vacation balance" work better than long paragraphs.

### Does connecting BambooHR give the AI access to every employee record?

No. Every request runs as the person who signed in, so the agent sees only the employees, time off, and files that person's BambooHR permissions already allow. Elaichi can narrow that access further with restrictions, but it can never widen it beyond what BambooHR grants.

### Can my team share one BambooHR connection?

Yes. One person connects BambooHR in Elaichi and shares the connection with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the individual behind every BambooHR action.

### Can I stop an agent from deleting or changing things in BambooHR?

Yes. Restrictions in Elaichi work per action, so you can allow reading employee records and time off balances while blocking updates, new applications, or file uploads in BambooHR. A blocked action is never advertised to Claude, ChatGPT, or any other client, so no prompt can reach it.

### What happens to a BambooHR connection when someone leaves?

Offboarding a person in Elaichi ends their access to BambooHR through every client at once. A shared BambooHR connection keeps working for everyone else on the team. If you disconnect BambooHR in Elaichi, it disappears from Claude, ChatGPT, Cursor, and every other client in one step.

## All 95 BambooHR tools

Every tool below is callable through https://api.elaichi.ai/mcp once BambooHR is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all BambooHR employees** (List). Get employee directory for companyDomain in BambooHR. Returns employee id, displayName, firstName, lastName, gender, jobTitle, workPhone, workPhoneExtension, skypeUsername, and facebook fields. Note: Directory feature may be disabled by company.
- **Get single BambooHR employee by ID** (Get). Get employee data by specifying id and fields in BambooHR. Returns id, firstName, lastName, and other requested fields. 
- **Update a BambooHR employee by ID** (Update). Update an employee by id in BambooHR. Requires company_domain and id. Returns success message on update. If employee syncs with Trax Payroll, all specified fields must be included for successful update.
- **Create a BambooHR employee** (Create). Add a new employee in BambooHR with required fields firstName and lastName. Returns the Location header containing the URL with the new employee's id.
- **List all BambooHR users** (List). Get a list of users for the companyDomain in BambooHR. Returns user id, employeeId if linked, firstName, lastName, email, status, and lastLogin in ISO 8601 format.
- **List all BambooHR time off requests** (List). Get time off requests for companyDomain with required start and end dates. Returns id, employeeId, name, status (lastChanged, lastChangedByUserId, status), start, end, created, type (id, name, icon), amount (unit, amount), notes, and dates if available in BambooHR.
- **Create a BambooHR time off request** (Create). Create a time off request for employee with id in BambooHR. Requires company_domain and employee id. Returns empty response with 201 status on success. Request includes status, start, end, timeOffTypeId, amount, notes, dates, and previousRequest.
- **List all BambooHR time off balance** (List). Get estimated future time off balances for employee id in BambooHR with required company_domain and end date. Returns timeOffType, name, units, balance, policyType, usedYearToDate, and end date fields.
- **List all BambooHR jobs** (List). Get a list of job summaries in BambooHR for the specified companyDomain. Returns job details including title, lead, created date, and status.
- **Create a BambooHR job** (Create). Add a new job opening in BambooHR with required parameters company_domain, postingTitle, jobStatus, hiringLead, employmentType, and jobDescription. Returns success status on creation.
- **Get single BambooHR job by ID** (Get). Retrieves detailed information about a specific job posting in BambooHR based on the unique job ID.
- **List all BambooHR applications** (List). Get a list of applications for companyDomain in BambooHR. Returns application id, appliedDate, status with rating, applicant info, and job info. Requires companyDomain.
- **Get single BambooHR application by ID** (Get). Get details about a specific application in BambooHR. Requires company_domain and id. Returns fields such as id, appliedDate, status, rating, education, resumeFileId, coverLetterFileId, applicant details, job details, and related counts.
- **BambooHR applications change status** (Action). Change applicant's status by application id in BambooHR. Requires companyDomain and applicationId. Returns success status on update.
- **Create a BambooHR application** (Create). Add a new candidate application to a job opening in BambooHR. Requires company_domain and jobId. Returns success status on completion.
- **List all BambooHR statuses** (List). Get a list of statuses for a company in BambooHR using company_domain. Returns all available status entries for applicant tracking.
- **List all BambooHR company locations** (List). Get company locations using company_domain in BambooHR. Returns an array of location objects for creating new job openings.
- **List all BambooHR fields** (List). Get a list of fields available in a BambooHR account using companyDomain. Returns id, name, type, and alias for each field.
- **Update a BambooHR field by ID** (Update). Use this endpoint to update one or more metadata fields in the account.  
- **Create a BambooHR custom report** (Create). Request a custom report in BambooHR with companyDomain and format. Returns the report with specified fields such as firstName and lastName. Supports filtering by lastChanged date to include only employees changed since that time.
- **List all BambooHR company files** (List). List company files and categories for companyDomain in BambooHR. Returns categories with id and name, and files with id, name, originalFileName, size, dateCreated, createdBy, and shareWithEmployee fields.
- **BambooHR company files download** (Download). Use this endpoint to download a specific file stored in the company's BambooHR file repository by providing the file_id.
- **Get single BambooHR company file by ID** (Get). Get company file by id in BambooHR using company_domain and id. Returns the file content if found.
- **Create a BambooHR company file** (Create). Add a new company file category in BambooHR using company_domain. Returns 201 status on successful creation.
- **Update a BambooHR company file by ID** (Update). Update a company file in BambooHR using company_domain and id. Returns status 200 if the file is updated. Fields updated can include name, categoryId, and shareWithEmployees.
- **Delete a BambooHR company file by ID** (Delete). Delete a company file by id in BambooHR. Requires company_domain and id. Returns 200 on successful deletion, 403 if permission denied, and 404 if file not found.
- **List all BambooHR employee files** (List). List employee files and categories for employee with id in BambooHR. Returns categories with id and name, and files with id, name, originalFileName, size, dateCreated, createdBy, and shareWithEmployee fields.
- **Get single BambooHR employee file by ID** (Get). Get an employee file by id and file_id in BambooHR. Returns the file content if found. Requires company_domain, id, and file_id.
- **Create a BambooHR employee file** (Create). Add an employee file category in BambooHR using company_domain. Returns 201 status on successful creation.
- **Update a BambooHR employee file by ID** (Update). Update an employee file by id in BambooHR with parameters name, categoryId, and shareWithEmployee. Returns status 200 if the file was updated successfully.
- **Delete a BambooHR employee file by ID** (Delete). Delete an employee file by employee id and fileId in BambooHR. Returns confirmation of deletion.
- **List all BambooHR payroll deductions** (List). Use this endpoint to retrieve a list of payroll deductions assigned to a specific employee, identified by their employee_id
- **List all BambooHR time off types** (List). Get a list of time off types for companyDomain in BambooHR. Returns id, name, units, color, and icon for each time off type.
- **List all BambooHR time off policies** (List). Get a list of time off policies for the companyDomain in BambooHR. Returns id, timeOffTypeId, name, effectiveDate, and type for each policy.
- **List all BambooHR employee time off policies** (List). List time off policies for an employee in BambooHR. Requires company_domain and id. Returns timeOffPolicyId, timeOffTypeId, and accrualStartDate for each policy.
- **List all BambooHR timesheet** (List). Get all timesheet entries for a given period with start and end dates in BambooHR. Returns id, employeeId, type, date, start, end, timezone, hours, note, projectInfo, approvedAt, and approved fields. Data limited to last 365 days.
- **Create a BambooHR clock entry** (Create). Create a timesheet clock-in entry for an employee in BambooHR. Requires company_domain and id. Returns id, employeeId, type, date, start, end, timezone, hours, note, and projectInfo with project and task details.
- **Update a BambooHR clock entry by ID** (Update). Add or edit timesheet clock entries in BambooHR with required entries including employeeId, date, start, and end. Returns id, employeeId, type, date, start, end, timezone, hours, note, and projectInfo fields for each entry.
- **Delete a BambooHR clock entry by ID** (Delete). Delete timesheet clock entries by providing clockEntryIds in BambooHR. Returns 204 on successful deletion with no content.
- **BambooHR clock entries clock out** (Action). Create a timesheet clock-out entry for an employee in BambooHR using company_domain and id. Returns id, employeeId, type, date, start, end, timezone, hours, note, and projectInfo fields.
- **Update a BambooHR hour entry by ID** (Update). Add or edit timesheet hour entries in BambooHR. Requires companyDomain and an array of hours objects with employeeId, date, hours, note, projectId, and taskId. Returns id, employeeId, type, date, hours, note, and projectInfo with project and task details.
- **Delete a BambooHR hour entry by ID** (Delete). Delete timesheet hour entries in BambooHR using companyDomain and hourEntryIds. Returns no content on success.
- **List all BambooHR webhooks** (List). Get a list of webhooks for the user API key in BambooHR. Requires company_domain. Returns webhook id, name, created date, lastSent date, and url.
- **Get single BambooHR webhook by ID** (Get). Get webhook data for a specific webhook by id in BambooHR. Returns id, name, created timestamp, lastSent timestamp, monitorFields, postFields, url, format, frequency, limit, and includeCompanyDomain fields.
- **Create a BambooHR webhook** (Create). Create a new webhook in BambooHR with required parameters company_domain, name, monitorFields, postFields, and url. Returns webhook id, name, created timestamp, lastSent timestamp, monitorFields, postFields, url, format, frequency, limit, privateKey, and includeCompanyDomain flag.
- **Update a BambooHR webhook by ID** (Update). Update a webhook by id in BambooHR with required fields name, monitorFields, postFields, and url. Returns updated webhook id, name, created timestamp, lastSent timestamp, monitorFields, postFields, url, format, frequency, limit, and includeCompanyDomain.
- **Delete a BambooHR webhook by ID** (Delete). Delete a webhook by id for the specified companyDomain in BambooHR. Returns confirmation of deletion.
- **BambooHR webhooks logs** (Action). Get webhook logs for a specific webhook by id in BambooHR. Returns webhookId, url, lastAttempted, lastSuccess, failureCount, status, and employeeIds fields.
- **BambooHR webhooks fields** (Action). Get a list of fields that webhooks can monitor in BambooHR. Requires company_domain. Returns fields with id, name, and alias.
- **List all BambooHR dataset** (List). Get available datasets for the companyDomain in BambooHR. Returns dataset name and label fields.
- **BambooHR dataset fields** (Action). Get available fields for a dataset in BambooHR using companyDomain and datasetName. Returns fields with name, label, parentType, and parentName.
- **BambooHR dataset data** (Action). Get data from the specified dataset in BambooHR using company_domain and dataset_name. Returns data array with requested fields, aggregations, and sorting as specified in the request body.
- **List all BambooHR employee dependents** (List). Get all employee dependents for employeeid in BambooHR. Returns id, employeeId, firstName, lastName, relationship, gender, maskedSSN, dateOfBirth, address, city, state, zipCode, country, isUsCitizen, and isStudent fields.
- **Get single BambooHR employee dependent by ID** (Get). Get employee dependent by id in BambooHR. Returns fields including id, employeeId, firstName, lastName, relationship, gender, maskedSSN, dateOfBirth, address, city, state, zipCode, country, isUsCitizen, and isStudent.
- **Create a BambooHR employee dependent** (Create). Add an employee dependent in BambooHR with employeeId, firstName, lastName, relationship, gender, ssn, dateOfBirth, addressLine1, city, state, zipCode, country, isUsCitizen, and isStudent. Date of birth must be in ISO YYYY-MM-DD format. Gender must be male or female. Relationship must be spouse, child, domestic partner, step child, or foster child. State must be 2 character code. Country must be 2 character ISO code.
- **Update a BambooHR employee dependent by ID** (Update). Update an employee dependent by id in BambooHR. Requires company_domain and id. Returns status 201 on success.
- **List all BambooHR benefits** (List). Get benefit coverages for the companyDomain in BambooHR. Returns id, shortName, description, and sortOrder for each benefit coverage.
- **BambooHR benefits deduction type** (Action). Get all benefit deduction types for the companyDomain in BambooHR. Returns id, deductionTypeName, and allowableBenefitTypes for each deduction type.
- **BambooHR benefits member events** (Action). Get a list of member benefit events in BambooHR for the specified companyDomain. Returns members with memberId, coverages with planId, and events including effectiveDate, type, premiumTierId, and monthlyPremiumInCents.
- **List all BambooHR company information** (List). Get company information for companyDomain in BambooHR. Returns legalName, displayName, address (line1, line2, city, state, zip), and phone number.
- **List all BambooHR company eins** (List). Get Company EINs for the companyDomain in BambooHR. Returns an array of EIN strings representing the company's Employer Identification Numbers.
- **List all BambooHR table** (List). Get all updated employee table data for table using companyDomain and table. Returns employees with changes since the provided 'since' timestamp including employee id, lastChanged timestamp, and all table rows with fields.
- **Get single BambooHR table by ID** (Get). Get all table rows for a given employee and table in BambooHR. Requires company_domain, id (employee ID), and table name. Returns rows with fields like date, location, division, department, jobTitle, and reportsTo.
- **Create a BambooHR table** (Create). Add a table row for an employee in BambooHR using company_domain, id, and table. Returns success message if row is added. Requires all required fields for the table and employee if on compensation table.
- **Update a BambooHR table by ID** (Update). Update a table row for an employee in BambooHR using company_domain, id, table, and row_id. Returns 200 if at least one field is updated. Requires all required fields for pay schedule or compensation table if applicable.
- **Delete a BambooHR table by ID** (Delete). Delete a table row for an employee in BambooHR. Requires employee id, table name, and rowId.
- **List all BambooHR goals** (List). Get goals for an employee in BambooHR using company_domain and employee_id. Returns id, title, description, percentComplete, dueDate, completionDate, status, milestones, and actions for each goal.
- **Create a BambooHR goal** (Create). Create a new goal for an employee in BambooHR using company_domain and employee id. Returns the goal id, title, description, percentComplete, sharedWithEmployeeIds, dueDate, completionDate, status, and milestones if included.
- **Delete a BambooHR goal by ID** (Delete). Delete a goal for an employee in BambooHR using company_domain, employee_id, and id. Returns 204 on successful deletion.
- **Update a BambooHR goal by ID** (Update). Update a goal for employeeId and id in BambooHR. Requires title, sharedWithEmployeeIds, dueDate. Returns updated goal fields including id, title, description, percentComplete, sharedWithEmployeeIds, dueDate, completionDate, status, and milestones if enabled.
- **List all BambooHR goal comments** (List). Get comments for a specific goal using employee_id and goal_id in BambooHR. Returns comment id, authorUserId, createdAt, text, canEdit, and canDelete fields.
- **Create a BambooHR goal comment** (Create). Create a new goal comment for employeeId and goalId in BambooHR. Returns id, authorUserId, createdAt, text, canEdit, and canDelete fields in the response.
- **Update a BambooHR goal comment by ID** (Update). Update a goal comment for employeeId, goalId, and commentId in BambooHR. Returns id, authorUserId, createdAt, text, canEdit, and canDelete fields in the response.
- **Delete a BambooHR goal comment by ID** (Delete). Delete a goal comment for employee_id, goal_id, and comment_id in BambooHR. Returns 204 No Content on success.
- **Get single BambooHR photo by ID** (Get). Get an employee photo in BambooHR using company_domain, employee id, and size. Returns binary JPEG data of the photo in specified size (original, large, medium, small, xs, tiny).
- **Create a BambooHR photo** (Create). Store a new employee photo for employeeId in BambooHR. The photo must be jpg, gif, or png, have equal width and height, and be no larger than 20MB. Returns 201 on success.
- **Get single BambooHR time tracking by ID** (Get). Get an hour record by id in BambooHR. Returns fields including timeTrackingId, employeeId, dateHoursWorked, hoursWorked, adjustedHours, payRate, and job details.
- **Create a BambooHR time tracking** (Create). Add a time tracking record in BambooHR with required parameters companyDomain, timeTrackingId, employeeId, dateHoursWorked, rateType, and hoursWorked. Returns timeTrackingId of the created record.
- **Update a BambooHR time tracking by ID** (Update). Edit an hour record in BambooHR using timeTrackingId and hoursWorked. Returns the updated timeTrackingId.
- **Delete a BambooHR time tracking by ID** (Delete). Delete an hour record in BambooHR using companyDomain and id. Returns status and message confirming record removal.
- **BambooHR login user** (Action). Authenticate user login in BambooHR using companyDomain, user email, password, and applicationKey. Returns success status, userId, employeeId, and key in response.
- **List all BambooHR custom reports new** (List). List available custom reports in BambooHR using company_domain. Returns report id and name fields.
- **Get single BambooHR custom reports new by ID** (Get). Get data for a specific custom report in BambooHR using company_domain and id. Returns the report data fields as specified in the report configuration.
- **List all BambooHR training** (List). Get a list of training types in BambooHR for the specified companyDomain. Returns trainingId for each training type.
- **Create a BambooHR training** (Create). Add a training type in BambooHR with required parameter name. Returns id, name, renewable, frequency, dueFromHireDate, required, category (id and name), linkUrl, description, and allowEmployeesToMarkComplete fields in the response.
- **Update a BambooHR training by ID** (Update). Update an existing training type in BambooHR using company_domain and id. Returns updated training type fields including id, name, renewable, frequency, dueFromHireDate, required, category (id and name), linkUrl, description, and allowEmployeesToMarkComplete.
- **Delete a BambooHR training by ID** (Delete). Delete an existing training type by id in BambooHR. Requires company_domain and id. Deletion succeeds only if all employee trainings for this type have been removed.
- **List all BambooHR training category** (List). Get a list of training categories in BambooHR. Requires company_domain. Returns categoryId objects containing the category ID and name.
- **Create a BambooHR training category** (Create). Add a training category with name in BambooHR. Requires companyDomain and name. Returns id and name of the created training category.
- **Update a BambooHR training category by ID** (Update). Update an existing training category by id in BambooHR. Requires company_domain and id. Returns updated category with id and name.
- **Delete a BambooHR training category by ID** (Delete). Delete an existing training category by id in BambooHR. Requires company_domain and id. Returns success status if deleted.
- **List all BambooHR employee training** (List). Get all training records for an employee in BambooHR using company_domain and id. Returns trainingId objects representing each training record.
- **Create a BambooHR employee training** (Create). Add a new employee training record for employeeId in BambooHR. Requires completed date in yyyy-mm-dd format and an existing training type id. Returns id, employeeId, completed, notes, instructor, credits, hours, cost, and type fields in the response.
- **Update a BambooHR employee training by ID** (Update). Update an existing employee training record in BambooHR with id. Requires completed date in yyyy-mm-dd format. Returns id, employeeId, completed, notes, instructor, credits, hours, cost, and type fields in the response.
- **Delete a BambooHR employee training by ID** (Delete). Delete an existing employee training record by id in BambooHR. Requires company_domain and id. Returns success status if the record is deleted.
