Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Breathe HR

Scalekit connector
Open markdown

The Breathe HR connector lets your AI agent act in each user's Breathe HR account. Each user connects their own Breathe HR API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 61 tools.

Tools
61
What they doRead · write · destructive
42 · 15 · 442 read15 write4 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 Breathe HR connection

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

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'breathehr'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Breathe HR:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'breathehr_absences_list',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user opens the link once and enters their Breathe HR credentials there. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • breathehr_absences_listList approved absences (holiday and other leave) across the account, optionally filtered by type, leave reason, employee, department or date range.Read-only

    List Absences

    List approved absences (holiday and other leave) across the account, optionally filtered by type, leave reason, employee, department or date range. Returns absences: an array of absence records with id, employee, start_date, end_date, half-day flags, type, leave_reason, cancelled, deducted, work_units and notes. Use breathehr_absences_list for taken or booked time off. Use breathehr_leave_requests_list for requests and their approval status, and breathehr_sicknesses_list for sickness.

    Inputs

    department_idinteger
    Return absences for this department only. Example: 12.
    employee_idinteger
    Return absences for this employee only. Example: 1234.
    end_datestring
    Upper date bound for the absences returned. Format YYYY-MM-DD. Example: 2026-12-31.
    exclude_cancelled_absencesboolean
    Set to true to leave out cancelled absences. Example: true.
    other_leave_reason_idinteger
    Return only other-leave absences with this leave reason ID, from breathehr_other_leave_reasons_list. Example: 2.
    pageinteger
    Page number to fetch, starting at 1. Defaults to 1. Example: 2.
    per_pageinteger
    Number of records per page, up to 100. Defaults to 25. Example: 50.
    start_datestring
    Return absences on or after this date. Format YYYY-MM-DD. Example: 2026-01-01.
    typestring
    Type of absence to return: Holiday or OtherLeave. Example: Holiday.one of HolidayOtherLeave
  • breathehr_account_getGet the Breathe HR account that the API key belongs to.Read-only

    Get Account

    Get the Breathe HR account that the API key belongs to. Returns account: an array with one account record holding id, name, domain and uuid. Use breathehr_account_get to confirm which company account the connection uses.

    Inputs

    This tool takes no inputs.

  • breathehr_benefits_listList benefit records (such as pensions) across the account.Read-only

    List Benefits

    List benefit records (such as pensions) across the account. Returns benefits: an array of benefit records with id, provider, amount, start_date, end_date, review_date, pension_opt_out and employer and employee contributions. Use breathehr_benefits_list for the whole account. Use breathehr_employee_benefits_list or breathehr_department_benefits_list to narrow it.

    Inputs

    pageinteger
    Page number to fetch, starting at 1. Defaults to 1. Example: 2.
    per_pageinteger
    Number of records per page, up to 100. Defaults to 25. Example: 50.
  • breathehr_bonuses_listList bonus records across the account.Read-only

    List Bonuses

    List bonus records across the account. Returns bonuses: an array of bonus records with id, description, amount and award_date. Use breathehr_bonuses_list for the whole account. Use breathehr_employee_bonuses_list or breathehr_department_bonuses_list to narrow it.

    Inputs

    pageinteger
    Page number to fetch, starting at 1. Defaults to 1. Example: 2.
    per_pageinteger
    Number of records per page, up to 100. Defaults to 25. Example: 50.
  • breathehr_change_requests_listList employee detail change requests across the account.Read-only

    List Change Requests

    List employee detail change requests across the account. Returns change_requests: an array of change request records with id, field_name, value, approved and approved_at. Use breathehr_change_requests_list to review pending changes for everyone. Use breathehr_employee_change_requests_list for one employee.

    Inputs

    pageinteger
    Page number to fetch, starting at 1. Defaults to 1. Example: 2.
    per_pageinteger
    Number of records per page, up to 100. Defaults to 25. Example: 50.
  • breathehr_company_documents_listList the company documents stored in Breathe.Read-only

    List Company Documents

    List the company documents stored in Breathe. Returns company_documents: an array of document records with id, nice_name, created_at and updated_at. Use breathehr_company_documents_list to see which policies and handbooks are published.

    Inputs

    pageinteger
    Page number to fetch, starting at 1. Defaults to 1. Example: 2.
    per_pageinteger
    Number of records per page, up to 100. Defaults to 25. Example: 50.
  • breathehr_company_project_getGet one company project by ID.Read-only

    Get Company Project

    Get one company project by ID. Returns company_projects: an array with one project record holding id, name, due_on and complete. Use breathehr_company_project_get when you have a project ID. Use breathehr_company_projects_list to find it.

    Inputs

    company_project_idintegerrequired
    ID of the company project, from breathehr_company_projects_list. Example: 7.
  • breathehr_company_projects_listList the company's projects.Read-only

    List Company Projects

    List the company's projects. Returns company_projects: an array of project records with id, name, due_on and complete. Use breathehr_company_projects_list to find a company_project_id for expenses. Use breathehr_company_project_get for one project.

    Inputs

    pageinteger
    Page number to fetch, starting at 1. Defaults to 1. Example: 2.
    per_pageinteger
    Number of records per page, up to 100. Defaults to 25. Example: 50.