Connect Paylocity to Claude: Sync Workforce Records and Shift Data
from the team behind Truto
Paylocity in Claude, in about a minute.
The best way to connect Paylocity to Claude is Elaichi: connect Paylocity to Elaichi once, then add Elaichi to Claude as a connector. Two steps, about a minute, with a 14‑day free trial and no credit card required.
- No credit card required
- 500+ connectors
- Credentials vaulted, never read back
-
Start your free trial
14 days free, no credit card required.
-
Connect Paylocity
Once, in Elaichi. Claude never gets more access than you have.
-
Add Elaichi to Claude
In Claude, open Customize, then Connectors, press Add and paste the URL. Sign in and approve.
https://api.elaichi.ai/mcp
Building Paylocity into your own product? This guide is for you.
The developer guide
Learn how to connect Paylocity to claude using Truto. Step-by-step guide to tool calling, API quirks, and autonomous workflows.
If your team needs to connect Paylocity to Claude to automate workforce management, audit time and labor data, or orchestrate payroll batches, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's tool calls and Paylocity's REST API. You can either build and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL. If your team uses ChatGPT, check out our guide on /connect-paylocity-to-chatgpt-manage-hr-data-and-payroll-batches/ or explore our broader architectural overview on /connect-paylocity-to-ai-agents-automate-time-labor-and-payroll/.
Giving a Large Language Model (LLM) read and write access to a specialized human capital management system like Paylocity is a serious engineering challenge. You have to manage complex authentication lifecycles, handle domain-specific pagination schemes, map massive payroll schemas to MCP tool definitions, and deal with strict API quotas. Every time the vendor deprecates a field or updates an endpoint, you own the maintenance of your custom integration code.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Paylocity, connect it natively to Claude, and execute complex HR and payroll workflows using natural language.
The Engineering Reality of the Paylocity API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover and execute tools, the reality of implementing it against specialized B2B APIs is painful. Paylocity's API architecture reflects the complexity of enterprise payroll, tax compliance, and time tracking.
If you decide to build a custom MCP server for Paylocity, here are the specific integration challenges you will face:
Destructive Updates on Core Entities
Many of Paylocity's endpoints rely on full entity replacement. For example, updating a job code via the jobs.update endpoint is a full PUT operation. If an LLM attempts to update a single field (like deactivating a job) and omits the rest of the payload, Paylocity sets every omitted field to null or its system default. You must engineer your MCP server to force a "read-modify-write" pattern, ensuring Claude reads the complete job, changes only the target field, and sends the entire object back.
Fragmented API Versions Paylocity's API surface is heavily versioned. The Employee Demographic API v1 returns employees as flat objects with basic string arrays. The newer v2 API (which is currently in early-access beta) fundamentally changes this structure, requiring callers to explicitly pick data sections (contact, sensitive, workAuthorization, rates) and returning heavily nested objects. An LLM has no inherent context on which version to use or how to format requests for each. Your MCP server must act as a normalization layer, explicitly defining schemas so Claude knows exactly what payload structure is required.
Asynchronous Punch Data Retrieval
Fetching detailed time and labor punch data from Paylocity is not a simple GET request. It requires orchestrating a three-step asynchronous flow: first, you submit a punch detail operation for a specific time window (POST); the API returns a 202 Accepted with a Location header. Second, you must poll that location to check the operation status until it reads succeeded. Finally, you extract a resource ID from the URL to fetch the actual shift data. Building tools that encapsulate this async logic so an LLM can simply ask for "punch data" requires complex state management on your custom server.
Step 1: Generate the Paylocity MCP Server
Truto eliminates the need to build a custom integration layer by auto-generating an MCP server directly from Paylocity's API documentation and your connected tenant. Tool generation is dynamic - any endpoint with a valid description and schema in Truto's integration registry is exposed as a callable tool over a JSON-RPC 2.0 endpoint.
You can generate this server via the Truto dashboard or programmatically via the API.
Method A: Via the Truto UI
- Log into your Truto dashboard and navigate to your Integrated Accounts.
- Select your connected Paylocity account.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration. You can restrict the server to specific tags (e.g.,
payroll,employees) or methods (read,write). - Copy the generated MCP server URL (e.g.,
https://api.truto.one/mcp/abc123def456).
Method B: Via the Truto API
If you are dynamically provisioning AI capabilities for your own end-users, you can create the MCP server programmatically. Truto validates the configuration, generates a cryptographically hashed token stored in Cloudflare KV, and returns the endpoint.
Make a POST request to /integrated-account/:id/mcp:
curl -X POST "https://api.truto.one/admin/integrated-accounts/<paylocity_account_id>/mcp" \
-H "Authorization: Bearer <YOUR_TRUTO_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"name": "Paylocity Payroll Assistant",
"config": {
"methods": ["read", "write"],
"tags": ["payroll", "employees", "shifts"]
},
"expires_at": "2026-12-31T23:59:59Z"
}'The response contains the secure URL required to connect Claude to Paylocity:
{
"id": "mcp-789-xyz",
"name": "Paylocity Payroll Assistant",
"url": "https://api.truto.one/mcp/abc123def456"
}Step 2: Connect the MCP Server to Claude
Once you have the Truto MCP URL, you need to register it with your LLM client. Because MCP communicates over standard JSON-RPC, the client requires no custom code to discover the Paylocity tools.
Method A: Via the Claude Desktop UI
If you are using an enterprise AI client with a UI (like ChatGPT Developer Mode or Claude Enterprise connectors), connecting is straightforward:
- Open your AI client settings (e.g., Settings -> Integrations -> Add MCP Server).
- Name the connection (e.g., "Paylocity Data").
- Paste the Truto MCP server URL.
- Click Add. The client will automatically send an
initializerequest to discover the Paylocity tools.
Method B: Via Manual Config File (Claude Desktop)
For Claude Desktop, you register servers using the claude_desktop_config.json file. Because Claude Desktop communicates with local MCP servers via standard input/output (stdio), and Truto provides a remote HTTP/SSE endpoint, you use the official @modelcontextprotocol/server-sse bridge utility.
Open your configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the Paylocity server block:
{
"mcpServers": {
"paylocity_production": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"--url",
"https://api.truto.one/mcp/abc123def456"
]
}
}
}Save the file and restart Claude Desktop. The hammer icon will appear in the input box, indicating the Paylocity tools are ready for use.
Hero Tools for Paylocity
Truto dynamically derives tool schemas from the Paylocity API documentation, standardizing inputs and outputs. When Claude calls a tool, the query and body parameters share a flat input namespace, which Truto intelligently routes to the correct upstream structures.
Here are the highest-leverage tools available for automating Paylocity workflows.
List All Paylocity Employees
Retrieves the core demographic data for the workforce. This tool (list_all_paylocity_employees) queries the Employee Demographic API v1. Because Paylocity returns up to 20 employees per page, Claude will receive the standard next_cursor property in the response to fetch subsequent pages.
"Fetch the first page of active employees in Paylocity. If there are more than 20, use the cursor to fetch the next batch."
Get Single Paylocity Employee By ID
Fetches a comprehensive profile for a specific worker, including their current status, position, and active pay rates. The get_single_paylocity_employee_by_id tool is critical for workflows that require verifying an individual's compensation before making payroll adjustments.
"Look up the employee record for ID '883492' and tell me their current pay rate and FLSA status."
List All Paylocity Employee Shifts
Extracts scheduled shifts for a specific employee. The list_all_paylocity_employee_shifts tool is heavily used for time and labor audits. It requires an employee_id and can filter by startDateTime.
"Retrieve all scheduled shifts for employee ID '10293' for the first week of November. Group them by cost center."
Update a Paylocity Job By ID
Modifies a company job code. The update_a_paylocity_job_by_id tool triggers a full PUT request. You must instruct Claude to fetch the job first using the get tool, modify the desired fields, and pass the complete object back to prevent data loss.
"Fetch the job code 'WAREHOUSE_L1'. We need to deactivate it. Send the update request with the exact same data, but change isActive to false."
List All Paylocity Employee Deductions
Returns an employee's active recurring deductions (e.g., healthcare, 401k). The list_all_paylocity_employee_deductions tool provides the critical id (resourceId) required if you need to update or delete a specific deduction line item.
"List all active recurring deductions for employee ID '99210'. Flag any deductions with a priority higher than 5."
Create a Paylocity Pay Entry Batch
Initiates a payroll batch submission for a specific check date. The create_a_paylocity_pay_entry_batch tool accepts batch metadata and an array of pay entries. It returns a timeImportFileTrackingId which must be polled to confirm the batch was successfully validated by Paylocity.
"Create a new pay entry batch for the check date '2026-03-15'. Include the approved bonus pay entries for the engineering team. Once submitted, give me the tracking ID."
To view the complete Paylocity tool inventory, including query structures, JSON schemas, and data models for custom fields, earnings, and webhooks, visit the Paylocity Integration Page.
Workflows in Action
Exposing individual endpoints to an LLM is useful, but the real power of MCP comes from chaining tools together to automate multi-step domain workflows.
Scenario 1: Pre-Payroll Shift and Deduction Audit
The Problem: An HR administrator needs to audit a contractor's upcoming shifts and verify that a specific uniform deduction is actively applied before the payroll cut-off.
User Prompt:
"Audit the upcoming scheduled shifts for employee ID '44102' for next week. Also, check their active deductions and confirm if the 'UNIFORM_FEE' deduction code is present. Calculate the total hours scheduled."
How Claude Executes the Workflow:
- Calls
list_all_paylocity_employee_shiftspassing theemployee_idand astartDateTimefilter for the upcoming week. - Calls
list_all_paylocity_employee_deductionsusing the sameemployee_id. - Claude analyzes the shift array, summing the
durationfields to calculate total scheduled hours. - Claude filters the deductions array looking for the specific
code. - Claude formulates a final summary for the administrator, alerting them if the deduction is missing or if the scheduled hours exceed standard capacity.
sequenceDiagram
participant User as User
participant Claude as Claude
participant MCP as Truto MCP
participant API as Paylocity API
User->>Claude: "Audit shifts and deductions for employee 44102..."
Claude->>MCP: Call tool: list_all_paylocity_employee_shifts<br>{"employee_id": "44102", "startDateTime": "2026-11-01"}
MCP->>API: GET /v1/companies/{companyId}/employees/44102/shifts
API-->>MCP: Array of shift objects
MCP-->>Claude: JSON response
Claude->>MCP: Call tool: list_all_paylocity_employee_deductions<br>{"employee_id": "44102"}
MCP->>API: GET /v1/companies/{companyId}/employees/44102/deductions
API-->>MCP: Array of deduction objects
MCP-->>Claude: JSON response
Claude->>User: "Employee 44102 is scheduled for 38 hours. The UNIFORM_FEE deduction is active."Scenario 2: Standardizing Job Codes and Launching a Batch
The Problem: A payroll manager needs to update a legacy job code to reflect a new internal naming convention, and then immediately submit an off-cycle bonus batch using that updated code.
User Prompt:
"Fetch the job code 'DEV_L2'. We need to update its description to 'Senior Software Engineer'. Apply the update. Then, submit a pay entry batch named 'Q4_Bonuses' for check date '2026-12-15' containing a $5,000 bonus for employee '10045' using the updated job code."
How Claude Executes the Workflow:
- Calls
get_single_paylocity_job_by_idto retrieve the completeDEV_L2job object. - Modifies the
descriptionfield in memory, keepingisActive,isCertified, andpayEntryintact. - Calls
update_a_paylocity_job_by_idpassing the fully reconstructed object to fulfill Paylocity's full-replacement requirement. - Calls
create_a_paylocity_pay_entry_batchconstructing the nested pay entry array with the employee ID, the $5,000 amount, and theDEV_L2job code. - Claude informs the user of the successful submission and provides the file tracking ID.
Security and Access Control
Giving an AI agent direct write access to a payroll system requires strict security boundaries. Truto's MCP architecture provides highly granular control over what the LLM can see and do:
- Method Filtering: When generating the server, use
config.methodsto restrict operations. A server configured withmethods: ["read"]ensures the agent can only executegetandlistoperations, physically blocking any chance of accidental job deletions or rogue batch submissions. - Tag Filtering: Use
config.tagsto limit the server's scope to specific API domains. For example, passingtags: ["shifts", "time_and_labor"]hides sensitive compensation tools and exposes only scheduling operations. - Enforced API Authentication: By default, possessing the MCP URL grants access. For production environments, setting
require_api_token_auth: trueforces the client to also pass a valid Truto API token in theAuthorizationheader, enforcing a zero-trust model. - Time-To-Live Expiry: Use the
expires_atconfiguration to provision ephemeral MCP servers. Once the timestamp passes, a Durable Object alarm automatically purges the token from the database and Cloudflare KV, revoking all agent access immediately.
Handling Paylocity Rate Limits in Production
Enterprise platforms strictly enforce API quotas. It is critical to understand that Truto does not automatically retry, throttle, or apply backoff logic when an upstream API throws a rate limit exception.
When Paylocity returns an HTTP 429 Too Many Requests error, Truto passes that error directly back to the caller (Claude) as a failed tool execution. However, Truto does normalize the upstream rate limit data into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification.
The system interacting with the MCP server (your agent orchestration layer or Claude itself) is responsible for reading these headers and executing the appropriate exponential backoff strategy before retrying the tool.
Final Thoughts
Connecting Paylocity to Claude via a custom integration requires months of building auth flows, parsing versioned schemas, and managing async orchestration. Truto's managed MCP architecture eliminates this overhead, transforming complex payroll operations into natural language capabilities instantly.
By leveraging Truto's dynamic tool generation, method filtering, and standardized schemas, engineering teams can safely deploy AI agents that audit shifts, reconcile deductions, and automate payroll batches without maintaining a single line of API glue code.
FAQ
- What is the easiest way to connect Paylocity to Claude?
- The best way to connect Paylocity to Claude is Elaichi: connect Paylocity to Elaichi once, then add Elaichi to Claude as a connector. Two steps, about a minute, with a 14-day free trial and no credit card required.