# Lucca MCP connector

The Lucca connector brings employees, employments, departments, legal entities, job positions and probationary periods into Claude, ChatGPT, Cursor and any MCP client, so each person can look up Lucca HR records inside their own access with every call logged.

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

## Facts

| | |
| --- | --- |
| Application | Lucca |
| Category | HRIS |
| AI tools | 35 |
| Authentication | App credentials |
| 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 | No. 35 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Lucca is connected

- List employees in the Paris business establishment.
- Which departments gained job positions this quarter?
- Show employments starting next month by legal entity.

## Connect Lucca in Elaichi

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

1. Open Connections, choose Add connection, and pick Lucca.
2. Optionally set Share with, then press Connect.
3. Paste your Lucca app credentials. Lucca authenticates the app rather than a person. One person supplies the credentials once, and everyone else works through Share with.

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

## Connect Lucca 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 Lucca 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 Lucca 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 Lucca 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 Lucca 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 Lucca through Elaichi

### Answer a headcount question in seconds

HR. Ask how many people sit in a department or legal entity in Lucca and get the list back without opening a report builder.

### Check which probationary periods end soon

HR. Pull the probationary periods recorded in Lucca and see whose review date is coming up before the manager asks.

### Look up an employee's employment history

People Ops. Bring back a person's employments, job position, occupation category and profession from Lucca in one place ahead of a career conversation.

### See who is on my team

Managers. Ask for the employees in your department in Lucca, with their job positions and establishments, when you are preparing a one-to-one or planning cover.

### Reconcile headcount by legal entity

Finance. List employees and employments per legal entity and business establishment in Lucca to check them against payroll and budget figures at month end.

### Verify org structure before a directory sync

IT. Compare departments, establishments and employee records in Lucca against your identity provider to catch mismatches before they cause access problems.

## Frequently asked questions

### How do I connect Lucca to Claude?

Two steps. In Elaichi, choose Lucca and enter your Lucca app credentials; there is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Sign in to Elaichi when Claude asks, and Lucca is ready to use.

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

Yes. Once Lucca 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 Lucca once and every client you sign in to can use it.

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

With Lucca connected, an agent can look up employees, their employments and personal records, and the structure around them: departments, legal entities, business establishments, job positions, professions, occupation categories, job qualifications, probationary periods and employment templates. That means questions like who is in the Paris establishment, whose probationary period ends this month, or which job positions exist in a department get answered from live Lucca records. Because Lucca has many lookups, short concrete asks such as list departments work better than long sentences.

### Does connecting Lucca give the AI everything in my HR system?

No. When you connect Lucca through Elaichi the agent works inside your own Lucca access, so it sees only the employees, personal records and entities you are allowed to see. Elaichi can narrow that further with restrictions per team or per person, and it can never widen access beyond what Lucca already grants you.

### Can my team share one Lucca connection?

Yes. One person connects Lucca in Elaichi and shares the connection with a team, and nobody else ever handles the Lucca credentials. Each teammate still signs in to Elaichi as themselves, so every request to Lucca is recorded in the audit log under their own name.

### Can I stop an agent from deleting or changing things in Lucca?

The Lucca connector in Elaichi is read-only today: it looks up employees, employments and organization records and does not create, edit or delete anything in Lucca. On top of that, restrictions in Elaichi work per action, and any action you block is never advertised to Claude, ChatGPT or any other client, so no prompt can reach it.

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

Offboarding a person in Elaichi ends their access to Lucca through every client at once, with no separate steps in Claude, ChatGPT or Cursor. If they had shared a Lucca connection, it keeps working for everyone else on the team. When you want Lucca gone entirely, disconnecting it once in Elaichi removes it from every client.

## All 35 Lucca tools

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

- **List all Lucca employees** (List). List employees in Lucca. Returns id, type, url, remoteId, portrait, givenName, familyName, employeeNumber, status, email, birthDay, phoneNumber, applicableEmployment, applicableJobPosition, createdAt, lastUpdatedAt, and links fields in the response.
- **Get single Lucca employee by ID** (Get). Get detailed information about a specific employee in Lucca using id. Returns fields such as id, type, url, remoteId, portrait, givenName, familyName, employeeNumber, status, email, birthDay, phoneNumber, applicableEmployment, applicableJobPosition, createdAt, lastUpdatedAt, links, and embedded with employment and job-position information.
- **List all Lucca legal entities** (List). List legal-entities in Lucca. Returns a paginated array of legal-entity objects with fields: id, type, url, legalName, remoteId, isArchived, countryCode, currencyCode, taxIdentificationNumber, industryCode, createdAt, lastUpdatedAt, lastArchivedAt, and links (including businessEstablishments) in the response.
- **Get single Lucca legal entity by ID** (Get). Get a specific legal-entity in Lucca by id. Returns id, type, url, legalName, remoteId, isArchived, countryCode, currencyCode, taxIdentificationNumber, industryCode, createdAt, lastUpdatedAt, lastArchivedAt, links, and embedded fields.
- **List all Lucca business establishments** (List). List business-establishments in Lucca. Returns id, type, url, name, remoteId, legalEntity, taxIdentificationNumber, address, timezoneId, holidaysCalendar, isArchived, lastArchivedAt, createdAt, lastUpdatedAt fields for each business-establishment.
- **Get single Lucca business establishment by ID** (Get). Retrieve a business-establishment in Lucca by id. Returns id, type, url, name, remoteId, legalEntity, taxIdentificationNumber, address, timezoneId, holidaysCalendar, isArchived, lastArchivedAt, createdAt, lastUpdatedAt, links, and embedded fields in the response.
- **List all Lucca departments** (List). List departments in Lucca. Returns items with fields: id (department identifier), type (resource type), url (department URL), name, remoteId, isArchived, description, parent, level (department depth), manager, sortOrder, and links. Response also includes totalCount and pagination links.
- **Get single Lucca department by ID** (Get). Get a department in Lucca by id. Returns id, type, url, name, description, remoteId, isArchived, parent, level, manager, sortOrder, links, and embedded fields in the response.
- **List all Lucca employee personal records** (List). List employee-personal-records in Lucca. Returns id, type, url, associated employee, title, legalGender, birthDate, insuranceNumber, nationalitiesCountryCodes, bankAccount, phoneNumber, email, and links for each record in the response.
- **Get single Lucca employee personal record by ID** (Get). Retrieve an employee-personal-record in Lucca by id. Returns fields such as id, type, url, employee, title, legalGender, birthDate, insuranceNumber, nationalitiesCountryCodes, bankAccount, phoneNumber, email, links, and embedded (which includes related employee details).
- **List all Lucca employments** (List). List employments in Lucca. Returns items with id, employee, legalEntity, start and end dates, template, createdAt, lastUpdatedAt, document, and resource links in the response.
- **Get single Lucca employment by ID** (Get). Get details about a specific employment in Lucca using id. Returns id, type, url, remoteId, employee, legalEntity, start, end, document, template, createdAt, lastUpdatedAt, links, and embedded fields in the response.
- **List all Lucca job positions** (List). List job-positions in Lucca. Returns job-positions with fields including id, employment, startsOn, endsOn, businessEstablishment, department, jobTitle, jobQualification, manager, occupationCategory, workingTimeArrangement, notes, changedAttributes, createdAt, and lastUpdatedAt.
- **Get single Lucca job position by ID** (Get). Get a job-position in Lucca by id. Returns job-position details including id, type, url, employment, employee, startsOn, endsOn, businessEstablishment, jobTitle, jobQualification, manager, occupationCategory, workingTimeArrangement, department, document, notes, changedAttributes, createdAt, lastUpdatedAt, links, and embedded resources.
- **List all Lucca probationary periods** (List). List probationary-periods in Lucca. Returns id, type, url, employment, startsOn, endsOn, initialEndsOn, extendedEndsOn, createdAt, lastUpdatedAt, and links fields for each probationary-period.
- **Get single Lucca probationary period by ID** (Get). Get a probationary-period in Lucca by id. Returns id, type, url, employment reference, startsOn, endsOn, initialEndsOn, extendedEndsOn, createdAt, lastUpdatedAt, links, and embedded fields in the response.
- **List all Lucca occupation categories** (List). List occupation-categories in Lucca. Returns each occupation-category's id, type, url, title, businessEstablishments, and t9n fields in the response.
- **Get single Lucca occupation category by ID** (Get). Get a specific occupation-category in Lucca by id. Returns fields: id (identifier), type (always 'occupation-category'), url (resource URL), title (unique name), businessEstablishments (applicable business-establishments or null), t9n (translations), links, and embedded.
- **List all Lucca professions** (List). List professions in Lucca. Returns id, type, url, title, isArchived, t9n, and links fields for each profession.
- **Get single Lucca profession by ID** (Get). Get details about a specific profession in Lucca by id. Returns id, type, url, title, isArchived, t9n (translations), links, and embedded fields in the response.
- **List all Lucca job qualifications** (List). List job-qualifications in Lucca. Returns a paginated array of job-qualification objects including id, type, url, title, profession, rank, t9n, createdAt, lastUpdatedAt, and links fields in the response.
- **Get single Lucca job qualification by ID** (Get). Get a job-qualification in Lucca by id. Returns id, type, url, title (unique), profession (profession id, type, url), rank, createdAt, lastUpdatedAt, and links in the response.
- **List all Lucca employment templates** (List). List employment-templates in Lucca. Returns id, type, url, title, legalEntities, term, and source for each employment-template in the response.
- **Get single Lucca employment template by ID** (Get). Get an employment-template in Lucca by id. Returns id, type, url, title, legalEntities (array of legal-entity references), term, source, t9n (translations), createdAt, lastUpdatedAt, links (extensionDefinitions), and embedded fields.
- **List all Lucca webhook endpoints** (List). List webhook-endpoints in Lucca. Returns id, type, url, webhookUrl, topics, status fields for each webhook-endpoint in the response. Requires no parameters.
- **Get single Lucca webhook endpoint by ID** (Get). Get a webhook-endpoint in Lucca by id. Returns fields including id, type, url, apiVersion, webhookUrl, topics, status, contentType, createdAt, lastUpdatedAt, and links in the response.
- **Create a Lucca webhook endpoint** (Create). Create a webhook-endpoint in Lucca. Returns id, type, url, apiVersion, webhookUrl, topics, status, contentType, secret, createdAt, lastUpdatedAt, and links in the response. All returned fields are required for the created resource.
- **Update a Lucca webhook endpoint by ID** (Update). Update a webhook-endpoint in Lucca. Requires id. Returns id, type, url, apiVersion, webhookUrl, topics, status, contentType, createdAt, lastUpdatedAt, and links fields in the response.
- **Delete a Lucca webhook endpoint by ID** (Delete). Delete a webhook-endpoint in Lucca. Requires id. No content is returned in the response upon successful deletion.
- **List all Lucca webhook deliveries** (List). List webhook-deliveries in Lucca. Returns an array of webhook-delivery objects with fields: id (unique identifier), type, url, nextAttemptAt (next attempt timestamp), attemptsCount, status, event (event reference), webhookEndpoint (endpoint reference), and links (attempt URLs).
- **Get single Lucca webhook delivery by ID** (Get). Get details about a specific webhook-delivery in Lucca. Requires id. Returns id, type, url, nextAttemptAt (next planned attempt UTC), attemptsCount (number of attempts), status (delivered/undelivered/failed), event reference, webhookEndpoint reference, links, and embedded event.
- **Lucca webhook deliveries ping** (Action). Send a ping event to a webhook-endpoint in Lucca. Requires webhook_endpoint_id. Returns id, type, url, nextAttemptAt (timestamp of next attempt), attemptsCount, status (delivered/undelivered/failed), event (reference), webhookEndpoint (reference), links (e.g., attempts URL), and embedded event in the response.
- **List all Lucca webhook delivery attempts** (List). List webhook-delivery-attempts in Lucca. Returns id (attempt identifier), type (resource type), url (resource URL), signature, webhookDelivery (delivery reference), isSuccessful (status), responseStatusCode, errorResponseBody, createdAt, links, and embedded objects in the response.
- **Get single Lucca webhook delivery attempt by ID** (Get). Get a webhook-delivery-attempt in Lucca by id. Returns id, type, url, signature, webhookDelivery, isSuccessful, responseStatusCode, errorResponseBody, createdAt, links, and embedded containing webhook-delivery and event data.
- **Get single Lucca portrait by ID** (Get). Retrieve a portrait in Lucca by id. Returns id, type, url, employee, fileName, contentType, createdAt, links, and embedded fields in JSON. To download the image file, set Accept: image/* header.
