Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Holded

Scalekit connector
Open markdown

The Holded connector lets your AI agent act in each user's Holded account. Each user connects their own Holded access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 109 tools.

Tools
109
What they doRead · write · destructive
66 · 43 · 066 read43 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 Holded connection

    In AgentKit > Connections, create a Holded 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 = 'holded'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Holded:', 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: 'holded_accounting_accounts_list',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user opens the link once and enters their Holded 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
  • holded_accounting_accounts_listList accounting accounts in Holded, optionally filtered by archived, start_date, end_date, include_empty, text.Read-only

    List Accounting Accounts

    List accounting accounts in Holded, optionally filtered by archived, start_date, end_date, include_empty, text. Returns a page of records (fields include id, color, number, name, description, group) plus cursor and has_more for pagination. Use to browse or filter accounting accounts.

    Inputs

    archivedboolean
    Include archived accounts when true. Example: true.
    end_datestring
    Filter accounts with activity up to this date (YYYY-MM-DD). Example: 2024-12-31.
    include_emptyboolean
    Include accounts with no transactions when true. Example: true.
    start_datestring
    Filter accounts with activity from this date (YYYY-MM-DD). Example: 2024-01-01.
    textstring
    Case-insensitive partial search on account name or number. Example: subscriptions.
  • holded_bank_account_getGet one bank account by ID with its full details.Read-only

    Get Bank Account

    Get one bank account by ID with its full details. Returns id, name, type, currency, balance, iban, bic, and more. Use when you already have the bank account ID; use holded_bank_accounts_list to find IDs or filter. Needs the bank account ID from holded_bank_accounts_list.

    Inputs

    idstringrequired
    Banking account identifier. Example: 507f1f77bcf86cd799439011.
  • holded_bank_accounts_listList bank accounts in Holded, optionally filtered by type, archived.Read-only

    List Bank Accounts

    List bank accounts in Holded, optionally filtered by type, archived. Returns a page of records (fields include id, name, type, currency, balance, iban) plus cursor and has_more for pagination. Use to browse or filter bank accounts; use holded_bank_account_get for one record by ID.

    Inputs

    archivedboolean
    Filter by archived state. `true` returns only archived accounts, `false` returns only active accounts. Omit to return both (default). Example: true.
    cursorstring
    Opaque cursor for pagination. Example: eyJwYWdlIjoyfQ.
    limitinteger
    Maximum number of banking accounts to return per page. Example: 25.
    typestring
    Filter banking accounts by account type. Allowed values: `bank` (bank account), `card` (credit or debit card), `gateway` (payment gateway such as Stripe or PayPal), `cash` (cash register / petty cash). Example: bank.one of bankcardgatewaycash
  • holded_bank_movements_listList the raw bank statement movements of a bank account, with amount, balance after movement, value date and reconciliation status.Read-only

    List Bank Movements

    List the raw bank statement movements of a bank account, with amount, balance after movement, value date and reconciliation status. Returns a page of records (fields include id, banking_account_id, description, note, amount, currency) plus cursor and has_more for pagination. Use for reconciliation and cash-flow analysis; use holded_payments_list for payments linked to documents. Needs the bank account ID from holded_bank_accounts_list.

    Inputs

    idstringrequired
    Banking account identifier. Example: 507f1f77bcf86cd799439011.
    cursorstring
    Opaque cursor returned by the previous page. Example: eyJwYWdlIjoyfQ.
    end_datestring
    Inclusive upper bound on the movement value date (ISO 8601 date or date-time). Example: 2026-01-31.
    limitinteger
    Maximum number of movements per page. Defaults to 50, maximum 200. Example: 25.
    start_datestring
    Inclusive lower bound on the movement value date (ISO 8601 date or date-time). Example: 2026-01-01.
    statusarray
    Reconciliation statuses to filter by: 'pending' (not reconciled), 'reconciled' (fully matched), 'partial' (partially matched), 'forced_reconciled' (manually marked). Example: ["pending"].
  • holded_cash_movements_listList the cash movements of a bank or cash account.Read-only

    List Cash Movements

    List the cash movements of a bank or cash account. Returns a page of records (fields include id, bankingAccountId, date, description, amount, currency) plus cursor and has_more for pagination. Use for cash-type accounts, which have no bank movements; use holded_bank_movements_list for bank-fed accounts. Needs the bank account ID from holded_bank_accounts_list.

    Inputs

    idstringrequired
    Banking account identifier. Example: 507f1f77bcf86cd799439011.
    cursorstring
    Opaque cursor returned by the previous page. Example: eyJwYWdlIjoyfQ.
    end_datestring
    Inclusive upper bound on the movement accounting date (ISO 8601 date or date-time). Example: 2026-01-31.
    limitinteger
    Maximum number of movements per page. Defaults to 50, maximum 200. Example: 25.
    start_datestring
    Inclusive lower bound on the movement accounting date (ISO 8601 date or date-time). Example: 2026-01-01.
  • holded_contact_getGet one contact by ID with its full details.Read-only

    Get Contact

    Get one contact by ID with its full details. Returns id, custom_id, name, code, vat_number, trade_name, is_person, and more. Use when you already have the contact ID; use holded_contacts_list to find IDs or filter. Needs the contact ID from holded_contacts_list.

    Inputs

    contact_idstringrequired
    Contact ID (24-char hex ObjectId). Example: 507f1f77bcf86cd799439011.
  • holded_contact_group_getGet one contact group by ID with its full details.Read-only

    Get Contact Group

    Get one contact group by ID with its full details. Returns id, name, description, color. Use when you already have the contact group ID; use holded_contact_groups_list to find IDs or filter. Needs the contact group ID from holded_contact_groups_list.

    Inputs

    contact_group_idstringrequired
    Contact Group ID (24-char hex ObjectId). Example: 507f1f77bcf86cd799439011.
  • holded_contact_groups_listList contact groups in Holded.Read-only

    List Contact Groups

    List contact groups in Holded. Returns a page of records (fields include id, name, description, color) plus cursor and has_more for pagination. Use to browse or filter contact groups; use holded_contact_group_get for one record by ID.

    Inputs

    cursorstring
    Pagination cursor returned by the previous response. Omit to start from the first page. Example: eyJwYWdlIjoyfQ.
    limitinteger
    Maximum number of items to return. Example: 25.