Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Rippling in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Rippling HR platform through its REST API: workers and users, departments, teams, work locations, levels, titles, employment types and custom fields, compensation, leave types, balances and requests, supergroups and time entries. It also files and approves leave, records time, maintains the org structure and creates draft hires.
Try asking
Example prompts for Rippling
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Rippling, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Rippling + ChatGPT
Rippling HR platform through its REST API: workers and users, departments, teams, work locations, levels, titles, employment types and custom fields, compensation, leave types, balances and requests, supergroups and time entries. It also files and approves leave, records time, maintains the org structure and creates draft hires.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
RIPPLING_API_TOKEN
Step 1 — Get credentials
Setting up takes about 5 minutes. You need a Rippling user with the permission Create and manage API Tokens and access to the data the AI should read.
- In Rippling open Developer > API credentials (
https://app.rippling.com/api-tokens/tokens) and click New API token. - Name the token and select its scopes. The token reaches only data that both its scopes and its owner's permission profile allow. Pick what you use:
companies.read(required, the install check), plusworkers.read,users.read,departments.read,teams.read,work-locations.read,levels.read,titles.read,employment-types.read,job-codes.read,custom-fields.read,supergroups.read.compensations.readonly if the AI should see pay.leave-types.read,leave-balances.read,leave-requests.read, andleave-requests.read-writeto file or approve leave.time-entries.read, andtime-entries.read-writeto record time (needs Rippling Time).departments.read-write,teams.read-write,work-locations.read-writeanddraft-hires.read-writefor the matching writes.
- Copy the token right away (it is shown only once) into
RIPPLING_API_TOKEN, withoutBearer. Install the connector:rippling_list_companiesis the install check.
Requests run as the token's owner. Rippling revokes a token that stays unused for 30 days and the tokens of an owner who is terminated, so pick an owner whose access is stable.
Personal data: workers, users and compensation packages hold personal and pay data: names, private emails, phone numbers, home addresses, date of birth, gender and salary. Ask only for the fields the task needs, do not copy them into other systems without a reason, and give the token only the scopes the team uses.
What it reads: the company (rippling_list_companies); workers, the employment records of employees and contractors, with status, work and personal email, start and end date, title, department, manager, level, teams, location, employment type and country (rippling_list_workers, rippling_get_worker); users, the login identity behind a worker's user_id (rippling_list_users, rippling_get_user); compensation packages with annual, monthly, weekly and hourly amounts, bonus targets and commission (rippling_list_compensations, and rippling_get_compensation with the worker's compensation_id); custom field definitions (rippling_list_custom_fields), whose values come with expand=custom_fields on workers; the org structure with departments, teams, work locations, levels, titles, employment types and job codes; supergroups and their members; leave types, leave balances in hours and days, and leave requests; time entries with job shifts, breaks, duration, status and pay period. expand (for example user,manager,department) embeds related objects in one call.
What it writes:
- Leave:
rippling_create_leave_requestfiles leave for a worker (PENDINGfollows the normal approval flow,APPROVEDrecords leave that was already agreed);rippling_update_leave_requestapproves, rejects or cancels it throughstatus, or changes its dates and comments. - Time:
rippling_create_time_entryrecords worked time as job shifts with start and end times or as a duration on a day; it takes anidempotency_keyso a retry cannot create a duplicate.rippling_update_time_entrychanges an entry; the API wantsworker_ideven when it does not change. - Org structure:
rippling_create_department,rippling_update_department,rippling_create_team,rippling_update_team,rippling_create_work_locationandrippling_update_work_location. Updates change only the fields sent. - Hiring:
rippling_create_draft_hirescreates up to five draft hires that go through Rippling's review and approval before anyone is hired.
Switched off at install: rippling_delete_team (workers lose the team assignment) and rippling_delete_time_entry. Neither can be undone; a workspace admin switches them on when the team needs them.
Filters: filter takes an OData-style expression on the fields each tool names, for example status eq 'ACTIVE', updated_at ge 2026-01-01T00:00:00 or status in ('HIRED','ACCEPTED'), combined with and and or. Strings take single quotes, and a filter has at most 64 nodes. Leave balances of one worker: worker_id eq '...'; open leave requests: status eq 'PENDING'.
Data formats: ids are 24-character hex strings. Dates are YYYY-MM-DD, timestamps ISO 8601 with offset. Money is { "currency_type": "USD", "value": 120000 } in major units. Worker status is INIT, HIRED, ACCEPTED, ACTIVE or TERMINATED. A field the token may not see comes back null and is named in __meta.redacted_fields with the reason, so null does not prove the field is empty: check the scopes and the owner's permissions first.
Paging: lists answer results and next_link, 50 items by default and up to 100 with limit. While next_link is not null, the AI calls again with cursor set to the cursor value inside next_link.
Limits and common errors: 600 requests per 10 seconds per endpoint and token, then 429 (wait a few seconds and retry). 400 means a bad filter, a field that cannot be expanded or limit over 100; 401 a wrong or revoked token; 403 a missing scope or a permission the owner lacks; 404 an unknown id.
The connector does not edit worker records or compensation, does not hire or terminate anyone directly and does not run payroll.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in ChatGPT
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
ChatGPT adds MCP servers as plugins on its Plugins page, on the web and on paid plans. Developer mode is no longer needed. In a Business workspace only admins and owners can add one; in Enterprise and Edu an admin can grant the Create plugins with MCPs permission.
- Go to chatgpt.com/plugins, click Add, then Add custom MCP server.
- Enter a name, e.g. Name:
Rippling. - Under Connection, enter the Server URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_IDand keep Authentication on OAuth. - Select I understand and want to continue, then Create as a plugin. When ChatGPT asks, sign in to AnythingMCP and allow access.
- Install the new plugin from your personal plugins, then type @ in a chat and pick it.
Available tools
| Tool | What it does |
|---|---|
rippling_list_companies | List the Rippling company the token belongs to (name, legal name, primary email, address, legal entities when expanded) |
rippling_list_workers | List workers (employees and contractors): status, work and personal email, start and end date, title, department, manager, level, teams… |
rippling_get_worker | Read one worker by id with the same fields as rippling_list_workers; expand user, manager or custom_fields for more |
rippling_list_users | List users (the login identity behind a worker): name, display name, emails, phone numbers, addresses, time zone, locale and whether the… |
rippling_get_user | Read one user by id: name, emails, phone numbers, addresses, locale and time zone |
rippling_list_compensations | List compensation packages the token owner may see: annual, monthly, weekly and hourly amounts with currency, bonus targets, commission and… |
rippling_get_compensation | Read one compensation package by id (the compensation_id of a worker) |
rippling_list_custom_fields | List the company's custom fields on employees: id, name, description, data type (TEXT, DATE, NUMBER, SELECT and more), whether required… |
rippling_list_departments | List departments with name, reference code, parent department and the hierarchy of department ids from the top |
rippling_get_department | Read one department by id: name, reference code, parent and the chain of parent departments |
rippling_list_teams | List teams with their name and parent team, to resolve the teams_id values on workers |
rippling_get_team | Read one team by id: name and parent team (expand parent for its details) |
rippling_list_work_locations | List work locations (offices) with name and full address, to resolve a worker's location |
rippling_get_work_location | Read one work location by id (the location.work_location_id of a worker) |
rippling_list_levels | List job levels with name, parent level, track and rank, to resolve the level_id of workers |
rippling_get_level | Read one job level by id: name, parent level and track (expand track for its name) |
rippling_list_titles | List the job titles defined in the company, with id and name, for consistent title values |
rippling_list_employment_types | List employment types: label, CONTRACTOR or EMPLOYEE, HOURLY or SALARIED, FULL-TIME, PART-TIME or TEMPORARY |
rippling_list_job_codes | List job codes (the codes workers log time against) with their job dimension, department and work location |
rippling_list_supergroups | List supergroups: the attribute-based groups Rippling uses for policies, apps and workflows (name, type, description, whether terminated… |
rippling_get_supergroup | Read one supergroup by id: name, type, description and membership settings |
rippling_list_supergroup_members | List the members of a supergroup: worker id, full name and work email |
rippling_list_leave_types | List leave types (vacation, sick and others): name, type, description, whether paid and whether managed by an external system |
rippling_list_leave_balances | List leave balances per worker and leave type: whether unlimited, balance with and without future requests, in hours and in days |
rippling_get_leave_balance | Read one leave balance by id: worker, leave type and remaining balance in hours and days |
rippling_list_leave_requests | List leave requests with worker, requester, reviewer, status (PENDING, APPROVED, REJECTED, CANCELED), dates, hours, leave type and comments |
rippling_get_leave_request | Read one leave request by id: worker, status, dates, hours, leave type, reviewer and comments |
rippling_list_time_entries | List time entries (worked shifts with job shifts, breaks, duration, status DRAFT, APPROVED, PAID or FINALIZED, pay period and tags) |
rippling_get_time_entry | Read one time entry by id: job shifts, breaks, duration, status, pay period and comments |
rippling_create_department | Create a department, optionally under a parent department and with a reference code |
rippling_update_department | Change a department's name, parent or reference code |
rippling_create_team | Create a team, optionally nested under a parent team; assign workers to it in Rippling |
rippling_update_team | Rename a team or move it under another parent team |
rippling_delete_team | Delete a team; workers lose the team assignment |
rippling_create_work_location | Create a work location (office) with its name and postal address, for assigning workers |
rippling_update_work_location | Rename a work location or change its address |
rippling_create_leave_request | File a leave request for a worker |
rippling_update_leave_request | Approve, reject or cancel a leave request (status), or change its dates and comments |
rippling_create_time_entry | Record worked time for a worker, as job shifts with start and end times or as a duration on a day |
rippling_update_time_entry | Change a time entry: shifts, breaks, duration, comments, tags or status. worker_id is required by the API even when unchanged |
rippling_delete_time_entry | Delete a time entry permanently, e.g. a duplicate |
rippling_create_draft_hires | Create draft hires that then follow Rippling's review and approval policies before anyone is hired |
Example prompts
- "Who joined in the last 30 days? List name, title, department, manager and start date."
- "Show all pending leave requests with worker, dates, hours and leave type."
- "How much vacation does Maria Lopez have left, in days and in hours?"
- "Approve the pending leave request of Maria Lopez for 10 to 14 November."
- "How many active workers do we have per department and work location?"
FAQ
Does the free ChatGPT plan work with custom MCP servers? OpenAI documents custom MCP servers for paid plans only; the Free plan is not on its list.
Next steps
- Connector landing page
- Connect to Claude
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
- Connect to Microsoft Copilot
Was this guide helpful?