Bamboohr MCP server
Manage employee records, time off, benefits, and payroll data
31 stars155 downloads/wk
Reviews
Write oneNobody has reviewed Bamboohr yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Bamboohr tools (100, 37 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_goal_commentAdds a new comment to a specific goal belonging to the given employee. Returns the newly created comment object, including its assigned ID.
assign_break_policy_employeesAssigns a specific set of employees to a break policy, fully replacing all existing employee assignments with the provided list.
assign_employees_to_break_policyAssigns one or more employees to an existing break policy, adding them to the policy's membership without affecting any previously assigned employees.
bulk_upsert_clock_entrieswrite actionCreates new timesheet clock entries or updates existing ones in a single bulk operation. Entries containing an existing ID are updated; entries without an ID are created as new records.
bulk_upsert_timesheet_entrieswrite actionCreates new timesheet hour entries or updates existing ones in a single bulk operation. Entries containing an existing ID are updated; entries without an ID are created as new records.
clock_in_employeeRecords a clock-in entry for an employee, defaulting to the current server time. To log a historical entry, supply a date, start time, and timezone, and optionally associate the entry with a project, task, break, or note.
clock_out_employeeRecords a clock-out entry for a currently clocked-in employee, defaulting to the current server time. To log a historical clock-out, supply a date, end time, and timezone.
close_goalCloses an employee's goal by transitioning it to closed status, optionally recording a comment at the time of closure. Note: cascading goals that have visible child goals cannot be closed.
create_breakwrite actionCreates a new break and associates it with the specified break policy. Configure the break's name, pay status, duration, and availability rules to control when employees can take it.
create_break_policywrite actionCreates a new break policy for time tracking compliance, optionally including break definitions and employee assignments in a single request.
create_candidatewrite actioncreate_employeewrite actionCreates a new employee record with at minimum a first and last name; additional fields such as payroll, contact, and job details can be included using any valid employee field name discoverable via the list-fields endpoint. Employees added to a Trax Payroll-synced pay schedule require a full set of payroll-related fields including SSN/EIN, compensation, and location details.
create_employee_goalwrite actionCreates a new performance goal for a specified employee, including due dates, completion tracking, milestones, and sharing with other employees.
create_employee_table_rowwrite actionAppends a new row to a specified tabular data section of an employee record, such as job information or compensation history. Submit field name/value pairs in JSON or XML to record a new entry with an effective date and relevant attributes.
create_employee_table_row_v1_1write actionAdds a new row to a specified table in an employee's record, such as job information or compensation history. Accepts row data in JSON or XML format with an optional effective date and relevant field values.
create_job_openingwrite actioncreate_projectwrite actionCreates a new time tracking project with optional task-level tracking and employee access controls. Returns the created project including its ID, tasks, and employee access list when access is restricted.
create_time_entrywrite actionCreates a single time tracking hour record for an employee. Use this endpoint for one-off entries; for bulk imports use the batch upsert endpoint.
delete_breakwrite actionSoft-deletes a time tracking break by its unique identifier, permanently removing it from any associated break policies.
delete_break_policywrite actionPermanently deletes a break policy by its unique identifier. All associated breaks and employee assignments linked to the policy are also removed.
delete_clock_entrieswrite actionPermanently deletes one or more timesheet clock entries by their unique IDs. This operation is idempotent, so submitting IDs for already-deleted entries will not cause errors or require retries.
delete_company_filewrite actionPermanently deletes a company file by its unique identifier. Requires write access to company files; returns 404 if the file is not found or 403 if the caller lacks sufficient permissions.
delete_employee_filewrite actionPermanently deletes a specific file associated with an employee record. Returns 200 even if the file was already deleted (idempotent), 404 if the file is not linked to the specified employee, and 403 if the caller lacks permission or the file is managed by BambooPayroll.
delete_employee_goalwrite actionPermanently deletes a specific goal associated with an employee. The goal must belong to the specified employee; returns 204 with no response body on success.
delete_employee_table_rowwrite actionPermanently removes a specific row from a named tabular dataset associated with an employee. Deletion will fail if the row has pending approval changes (409) or is tied to an active pay schedule (412).
delete_goal_commentwrite actionPermanently deletes a specific comment from an employee's goal. The comment must belong to the specified goal, which must be associated with the specified employee. Returns 204 with no response body on success.
delete_hour_entrieswrite actionPermanently deletes one or more timesheet hour entries by their unique IDs. This operation is idempotent, so submitting IDs for already-deleted entries will not cause errors or require retries.
delete_time_tracking_recordwrite actionPermanently deletes a time tracking record and all of its associated revisions by ID. Note that both not-found and invalid ID cases return a 400 invalid-argument response for backward compatibility.
delete_webhookwrite actionPermanently deletes a webhook associated with the authenticated user's API key. Returns 403 if the webhook belongs to a different API key, or 404 if the webhook does not exist.
download_company_fileDownloads the raw content of a company file by its ID, with the response including the appropriate MIME type and original filename as an attachment. Access is granted if the file or its category is shared with employees, shared directly with the requesting user, or the user holds view permission on the file section.
download_employee_fileDownloads the binary content of a specific file attached to an employee record, returning it as an attachment with the appropriate MIME type. Returns 403 if access to the employee or file section is denied, and 404 if the file does not exist or is archived.
get_breakRetrieves the full details of a specific time tracking break by its unique identifier, including its name, duration, paid status, and availability configuration.
get_break_policyRetrieves a single break policy by its unique identifier. Optionally includes counts of associated employees and breaks for summary reporting.
get_company_profileRetrieves the company's basic profile information, including legal name, display name, primary address, and contact phone number. Data is sourced from active payroll client metadata for BambooHR Payroll companies, or from account settings for all others.
get_custom_reportRetrieve paginated data for a specific saved custom report by its ID, using the report's stored field list and filter configuration. Use list_custom_reports to discover available report IDs.
get_employeeRetrieves profile and field data for a specific employee by ID. Supports selective field retrieval and optionally includes future-dated values from historical tables such as job title or compensation.
get_employee_goals_aggregateRetrieves a comprehensive aggregate of all goals for a given employee, including milestone-containing goals, type counts, filter actions, comment counts, and shared employee details. This version extends v1.1 by including goals that contain milestones.
get_field_optionsRetrieve the available filter values for one or more fields in a dataset, returning an object keyed by field name where each value is an array of id/value pairs. Use the returned id values when constructing filters for dataset queries.
get_field_options_rfc7807Retrieve the available filter values for one or more fields in a dataset, returning an object keyed by field name where each value is an array of id/value pairs. Use the returned id values when constructing filters for dataset queries.
get_goal_aggregateRetrieves a comprehensive goal detail view for a specific employee, including the goal's comments, alignment options, and a consolidated list of all persons who are shared on or have commented on the goal. Designed to populate a full goal detail view in a single request.
get_goal_filtersRetrieves the count of goals grouped by status for a specific employee, including goals that contain milestones. Use this to understand an employee's goal distribution across statuses before fetching detailed goal data.
get_time_tracking_recordRetrieves a single time tracking record by its unique ID, returning full details including hours, date, employee, project, task, and shift differential information. Note that project and shiftDifferential fields may be null when not applicable, and missing records may return an empty or null payload rather than a not-found error.
get_webhookRetrieves the full configuration of a single webhook owned by the authenticated user, including its name, URL, format, monitored fields, events, and activity timestamps. Returns 403 if the webhook belongs to a different user and 404 if it does not exist.
list_applicant_statusesRetrieves all applicant tracking statuses configured for the company, including both system-defined and custom statuses. Requires the API key owner to have access to ATS settings.
list_applicationsRetrieve a paginated list of job applications from the Applicant Tracking System (ATS). Supports filtering by job, application status, position status, and submission date, with flexible sorting options.
list_benefit_deduction_typesRetrieves all benefit deduction types available in the system, including categories such as 401(k), HSA, and Section 125, along with their allowable plan types, default deduction codes, and any sub-types. Requires Benefits Administration permissions.
list_break_assessmentsRetrieves a paginated list of break assessments, each recording whether an employee complied with their assigned break policy for a given day along with any violations. Use the filter parameter to scope results by employee, date, compliance result, or other fields.
list_break_policiesRetrieves a paginated list of all break policies configured in the time-tracking system. Optionally includes employee and break counts per policy for summary reporting.
list_break_policy_breaksRetrieves a paginated list of breaks associated with a specific break policy. Supports OData v4 filtering to narrow results by break attributes.
list_break_policy_employeesRetrieves the list of employees assigned to a specific break policy. Returns an empty list if no employees are currently assigned to the policy.
list_changed_employee_table_rowsRetrieves table rows for all employees whose records have changed since a specified timestamp, grouped by employee ID. Any change to an employee record causes all of that employee's rows in the specified table to be returned, making this an efficient alternative to fetching full table data for all employees.
list_company_benefitsRetrieves all active (non-deleted) company benefit plans for the account, including summary-level details such as name, benefit category type, associated vendor and deduction IDs, effective date range, and catch-up eligibility flags. For full plan details including SSO URL, description, and ACA fields, use get_company_benefit with a specific plan ID.
list_countriesRetrieves the full list of countries supported by BambooHR, each including a numeric string ID, full name, and ISO 3166-1 alpha-2 code. The returned country IDs can be used with the Get States by Country ID endpoint to fetch corresponding states or provinces.
list_country_statesRetrieves the list of states or provinces for a given country, sorted alphabetically by abbreviation. Each result includes a numeric ID, abbreviation label, ISO 3166-2 code, and full name.
list_custom_reportsRetrieve a paginated list of saved custom reports available in the account, returning each report's ID and name. Use the returned report ID with the get_custom_report operation to fetch full report data.
list_dataset_fieldsRetrieves the available fields for a specified dataset, returning paginated field descriptors that include each field's machine-readable name, human-readable label, parent section type and name, and entity name. Use the returned field `name` values when constructing field selections in POST /api/v1/datasets/{datasetName} queries. Note: this endpoint is deprecated — prefer GET /api/v1_2/datasets/{d
list_dataset_fields_v1_2Retrieve the available fields for a specified dataset, returning paginated field descriptors that include each field's machine-readable name, human-readable label, parent section, and entity name. Use the returned field `name` values when constructing data queries against the dataset.
list_datasetsRetrieves all available datasets, returning each dataset's machine-readable name and human-readable label. Use the returned names to query data via POST /api/v1/datasets/{datasetName} or discover fields via GET /api/v1/datasets/{datasetName}/fields. Note: this endpoint is deprecated — prefer GET /api/v1_2/datasets.
list_datasets_v1_2Retrieves all available datasets, returning each dataset's machine-readable name and human-readable label. Use the returned name values to query dataset records or discover available fields via related endpoints.
list_employee_benefitsRetrieves current and future benefit enrollment records for one or more employees, grouped by employee, including plan details, enrollment status, deduction amounts, and cost-sharing information. At least one filter — employee ID, company benefit plan ID, or enrollment status effective date — must be provided.
list_employee_break_availabilitiesRetrieves the available break options for a specific employee at a given point in time. Requires permission to view the target employee and time-tracking-break access.
list_employee_break_policiesRetrieves all break policies assigned to a specific employee. Requires permission to view the target employee's records.
list_employee_fieldsRetrieves all available employee fields for the account, including field ID, display name, data type, and deprecation status. Use this to discover valid field names before querying employee data via the Get Employee, Datasets, or other field-based endpoints.
list_employee_goalsRetrieves the list of goals assigned to a specific employee, optionally filtered by goal status. Returns up to 50 goals in a `goals` array.
list_employee_table_rowsRetrieves all rows from a specified table for one or all employees, returning only the fields the caller has permission to access. Results are unordered and field visibility is subject to field-level permission checks.
list_employeesRetrieves a paginated list of employees, each including core identity and job fields by default, with optional filtering, sorting, and additional contact or social fields. Use the Get Employee endpoint or Datasets API for more comprehensive field coverage.
list_enabled_integrationsRetrieves the list of integration and feature identifiers currently enabled for the company. Each identifier is an uppercase string key representing an activated product feature or integration, reflecting the company's current subscription and configuration.
list_goal_alignment_optionsRetrieves the list of goals that a specified employee's goal can be aligned with. When a goal ID is provided, the currently aligned goal is included in the results even if it would otherwise be filtered out.
list_goal_commentsRetrieves all comments associated with a specific goal for a given employee. Useful for reviewing feedback, progress notes, and discussion threads tied to a performance goal.
list_goal_share_optionsRetrieves a list of employees with whom the specified employee's goals can be shared. Results are filtered by a search term matching name, employee ID, or email.
list_hiring_leadsRetrieves the list of employees eligible to be assigned as a hiring lead on a job opening. Use the returned `employeeId` values as the `hiringLead` field when creating a new job opening via the Create Job Opening endpoint.
list_job_locationsRetrieves all company locations available for use when creating a job opening in the Applicant Tracking System. Requires ATS settings access; use the returned location IDs as the `jobLocation` field when creating a job opening.
list_member_benefit_eventsRetrieves benefit enrollment events for all employees and their dependents over the past year, organized by member. Each entry identifies a member and lists their per-plan coverage events (eligibility granted, enrolled, or loss of coverage) in chronological order. Requires benefit settings access.
list_member_benefitsRetrieves a paginated list of benefit enrollment records for all members (employees and dependents) in the company for a specified calendar year, including each member's plans and enrollment status date ranges. Requires benefit admin privileges; non-admin callers receive a 403.
list_timesheet_entriesRetrieves timesheet entries (clock and hour types) for all employees or a filtered subset within a specified date range. Both dates must fall within the last 365 days and are interpreted in the company timezone.
list_timezonesRetrieves a paginated list of available timezones. Supports pagination, filtering, sorting, and field projection via OData v4 query parameters.
list_usersRetrieves all users for the company, with each record including user ID, employee ID, name, email, account status, and last login time. Support admin accounts are always excluded; results can be filtered by status and returned as JSON or XML based on the Accept header.
list_webhook_logsRetrieves recent delivery log entries for a specific webhook, covering the last 14 days and up to 200 entries. Each entry includes the webhook URL, last attempt and success timestamps (UTC datetime or status string), HTTP response code, payload format, and employee IDs in the payload. Note: when the rate limit is exceeded the server returns HTTP 200 with an error object instead of the log array —
list_webhook_monitor_fieldsRetrieves all employee fields available for webhook monitoring, including each field's numeric ID, human-readable name, and alias. Use the returned field IDs or aliases when specifying the `monitorFields` array during webhook creation or updates.
list_webhook_post_fieldswrite actionRetrieves all available employee fields that can be included in a webhook post body, along with their related table and page record references. Use the returned field IDs or aliases in the `postFields` map when creating or updating a webhook.
list_webhooksRetrieves all webhooks associated with the authenticated API key, returning an empty array if none exist. Each result includes the webhook ID, name, URL, creation datetime, and last fired datetime; use get_webhook to fetch full configuration details for a specific webhook.
query_datasetRetrieve paginated records from a specified dataset by providing a list of fields to return, with optional filtering, sorting, grouping, and aggregation. Use GET /api/v1/datasets/{datasetName}/fields to discover available field names before calling this endpoint.
reopen_goalReopens a previously closed goal for the specified employee, returning it to in-progress status. Returns the updated goal object reflecting the new status.
replace_break_policyPerforms a full replacement of a break policy and all its associated data, including breaks and employee assignments. Any breaks or assignments not included in the request payload will be removed from the policy.
replace_break_policy_breaksReplaces the complete set of breaks for a specified break policy. Breaks with an ID are updated, breaks without an ID are created, and any existing breaks omitted from the request are soft-deleted.
set_goal_sharingReplaces the complete list of employees a goal is shared with, overwriting any previous sharing configuration. The goal owner's employee ID must be included in the updated list.
unassign_employees_from_break_policywrite actionRemoves specific employees from a break policy assignment without affecting the policy itself or other assigned employees. Only applicable to policies that are not configured to apply to all employees.
update_breakwrite actionPartially updates an existing time tracking break by its UUID, modifying only the fields provided in the request body. Returns the full updated break record on success.
update_break_policywrite actionPartially updates an existing break policy by its UUID, modifying only the fields provided in the request body. Returns the full updated break policy on success.
update_company_filewrite actionUpdates metadata for an existing company file, including its display name, category, and employee visibility. Only fields included in the request body are modified; omitted fields remain unchanged.
update_employeewrite actionUpdate one or more fields for an existing employee by submitting a JSON object or XML document with field name/value pairs. To discover all available field names beyond those listed here, call the list_fields operation (GET /api/v1/meta/fields). Note: if the employee is on a Trax Payroll pay schedule, a comprehensive set of required payroll fields must be included in the request.
update_employee_filewrite actionUpdates metadata for an existing employee file, supporting renaming, category reassignment, and toggling employee visibility. Only fields included in the request body are modified; omitted fields remain unchanged.
update_employee_table_rowwrite actionUpdates an existing row in a specified employee table by submitting one or more field name/value pairs to modify. Targets a specific row by ID within tables such as job information or compensation history.
update_employee_table_row_v1_1write actionUpdates an existing row in a specified employee table, such as job information or compensation history. Submit field changes to modify the row's effective date, location, department, job title, reporting structure, or team assignments.
update_goal_commentwrite actionUpdates the text of an existing comment on a specific employee goal. The comment, goal, and employee must all be correctly associated for the update to succeed.
update_goal_progresswrite actionUpdates the completion percentage of a specific employee goal, optionally recording the completion date when the goal is fully achieved.
update_goal_with_milestoneswrite actionUpdates an existing performance goal for a specified employee, including support for adding, modifying, or deleting milestones within the goal. Use this version (v1.1) instead of v1 when milestone management is required.
update_milestone_progresswrite actionUpdates the completion status of a specific milestone within an employee's goal. Use this to mark a milestone as complete or incomplete as part of tracking goal progress.
update_time_entrywrite actionUpdates an existing time tracking entry identified by its unique ID. Use this to correct hours worked or reassign the entry to a different project, task, shift differential, or holiday.
upsert_hour_recordsBulk create or update time tracking hour records in a single request. Note that HTTP 201 may be returned even when individual records fail validation — always inspect each item's `success` flag and `response.message` for partial failures.
Public scan report
scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it
- Code scan5 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 138 days ago8/15
- Maintainer identityregistry namespace matches repository owner7/10
How Bamboohr compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 80/100
- higher than 60% of 48,255 servers
- Tools
- 100
- the typical server has 7
- Tools that change things
- 37%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 31
- more than 92% of 28,688 servers
- Downloads a week
- 155
- more than 71% of 12,191 servers with a package
What its tools let an agent do: 56 read · 11 create · 22 change · 11 delete
Install Bamboohr in Claude Code, Cursor or VS Code
claude mcp add bamboohr -- uvx mcparmory-bamboohr
What the publisher says
From the Bamboohr repository's README, as published. We do not edit it. Read it on GitHub
MCP Armory Registry
Production-ready MCP servers for popular APIs, generated by MCP Blacksmith.
Servers · Install & Usage · Features · How it works · License
MCP servers that connect AI agents to real-world APIs. Each server is a standalone Python package — generated from the upstream OpenAPI spec using MCP Blacksmith and tested against the live API before release. Hosted on MCP Armory or run independently.
<!-- SERVERS:BEGIN -->
Servers
🧠 AI & Machine Learning   ElevenLabs · Linkup · Parallel · Perplexity AI · Ragie · Replicate
📊 Analytics   Ahrefs · Datadog · Google Analytics · Google Search Console · Linkly · Mixpanel · PostHog
⛓️ Blockchain & Crypto   Alchemy NFT
💼 CRM & Sales   Apollo
💬 Communication   Atlassian Confluence · Google Gmail · MailerSend · Mailtrap · Postmark · Resend · Slack
🗄️ Data & Databases   Enigma · Pinecone
🛠️ Developer Tools   AgentQL · Apify · Bitbucket · Bright Data · Browserbase · BuiltWith · Canvas · CircleCI · Codacy · Contentful Management · ConvertAPI · E2B · Firecrawl · GitHub · GitLab · LaunchDarkly · Postman · Scrapingant · Semrush AppCenter · Sentry
📄 Documents & Printing   PDF.co
🛒 E-commerce   Shopify Admin
💰 Finance   Alpha Vantage · Polygon · Ramp
👥 HR & Recruiting   BambooHR
☁️ Infrastructure   Globalping · Grafana · PagerDuty · Rootly · Runpod
⚖️ Legal & Compliance   NetLicensing
🗺️ Maps & Location   Google Maps Platform · IP2Location.io IP Geolocation · OpenCage Geocoding
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Bamboohr: common questions
- Is Bamboohr MCP server safe?
- Mostly: it is graded B (80/100). Read the Bamboohr safety report
- How do I install Bamboohr?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Bamboohr need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Bamboohr maintained?
- The last commit was 176 days ago (2026-05-12). The latest release is v1.0.6.
- How does Bamboohr compare with other MCP servers?
- safety score 80/100 (higher than 60% of 48,255 servers); tools 100 (the typical server has 7); tools that change things 37% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.