Connect ShiftCare to ChatGPT: Manage Care Shifts and Client Notes
Learn how to connect ShiftCare to ChatGPT using Truto's managed MCP server. Automate care shifts, triage timesheets, and manage client notes without writing point-to-point API code.
You want to connect ShiftCare to ChatGPT so your AI agents can read staff rosters, update client notes, and automatically triage shift cancellations. If your team uses Claude, check out our guide on connecting ShiftCare to Claude or explore our broader architectural overview on connecting ShiftCare to AI Agents.
Care management and NDIS (National Disability Insurance Scheme) compliance require absolute precision. Giving a Large Language Model (LLM) read and write access to your ShiftCare instance is an engineering challenge. You either spend weeks building, hosting, and maintaining a custom Model Context Protocol (MCP) server, or you use a managed infrastructure layer that handles the boilerplate for you.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for ShiftCare, connect it natively to ChatGPT, and execute complex rostering and compliance workflows using natural language.
The Engineering Reality of the ShiftCare API
A custom MCP server is a self-hosted integration layer that translates an LLM's tool calls into REST API requests. While the open MCP standard provides a predictable way for models to discover tools, implementing it against a domain-specific platform like ShiftCare is painful. You aren't just building CRUD operations; you are building logic that must respect strict healthcare and labor compliance constraints.
If you decide to build a custom MCP server for ShiftCare, here are the specific architectural hurdles you will face:
Strict State Machines and Financial Lock-ins
ShiftCare's API enforces strict operational constraints to prevent billing anomalies. For example, you cannot simply DELETE a shift if it has already been invoiced. Attempting to do so will return an HTTP 409 Conflict. Furthermore, canceling a shift requires business logic: is it a standard cancellation, or a billable NDIS no-show? When updating leave requests, you cannot simply pass an approved_at timestamp—the API ignores it unless you use the specific approval_action field. If your MCP server doesn't parse these constraints and expose them in the JSON schema, the LLM will hallucinate invalid API requests.
Temporal Data and Timezone Drift
In care scheduling, time is everything. ShiftCare's API expects strict datetime formats, but heavily defaults to UTC in unexpected places. For instance, when creating a client note without an explicit requested_date, the system defaults to the current UTC date, which might differ from the account's local timezone (e.g., Australian Eastern Standard Time). If your AI agent relies on default parameters, it might log a critical care note on the wrong calendar day, causing compliance failures.
Rate Limits and 429 Exhaustion
ShiftCare enforces rate limits to protect its infrastructure. When building your integration layer, you must account for HTTP 429 Too Many Requests responses. Note on rate limits: Truto does not retry, throttle, or apply backoff on rate limit errors. When an upstream API returns HTTP 429, Truto passes that error to the caller. Truto normalizes upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. The caller (your application or the LLM orchestration layer) is strictly responsible for implementing retry and exponential backoff logic.
How to Create the ShiftCare MCP Server
Instead of building this infrastructure from scratch, you can use Truto to dynamically generate an MCP server mapped directly to your connected ShiftCare instance. You can do this via the UI or programmatically via the API.
Method 1: Via the Truto UI
If you are provisioning a connection for internal operational use, the UI is the fastest path.
- Log into your Truto dashboard.
- Navigate to the Integrated Accounts page and select your active ShiftCare connection.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration (e.g., restrict to
readmethods, or tag filters forshifts). - Copy the generated MCP server URL (e.g.,
https://api.truto.one/mcp/a1b2c3d4...).
Method 2: Via the Truto API
For platform engineers embedding AI into a broader product, you can generate MCP servers programmatically for any tenant.
Make a POST request to /integrated-account/:id/mcp:
curl -X POST https://api.truto.one/integrated-account/YOUR_ACCOUNT_ID/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "ShiftCare AI Ops Server",
"config": {
"methods": ["read", "write", "custom"]
}
}'The API responds with a securely hashed token URL and configuration metadata:
{
"id": "abc-123",
"name": "ShiftCare AI Ops Server",
"config": { "methods": ["read", "write", "custom"] },
"expires_at": null,
"url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}Connecting the MCP Server to ChatGPT
Once you have the Truto MCP Server URL, you must connect it to your LLM environment. The URL acts as the definitive authentication and schema endpoint.
Method A: Via the ChatGPT UI (Custom Connectors)
If you are using ChatGPT Enterprise, Pro, or Plus, you can attach the MCP server directly to your workspace:
- In ChatGPT, navigate to Settings → Apps → Advanced settings.
- Enable Developer mode.
- Under MCP servers / Custom connectors, click Add new server.
- Name: Enter a descriptive name (e.g., "ShiftCare Ops Agent").
- Server URL: Paste the Truto MCP URL (
https://api.truto.one/mcp/...). - Click Save.
ChatGPT will immediately connect to the URL, execute an initialize handshake, and parse the available ShiftCare tools.
Method B: Via Manual Config File (Local/CLI)
If you are running a local orchestrator or a custom client (like Claude Desktop or Cursor, which share the same config paradigms), you connect via an SSE (Server-Sent Events) transport. Create or modify your mcp.json configuration file:
{
"mcpServers": {
"shiftcare": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/YOUR_SECURE_TOKEN"
]
}
}
}Restart your client, and the tools will be instantly available in context.
ShiftCare Hero Tools for AI Agents
Truto automatically generates JSON Schema-backed tools directly from the ShiftCare API documentation. Here are the highest-leverage tools available for your AI agents.
List All ShiftCare Shifts
Tool: list_all_shift_care_shifts
Retrieves a filtered list of shifts. This is the cornerstone of scheduling logic, allowing the LLM to filter by date range, specific staff IDs, or client IDs.
Usage Note: The LLM should be instructed to handle pagination using the limit and next_cursor fields.
"Fetch all shifts for today where the status is 'scheduled'. Show me the assigned staff members and the start/end times."
Create a ShiftCare Shift
Tool: create_a_shift_care_shift
Creates a new shift with associated clients, staff, tasks, and recurrence rules.
Usage Note: Requires strict ISO 8601 formatting for start_at and end_at. You can map multiple staff members and clients to a single shift payload.
"Create a new shift for client ID 98765 tomorrow from 9 AM to 1 PM. Assign staff ID 12345 to the shift and publish it immediately."
Cancel a ShiftCare Shift
Tool: shift_care_shifts_cancel
Cancels a shift securely without relying on a hard delete.
Usage Note: You can specify whether to cancel without charge (marks unbillable) or with charge (keeps billable but applies an NDIS no-show absent code).
"Cancel the 3 PM shift for client ID 44332 today. Mark it as a late cancellation with charge, applying the standard no-show code."
List All ShiftCare Clients
Tool: list_all_shift_care_clients
Fetches client profiles including NDIS numbers, emergency contacts, addresses, and demographic data.
Usage Note: Crucial for agents that need context on a client before drafting a progress note or assigning a highly specific care worker.
"Pull up the client profile for 'Jane Doe' and list her NDIS number and primary contact information."
Create a ShiftCare Client Note
Tool: create_a_shift_care_client_note
Appends a note or incident report to a client's profile.
Usage Note: If requested_date is omitted, it defaults to the current UTC date. Always prompt the LLM to define the local date explicitly if logging retrospective notes.
"Log a new client note for Jane Doe regarding today's visit. Category: 'Health Update'. Subject: 'Medication change'. Make sure to set the requested date to today's local date."
List All ShiftCare Staff
Tool: list_all_shift_care_staff
Returns the staff directory, including roles, employment types, languages spoken, and onboarding statuses.
Usage Note: Useful for an AI agent performing intelligent routing—such as finding an available staff member who speaks a specific language.
"Find all active staff members who are registered as 'Support Worker' and speak Spanish."
List All ShiftCare Timesheets
Tool: list_all_shift_care_timesheets
Retrieves timesheet data including clock-in/clock-out timestamps, locations, and status.
Usage Note: Highly effective for compliance auditing and payroll reconciliation bots.
"Get all timesheets from last week. Flag any where the clock-in time was more than 15 minutes after the scheduled shift start."
For the complete inventory of available ShiftCare tools, including webhooks, progress notes, invoicing, and qualifications, view the ShiftCare integration page.
Workflows in Action
To understand the power of providing an LLM with direct ShiftCare API access, let's look at two real-world operational workflows.
Workflow 1: Emergency Shift Reassignment
When a support worker calls in sick at the last minute, operations teams scramble to find replacements. An AI agent can handle the triage and rescheduling instantly.
"Staff member ID 5543 just called in sick. Cancel all their shifts for today without charge. Find an available support worker to cover their 2 PM shift for client Jane Doe, and reassign the shift to them."
Execution Steps:
list_all_shift_care_shifts: The agent queries shifts for today filtering bystaff_id = 5543.shift_care_shifts_cancel: The agent cancels the retrieved shifts, passing the flag to avoid billing the clients.list_all_shift_care_staff: The agent looks up available staff who meet the role requirements.create_a_shift_care_shift: The agent creates a replacement shift for 2 PM with the newly identified staff member.
sequenceDiagram
participant User as Operations Manager
participant Agent as ChatGPT
participant MCP as Truto MCP Server
participant Upstream as ShiftCare API
User->>Agent: "Cancel ID 5543's shifts today and reassign the 2PM slot."
Agent->>MCP: Call list_all_shift_care_shifts
MCP->>Upstream: GET /api/shifts?staff_id=5543
Upstream-->>MCP: Returns 2 shifts
MCP-->>Agent: Data returned
Agent->>MCP: Call shift_care_shifts_cancel
MCP->>Upstream: POST /api/shifts/{id}/cancel
Upstream-->>MCP: 200 OK
MCP-->>Agent: Shift canceled
Agent->>MCP: Call create_a_shift_care_shift
MCP->>Upstream: POST /api/shifts (New Staff ID)
Upstream-->>MCP: 201 Created
MCP-->>Agent: Shift created
Agent-->>User: "Shifts canceled. 2PM shift reassigned to John Smith."Workflow 2: End-of-Day Timesheet and Notes Audit
Healthcare compliance requires that notes are logged for every shift and that timesheets match the roster. An AI agent can run a daily audit to identify gaps.
"Review all timesheets for yesterday. Cross-reference them with the client notes. Tell me which staff members clocked out of a shift but failed to log a client note."
Execution Steps:
list_all_shift_care_timesheets: The agent fetches timesheets for the previous day (fromandtodates).list_all_shift_care_progress_notes: The agent queries progress notes for the same date range.- Local Logic: The LLM correlates the
shift_idfrom the timesheets against theshift_idon the progress notes. - Output: The agent generates a discrepancy report alerting the management team to the missing documentation.
Security and Access Control
Exposing operational care systems to an LLM requires strict security guardrails. Truto's MCP servers are designed with zero-trust principles:
- Method Filtering: Restrict a server to read-only access by passing
methods: ["read"]during creation. This ensures the LLM can audit timesheets but cannot accidentally delete or create shifts. - Tag Filtering: Limit the server's scope to specific domains. Passing
tags: ["shifts", "clients"]ensures the agent cannot access financial invoices or global webhook configurations. - API Token Authentication: Enable
require_api_token_auth: trueso the MCP URL alone is not enough to execute a tool. The client must also pass a valid Truto API token via a Bearer header. - Ephemeral Servers: Set an
expires_attimestamp to create temporary MCP servers. Once the timestamp passes, the server is automatically destroyed from KV and the database, instantly revoking the LLM's access.
Modernize Care Operations with Truto
Connecting ShiftCare to ChatGPT transforms your LLM from a passive chatbot into an active care coordination system. By leveraging Truto's dynamic MCP server generation, your engineering team skips the boilerplate of OAuth flows, rate limit normalization, and schema mapping, allowing you to ship AI integrations in minutes instead of months.
Stop writing custom API wrappers. Turn your SaaS ecosystem into an AI-ready toolset immediately.
FAQ
- How do I connect ShiftCare to ChatGPT?
- You can connect ShiftCare to ChatGPT by creating a Model Context Protocol (MCP) server via Truto. Generate the server URL in the Truto UI or API, then add it as a Custom Connector in ChatGPT's developer settings.
- Can ChatGPT create or cancel shifts in ShiftCare?
- Yes. By provisioning an MCP server with write permissions, ChatGPT can use tools like `create_a_shift_care_shift` and `shift_care_shifts_cancel` to manage the care roster automatically.
- How does Truto handle ShiftCare API rate limits for AI agents?
- Truto does not retry or absorb rate limit errors. If ShiftCare returns a 429 error, Truto passes it to the caller along with standardized IETF headers. The client or LLM orchestrator must handle the backoff logic.
- Can I limit ChatGPT's access to read-only ShiftCare data?
- Yes. When creating the MCP server in Truto, you can pass `methods: ["read"]` to ensure the AI agent can only fetch data like timesheets and client lists, without the ability to mutate records.