---
title: "Connect Charlie to Claude: Sync employee profiles and bank info"
slug: connect-charlie-to-claude-sync-employee-profiles-and-bank-info
date: 2026-06-08
author: Uday Gajavalli
categories: ["AI & Agents"]
excerpt: "Learn how to connect Charlie to Claude using Truto's SuperAI MCP server. Sync employee profiles, bank information, and leave requests directly into your AI workflows."
tldr: "Connect Charlie to Claude in minutes via Truto's auto-generated MCP servers. Expose HRIS endpoints like team members, salaries, and bank accounts as native AI tools with built-in access controls."
canonical: https://truto.one/blog/connect-charlie-to-claude-sync-employee-profiles-and-bank-info/
---

# Connect Charlie to Claude: Sync employee profiles and bank info


Connecting your HRIS directly to Claude unlocks powerful operational capabilities for your HR, finance, and IT teams. By integrating Charlie HR with Claude via the [Model Context Protocol (MCP)](https://truto.one/what-is-an-mcp-server-the-2026-architecture-guide-for-saas-pms/), you can automate employee onboarding, audit bank details, and query leave balances in real time through natural language.

This article is part of a set on integrating Charlie with AI platforms. If your team uses ChatGPT, check out our guide on [connecting Charlie to ChatGPT](https://truto.one/connect-charlie-to-chatgpt-manage-leave-salaries-and-offices/). If you are building custom autonomous workflows, read our post on [connecting Charlie to AI Agents](https://truto.one/connect-charlie-to-ai-agents-automate-hr-notes-and-team-data/).

Here is the step-by-step technical guide to connecting Charlie to Claude using Truto's [SuperAI MCP Server](https://truto.one/best-mcp-server-platform-for-ai-agents-connecting-to-enterprise-saas/).

## The Engineering Reality of the Charlie API

Building a custom integration for Charlie is not as simple as wrapping standard CRUD endpoints. When exposing HRIS data to an LLM, you have to account for several domain-specific API characteristics:

1. **Nested Leave Period Constraints:** Leave allowances in Charlie are not flat scalar values. The `allowance_in_days` is deeply tied to `period_start`, `period_end`, and specific arrays of `leave_types`. LLMs struggle to infer this temporality, so tools must cleanly separate *historical* leave from *current* period allowance.
2. **Strict Bank Details Formatting:** Charlie expects bank information (like UK sort codes) to follow strict formatting conventions. The `sort_code` field must be submitted without punctuation. If an LLM hallucinates hyphens (e.g., `12-34-56`), the API request will fail. We combat this by providing exact JSON Schema instructions in the tool definitions.
3. **Rate Limits and Backoff:** Truto **does not retry, throttle, or apply backoff** on rate limit errors. When the upstream Charlie API returns an HTTP 429 (Too Many Requests), Truto passes that error directly to the caller. Truto normalizes the upstream rate limit information into standard headers (`ratelimit-limit`, `ratelimit-remaining`, `ratelimit-reset`) per the IETF specification. Your client implementation (or the AI orchestration layer) is strictly responsible for handling retries and exponential backoff.

Truto handles the heavy lifting of tool generation by dynamically mapping Charlie's API endpoints, required fields, and response schemas into LLM-ready tools. You do not need to write integration code.

## Creating the Charlie MCP Server

An MCP server in Truto maps to a single connected Charlie account. It serves a JSON-RPC 2.0 endpoint that clients like Claude can query. You can spin up this server through the UI or programmatically via the API.

### Option 1: Via the Truto UI

1. Log into your Truto dashboard and navigate to the **Integrated Accounts** page.
2. Select your connected Charlie account.
3. Click on the **MCP Servers** tab.
4. Click **Create MCP Server**.
5. Select your desired configuration (e.g., restrict to `read` methods only, add tags, or set an expiry date).
6. Copy the generated MCP Server URL (e.g., `https://api.truto.one/mcp/a1b2c3d4...`).

### Option 2: Via the API

You can dynamically provision MCP servers for your users by sending a `POST` request to the Truto API. This creates a secure, hashed token stored in distributed KV.

```bash
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": "Charlie HR Prod Data",
    "config": {
      "methods": ["read"],
      "tags": ["hr", "payroll"]
    },
    "expires_at": "2026-12-31T23:59:59Z"
  }'
```

The response will return a ready-to-use JSON-RPC 2.0 URL:

```json
{
  "id": "abc-123",
  "name": "Charlie HR Prod Data",
  "config": { "methods": ["read"], "tags": ["hr", "payroll"] },
  "expires_at": "2026-12-31T23:59:59Z",
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}
```

## Connecting to Claude

Once you have your Truto MCP URL, you can plug it into Claude.

### The UI Connector Flow (Web / Enterprise)

For Claude Web and Enterprise users, connecting the MCP server is natively supported in the interface:

1. In Claude, navigate to **Settings -> Connectors -> Add custom connector**.
2. Paste the Truto MCP Server URL.
3. Click **Add**.

Claude will immediately call the `tools/list` JSON-RPC method to discover all available Charlie resources and load them into the context window.

### The Manual Config File Approach (Claude Desktop)

If you are running Claude Desktop locally and prefer a file-based configuration, you must update your `claude_desktop_config.json`. Because Truto exposes a remote HTTP endpoint and Claude Desktop expects local `stdio` binaries, you can use a lightweight SSE proxy utility (like `@modelcontextprotocol/sse-client`) to bridge the gap.

Edit your configuration file (located at `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "charlie-hris": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/sse-client",
        "https://api.truto.one/mcp/a1b2c3d4e5f6..."
      ]
    }
  }
}
```

Restart Claude Desktop. The tools will now populate in the interface (identified by the hammer icon).

## Tool Inventory

Truto automatically generates precise, documented tools from the Charlie integration. View the complete schema on the [Charlie integration page](https://truto.one/integrations/detail/charlie).

### Hero Tools

These are the most commonly used endpoints for HR workflows:

#### `get_single_charlie_team_member_by_id`
Retrieves the core profile of a team member. Crucial for establishing context before looking up salaries or leave.
* **Contextual Note:** Returns standard fields like `display_name`, `work_email`, `job_title`, and nested arrays for `teams`.
* **Example Prompt:** "Get the profile details for employee ID 9012 to confirm their current job title and manager."

#### `list_all_charlie_bank_accounts`
Lists all bank accounts across the authenticated company.
* **Contextual Note:** Heavily used by finance teams for payroll syncs. The `sort_code` is returned without punctuation.
* **Example Prompt:** "List all bank accounts in Charlie so we can run an audit against our payroll software export."

#### `list_all_charlie_team_member_leave_requests`
Fetches historical and pending leave requests for a specific individual.
* **Contextual Note:** Requires passing the team member's ID. Returns status (e.g., pending, approved) and dates.
* **Example Prompt:** "Pull all leave requests for employee ID 334 to see if their holiday next week was approved."

#### `list_all_charlie_salaries`
Retrieves salary histories across the organization.
* **Contextual Note:** Returns the `pay_rate`, `pay_currency`, and `effective_date`. Highly sensitive data - best used with strict tag filtering.
* **Example Prompt:** "Fetch all salaries in Charlie and calculate the total monthly payroll run in GBP."

#### `create_a_charlie_team_member_note`
Allows the LLM to write back to Charlie, adding administrative notes to an employee's file.
* **Contextual Note:** Requires `team_member` ID, the `team_member_note_type`, and the text `content`.
* **Example Prompt:** "Create a note on employee 882's profile stating they completed their mandatory security compliance training today."

### Full Inventory

Here is the complete inventory of additional Charlie tools available. For full schema details, visit the [Charlie integration page](https://truto.one/integrations/detail/charlie).

* `list_all_charlie_company`: Get details about the company in Charlie that owns the current credentials.
* `list_all_charlie_leave_allowances`: List all leave allowances in Charlie.
* `list_all_charlie_leave_requests`: List all leave requests across the company.
* `get_single_charlie_leave_request_by_id`: Get a specific leave request in Charlie by id.
* `list_all_charlie_offices`: List all offices belonging to the authenticated company.
* `get_single_charlie_office_by_id`: Get details of a specific office in Charlie using id.
* `get_single_charlie_salary_by_id`: Get a specific salary record in Charlie using id.
* `list_all_charlie_team_members`: List all team members in the Charlie directory.
* `list_all_charlie_team_member_leave_allowance`: Get the current leave allowance for a specific team member.
* `list_all_charlie_team_member_salaries`: Get all historic and current salaries for a specific team member.
* `list_all_charlie_teams`: List all functional teams configured in Charlie.
* `get_single_charlie_team_by_id`: Get details about a specific team using id.
* `get_single_charlie_bank_account_by_id`: Get a specific bank account record by id.
* `list_all_charlie_team_member_notes`: List notes for a specific team member using id.
* `list_all_charlie_team_member_note_types`: List all team member note types and permissions.
* `get_single_charlie_team_member_note_type_by_id`: Get details of a specific team member note type.
* `create_a_charlie_team_member_note_type`: Create a new team member note type in Charlie.

## Workflows in Action

Connecting tools to an LLM is only useful if it solves real operational problems. Here is how specific personas use these tools in Claude.

### The Payroll Pre-Flight (Finance Ops)

Before running end-of-month payroll, finance operators need to ensure bank details match the system of record.

> "I am running the October payroll audit. Please get all bank accounts currently stored in Charlie, and then fetch all salaries so I can see who is getting paid what into which account."

**Step-by-step Execution:**
1. Claude calls `list_all_charlie_bank_accounts` to gather the master list of `account_number` and `sort_code` data tied to employee IDs.
2. Claude calls `list_all_charlie_salaries` to fetch the current `pay_rate` and `pay_frequency` for the company.
3. The model joins the data in context and provides the user with a clean markdown table mapping employees, their monthly pay, and their bank details.

### The Manager Leave Audit (Team Lead)

Managers frequently need to check if their direct reports have enough PTO left to approve an incoming request.

> "Can you check the remaining leave allowance for team member ID 505? Also list any pending leave requests they have right now."

**Step-by-step Execution:**
1. Claude calls `list_all_charlie_team_member_leave_allowance` using ID 505 to extract `remaining_allowance_in_days`.
2. Claude calls `list_all_charlie_team_member_leave_requests` using ID 505 and filters the JSON response for `status: pending`.
3. The model informs the manager: "Employee 505 has 8 days remaining in this period. They have one pending request for 3 days starting next Friday. Approving it will leave them with 5 days."

## Security and Access Control

Exposing an HRIS API to an LLM requires strict boundaries. Truto provides [security and compliance controls](https://truto.one/zero-data-retention-mcp-servers-building-soc-2-gdpr-compliant-ai-agents/) right at the MCP server level:

* **Method Filtering:** Restrict servers to specific operation types. Setting `methods: ["read"]` ensures the LLM can never trigger a destructive action like `delete` or a mutating action like `update`, no matter what prompt the user enters.
* **Tag Filtering:** Only expose subsets of tools. By filtering for a tag like `"directory"`, the MCP server will only expose basic profile tools, completely hiding sensitive `salaries` and `bank_accounts` endpoints.
* **require_api_token_auth:** Enable dual-layer authentication. When enabled, possession of the MCP URL is not enough; the client must also pass a valid Truto API token in the `Authorization` header to execute the tools.
* **expires_at:** Support temporary AI agent sessions. Generate an MCP server URL that automatically self-destructs at a specific ISO datetime, ensuring the token cannot be reused after the workflow completes.

> Stop hardcoding custom LLM tools for every new HR integration. Truto dynamically maps third-party APIs into Claude-ready MCP servers in seconds. Let's talk about your integration roadmap.
>
> [Talk to us](https://cal.com/truto/partner-with-truto)
