Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Personio

Scalekit connector
Open markdown

The Personio connector lets your AI agent act in each user's Personio account. Each user signs in to Personio once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 53 tools.

Tools
53
What they doRead · write · destructive
39 · 14 · 039 read14 write0 destructive
Users sign in with

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Personio connection

    In AgentKit > Connections, create a Personio connection. The name you give it is the connection_name your code passes. See Configure connections.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • personio_absence_period_breakdown_listList the day-by-day breakdown of one absence period in Personio.Read-only

    List Absence Period Breakdowns

    List the day-by-day breakdown of one absence period in Personio. Returns one entry per day with the date and the effective duration of the absence on that day. Use this to see how much time an absence actually takes on each day. Use personio_absence_period_get for the absence itself.

    Inputs

    absence_period_idstringrequired
    The ID of the absence period. Get it from personio_absence_period_list. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
    cursorstring
    Pagination cursor for the breakdowns list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
    limitinteger
    Maximum number of daily breakdowns to return in one page, from 1 to 100. Leave empty to use the Personio default of 28. Example: 50.
  • personio_absence_period_getGet one absence period in Personio by ID.Read-only

    Get Absence Period

    Get one absence period in Personio by ID. Returns the person, absence type, start and end (date-time and half-day type), timezone, comment, approval status and timestamps. Use this when you have the absence period ID. Use personio_absence_period_list to search.

    Inputs

    absence_period_idstringrequired
    The ID of the absence period. Get it from personio_absence_period_list. Example: 493eff0a-2c5a-467e-8966-f70b4e3805a6.
  • personio_absence_period_listList absence periods (time off such as vacation or sick leave) in Personio, filtered by person, absence type, date range or update time.Read-only

    List Absence Periods

    List absence periods (time off such as vacation or sick leave) in Personio, filtered by person, absence type, date range or update time. Returns a page of absence periods with id, person, absence type, start and end (date-time and half-day type), timezone, comment, approval status and timestamps. Use this to see who is or was off and when. Use personio_absence_period_get for one known absence period.

    Inputs

    absence_type_idstring
    Only return absences of these absence types. Separate multiple IDs with commas; get them from personio_absence_type_list. Example: cba6fa09-d8fe-4de0-be03-f0a1d48df766.
    cursorstring
    Pagination cursor for the absence periods list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
    ends_at_gtestring
    Only return absences ending at or after this date-time (RFC 3339). Example: 2025-01-01T00:00:00Z.
    ends_at_ltestring
    Only return absences ending at or before this date-time (RFC 3339). Example: 2025-12-31T23:59:59Z.
    idstring
    Only return absence periods with these IDs. Separate multiple IDs with commas. Example: abc6fa09-d8fe-4de0-be03-f0a1d48df766.
    limitinteger
    Maximum number of absence periods to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
    person_idstring
    Only return absences of these persons. Separate multiple person IDs with commas. Example: 12345,67890.
    starts_from_gtestring
    Only return absences starting at or after this date-time (RFC 3339). Example: 2025-01-01T00:00:00Z.
    starts_from_ltestring
    Only return absences starting at or before this date-time (RFC 3339). Example: 2025-12-31T23:59:59Z.
    updated_at_gtestring
    Only return absences updated at or after this date-time (RFC 3339). Example: 2025-06-01T00:00:00Z.
    updated_at_ltestring
    Only return absences updated at or before this date-time (RFC 3339). Example: 2025-06-30T23:59:59Z.
  • personio_absence_type_getGet one absence type in Personio by ID.Read-only

    Get Absence Type

    Get one absence type in Personio by ID. Returns the absence type's id, name, category and unit (DAY for days and half days, HOUR for hourly absences). Use this to check whether a type is booked in days or hours before creating an absence. Use personio_absence_type_list to find the ID.

    Inputs

    absence_type_idstringrequired
    The ID of the absence type. Get it from personio_absence_type_list. Example: 137a2048-41e9-4d49-9201-e6a032521495.
  • personio_absence_type_listList the absence types configured in Personio, such as paid vacation or sick leave.Read-only

    List Absence Types

    List the absence types configured in Personio, such as paid vacation or sick leave. Returns a page of absence types with their id, name, category and unit (DAY or HOUR). Use this to find the absence type ID needed by personio_absence_period_create. Use personio_absence_type_get for one known type.

    Inputs

    cursorstring
    Pagination cursor for the absence types list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
    limitinteger
    Maximum number of absence types to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
  • personio_attendance_period_getGet one attendance period (tracked work or break) in Personio by ID.Read-only

    Get Attendance Period

    Get one attendance period (tracked work or break) in Personio by ID. Returns the person, type, start, end, duration, attribution date, approval status, project and comment. Use this when you have the attendance period ID. Use personio_attendance_period_list to search.

    Inputs

    attendance_period_idstringrequired
    The ID of the attendance period. Get it from personio_attendance_period_list. Example: bd242cd1-5116-41a0-99aa-c12af4837c81.
  • personio_attendance_period_listList attendance periods (tracked working time and breaks) in Personio, filtered by person, project, status, date range or update time.Read-only

    List Attendance Periods

    List attendance periods (tracked working time and breaks) in Personio, filtered by person, project, status, date range or update time. Returns a page of attendance periods with id, person, type (WORK or BREAK), start, end, duration, attribution date, approval status, project and comment. Use this to review tracked hours. Use personio_attendance_period_get for one known period.

    Inputs

    attribution_date_gtestring
    Only return periods attributed to this date or later (YYYY-MM-DD). Example: 2025-01-01.
    attribution_date_ltestring
    Only return periods attributed to this date or earlier (YYYY-MM-DD). Example: 2025-01-31.
    cursorstring
    Pagination cursor for the attendance periods list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
    end_gtestring
    Only return periods ending at or after this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-01T00:00:00.
    end_ltestring
    Only return periods ending at or before this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-31T23:59:59.
    idarray
    Only return attendance periods with these IDs. Example: ["bd242cd1-5116-41a0-99aa-c12af4837c81"].
    limitinteger
    Maximum number of attendance periods to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
    person_idarray
    Only return attendance periods of these persons. Example: ["12345", "67890"].
    project_idarray
    Only return attendance periods booked on these projects. Example: ["1234"].
    sortstring
    Comma-separated sort fields; prefix a field with - for descending. Allowed fields: person.id, start.date_time, end.date_time, updated_at, status. Default: person.id,start.date_time,end.date_time. Example: -start.date_time.
    start_gtestring
    Only return periods starting at or after this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-01T00:00:00.
    start_ltestring
    Only return periods starting at or before this time, as a local date-time without a timezone offset (YYYY-MM-DDTHH:MM:SS). Example: 2025-01-31T23:59:59.
    statusstring
    Only return attendance periods with this approval status. Example: CONFIRMED.one of PENDINGCONFIRMEDREJECTED
    updated_at_gtestring
    Only return periods updated at or after this date-time (RFC 3339). Example: 2025-06-01T00:00:00Z.
    updated_at_ltestring
    Only return periods updated at or before this date-time (RFC 3339). Example: 2025-06-30T23:59:59Z.
  • personio_compensation_listList payroll compensations in Personio for a period of up to one month, optionally for specific people or legal entities.Read-only

    List Compensations

    List payroll compensations in Personio for a period of up to one month, optionally for specific people or legal entities. Returns a page of compensations with id, person, legal entity, compensation type, amount and currency, interval, effective date and working hours, covering base salary, hourly pay, one-time and recurring payments and bonuses. Use this for payroll reviews. Use personio_compensation_create to add a compensation. Needs a credential with the personio:compensations:read scope.

    Inputs

    cursorstring
    Pagination cursor for the compensations list. Leave empty for the first page. To get the next page, pass the cursor from the previous response's _meta.links.next.href (the value of its cursor query parameter). Example: cur_82sQwR2eZvKilo2duNh219Kw.
    end_datestring
    Last day of the period (YYYY-MM-DD). The period can be at most one month. Defaults to the last day of the current month, or of start_date's month. Example: 2025-01-31.
    legal_entity_idstring
    Only return compensations of people in these legal entities. Separate multiple IDs with commas. Example: 123.
    limitinteger
    Maximum number of compensations to return in one page, from 1 to 100. Leave empty to use the Personio default of 100. Example: 50.
    person_idstring
    Only return compensations of these persons. Separate multiple IDs with commas. Example: 12345,67890.
    start_datestring
    First day of the period (YYYY-MM-DD). The period from start_date to end_date can be at most one month. Defaults to the first day of the current month, or of end_date's month. Example: 2025-01-01.