bamboohr-automation
npx machina-cli add skill davepoon/buildwithclaude/bamboohr-automation --openclawBambooHR Automation via Rube MCP
Automate BambooHR human resources operations through Composio's BambooHR toolkit via Rube MCP.
Toolkit docs: composio.dev/toolkits/bamboohr
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active BambooHR connection via
RUBE_MANAGE_CONNECTIONSwith toolkitbamboohr - Always call
RUBE_SEARCH_TOOLSfirst to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLSresponds - Call
RUBE_MANAGE_CONNECTIONSwith toolkitbamboohr - If connection is not ACTIVE, follow the returned auth link to complete BambooHR authentication
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. List and Search Employees
When to use: User wants to find employees or get the full employee directory
Tool sequence:
BAMBOOHR_GET_ALL_EMPLOYEES- Get the employee directory [Required]BAMBOOHR_GET_EMPLOYEE- Get detailed info for a specific employee [Optional]
Key parameters:
- For GET_ALL_EMPLOYEES: No required parameters; returns directory
- For GET_EMPLOYEE:
id: Employee ID (numeric)fields: Comma-separated list of fields to return (e.g., 'firstName,lastName,department,jobTitle')
Pitfalls:
- Employee IDs are numeric integers
- GET_ALL_EMPLOYEES returns basic directory info; use GET_EMPLOYEE for full details
- The
fieldsparameter controls which fields are returned; omitting it may return minimal data - Common fields: firstName, lastName, department, division, jobTitle, workEmail, status
- Inactive/terminated employees may be included; check
statusfield
2. Track Employee Changes
When to use: User wants to detect recent employee data changes for sync or auditing
Tool sequence:
BAMBOOHR_EMPLOYEE_GET_CHANGED- Get employees with recent changes [Required]
Key parameters:
since: ISO 8601 datetime string for change detection thresholdtype: Type of changes to check (e.g., 'inserted', 'updated', 'deleted')
Pitfalls:
sinceparameter is required; use ISO 8601 format (e.g., '2024-01-15T00:00:00Z')- Returns IDs of changed employees, not full employee data
- Must call GET_EMPLOYEE separately for each changed employee's details
- Useful for incremental sync workflows; cache the last sync timestamp
3. Manage Time-Off
When to use: User wants to view time-off balances, request time off, or manage requests
Tool sequence:
BAMBOOHR_GET_META_TIME_OFF_TYPES- List available time-off types [Prerequisite]BAMBOOHR_GET_TIME_OFF_BALANCES- Check current balances [Optional]BAMBOOHR_GET_TIME_OFF_REQUESTS- List existing requests [Optional]BAMBOOHR_CREATE_TIME_OFF_REQUEST- Submit a new request [Optional]BAMBOOHR_UPDATE_TIME_OFF_REQUEST- Modify or approve/deny a request [Optional]
Key parameters:
- For balances:
employeeId, time-off type ID - For requests:
start,end(date range),employeeId - For creation:
employeeId: Employee to request fortimeOffTypeId: Type ID from GET_META_TIME_OFF_TYPESstart: Start date (YYYY-MM-DD)end: End date (YYYY-MM-DD)amount: Number of days/hoursnotes: Optional notes for the request
- For update:
requestId,status('approved', 'denied', 'cancelled')
Pitfalls:
- Time-off type IDs are numeric; resolve via GET_META_TIME_OFF_TYPES first
- Date format is 'YYYY-MM-DD' for start and end dates
- Balances may be in hours or days depending on company configuration
- Request status updates require appropriate permissions (manager/admin)
- Creating a request does NOT auto-approve it; separate approval step needed
4. Update Employee Information
When to use: User wants to modify employee profile data
Tool sequence:
BAMBOOHR_GET_EMPLOYEE- Get current employee data [Prerequisite]BAMBOOHR_UPDATE_EMPLOYEE- Update employee fields [Required]
Key parameters:
id: Employee ID (numeric, required)- Field-value pairs for the fields to update (e.g.,
department,jobTitle,workPhone)
Pitfalls:
- Only fields included in the request are updated; others remain unchanged
- Some fields are read-only and cannot be updated via API
- Field names must match BambooHR's expected field names exactly
- Updates are audited; changes appear in the employee's change history
- Verify current values with GET_EMPLOYEE before updating to avoid overwriting
5. Manage Dependents and Benefits
When to use: User wants to view employee dependents or benefit coverage
Tool sequence:
BAMBOOHR_DEPENDENTS_GET_ALL- List all dependents [Required]BAMBOOHR_BENEFIT_GET_COVERAGES- Get benefit coverage details [Optional]
Key parameters:
- For dependents: Optional
employeeIdfilter - For benefits: Depends on schema; check RUBE_SEARCH_TOOLS for current parameters
Pitfalls:
- Dependent data includes sensitive PII; handle with appropriate care
- Benefit coverages may include multiple plan types per employee
- Not all BambooHR plans include benefits administration; check account features
- Data access depends on API key permissions
Common Patterns
ID Resolution
Employee name -> Employee ID:
1. Call BAMBOOHR_GET_ALL_EMPLOYEES
2. Find employee by name in directory results
3. Extract id (numeric) for detailed operations
Time-off type name -> Type ID:
1. Call BAMBOOHR_GET_META_TIME_OFF_TYPES
2. Find type by name (e.g., 'Vacation', 'Sick Leave')
3. Extract id for time-off requests
Incremental Sync Pattern
For keeping external systems in sync with BambooHR:
1. Store last_sync_timestamp
2. Call BAMBOOHR_EMPLOYEE_GET_CHANGED with since=last_sync_timestamp
3. For each changed employee ID, call BAMBOOHR_GET_EMPLOYEE
4. Process updates in external system
5. Update last_sync_timestamp
Time-Off Workflow
1. GET_META_TIME_OFF_TYPES -> find type ID
2. GET_TIME_OFF_BALANCES -> verify available balance
3. CREATE_TIME_OFF_REQUEST -> submit request
4. UPDATE_TIME_OFF_REQUEST -> approve/deny (manager action)
Known Pitfalls
Employee IDs:
- Always numeric integers
- Resolve names to IDs via GET_ALL_EMPLOYEES
- Terminated employees retain their IDs
Date Formats:
- Time-off dates: 'YYYY-MM-DD'
- Change detection: ISO 8601 with timezone
- Inconsistent formats between endpoints; check each endpoint's schema
Permissions:
- API key permissions determine accessible fields and operations
- Some operations require admin or manager-level access
- Time-off approvals require appropriate role permissions
Sensitive Data:
- Employee data includes PII (names, addresses, SSN, etc.)
- Handle all responses with appropriate security measures
- Dependent data is especially sensitive
Rate Limits:
- BambooHR API has rate limits per API key
- Bulk operations should be throttled
- GET_ALL_EMPLOYEES is more efficient than individual GET_EMPLOYEE calls
Response Parsing:
- Response data may be nested under
datakey - Employee fields vary based on
fieldsparameter - Empty fields may be omitted or returned as null
- Parse defensively with fallbacks
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List all employees | BAMBOOHR_GET_ALL_EMPLOYEES | (none) |
| Get employee details | BAMBOOHR_GET_EMPLOYEE | id, fields |
| Track changes | BAMBOOHR_EMPLOYEE_GET_CHANGED | since, type |
| Time-off types | BAMBOOHR_GET_META_TIME_OFF_TYPES | (none) |
| Time-off balances | BAMBOOHR_GET_TIME_OFF_BALANCES | employeeId |
| List time-off requests | BAMBOOHR_GET_TIME_OFF_REQUESTS | start, end, employeeId |
| Create time-off request | BAMBOOHR_CREATE_TIME_OFF_REQUEST | employeeId, timeOffTypeId, start, end |
| Update time-off request | BAMBOOHR_UPDATE_TIME_OFF_REQUEST | requestId, status |
| Update employee | BAMBOOHR_UPDATE_EMPLOYEE | id, (field updates) |
| List dependents | BAMBOOHR_DEPENDENTS_GET_ALL | employeeId |
| Benefit coverages | BAMBOOHR_BENEFIT_GET_COVERAGES | (check schema) |
Powered by Composio
Source
git clone https://github.com/davepoon/buildwithclaude/blob/main/plugins/all-skills/skills/bamboohr-automation/SKILL.mdView on GitHub Overview
BambooHR Automation via Rube MCP lets you automate HR operations (employees, time-off, benefits, dependents, and updates) using Composio's BambooHR toolkit. It requires Rube MCP to search for current schemas and an active BambooHR connection. This enables programmatic data retrieval, updates, and workflow-driven HR processes.
How This Skill Works
Connect Rube MCP to BambooHR and first run RUBE_SEARCH_TOOLS to fetch current tool schemas. Then establish an ACTIVE BambooHR connection with RUBE_MANAGE_CONNECTIONS using the bamboohr toolkit. Execute predefined tool calls (e.g., BAMBOOHR_GET_ALL_EMPLOYEES, BAMBOOHR_GET_CHANGED, BAMBOOHR_CREATE_TIME_OFF_REQUEST, BAMBOOHR_UPDATE_TIME_OFF_REQUEST, BAMBOOHR_GET_META_TIME_OFF_TYPES) in sequences to manage employees, time-off, and updates; fetch detailed employee data with BAMBOOHR_GET_EMPLOYEE when needed.
When to Use It
- List all employees or fetch a specific employee's details
- Sync recent employee changes for integration or auditing
- View time-off balances, list requests, or submit a new time-off request
- Approve, deny, or modify an existing time-off request
- Retrieve specific employee fields to optimize data returned (e.g., firstName,lastName,department,jobTitle)
Quick Start
- Step 1: Ensure Rube MCP is connected and BambooHR toolkit is configured; confirm RUBE_SEARCH_TOOLS is available
- Step 2: Call RUBE_MANAGE_CONNECTIONS with toolkit bamboohr and ensure the connection shows ACTIVE
- Step 3: Run a core workflow such as BAMBOOHR_GET_ALL_EMPLOYEES (and optionally BAMBOOHR_GET_EMPLOYEE for details) after configuring required parameters
Best Practices
- Always run RUBE_SEARCH_TOOLS first to fetch current schemas
- Verify the BambooHR connection is ACTIVE before running workflows
- Resolve time-off type IDs with GET_META_TIME_OFF_TYPES before creating requests
- Use GET_EMPLOYEE after listing employees to fetch full details as needed
- Use ISO 8601 timestamps (e.g., 2024-01-15T00:00:00Z) for change detection (since)
Example Use Cases
- Fetch all employees with only essential fields (fields=firstName,lastName,department,jobTitle) to minimize payload
- Identify employee changes since a given date (since='2024-01-01T00:00:00Z') for incremental sync
- Check time-off balances for a team, then submit a new time-off request for an employee
- Approve a pending time-off request via the update flow with status='approved'
- Retrieve detailed data for employee ID 123 including firstName, lastName, workEmail
Frequently Asked Questions
Related Skills
internal-comms
davepoon/buildwithclaude
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
competitive-ads-extractor
davepoon/buildwithclaude
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
content-research-writer
davepoon/buildwithclaude
Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section. Transforms your writing process from solo effort to collaborative partnership.
developer-growth-analysis
davepoon/buildwithclaude
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
docusign-automation
davepoon/buildwithclaude
Automate DocuSign tasks via Rube MCP (Composio): templates, envelopes, signatures, document management. Always search tools first for current schemas.
invoice-organizer
davepoon/buildwithclaude
Automatically organizes invoices and receipts for tax preparation by reading messy files, extracting key information, renaming them consistently, and sorting them into logical folders. Turns hours of manual bookkeeping into minutes of automated organization.