Lucca MCP server
Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on Lucca, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.
Overview
This tool pack gives an agent access to Lucca's HR suite, covering people, absences, timesheets, expenses, and variable pay, through two parallel tool sets: a Legacy v3 API set (broader, including timesheets and user creation) and a newer Latest API set (cleaner pagination, same people and absence reads). Choose one set per deployment to match the API your Lucca tenant exposes.
For setup instructions, see SnapLogic MCP Server quickstart.
Example Prompts
- Approve leave request 789
- Reject leave request 812 with the comment 'clashes with the release week'
- Approve that holiday request and add a note saying enjoy your break
- Sign off on leave request 456 for me
- Approve leave request 789 in Lucca
- Decline leave request 812 and explain that cover is unavailable
- Approve this time-off request with a thumbs-up comment
- Record my decision to approve request 456
- Submit an expense claim called 'Client lunch - Paris' for item 4521
- Create a claim for my Paris travel expense line
Tools
| Tool Name | Functions |
|---|---|
| LuccaApproveLeaveRequest | Approve or reject a leave request with an optional comment (Legacy v3 API). |
| LuccaApproveLeaveRequestV2 | Approve or reject a leave request on the newer Latest API. |
| LuccaCreateExpenseClaim | Create an expense claim from a captured temporary expense item. |
| LuccaCreateTimeEntry | Log a time entry for an employee against an activity. |
| LuccaCreateUser | Create a new employee record in Lucca. |
| LuccaGetLeaveBalance | Retrieve an employee's individual leave records over a date window (Legacy v3 API). |
| LuccaGetLeaveBalanceV2 | List an employee's leave accounts on the newer Latest API. |
| LuccaGetUser | Fetch one employee's full Lucca profile by user id (Legacy v3 API). |
| LuccaGetUserV2 | Fetch one employee record by id on the newer Latest API. |
| LuccaListDepartments | List Lucca departments with hierarchy, optionally under one parent (Legacy v3 API). |
| LuccaListDepartmentsV2 | Page through Lucca departments on the newer Latest API. |
| LuccaListExpenseClaims | List expense claims by owner, status, and declaration date. |
| LuccaListLeaveRequests | List leave requests by owner and status code (Legacy v3 API). |
| LuccaListLeaveRequestsV2 | Page through leave requests by owner and named status on the newer Latest API. |
| LuccaListTimeEntries | List logged time entries by employee and date window. |
| LuccaListVariableComp | List variable compensation items by employee and compensation nature, newest period first. |
| LuccaSearchUsers | Search Lucca employees by email, login, department, or employment status (Legacy v3 API). |
| LuccaSearchUsersV2 | Search Lucca employees by email and department on the newer Latest API. |
Set up the MCP Server tools
- Download lucca_tools.zip.
- In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded lucca_tools.zip. Designer unpacks each pipeline into the project.
- Attach the required account to the connectivity snaps (see Connection Setup).
- Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.
Configure account
Attach an API Suite account (OAuth 2.0 or Bearer token) to the HTTP Client snap in Designer after import.
These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.
See the SnapLogic account documentation for this connector: API Suite Account Configuration.
LuccaApproveLeaveRequest
Approves or rejects a leave request with an optional comment, defaulting to approve unless the caller explicitly passes false. Use LuccaApproveLeaveRequestV2 for the same action on the newer Latest API.
| Parameter | Type | Default | Description |
|---|---|---|---|
| leaveRequestId* | string | — | Id of the leave request to decide on. |
| approved | string | — | Set to false to reject; anything else (or omitted) approves. |
| comment | string | — | Optional comment attached to the decision. |
* Required parameter.
Try asking:
- Approve leave request 789
- Reject leave request 812 with the comment 'clashes with the release week'
- Approve that holiday request and add a note saying enjoy your break
- Sign off on leave request 456 for me
LuccaApproveLeaveRequestV2
Approves or rejects a leave request on the Lucca Latest API, with the same approve-by-default behavior and optional comment as LuccaApproveLeaveRequest. Use this version when your Lucca tenant is on the Latest API.
| Parameter | Type | Default | Description |
|---|---|---|---|
| leaveRequestId* | string | — | Id of the leave request to decide on. |
| approved | string | — | Set to false to reject; anything else (or omitted) approves. |
| comment | string | — | Optional comment attached to the decision. |
* Required parameter.
Try asking:
- Approve leave request 789 in Lucca
- Decline leave request 812 and explain that cover is unavailable
- Approve this time-off request with a thumbs-up comment
- Record my decision to approve request 456
LuccaCreateExpenseClaim
Creates an expense claim in Lucca by combining a title with an existing temporary expense item id, submitting the draft line as a formal claim. This is a Legacy v3 API tool; attach exactly one expense item per call.
| Parameter | Type | Default | Description |
|---|---|---|---|
| title* | string | — | Title of the expense claim. |
| expenseTempItemId* | string | — | Id of the temporary expense item to attach to the claim. |
* Required parameter.
Try asking:
- Submit an expense claim called 'Client lunch - Paris' for item 4521
- Create a claim for my Paris travel expense line
- Raise an expense claim titled 'October conference' from temp item 8890
- Turn expense item 4521 into a submitted claim
LuccaCreateTimeEntry
Logs a time entry for an employee with a start timestamp, optional end time, activity category, and comment. Use it to record work that has not yet been entered, typically after reviewing existing entries with LuccaListTimeEntries.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ownerId* | string | — | Employee id the time entry belongs to. |
| startsAt* | string | — | Entry start timestamp, e.g. 2026-05-12T09:00:00. |
| endsAt | string | — | Entry end timestamp. |
| axisSectionId | string | — | Activity axis section id to book the time against. |
| comment | string | — | Free-text note on the entry. |
* Required parameter.
Try asking:
- Log 9am to 5pm on 12 May for employee 123
- Record eight hours of project work for user 88 yesterday against axis section 42
- Book my Tuesday to the client project with the comment 'onsite workshop'
- Create a time entry starting 2026-05-12T09:00:00 for employee 123
LuccaCreateUser
Creates a new employee record in Lucca with identity and contract details, optionally placing them in a legal entity, department, and role. Use it to complete a new-hire setup end to end, after resolving the department id with LuccaListDepartments.
| Parameter | Type | Default | Description |
|---|---|---|---|
| firstName* | string | — | Employee's first name. |
| lastName* | string | — | Employee's last name. |
| login* | string | — | Lucca login for the new user. |
| mail* | string | — | Employee's email address. |
| dtContractStart* | string | — | Contract start date, e.g. 2026-07-01. |
| legalEntityId | string | — | Legal entity id the employee belongs to. |
| departmentId | string | — | Department id to place the employee in. |
| rolePrincipalId | string | — | Principal role id to assign to the new user. |
* Required parameter.
Try asking:
- Create a Lucca user for Marie Dupont, login mdupont, email [email protected], starting 1 July
- Onboard a new hire in department 5 under legal entity 1 starting next Monday
- Add Thomas Bernard to Lucca with a contract start of 2026-09-01
- Set up a Lucca account for our new engineer and put them in the Engineering department
LuccaGetLeaveBalance
Retrieves individual leave records for an employee over a date window, showing what was taken or booked within a period by account and day. Use LuccaGetLeaveBalanceV2 for the same information on the newer Latest API.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ownerId | string | — | Employee id whose leave records to return. |
| date | string | — | Lucca date filter for the window, e.g. since,2026-01-01 (defaults to since,2026-01-01). |
| leaveAccountId | string | — | Restrict to a single leave account id. |
| maxResults | string | 200 |
Page size cap on the returned records (default 200). |
Try asking:
- How much leave has employee 123 taken since January?
- Show me the leave records for user 88 this year
- What's booked against leave account 4 for employee 123?
- List every half-day of absence for user 210 since 2026-01-01
LuccaGetLeaveBalanceV2
Lists an employee's leave accounts on the Lucca Latest API, returning the accounts themselves rather than individual dated leave lines. Use the Legacy LuccaGetLeaveBalance when you need dated leave detail; use this when you just want to see which accounts an employee has.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ownerId | string | — | Employee id whose leave accounts to return. |
| limit | string | 200 |
Number of leave accounts per page (default 200). |
| page | string | 1 |
1-based page number to fetch (default 1). |
Try asking:
- What leave accounts does employee 123 have?
- Show me the leave account balances for user 88
- List the leave accounts in Lucca, 50 per page
- Fetch page 2 of the leave accounts for employee 210
LuccaGetUser
Retrieves the full profile of a Lucca employee by id, including reporting line, legal entity, and contract dates. Use LuccaGetUserV2 for the same lookup on the newer Latest API.
| Parameter | Type | Default | Description |
|---|---|---|---|
| user_id* | string | — | Lucca user id of the employee to retrieve. |
* Required parameter.
Try asking:
- Show me the Lucca profile for user 123
- Who is employee 4521's manager?
- What is the contract start date for user 88?
- Which legal entity does Lucca user 210 belong to?
LuccaGetUserV2
Retrieves a single employee record on the Lucca Latest API, returning the fields the versioned endpoint provides. Use the Legacy LuccaGetUser when you specifically need manager, legal entity, or contract date fields.
| Parameter | Type | Default | Description |
|---|---|---|---|
| user_id* | string | — | Lucca employee id to retrieve. |
* Required parameter.
Try asking:
- Pull the employee record for id 123 from Lucca
- Get details on Lucca employee 4521
- Show me the full record for employee 88
LuccaListDepartments
Lists Lucca departments with their ids and hierarchy, letting you resolve a department name to the id other tools expect. Filter by parent id to walk one level of the org tree at a time.
| Parameter | Type | Default | Description |
|---|---|---|---|
| parentId | string | — | Return only departments whose parent is this id. Omit for the whole list. |
| maxResults | string | 200 |
Page size cap on the returned list (default 200). |
Try asking:
- List all departments in Lucca
- What are the sub-departments under department 3?
- Find the department id for Engineering
- Show me the org hierarchy from Lucca
LuccaListDepartmentsV2
Pages through the Lucca department list on the Latest API without parent-id filtering, returning the full department page. Use it when your tenant is on the Latest API; use LuccaListDepartments for the Legacy version, which supports parent-id filtering.
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | string | 200 |
Number of departments per page (default 200). |
| page | string | 1 |
1-based page number to fetch (default 1). |
Try asking:
- List the departments in Lucca
- Give me the first 50 departments
- Fetch page 2 of the department list
- What departments exist in our Lucca tenant?
LuccaListExpenseClaims
Lists Lucca expense claims, filterable by employee, status, and declaration date, so you can answer spend and approval-queue questions. This is a Legacy v3 API tool with no Latest API equivalent.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ownerId | string | — | Restrict to claims belonging to one employee id. |
| statusId | string | — | Claim status to filter by, e.g. Approved. |
| declaredOn | string | — | Lucca date filter on the declaration date. |
| maxResults | string | 100 |
Page size cap on the returned claims (default 100). |
Try asking:
- Show me the approved expense claims for employee 123
- What expense claims are still awaiting approval?
- List all claims declared this quarter with their totals
- How much has user 88 claimed, and in what currency?
LuccaListLeaveRequests
Lists leave requests in Lucca, filterable by employee and numeric status code, covering absence queues and history questions. Use LuccaListLeaveRequestsV2 for the same listing on the Latest API, where statuses are named strings.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ownerId | string | — | Restrict to leave requests belonging to one employee id. |
| status | string | — | Lucca numeric leave-request status code, e.g. 0 for pending. |
| maxResults | string | 100 |
Page size cap on the returned list (default 100). |
Try asking:
- Show me all pending leave requests
- What leave has employee 123 booked?
- List the leave requests waiting for approval
- How many days is each open leave request in the queue?
- Give me the last 50 leave requests
LuccaListLeaveRequestsV2
Lists leave requests on the Lucca Latest API, filtered by employee and named status (such as 'pending'), with page-based pagination. Use the Legacy LuccaListLeaveRequests when you need numeric status codes or a total count.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ownerId | string | — | Restrict to leave requests belonging to one employee id. |
| status | string | — | Named leave-request status, e.g. pending. |
| limit | string | 100 |
Number of requests per page (default 100). |
| page | string | 1 |
1-based page number to fetch (default 1). |
Try asking:
- List the pending leave requests in Lucca
- What leave requests does employee 123 have?
- Show me approved leave, 100 per page
- Fetch page 2 of the leave request list
LuccaListTimeEntries
Lists logged time entries for an employee over a date window, showing hours, activity, and comments for each entry. Use it to answer timesheet questions such as what someone logged last week or how a period was filled.
| Parameter | Type | Default | Description |
|---|---|---|---|
| ownerId | string | — | Restrict to time entries belonging to one employee id. |
| startsAt | string | — | Lucca date filter on the entry start, e.g. between,2026-05-01,2026-05-31. |
| maxResults | string | 100 |
Page size cap on the returned entries (default 100). |
Try asking:
- What did employee 123 log in May?
- Show me this week's time entries for user 88
- How many hours did user 123 book between 1 and 31 May?
- List the timesheet entries with their activity and comments for last month
LuccaListVariableComp
Retrieves variable compensation items (bonuses, commissions, and similar pay elements) for one or more employees, returned newest period first. Use it for questions about someone's variable pay history or the latest bonus round.
| Parameter | Type | Default | Description |
|---|---|---|---|
| OwnerIds | string | — | Employee id(s) whose variable compensation items to return. |
| NatureIds | string | — | Compensation nature id(s) to filter by, e.g. bonus or commission types. |
| limit | string | 50 |
Number of items per page (default 50). |
| page | string | 1 |
1-based page number to fetch (default 1). |
Try asking:
- What variable compensation has employee 123 received?
- Show me the most recent bonus items for user 88
- List commission payments for this employee, 50 at a time
- Pull the latest variable pay items across the team
LuccaSearchUsers
Finds Lucca employees by email fragment, login, department, or employment status, returning a list of matching people with their ids. Use it to resolve a person's name to an id before calling the leave, timesheet, or expense tools.
| Parameter | Type | Default | Description |
|---|---|---|---|
| string | — | Partial email match — any fragment of the address, e.g. a surname. |
|
| login | string | — | Exact Lucca login to match. |
| departmentId | string | — | Restrict results to a single department id. |
| formerEmployees | string | — | Employment-status filter passed through to Lucca to include or target former employees. |
| maxResults | string | 100 |
Page size cap on the returned list (default 100). |
Try asking:
- Find the employee whose email contains dupont
- Look up the Lucca user with login mdupont
- List everyone in department 5
- Show me former employees still on record in Lucca
- Give me the first 20 people whose email mentions martin
LuccaSearchUsersV2
Searches Lucca employees by email and department on the Latest API, using exact email matching and page-based pagination. Use the Legacy LuccaSearchUsers for richer filtering by login or employment status.
| Parameter | Type | Default | Description |
|---|---|---|---|
| string | — | Email filter passed to the Latest API. |
|
| departmentId | string | — | Restrict results to a single department id. |
| limit | string | 100 |
Number of employees per page (default 100). |
| page | string | 1 |
1-based page number to fetch (default 1). |
Try asking:
- Search Lucca for employees with the email dupont
- Who is in department 12?
- Get me page 2 of the employee list, 50 per page
- Find the employee record for [email protected]