Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Baserow

Scalekit connector
Open markdown

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

Tools
14
What they doRead · write · destructive
5 · 7 · 25 read7 write2 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 Baserow connection

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

    Each user opens the link once and enters their Baserow 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
  • baserow_check_tokenCheck whether the connected database token is valid.Read-only

    Check Database Token

    Check whether the connected database token is valid. Returns an empty 200 response when the token is valid and a 403 error when it is not. Use baserow_list_tables to see which tables the token can reach.

    Inputs

    This tool takes no inputs.

  • baserow_get_rowGet one row from a table by its id.Read-only

    Get Table Row

    Get one row from a table by its id. Returns the row with its id, order and one value per field. Use this when you know the row id; use baserow_list_rows to search.

    Inputs

    row_idintegerrequired
    ID of the row (the row's id value, not its position). Example: 42.
    table_idintegerrequired
    ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
    user_field_namesboolean
    Set true to use field names (for example Name) as keys in the request and response. Leave empty to use Baserow's internal keys such as field_123. Use baserow_list_fields to see both.
  • baserow_list_fieldsList the fields (columns) of a table.Read-only

    List Table Fields

    List the fields (columns) of a table. Returns each field's id, name, type, primary flag and type-specific settings such as select options. Use this before creating or updating rows to learn field names, ids and types.

    Inputs

    table_idintegerrequired
    ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
  • baserow_list_rowsList rows in a table, with optional search, filters, ordering and field selection.Read-only

    List Table Rows

    List rows in a table, with optional search, filters, ordering and field selection. Returns a page of rows plus count, next and previous page links. Use this to browse or search a table; use baserow_get_row when you already know the row id.

    Inputs

    table_idintegerrequired
    ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
    excludestring
    Comma-separated fields to leave out of the response. Example: Notes.
    filtersstring
    Filter tree as a JSON string. Example: {"filter_type": "AND", "filters": [{"type": "equal", "field": "Status", "value": "Open"}], "groups": []}. Use field names only when user_field_names is true, otherwise field ids.
    includestring
    Comma-separated fields to return; all other fields are left out. Example: Name,Status.
    order_bystring
    Comma-separated fields to sort by. Prefix a field with - for descending order. Uses field names when user_field_names is true, otherwise field_<id> keys. Example: -Created,Name.
    pageinteger
    Page number to return, starting at 1. Example: 2.
    searchstring
    Return only rows with a value that matches this text. Example: acme.
    sizeinteger
    Number of rows per page, from 1 to 200. Example: 50.
    user_field_namesboolean
    Set true to use field names (for example Name) as keys in the request and response. Leave empty to use Baserow's internal keys such as field_123. Use baserow_list_fields to see both.
    view_idinteger
    Apply the filters and sorts of this view. Example: 55.
  • baserow_list_tablesList every table the database token can access.Read-only

    List Tables

    List every table the database token can access. Returns each table's id, name, order and database_id. Use this first to find a table_id for the field and row tools.

    Inputs

    This tool takes no inputs.

  • baserow_batch_create_rowsCreate up to 200 rows in a table in one request.Write

    Batch Create Table Rows

    Create up to 200 rows in a table in one request. Returns the created rows in the same order as the request, each with its id. Use this for bulk inserts; use baserow_create_row for a single row.

    Inputs

    itemsarrayrequired
    List of row objects to create, from 1 to 200. Each object uses the same keys as baserow_create_row. Example: [{"Name": "Acme"}, {"Name": "Globex"}].
    table_idintegerrequired
    ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
    beforeinteger
    Place the new rows before the row with this id. Leave empty to add them at the end. Example: 42.
    user_field_namesboolean
    Set true to use field names (for example Name) as keys in the request and response. Leave empty to use Baserow's internal keys such as field_123. Use baserow_list_fields to see both.
  • baserow_batch_update_rowsUpdate up to 200 rows in a table in one request.Write

    Batch Update Table Rows

    Update up to 200 rows in a table in one request. Returns the updated rows in the same order as the request. Use this for bulk edits; use baserow_update_row for a single row.

    • Idempotent

    Inputs

    itemsarrayrequired
    List of row objects to update, from 1 to 200. Each object must include the row's id plus the fields to change, using the same keys as baserow_update_row. Example: [{"id": 1, "Active": false}, {"id": 2, "Active": true}].
    table_idintegerrequired
    ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
    user_field_namesboolean
    Set true to use field names (for example Name) as keys in the request and response. Leave empty to use Baserow's internal keys such as field_123. Use baserow_list_fields to see both.
  • baserow_create_fieldCreate a new field (column) in a table.Write

    Create Table Field

    Create a new field (column) in a table. Returns the created field with its id, name, type and settings, plus any related fields that changed. Use this to add a column; use baserow_list_fields to inspect existing ones.

    Inputs

    namestringrequired
    Name of the new field. Must be unique within the table. Example: Status.
    table_idintegerrequired
    ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
    typestringrequired
    Field type to create. One of: text, long_text, url, email, number, rating, boolean, date, last_modified, last_modified_by, created_on, created_by, duration, link_row, file, single_select, multiple_select, phone_number, formula, count, rollup, lookup, multiple_collaborators, uuid, autonumber, password, form_view_edit_row, button, ai. Example: single_select.one of textlong_texturlemailnumberratingbooleandatelast_modifiedlast_modified_bycreated_oncreated_bydurationlink_rowfilesingle_selectmultiple_selectphone_numberformulacountrolluplookupmultiple_collaboratorsuuidautonumberpasswordform_view_edit_rowbuttonai
    field_optionsobject
    Type-specific settings merged into the request body, as a JSON object. For example a single_select field takes select_options (a list of value and color pairs), a number field takes number_decimal_places, and a link_row field takes link_row_table_id. Leave empty for a plain field. Example: {"select_options": [{"value": "Open", "color": "light-green"}]}.