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
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>Create the Baserow connection
In AgentKit > Connections, create a Baserow connection. The name you give it is the
connection_nameyour code passes. See Configure connections.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.actionsconst connector = 'baserow'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'baserow_check_token',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "baserow"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Baserow:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="baserow_check_token",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach 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 toexecute_toolbaserow_check_tokenCheck whether the connected database token is valid.Read-onlyCheck 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-onlyGet 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-onlyList 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-onlyList 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-onlyList 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.WriteBatch 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.WriteBatch 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.WriteCreate 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"}]}.
baserow_create_rowCreate a new row in a table.WriteCreate Table Row
Create a new row in a table. Returns the created row with its id, order and field values. Use this to add one row; use baserow_batch_create_rows for several rows in one call.
Inputs
rowobjectrequired- Row values as a JSON object keyed by field name (when user_field_names is true) or by field_<id> (otherwise). Omitted fields keep their default or stay unchanged. Link row fields take a list of row ids, single select fields take an option id or value, and multiple select fields take a list of them. Example: {"Name": "Acme", "Active": true}.
table_idintegerrequired- ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
beforeinteger- Place the new row before the row with this id. Leave empty to add it 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_move_rowMove a row to a new position in a table.WriteMove Table Row
Move a row to a new position in a table. Returns the moved row with its updated order. Use this to reorder rows; leave before_id empty to move the row to the end.
- Idempotent
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.
before_idinteger- Move the row before the row with this id. Leave empty to move it to 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_update_rowUpdate fields on an existing row.WriteUpdate Table Row
Update fields on an existing row. Returns the updated row with its id, order and field values. Use this to change one row; use baserow_batch_update_rows for several rows in one call.
- Idempotent
Inputs
rowobjectrequired- Row values as a JSON object keyed by field name (when user_field_names is true) or by field_<id> (otherwise). Omitted fields keep their default or stay unchanged. Link row fields take a list of row ids, single select fields take an option id or value, and multiple select fields take a list of them. Example: {"Name": "Acme", "Active": true}. Only the fields you include are changed.
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_upload_file_via_urlUpload a file to Baserow by having Baserow download it from a public URL.WriteUpload File From URL
Upload a file to Baserow by having Baserow download it from a public URL. Returns the stored file with its name, url, size, mime type and thumbnails. Use the returned name to fill a file field in baserow_create_row or baserow_update_row.
Inputs
urlstringrequired- Public URL of the file for Baserow to download. Example: https://example.com/logo.png.
baserow_batch_delete_rowsDelete up to 200 rows from a table in one request.DestructiveBatch Delete Table Rows
Delete up to 200 rows from a table in one request. Returns an empty 204 response on success. Use baserow_delete_row for a single row.
- Idempotent
Inputs
itemsarrayrequired- IDs of the rows to delete, from 1 to 200. Example: [1, 2, 3].
table_idintegerrequired- ID of the Baserow table. Get it from baserow_list_tables. Example: 1234.
baserow_delete_rowDelete a row from a table.DestructiveDelete Table Row
Delete a row from a table. Returns an empty 204 response on success. Use baserow_batch_delete_rows to delete several rows in one call.
- Idempotent
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.
No tools match.