HRIS
Lucca
API integration
Ship HRIS features without building the integration. Full Lucca API access via Proxy, normalized data through Unified APIs, and 30+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with Lucca
Common scenarios for SaaS companies building Lucca integrations for their customers.
Automate employee provisioning and deprovisioning
SaaS companies offering identity, access, or IT asset management can sync Lucca's employee lifecycle data — including hire dates, department assignments, and termination status — to automatically provision or revoke accounts, licenses, and equipment without manual HR handoffs.
Mirror complex organizational structures
Products that need to enforce policies, route approvals, or segment dashboards by org structure can pull Lucca's legal entities, business establishments, and department hierarchies to accurately represent multi-entity, multi-location companies common in European mid-market.
Trigger real-time workflows on HR events
Instead of polling for changes, SaaS apps can programmatically create and manage Lucca webhook endpoints through Truto to react instantly when employees are created, roles change, or probation periods end — powering onboarding automations, review cycle setup, and compliance alerts.
Sync job and career data for workforce planning
Resource planning, performance management, and compensation platforms can leverage Lucca's granular distinction between employments, job positions, probationary periods, and manager hierarchies to build accurate career timelines and reporting chains.
Enforce role-based policies using HR metadata
Travel, expense, or benefits platforms can pull occupation categories, job qualifications, and legal entity details from Lucca to dynamically apply the correct policy tier based on an employee's role, seniority, and jurisdiction.
What You Can Build
Ship these features with Truto + Lucca
Concrete product features your team can ship faster by leveraging Truto’s Lucca integration instead of building from scratch.
One-click org chart sync
Automatically build and maintain your product's organizational hierarchy by syncing Lucca departments, legal entities, and business establishments through Truto's Unified HRIS API for Companies, Groups, and Locations.
Real-time employee lifecycle webhooks
Programmatically register, update, and monitor Lucca webhook endpoints and delivery attempts directly from your app to trigger onboarding, offboarding, or role-change workflows the moment they happen.
Manager hierarchy mapping for approval chains
Pull job positions with manager relationships from Lucca to automatically configure multi-level approval workflows in your product without customers manually setting up reporting lines.
Probation period tracking and review triggers
Sync probationary period start and end dates from Lucca to automatically schedule check-ins, generate review templates, or flag compliance deadlines inside your platform.
Employee profile enrichment with portraits
Fetch employee profile photos via Lucca's portrait API to populate user avatars across your product, giving customers a more personalized and familiar experience without manual uploads.
Dynamic policy assignment by job qualification and entity
Combine Lucca's occupation categories, job qualifications, and legal entity data to automatically assign the correct expense limits, travel tiers, or benefit plans based on each employee's role and jurisdiction.
SuperAI
Lucca AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_lucca_employees
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 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 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 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 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
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 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 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 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
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 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 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 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 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 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 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 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 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 professions in Lucca. Returns id, type, url, title, isArchived, t9n, and links fields for each profession.
get_single_lucca_profession_by_id
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 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 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 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 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 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 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 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 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 a webhook-endpoint in Lucca. Requires id. No content is returned in the response upon successful deletion.
list_all_lucca_webhook_deliveries
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 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
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 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 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
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.
Why Truto
Why use Truto’s MCP server for Lucca
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Lucca
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified HRIS API
Companies
Companies represent the companies in HRIS
Employees
Represents an employee in HRIS
Employments
Employments represent a job position at a company.
Groups
Groups represent the groups for an Employee
Job Roles
Represent the job roles in a company
Locations
Locations represent the locations in HRIS
How It Works
From zero to integrated
Go live with Lucca in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Lucca account
Use Truto’s frontend SDK to connect your customer’s Lucca account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Lucca
Truto’s Proxy API is a 1-to-1 mapping of the Lucca API. You call us, we call Lucca, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Lucca’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Lucca on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication methods does the Lucca integration support through Truto?
Truto handles the authentication flow with Lucca on your behalf. Your end users connect their Lucca accounts through Truto's embedded linking experience, and Truto manages token storage, refresh, and session management so you never deal with auth directly.
Which Lucca data models map to Truto's Unified HRIS API?
Lucca's Legal Entities map to the Unified Companies API, Employees and Employee Personal Records map to the Unified Employees API, Employments map to the Unified Employments API, Departments map to the Unified Groups API, Job Positions and Job Qualifications map to the Unified Job Roles API, and Business Establishments map to the Unified Locations API.
Can I receive real-time updates from Lucca instead of polling?
Yes. Lucca exposes a full webhook infrastructure. Through Truto, you can create, update, delete, and list webhook endpoints, as well as inspect webhook deliveries and individual delivery attempts. You can also use the ping endpoint to test connectivity.
Does the integration support write operations?
For core HR data like employees and departments, the current integration supports read operations (list and get by ID). Write operations are available for webhook management — you can create, update, and delete webhook endpoints programmatically.
How does Truto handle pagination and rate limits for Lucca?
Truto abstracts away Lucca's API-specific pagination logic and rate limiting. When you call a list endpoint through Truto, pagination is handled automatically so you receive complete datasets without managing cursors or page tokens yourself.
Can I access Lucca's granular job data like probationary periods and occupation categories?
Yes. Beyond standard employee and employment data, the integration exposes probationary periods, occupation categories, professions, job qualifications, and employment templates — giving you fine-grained career and compliance data that many HRIS integrations don't surface.
Lucca
Get Lucca integrated into your app
Our team understands what it takes to make a Lucca integration successful. A short, crisp 30 minute call with folks who understand the problem.
Talk to us