Connect Dayforce to Claude: Sync Benefits, Records, and Reports
from the team behind Truto
Dayforce in Claude, in about a minute.
The best way to connect Dayforce to Claude is Elaichi: connect Dayforce 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 Dayforce
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 Dayforce into your own product? This guide is for you.
Learn how to build a managed MCP server for Dayforce to give Claude secure read and write access to HR records, benefits carrier feeds, and scheduling data. Includes complete code examples and workflow breakdowns.
The developer guide
A complete engineering guide to securely connecting Dayforce to Claude using Truto's managed MCP server. Automate HR ops, benefits feeds, and scheduling.
If your team needs to connect Dayforce to Claude to automate HR workflows, audit benefits carrier feeds, or manage complex workforce scheduling, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's tool calls and Dayforce's REST APIs. 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-dayforce-to-chatgpt-manage-payroll-schedules-and-hr-ops/ or explore our broader architectural overview on /connect-dayforce-to-ai-agents-automate-recruiting-and-personnel-tasks/.
Giving a Large Language Model (LLM) read and write access to a sprawling Human Capital Management (HCM) ecosystem like Dayforce is an engineering challenge. You have to handle fragmented identity patterns, map massive JSON schemas for compliance data, and deal with Dayforce's strict API quotas. Every time an endpoint shifts or a custom field is introduced, you have to update your server code, redeploy, and test the integration.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Dayforce, connect it natively to Claude Desktop, and execute complex HR workflows using natural language.
The Engineering Reality of the Dayforce API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools over JSON-RPC 2.0, the reality of implementing it against Dayforce's APIs requires heavy lifting. Dayforce is built to manage payroll, global benefits, and strict labor compliance. Its API reflects that domain complexity.
If you decide to build a custom Dayforce MCP server, here are the specific integration challenges you will face:
The Two-Step Retrieval Pattern (XRefCodes)
Unlike standard REST APIs where a GET /employees endpoint returns full user profiles, Dayforce heavily utilizes a two-step retrieval pattern. An endpoint like list_all_dayforce_employees returns a list of lightweight records containing an XRefCode. To get the actual employee data, you must then iterate over those codes and call get_single_dayforce_employee_by_id. Exposing this raw pattern to an LLM often exhausts its context window or results in hallucinated data. The MCP server must provide well-defined schemas that instruct the model to execute these two steps sequentially.
Caller-Assigned Identifiers and Strict Creation Logic
When creating records - such as an organizational unit or a new job - Dayforce requires the caller to generate and provide a unique XRefCode in the request body. If the identifier already exists, Dayforce does not default to an upsert operation; it outright rejects the request with an HTTP 400 error. Your MCP tools must explicitly guide the LLM to handle these rejections by catching the error and falling back to a PATCH or PUT update tool.
Handling Rate Limits and 429s
When an AI agent is tasked with auditing a benefits feed or looping through hundreds of employee schedules, it will likely hit Dayforce's API governor limits. It is critical to note that Truto does not retry, throttle, or absorb rate limit errors. When the Dayforce API returns an HTTP 429, Truto passes that exact error back to the caller (the LLM client). Truto normalizes the upstream rate limit information into standardized HTTP headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. The LLM client or orchestration framework is entirely responsible for reading these headers and executing a backoff strategy.
Generating a Dayforce MCP Server
Truto dynamically generates MCP tools based on integration documentation and resource definitions. Rather than hand-coding endpoints, Truto maps Dayforce's API surface into discrete, callable tools. These tools are served via a JSON-RPC 2.0 endpoint that authenticates requests using a secure, hashed token.
You can generate this server via the Truto UI or programmatically via the API.
Method 1: Via the Truto UI
- Navigate to the Integrated Accounts page in your Truto dashboard.
- Select your connected Dayforce account.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration (e.g., restrict to
readmethods only, or filter by specific tags likebenefits). - Copy the generated MCP server URL.
Method 2: Via the Truto API
For teams building programmatic AI workflows, you can generate MCP servers on the fly. Truto generates a secure token, stores a hashed version in a globally distributed key-value store, and returns a ready-to-use URL.
curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Dayforce HR Ops Agent",
"config": {
"methods": ["read", "write"],
"tags": ["employees", "schedules", "benefits"]
},
"expires_at": "2026-12-31T23:59:59Z"
}'The response provides the self-contained URL required to connect your LLM:
{
"id": "mcp_8a9b2c",
"name": "Dayforce HR Ops Agent",
"config": { "methods": ["read", "write"], "tags": ["employees", "schedules", "benefits"] },
"expires_at": "2026-12-31T23:59:59Z",
"url": "https://api.truto.one/mcp/a1b2c3d4e5f67890"
}Connecting the MCP Server to Claude
Once you have your Truto MCP URL, you can connect it directly to Claude Desktop or configure it manually for programmatic frameworks.
Method A: Via the Claude UI
- Open the Claude Desktop application.
- Navigate to Settings -> Integrations.
- Click Add MCP Server (or "Add custom connector").
- Paste your Truto MCP server URL (
https://api.truto.one/mcp/a1b2c3d4e5f67890) and click Add.
Claude will immediately execute a tools/list JSON-RPC call to discover the available Dayforce operations.
Method B: Via Manual Configuration File
If you are running custom agents or headless setups, you can define the MCP server in Claude's configuration file (claude_desktop_config.json). Truto supports Server-Sent Events (SSE) for remote tool execution.
{
"mcpServers": {
"dayforce_hr": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"--url",
"https://api.truto.one/mcp/a1b2c3d4e5f67890"
]
}
}
}Security and Access Control
Giving an LLM access to HR records and payroll data requires strict governance. Truto enforces security at the infrastructure layer, ensuring your AI agents only touch what you explicitly allow.
- Method Filtering: By defining
config.methods(e.g.,["read"]), you can enforce read-only access at the server level, preventing the LLM from accidentally updating an employee record. - Tag Filtering: The
config.tagsarray restricts the server to specific functional domains. If you tag Dayforce resources withbenefitsorschedules, the MCP server will silently drop any tools outside those tags. - Secondary Authentication (
require_api_token_auth): By default, the MCP token URL is self-authenticating. For high-security environments, enabling this flag requires the caller to also pass a valid Truto API token in theAuthorizationheader, adding a strict second layer of identity verification. - Automated Expiration (
expires_at): Truto enforces time-to-live via a distributed key-value store and scheduled background alarms. Once the timestamp passes, the server is permanently torn down, completely revoking LLM access.
Dayforce Hero Tools for Claude
When a tool is invoked, Truto's MCP router dynamically maps the LLM's flat input namespace into the distinct query and body schemas required by the Dayforce API. Here are the highest-leverage tools exposed by the Dayforce integration.
1. list_all_dayforce_employees
This is the required first step for most HR operations. It fetches the XRefCode identifiers for employees based on employment status, org unit, or hire date ranges.
"Claude, pull a list of all active employees hired in the last 30 days and extract their XRefCodes so we can audit their profiles."
2. get_single_dayforce_employee_by_id
Once you have an XRefCode, this tool retrieves the full employee record, including demographics, PayrollKey, HireDate, and contact information.
"Using the XRefCode 'EMP-90210', fetch the full employee profile and tell me their original hire date and current department."
3. update_a_dayforce_employee_by_id
Allows the agent to execute a full or partial update on an employee record. Because Dayforce expects nested objects for specific HR features, the LLM utilizes the provided JSON schema to structure the payload correctly.
"Update the employee profile for XRefCode 'EMP-90210'. Change their HomePhone to 555-0199 and set their RequiresExitInterview flag to true."
4. list_all_dayforce_employee_schedules
Retrieves the detailed workforce schedule for a specific employee, breaking down shift start times, net hours, published status, and labor metrics.
"Check the schedule for employee 'EMP-90210' for next week. Summarize their total net hours and flag any shifts that exceed 8 hours."
5. list_all_benefits_carrier_feed_multi_carrier_ongoing_exports
Retrieves the highly complex JSON export of employee and dependent benefit elections for a specific period. This is essential for automating benefits reconciliation.
"Pull the ongoing multi-carrier benefits export for the current plan year. Check the EmployeeRecords array and identify any employees missing dependent beneficiary details."
6. list_all_dayforce_employee_punches
Fetches time and attendance raw punches, including meal breaks and location transfers. Crucial for payroll dispute resolution.
"Retrieve all time punches for employee 'EMP-90210' from yesterday. Did they clock a meal break between their TimeStart and TimeEnd?"
7. dayforce_candidate_background_screening_status_bulk_update
Updates a candidate's background screening order status in the recruiting module.
"Update the background screening status for ScreeningRequestId 'REQ-551' to 'CLEARED' and verify the candidate PII data matches our internal records."
For a complete list of all supported operations, pagination behaviors, and raw schemas, review the Dayforce Integration Page.
Workflows in Action
Let's look at how specific personas use these tools to orchestrate multi-step automation.
Scenario 1: The Payroll Manager Auditing Time and Schedules
An HR Admin needs to verify if an employee missed a clock-out punch resulting in a schedule discrepancy.
"I need to check why Sarah Jenkins' pay seems low this week. Find her employee XRefCode, pull her published schedule for the last 5 days, and cross-reference it with her actual time punches."
Step-by-step execution:
- Claude calls
list_all_dayforce_employeesusing a name filter to retrieve Sarah'sXRefCode. - Claude calls
list_all_dayforce_employee_schedulesusing theXRefCodeto get her expectedNetHoursandTimeEnd. - Claude calls
list_all_dayforce_employee_punchesto get the actual recorded times. - Claude analyzes the delta and alerts the user that Sarah is missing a clock-out punch on Tuesday.
sequenceDiagram
participant User
participant Claude as Claude Desktop
participant Truto as Truto MCP Router
participant Dayforce as Dayforce API
User->>Claude: "Check schedule vs punches for Sarah Jenkins"
Claude->>Truto: call list_all_dayforce_employees
Truto->>Dayforce: GET /employees?name=Sarah
Dayforce-->>Truto: XRefCode: EMP-105
Truto-->>Claude: Return XRefCode
Claude->>Truto: call list_all_dayforce_employee_schedules
Truto->>Dayforce: GET /schedules?employee=EMP-105
Dayforce-->>Truto: Expected Shifts
Truto-->>Claude: Return Schedules
Claude->>Truto: call list_all_dayforce_employee_punches
Truto->>Dayforce: GET /punches?employee=EMP-105
Dayforce-->>Truto: Actual Punches
Truto-->>Claude: Return Punches
Claude-->>User: "Found a missing punch on Tuesday at 17:00"Scenario 2: The Benefits Administrator Reconciling Carrier Feeds
A Benefits Admin needs to ensure that Open Enrollment data was successfully formatted for an external healthcare provider.
"Pull the open enrollment multi-carrier export for provider 'BCBS-TX'. Analyze the JSON feed, verify that the planStartDate is correct, and list any employees whose WorkRightStatus is marked as NONE."
Step-by-step execution:
- Claude calls
list_benefits_carrier_feed_multi_carrier_open_enrollment_exportspassing the requiredcarrierXRefCodeand date ranges. - Claude parses the massive nested
Dataarray returned by the Proxy API. - Claude correlates the
EmployeeRecordsblock, checks theWorkRightStatusflags, and generates a formatted markdown table of compliance failures for the user.
Building Agentic HR Workflows
Building an AI agent that can safely navigate the intricacies of Dayforce's HCM ecosystem requires more than just API keys - it requires robust schema mapping, explicit tool scoping, and deterministic execution paths. Truto's dynamic MCP server architecture removes the burden of writing and maintaining TypeScript API wrappers, letting you focus on the workflow logic itself.
By generating scoped, time-bound MCP servers, you can give Claude the exact context it needs to audit payroll, orchestrate background checks, and sync benefits feeds securely.
FAQ
- What is the easiest way to connect Dayforce to Claude?
- The best way to connect Dayforce to Claude is Elaichi: connect Dayforce 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.
- How does Truto handle Dayforce API rate limits during large data pulls?
- Truto does not automatically retry, throttle, or absorb rate limit errors. If the Dayforce API returns an HTTP 429, Truto passes the error back to the caller (e.g., Claude) and normalizes the rate limit information into standard IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) so the client can execute a backoff strategy.
- Can I prevent Claude from modifying Dayforce employee records?
- Yes. When creating the MCP server, you can pass a configuration object setting `methods: ["read"]`. This restricts the tools generated by the MCP router to safe GET/LIST operations, silently dropping any write or custom tools.
- Do I need to hardcode the Dayforce tool schemas?
- No. Truto's MCP servers dynamically generate tools directly from integration resources and documentation. As Dayforce API definitions are updated, the schemas passed to Claude update automatically.