# Charlie MCP connector

The Charlie connector brings team members, teams, offices, leave requests, leave allowances, salaries and bank accounts from Charlie into Claude, ChatGPT, Cursor and any MCP client, with every question answered inside the access of the person asking.

Source: https://elaichi.ai/connectors/charlie/

## Facts

| | |
| --- | --- |
| Application | Charlie |
| Category | HRIS |
| AI tools | 22 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | Yes |

## What you can ask once Charlie is connected

- Which team members have leave requests approved next week?
- Show leave allowances remaining for the London office.
- List teams with more than five open leave requests.

## Connect Charlie in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Charlie.
2. Optionally set Share with, then press Connect.
3. Paste a Charlie API key. One person generates a token in Charlie and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Charlie tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Charlie to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Charlie to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Charlie to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Charlie to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Charlie tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Charlie through Elaichi

### See who is off next week

People. Ask which team members have leave booked over a given week, and get the list pulled straight from the leave requests in Charlie instead of clicking through each person's profile.

### Check remaining leave before saying yes

Managers. Before approving a holiday request, ask how much allowance a team member has left this year and what they have already booked, all read live from Charlie.

### Reconcile payroll against Charlie salaries

Finance. Pull the current salary records and bank account details held in Charlie for the people on this month's payroll run, and spot anything that does not match what the payroll provider has.

### Log a note after a one to one

People. After a catch up, tell the agent what was discussed and it adds a note to that team member's record in Charlie, filed under the right note type.

### Know who sits in which office

Operations. Ask for a headcount by office, or a list of everyone based at a particular location, using the offices and team member records kept in Charlie.

### Headcount and team shape on demand

Leadership. Get a breakdown of team members by team, see how each team has grown, and answer board questions from the teams and people data in Charlie without asking someone to export a spreadsheet.

## Frequently asked questions

### How do I connect Charlie to Claude?

Connect Charlie in Elaichi first: open the Charlie connector, paste in an API key generated from your Charlie account, and save. There is no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Sign in as yourself and Charlie is available in Claude.

### Does Charlie work with ChatGPT and Cursor as well as Claude?

Yes. Once Charlie is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Charlie once and every client you use picks it up.

### What can an AI agent actually do with my Charlie data?

With Charlie connected, an agent can look up team members, teams and offices, list leave requests and remaining leave allowances, and read the salary and bank account records your role allows you to see. It can also add a note to a team member's record and set up new note types. It cannot approve leave, change salaries or edit people's details, because the Charlie connector does not offer those actions.

### Does connecting Charlie give the AI access to everyone's salary and bank details?

No. Every call to Charlie runs under the access of the person who signed in, so an agent only sees the team members, salaries and bank accounts that person could already open in Charlie. Elaichi can narrow that further, for example hiding salary and bank account records from a manager's toolbox, but it can never grant anything the person does not already have in Charlie.

### Can my team share one Charlie connection?

Yes. One person connects Charlie in Elaichi and shares the connection with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so every question about leave, salaries or team members in Charlie is logged under their own name.

### Can I stop an agent from changing things in Charlie?

Yes. The Charlie connector is mostly read only, and the only actions that write anything, adding team member notes and note types, can be switched off per action in Elaichi. A blocked action is never shown to Claude, ChatGPT or any other client, so no prompt can reach it, and the connector has no way to delete anything in Charlie at all.

### What happens to a Charlie connection when someone leaves?

When you offboard someone in Elaichi, their access to Charlie through every AI client ends immediately, and a shared Charlie connection keeps working for everyone else on the team. If you want to remove Charlie entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 22 Charlie tools

Every tool below is callable through https://api.elaichi.ai/mcp once Charlie is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Charlie company** (List). Get details about the company in Charlie that owns the current credentials. Returns id, name, subdomain, and logo in the response.
- **List all Charlie leave allowances** (List). List all leave allowances in Charlie. Returns id, team_member, allowance_in_days, days_used, remaining_allowance_in_days, leave_types, period_start, and period_end for each record.
- **List all Charlie leave requests** (List). List all leave requests in Charlie. Returns an array of leave requests with fields such as id, team_member, approver, status, details, amount, request_type, start_date, and end_date.
- **Get single Charlie leave request by ID** (Get). Get a specific leave request in Charlie by id. Returns fields including id, team_member, approver, status, details, amount, units, request_type, start_date, and end_date.
- **List all Charlie offices** (List). List all offices belonging to the authenticated company in Charlie. Returns id, name, head (boolean), address, timezone, phone_number, and email for each office.
- **Get single Charlie office by ID** (Get). Get details of a specific office in Charlie using id. Returns fields such as id, name, head (indicates if head office), address, timezone, phone_number, and email.
- **List all Charlie salaries** (List). List all salaries in Charlie. Returns id, team_member, job_title, pay_rate, pay_period, pay_frequency, pay_currency, effective_date, and employment_type for each salary record.
- **Get single Charlie salary by ID** (Get). Get a specific salary in Charlie using id. Returns id, team_member, job_title, pay_rate, pay_period, frequency, pay_currency, effective_date, and employment_type fields.
- **List all Charlie team members** (List). List all team-members in Charlie. Returns an array of team member objects including id, company, first_name, last_name, work_email, job_title, employment_status, and other profile details.
- **Get single Charlie team member by ID** (Get). Get details of a specific team member in Charlie using id. Returns id, company, display_name, work_email, job_title, office, manager, teams, employment_status, and success fields in the response.
- **List all Charlie team member leave allowance** (List). Get the current leave allowance for a specific team member in Charlie. Requires id. Returns id, team_member, allowance_in_days, days_used, remaining_allowance_in_days, leave_types, period_start, and period_end.
- **List all Charlie team member leave requests** (List). List leave requests for a specific team member in Charlie. Requires id. Returns id, team_member, approver, status, details, amount, units, request_type, start_date, and end_date fields in the response.
- **List all Charlie team member salaries** (List). Get salaries for a specific team member in Charlie. Requires id. Returns id, team_member, job_title, pay_rate, pay_period, pay_frequency, pay_currency, effective_date, and employment_type for each salary record.
- **List all Charlie teams** (List). List all teams in Charlie. Returns each team's id, name, and team_members in the response.
- **Get single Charlie team by ID** (Get). Get details about a specific team in Charlie using id. Returns id, name, and team_members in the response.
- **List all Charlie bank accounts** (List). List all bank accounts in Charlie for the authenticated company. Returns team_member, account_number, sort_code, and bank_name for each account.
- **Get single Charlie bank account by ID** (Get). Get a bank account in Charlie by id. Returns team_member (owner of the account), account_number, sort_code (without punctuation), bank_name, and success status.
- **List all Charlie team member notes** (List). List notes for a specific team member in Charlie using id. Returns each note's id, team_member, team_member_note_type, label, and content fields in the response.
- **Create a Charlie team member note** (Create). Create a new team-member-note for a specific team member in Charlie. Requires id. Returns id, team_member, team_member_note_type, label, and content in the response.
- **List all Charlie team member note types** (List). List all team member note types in Charlie. Returns each note type’s id, name, type, and permissions structure for roles within the company.
- **Get single Charlie team member note type by ID** (Get). Get details of a specific team member note type in Charlie using id. Returns id, name, type, and permissions object describing access levels and visibility of the note type content.
- **Create a Charlie team member note type** (Create). Create a new team member note type in Charlie. Returns the created note type data, including id, name, type, and permissions object. Requires valid JSON body with at least the name field.
