Airtable
Your Toolhouse AI Worker can connect to Airtable using 25 specialized tools.
Auth Connection
This service requires an auth connection to use its tools. You can set this up in your Toolhouse dashboard under Auth Connections.
Tools (25)
Airtable Create Base
Airtable Create BaseIntegration name: AIRTABLE_CREATE_BASE
Creates a new Airtable base with specified tables and fields within a workspace.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
name
string
✅
"Marketing Campaigns Q3"
Name for the new Airtable base, visible in the UI.
tables
array
✅
[{"name":"Apartments","fields":[{"name":"Name","type":"singleLineText","description":"Name of the apartment"},{"name":"Address","type":"singleLineText"},{"name":"Visited","type":"checkbox","options":{"icon":"check","color":"greenBright"}},{"name":"CreatedAt","type":"dateTime","options":{"timeZone":"utc","dateFormat":{"name":"iso"},"timeFormat":{"name":"24hour"}}}],"description":"A to-do list of places to visit"}]
Configurations for tables to be created in the new base; each table needs 'name' and 'fields'. Must be an array of table objects, not a stringified JSON. The first field in each table cannot be 'singleSelect' as it becomes the primary field. Select field choices must include both 'id' and 'name' for each choice. Field types 'formula', 'rollup', 'count', 'lookup', 'multipleLookupValues', 'autoNumber', 'createdTime', and 'lastModifiedTime' are not supported at base creation. For 'dateTime' fields, options require 'dateFormat' (with name: 'local'|'friendly'|'us'|'european'|'iso') and 'timeFormat' (with name: '12hour'|'24hour'); 'timeZone' defaults to 'utc' if not specified.
workspaceId
string
✅
"wspabcdef12345678"
Workspace ID where the base will be created. MUST start with 'wsp' prefix (e.g., 'wspXXXXXXXXXXXXXX'). Common mistake: Do not use user IDs (usr prefix), base IDs (app prefix), or other Airtable IDs - only workspace IDs work here. Get your workspace ID from Airtable workspace settings or via the List Bases API.
Airtable Create Comment
Airtable Create CommentIntegration name: AIRTABLE_CREATE_COMMENT
Tool to create a comment on a specific Airtable record. Use when adding comments to records, mentioning collaborators using @[userId] syntax, or creating threaded comment replies. Supports optional parentCommentId for threaded conversations.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
text
string
✅
"This is an important update."
The content of the comment. To mention a user, use the format @[userId] (e.g., @[usrGISFlfA7l5F7kY6]).
baseId
string
✅
"appXXXXXXXXXXXXXX"
The unique identifier of the Airtable base. This typically starts with 'app'.
recordId
string
✅
"recYYYYYYYYYYYY"
The unique identifier of the record on which the comment will be created. This typically starts with 'rec'.
tableIdOrName
string
✅
"tblXXXXXXXXXXXXXX"
The unique identifier (typically starting with 'tbl') or the name of the table within the base.
parentCommentId
string
"comXXXXXXXXXXXXX"
The ID of the parent comment for creating threaded replies. If provided, this comment will be a reply to the specified parent comment.
Airtable Create Field
Airtable Create FieldIntegration name: AIRTABLE_CREATE_FIELD
Creates a new field within a specified table in an Airtable base.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
name
string
✅
"Status"
REQUIRED. The name for the new field. Field names must be unique within a table.
type
string
"singleSelect"
The type for the new field. If not provided, it defaults to 'singleLineText'. Types that can be created via API: 'singleLineText', 'multilineText', 'richText', 'singleSelect', 'multipleSelects', 'checkbox', 'number', 'percent', 'currency', 'date', 'dateTime', 'duration', 'phoneNumber', 'email', 'url', 'multipleAttachments', 'barcode', 'rating', 'multipleRecordLinks', 'createdBy', 'lastModifiedBy', 'externalSyncSource'. For attachment fields, use 'multipleAttachments' (legacy 'attachment' is auto-converted). Cannot be created via API: 'formula', 'rollup', 'count', 'lookup', 'multipleLookupValues', 'autoNumber', 'createdTime', 'lastModifiedTime', 'button'.
baseId
string
✅
"appExampleBaseId"
REQUIRED. The unique identifier of the base where the field will be created. Format: 'appXXXXXXXXXXXXXXX' (17 characters starting with 'app').
options
object
{"choices":[{"name":"Todo","color":"redLight2"},{"name":"In Progress","color":"yellowLight2"},{"name":"Done","color":"greenLight2"}]}
Type-specific configuration for the new field. Required for 'multipleRecordLinks' (must include 'linkedTableId' - the ID (format: tblXXXXXXXXXXXXXX) or name (case-sensitive) of the table to link to; if you provide 'isReversed' or 'prefersSingleRecordLink', they will be automatically stripped as the API rejects these fields in create requests and sets its own default values). Also required for: 'number'/'percent' ('precision'), 'currency' ('precision' and 'symbol'), 'checkbox' ('color' and 'icon'), 'date' ('dateFormat'), 'dateTime' ('dateFormat', 'timeFormat', 'timeZone'), 'rating' ('max', 'color' and 'icon') - sensible defaults are auto-applied if omitted. For 'singleSelect' and 'multipleSelects', 'choices' array must include objects with 'name' (required) and optionally 'color'. Do not include 'id' when creating new choices - the API will auto-generate them.
description
string
"Tracks the current status of a task."
An optional description for the new field. This can provide context or instructions for the field's usage.
tableIdOrName
string
✅
"tblXXXXXXXXXXXXXX"
The ID or name of the table within the base where the field will be created. Table IDs start with 'tbl' followed by 14 characters. Table names are case-sensitive and must match exactly as they appear in Airtable.
Airtable Create Multiple Records
Airtable Create Multiple RecordsIntegration name: AIRTABLE_CREATE_MULTIPLE_RECORDS
DEPRECATED: Use AIRTABLE_CREATE_RECORDS instead. Creates multiple new records in a specified Airtable table.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
—
Required. The unique identifier of the Airtable base (e.g., 'appXXXXXXXXXXXXXX').
records
array
✅
[{"fields":{"Name":"Record 1","Status":"Active"}},{"fields":{"Name":"Record 2","Status":"Pending"}}]
Required. List of record objects to create. Each record must have a 'fields' key containing a dictionary mapping field names to values. Field names are case-sensitive and can contain any Unicode characters (e.g., 'Тема Reels', '日期'). Field values must match their configured types in Airtable (e.g., number fields require numeric values). Set typecast=true to enable automatic type conversion from strings. Note: Airtable's API limits creation to 10 records per request; if you provide more than 10 records, they will be automatically split into batches and processed in multiple requests.
typecast
boolean
—
If true, Airtable will perform automatic type conversion. Helps with: converting strings to numbers, creating new options for single/multi-select fields, automatically creating/linking records in linked record fields from text values, and type coercion for compatible types. Does NOT help with: text field length/format constraints or fundamental type incompatibilities. If you get INVALID_VALUE_FOR_COLUMN errors on text fields, check: (1) field type in Airtable (single-line vs long text), (2) any custom character limits, (3) whether the field expects a specific format. Defaults to false.
tableIdOrName
string
✅
—
Required. The table ID (e.g., 'tblXXXXXXXXXXXXXX') or the table name (e.g., 'Tasks').
returnFieldsByFieldId
boolean
—
If true, the returned field objects will use field IDs as keys instead of field names. Using field IDs is recommended for integrations that need to be resilient to field name changes. Default is false, which returns field names as keys.
Airtable Create Record
Airtable Create RecordIntegration name: AIRTABLE_CREATE_RECORD
DEPRECATED: Use CreateRecords instead. Creates a new record in a specified Airtable table; field values must conform to the table's column types.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appHPvgqYXl3LNHXq"
Required. The unique identifier of the Airtable base (e.g., 'appXXXXXXXXXXXXXX'). Use AIRTABLE_LIST_BASES to find available base IDs.
fields
object
"{\"Name\": \"New Task\", \"Status\": \"Todo\", \"Notes\": \"Complete by EOD\"}"
A dictionary of field names (or IDs) and their values for the new record. Field names must exactly match those in the table schema (case-sensitive). Field IDs (e.g., 'fldXXXXXXXXXXXXXX') are preferred for stability, but are UNIQUE to each base and table. IMPORTANT: Use AIRTABLE_GET_BASE_SCHEMA with the specific baseId to discover valid field names, IDs, types, and options before creating records. Note: Fields with null, empty string, or boolean false values are automatically omitted from the request. Field type value requirements: - singleSelect: Must be a plain string option name (e.g., 'High'). DO NOT pass dict objects like {'id': 'selXXX'} or {'name': 'High'} - pass only the plain string. - multipleSelects: Must be an array of exact option names (e.g., ['Bug', 'Feature']). - checkbox: Use true to check. Omit or pass false to leave unchecked. - number/currency/percent: Must be a numeric value (int or float). Currency strings with symbols (e.g., '$100', '£689') are auto-converted. Plain numeric strings are NOT auto-converted - pass actual numbers or use typecast=true. - rating: Must be an integer. String numbers like '9' are auto-converted to integers. - date: Must be ISO 8601 format 'YYYY-MM-DD'. - dateTime: Must be ISO 8601 format (e.g., '2024-01-15T14:30:00.000Z', '2024-01-15T14:30:00+00:00'). Common formats like '2024-01-15 14:30:00', 'Jan 15, 2024', '01/15/2024' are auto-converted to ISO 8601. - singleLineText/multilineText/richText: Must be a string. - email/url/phoneNumber: Must be a string in appropriate format. - multipleAttachments: Must be an array of attachment objects with 'url' field. - singleCollaborator: Must be an object with 'id' or 'email' of a valid collaborator. - multipleRecordLinks: Must be an array of record IDs (e.g., ['recXXX', 'recYYY']). - duration: Must be a number representing total seconds (e.g., 278 for 4 minutes 38 seconds). Common conversions: 1 minute = 60, 1 hour = 3600, 1h30m = 5400. Time strings like 'H:MM:SS' or ISO 8601 duration (e.g., 'PT4M38S') are auto-converted to seconds.
typecast
boolean
true
When set to true, enables automatic data conversion from strings to appropriate field types. For example, if a singleSelect field receives a value that doesn't match an existing option, Airtable will create a new option with that value. Also converts string numbers to numeric types. Default is false, which requires exact type matching.
tableIdOrName
string
✅
"tblUkxCONS303zkN7"
Required. The table ID (e.g., 'tblXXXXXXXXXXXXXX') or table name (e.g., 'Tasks', 'Meal Plan') where the record will be created. Table names with spaces and special characters are supported. This is separate from baseId and must be provided. Use AIRTABLE_GET_BASE_SCHEMA to find table IDs/names within a base.
returnFieldsByFieldId
boolean
true
If true, the returned field objects will use field IDs as keys instead of field names. Using field IDs is recommended for integrations that need to be resilient to field name changes. Default is false, which returns field names as keys.
Airtable Create Record From Natural Language
Airtable Create Record From Natural LanguageIntegration name: AIRTABLE_CREATE_RECORD_FROM_NATURAL_LANGUAGE
Creates a new record in an Airtable table from a natural language description. Fetches the table schema, uses an LLM to generate the correct field payload, and creates the record with typecast enabled for automatic type conversion.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appxxxxxxxxxxxxxx"
Unique identifier of the Airtable base, typically starting with 'app'.
nl_query
string
✅
—
Natural language description of the record to create. Example: 'Add a task called Fix Login Bug, status In Progress, priority High, due date 2025-03-15'.
typecast
boolean
—
If True, Airtable will automatically convert string values to their appropriate types (e.g., string to number, date parsing). Enabled by default.
tableIdOrName
string
✅
"tblxxxxxxxxxxxxxx"
Unique identifier (typically starting with 'tbl') or name of the table within the specified base.
Airtable Create Records
Airtable Create RecordsIntegration name: AIRTABLE_CREATE_RECORDS
Tool to create multiple records (up to 10) in a specified Airtable table. Use when you need to add new rows to a table with field values. Rate limit: 5 requests per second per base.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appHPvgqYXl3LNHXq"
The unique identifier of the Airtable base. Format: 'app' followed by alphanumeric characters (e.g., 'appHPvgqYXl3LNHXq').
records
array
✅
[{"fields":{"Name":"Test Record 1","Notes":"First test record"}},{"fields":{"Name":"Test Record 2","Notes":"Second test record"}}]
Array of record objects to create. Each record object must contain a 'fields' property with the cell values. Maximum of 10 records can be created per request.
typecast
boolean
—
If true, Airtable will perform best-effort automatic data conversion from string values to the appropriate cell type. If false (default), field values must exactly match the expected type. Use with caution as it may produce unexpected results.
tableIdOrName
string
✅
"tblUkxCONS303zkN7"
The unique identifier or name of the table where records will be created. Table IDs are recommended over names for stability. Format: 'tbl' followed by alphanumeric characters (e.g., 'tblUkxCONS303zkN7').
returnFieldsByFieldId
boolean
—
If true, the returned field objects will use field IDs as keys instead of field names. Defaults to false.
Airtable Create Table
Airtable Create TableIntegration name: AIRTABLE_CREATE_TABLE
Creates a new table within a specified existing Airtable base, allowing definition of its name, description, and field structure.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
name
string
✅
"Projects"
The desired name for the new table.
fields
array
✅
[{"name":"Task Name","type":"singleLineText"},{"name":"Due Date","type":"date","options":{"dateFormat":{"name":"iso"}}},{"name":"Status","type":"singleSelect","options":{"choices":[{"name":"To Do"},{"name":"In Progress"},{"name":"Done"}]}}]
A list of field configurations for the new table. Each must include 'name' (string) and 'type' (string). IMPORTANT: The first field becomes the primary field. Valid primary field types: singleLineText, number, email, url, phoneNumber, date, dateTime, currency, percent, barcode, richText, multilineText, duration. All other field types cannot be primary. Note: formula and autoNumber CAN be primary in the UI but CANNOT be created via the API. If you need a multipleRecordLinks field, place a singleLineText field first as primary. Computed field types (formula, rollup, count, lookup, multipleLookupValues, autoNumber, createdTime, lastModifiedTime) cannot be created via the API. Field types requiring 'options': 'number'/'percent' (precision), 'currency' (precision, symbol), 'checkbox' (color, icon - colors must end in 'Bright', e.g., 'yellowBright'), 'date' (dateFormat), 'dateTime' (dateFormat, timeFormat, timeZone), 'rating' (color, icon, optionally max 1-10 defaults to 5 - colors must end in 'Bright'). For 'singleSelect'/'multipleSelects', provide 'choices' with objects containing 'name' only (no 'id'). For 'multipleRecordLinks', provide 'linkedTableId' (format tblXXXXXXXXXXXXXX). Do NOT include 'isReversed' or 'prefersSingleRecordLink'.
base_id
string
✅
"appXXXXXXXXXXXXXX"
The unique identifier of the base where the new table will be created.
if_exists
string
"error"
Options for handling duplicate table name scenarios.
description
string
"A table to track all ongoing projects."
An optional textual description for the new table.
reorder_message
string
—
Internal field used to track field reordering messages. This is populated automatically when fields are reordered.
Airtable Delete Comment
Airtable Delete CommentIntegration name: AIRTABLE_DELETE_COMMENT
Tool to delete a comment from a record in an Airtable table. Use when you need to remove an existing comment. Non-admin users can only delete their own comments; Enterprise Admins can delete any comment.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appABC123xyz789"
The unique identifier of the Airtable base from which the comment will be deleted.
recordId
string
✅
"recGhi789jkl345"
The unique identifier of the record within the specified table from which the comment will be deleted.
rowCommentId
string
✅
"comJkl012mno678"
The unique identifier of the comment to be deleted from the specified record.
tableIdOrName
string
✅
"tblDef456uvw012"
The unique identifier (ID) or name of the table within the specified base that contains the record and comment.
Airtable Delete Multiple Records
Airtable Delete Multiple RecordsIntegration name: AIRTABLE_DELETE_MULTIPLE_RECORDS
Tool to delete up to 10 specified records from a table within an Airtable base. Use when you need to remove multiple records in a single operation.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appSOr2Y2mKPyR3C0"
The unique identifier of the Airtable base containing the records to be deleted.
recordIds
array
✅
["recMVpM4w004400ea","recWpM4w004400eb"]
A list of unique identifiers for the records to be deleted.
tableIdOrName
string
✅
"tbluIzIsxPIM2V3Y4"
The unique identifier (e.g., 'tbluIzIsxPIM2V3Y4') or the name (e.g., 'Marketing Leads') of the table within the base from which records will be deleted.
Airtable Delete Record
Airtable Delete RecordIntegration name: AIRTABLE_DELETE_RECORD
Permanently deletes a specific record from an existing table within an existing Airtable base.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appxxxxxxxxxxxxxx"
Unique identifier of the Airtable base, typically starting with 'app'.
recordId
string
✅
"recxxxxxxxxxxxxxx"
Unique identifier of the record to be deleted, typically starting with 'rec'.
tableIdOrName
string
✅
"tblxxxxxxxxxxxxxx"
Unique identifier (typically starting with 'tbl') or name of the table within the specified base.
Airtable Get Base Schema
Airtable Get Base SchemaIntegration name: AIRTABLE_GET_BASE_SCHEMA
Retrieves the detailed schema for a specified Airtable base, including its tables, fields, field types, and configurations, using the baseId.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appZueQaLuTv7fSXjJx"
The unique identifier for the Airtable base. This ID typically starts with 'app' and is followed by a string of alphanumeric characters. It can be found in the URL when viewing the base.
include
array
["visibleFieldIds"]
Optional list of additional fields to include in the views object response. Currently only supports the value 'visibleFieldIds' (for views of type 'grid' only). When specified, grid views will include a visibleFieldIds array showing which fields are visible in that view.
Airtable Get Record
Airtable Get RecordIntegration name: AIRTABLE_GET_RECORD
Retrieves a specific record from an Airtable table by its record ID. Requires a known, valid record ID obtained from listing records or another API call - this tool cannot search or list records. Use the list records tool to find record IDs. Empty field values are not returned in the response.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appXXXXXXXXXXXXXX"
ID of the Airtable base.
recordId
string
✅
"rec4YsVV8cU6V4EiT"
ID of the record to retrieve. Must be a real record ID obtained from listing records or another API call. Format: starts with 'rec' followed by exactly 14 alphanumeric characters (e.g., 'rec4YsVV8cU6V4EiT'). This tool retrieves a single specific record - to list or search multiple records, use the list records tool instead.
timeZone
string
"America/New_York"
Time zone for formatting dates when cellFormat='string'. Required when cellFormat='string'. Uses IANA time zone format (e.g., 'America/New_York', 'Europe/London', 'UTC').
cellFormat
string
"json"
Controls cell value formatting: 'json' for native types, 'string' for all values as strings. When 'string', timeZone and userLocale are required.
userLocale
string
"en-us"
User locale for formatting dates when cellFormat='string'. Required when cellFormat='string'. Uses BCP 47 language tag format (e.g., 'en-us', 'en-gb', 'de-de').
tableIdOrName
string
✅
"tblXXXXXXXXXXXXXX"
ID or name of the table.
returnFieldsByFieldId
boolean
—
If true, field keys in the response are field IDs; otherwise, field names.
Airtable Get User Info
Airtable Get User InfoIntegration name: AIRTABLE_GET_USER_INFO
Retrieves information, such as ID and permission scopes, for the currently authenticated Airtable user from the /meta/whoami endpoint.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
No parameters required.
Airtable List Bases
Airtable List BasesIntegration name: AIRTABLE_LIST_BASES
Retrieves all Airtable bases accessible to the authenticated user, which may include an 'offset' for pagination.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
offset
string
—
Pagination token for retrieving the next page of results. This is an opaque cursor returned in the 'offset' field of a previous list bases response. Pass this exact value to retrieve the next page. Do not construct or modify this value. Only present when there are more than 1,000 bases.
Airtable List Comments
Airtable List CommentsIntegration name: AIRTABLE_LIST_COMMENTS
Tool to list comments on a specific Airtable record. Use when retrieving comments for a record, with optional pagination support for large comment threads.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appXXXXXXXXXXXXXX"
The unique identifier of the Airtable base from which to list comments.
offset
string
—
Pagination token to retrieve the next page of comments. If specified, the returned comments will begin at the specified offset. Obtained from the previous response.
pageSize
integer
—
The number of comments to return per page. Must be less than or equal to 100. Defaults to 100 if not specified.
recordId
string
✅
"recXXXXXXXXXXXXXX"
The unique identifier of the record for which comments are to be listed.
tableIdOrName
string
✅
"tblXXXXXXXXXXXXXX"
The unique identifier or name of the table within the specified base containing the record.
Airtable List Records
Airtable List RecordsIntegration name: AIRTABLE_LIST_RECORDS
Tool to list records from an Airtable table with filtering, sorting, and pagination. Use when you need to retrieve multiple records from a table with optional query parameters.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
sort
array
—
Array of sort objects to apply to records. Each object specifies a field and direction. Records are sorted by the first sort object, then by the second, and so on. IMPORTANT: Cannot sort by system metadata fields like 'createdTime' or 'lastModifiedTime' - these are metadata properties returned with records but not sortable fields. To sort by creation/modification time, you must add a 'Created time' or 'Last modified time' field to your table (using those field types in Airtable).
view
string
"viwXXXXXXXXXXXXXX"
The name or ID of a view to use for filtering and sorting records. View names are case-sensitive. View IDs (format: 'viwXXXXXXXXXXXXXX') are more reliable than names and not affected by view renames. Use AIRTABLE_GET_BASE_SCHEMA to discover valid views. Note: this parameter is overridden if sort parameter is provided.
baseId
string
✅
"appXXXXXXXXXXXXXX"
The ID of the Airtable base. Must start with 'app' followed by 14 characters.
fields
array
["fldABC123","fldDEF456"]
Array of field names or IDs to include in the response. If not specified or if ['*'] is passed, all fields are returned. Field names are case-sensitive and must match exactly as they appear in Airtable. The Airtable API accepts both field names and field IDs interchangeably in this parameter, regardless of the returnFieldsByFieldId setting. IMPORTANT: System fields 'id' and 'createdTime' are always returned automatically as part of the record structure - do NOT include them in this parameter. Only specify user-defined table fields here. UNKNOWN_FIELD_NAME errors indicate: (1) a typo or case mismatch, (2) the field was renamed/deleted, or (3) you included a system field name. RECOMMENDED: Use field IDs (format: 'fldXXXXXXXXXXXXXX') for reliable operation. Use AIRTABLE_GET_BASE_SCHEMA to retrieve valid field names and IDs.
offset
string
—
Opaque pagination cursor token returned in the 'offset' field of a previous list records response. This value must be used exactly as returned by Airtable - do not construct, modify, or decode it. IMPORTANT: Do not pass numeric values like '50' or '100' - these are not valid offsets. Offset tokens are complex opaque strings generated by Airtable. Only pass an offset if you received it from a previous response's 'offset' field. Omit this parameter for the first page of results.
pageSize
integer
—
Number of records to return per page. Must be between 1 and 100. Defaults to 100.
timeZone
string
—
The time zone to use for formatting date and time fields. Required when cellFormat is 'string'. If not provided when cellFormat='string', defaults to 'utc'. Examples: 'utc', 'America/New_York', 'Europe/London'.
cellFormat
string
—
Format for cell values. 'json' returns structured JSON values (default), 'string' returns simple string representations. When set to 'string', timeZone and userLocale are required - if not provided, defaults will be auto-populated (timeZone='utc', userLocale='en-US').
maxRecords
integer
—
Maximum total number of records to return across all pages. If not specified, all records matching the query will be returned.
userLocale
string
—
The user locale to use for formatting cell values (e.g., 'en-US', 'fr-FR'). Required when cellFormat is 'string'. If not provided when cellFormat='string', defaults to 'en-US'.
tableIdOrName
string
✅
"tblXXXXXXXXXXXXXX"
The ID or name of the table within the base. Table IDs start with 'tbl' followed by 14 characters. Table names are case-sensitive and must match exactly as they appear in Airtable. Can also be passed as 'tableId' or 'tableName'.
recordMetadata
array
["commentCount"]
Array of strings specifying additional metadata to include. Currently supports 'commentCount' to include comment counts on records.
filterByFormula
string
"{Status}='Done'"
Airtable formula to filter records. SYNTAX REQUIREMENTS: (1) BALANCED PARENTHESES: Every '(' must have a matching ')'. (2) Field names in curly braces: {FieldName} - case-sensitive, must match exactly. (3) String values in quotes: 'value' or "value". (4) Function calls: AND(), OR(), NOT(), FIND(), BLANK(), TODAY(), etc. (5) Escape single quotes by doubling: 'John''s'. DATE/DATETIME FIELD COMPARISONS: Direct string comparison with date fields (e.g., {DateField} >= '2026-04-29') is unreliable. Use date functions instead: IS_AFTER({DateField}, '2026-04-29') checks if date is after the specified date. IS_BEFORE({DateField}, '2026-04-29') checks if date is before the specified date. IS_SAME({DateField}, '2026-04-29', 'day') checks if date matches (with optional unit: 'day', 'month', 'year'). DATESTR({DateField}) converts date to string for text operations. TODAY() returns current date for dynamic comparisons: IS_AFTER({DateField}, TODAY()). For date ranges: AND(IS_AFTER({DateField}, '2026-04-28'), IS_BEFORE({DateField}, '2026-04-30')). FIELD TYPES VS FORMULA FUNCTIONS: ROLLUP, LOOKUP, FORMULA are field types, NOT formula functions usable in filterByFormula. Reference these fields directly by name: {RollupFieldName}. LINKED RECORD FILTERING: Referencing a linked record field directly (e.g., {LinkedFieldName}) returns PRIMARY FIELD VALUES as text, NOT record IDs. To filter by record IDs, create a lookup field for RECORD_ID() from the linked table, then use: FIND('recXXXXXXXXXXXXXX', ARRAYJOIN({RecordIDLookupField})) > 0. DO NOT use array literals like {LinkedField} = ['recXXX'] - Airtable formulas do not support array syntax. DOT NOTATION NOT SUPPORTED: {Assignee}.email, {LinkedRecord}.fieldName are INVALID. Create a lookup field for the property you need, then reference that field: {Assignee Email Lookup}='user@example.com'. COMMON ERRORS: - Field names are CASE-SENSITIVE: '{status}' is NOT '{Status}'. - Missing closing parenthesis. - Unquoted strings: {Status}=Active must be {Status}='Active'. RECOMMENDED: Use AIRTABLE_GET_BASE_SCHEMA to verify exact field names before using them in formulas.
returnFieldsByFieldId
boolean
—
If true, field keys in the response will be field IDs instead of field names. Recommended when working with field names that contain special characters or when building integrations that need stability across field renames. Note: The 'fields' parameter accepts both field names and field IDs regardless of this setting. filterByFormula always uses field names (enclosed in curly braces like {FieldName}) regardless of this setting.
Airtable Update Comment
Airtable Update CommentIntegration name: AIRTABLE_UPDATE_COMMENT
Tool to update an existing comment on a specific Airtable record. Use when modifying comment text or updating user mentions using @[userId] syntax. API users can only update comments they have created.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
text
string
✅
"This comment has been updated."
The updated comment text. To mention a user, use the format @[userId] (e.g., @[usrGISFlfA7l5F7kY6]).
baseId
string
✅
"appHPvgqYXl3LNHXq"
The unique identifier of the Airtable base. This typically starts with 'app'.
recordId
string
✅
"rec1jqYRNtZMzWkwc"
The unique identifier of the record containing the comment. This typically starts with 'rec'.
rowCommentId
string
✅
"comkrVQ91aKbeITv6"
The unique identifier of the comment to update. This typically starts with 'com'.
tableIdOrName
string
✅
"tblUkxCONS303zkN7"
The unique identifier (typically starting with 'tbl') or the name of the table within the base.
Airtable Update Field
Airtable Update FieldIntegration name: AIRTABLE_UPDATE_FIELD
Updates a field's name or description in an Airtable table. Use this action to modify field metadata without changing the field's type or options. At least one of 'name' or 'description' must be provided.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
name
string
"Notes Updated via API"
The new name for the field. At least one of 'name' or 'description' must be provided.
baseId
string
✅
"appHPvgqYXl3LNHXq"
The unique identifier of the Airtable base containing the field.
fieldId
string
✅
"fldak02ZqmicShXbn"
The ID of the field to update. IMPORTANT: Unlike data API endpoints, the Metadata API requires field IDs - field names are not supported. Field IDs start with 'fld' followed by 14 alphanumeric characters. Use AIRTABLE_GET_BASE_SCHEMA to find field IDs.
tableId
string
✅
"tblUkxCONS303zkN7"
The ID of the table containing the field to update. IMPORTANT: Unlike data API endpoints, the Metadata API requires table IDs - table names are not supported. Table IDs start with 'tbl' followed by 14 alphanumeric characters. Use AIRTABLE_GET_BASE_SCHEMA to find table IDs.
description
string
"This field was updated via the UPDATE_FIELD endpoint"
The new description for the field. Must not exceed 20,000 characters. At least one of 'name' or 'description' must be provided.
Airtable Update Multiple Records
Airtable Update Multiple RecordsIntegration name: AIRTABLE_UPDATE_MULTIPLE_RECORDS
Tool to update up to 10 records in an Airtable table with selective field modifications. Use when you need to modify multiple existing records or perform upsert operations. Updates are not performed atomically.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appHPvgqYXl3LNHXq"
The ID of the Airtable base containing the table.
records
array
✅
[{"id":"rec1jqYRNtZMzWkwc","fields":{"Name":"Updated Record 1 via PATCH"}},{"id":"recA2MVoBmdFGbtG1","fields":{"Name":"Updated Record 2 via PATCH"}}]
List of records to be updated. Airtable's API limits updates to a maximum of 10 records per request. If you need to update more records, split them into multiple requests of 10 or fewer records each.
typecast
boolean
—
If true, Airtable attempts automatic data conversion from string values on a best-effort basis (e.g., '123' to 123).
performUpsert
object
—
Configuration for upsert behavior when updating records.
tableIdOrName
string
✅
"tblUkxCONS303zkN7"
The ID or name of the table within the base where records will be updated.
returnFieldsByFieldId
boolean
—
If true, returns field values keyed by field ID instead of field name. Useful for integrations resilient to field name changes.
Airtable Update Multiple Records Put
Airtable Update Multiple Records PutIntegration name: AIRTABLE_UPDATE_MULTIPLE_RECORDS_PUT
Tool to destructively update multiple records in Airtable using PUT, clearing unspecified fields. Use when you need to fully replace record data or perform upsert operations. Supports up to 10 records per request.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appHPvgqYXl3LNHXq"
The ID of the Airtable base containing the table.
records
array
✅
[{"id":"rec1Q9dF0KAaJE8aW","fields":{"Task":"Updated task","Complete":true}},{"id":"recPYx3Dq8IooB4SI","fields":{"Task":"Another task","Complete":false}}]
Array of up to 10 record objects to update. PUT destructively updates records, clearing unspecified fields.
typecast
boolean
—
If true, Airtable will attempt to convert string values into appropriate cell values.
performUpsert
object
—
Configuration for upsert behavior.
tableIdOrName
string
✅
"tblfYiZLabiwieND6"
The ID or name of the table within the base where records will be updated.
returnFieldsByFieldId
boolean
—
If true, returns fields object keyed by field ID instead of field name.
Airtable Update Record
Airtable Update RecordIntegration name: AIRTABLE_UPDATE_RECORD
Modifies specified fields of an existing record in an Airtable base and table; the base, table, and record must exist.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appxxxxxxxxxxxxxx"
The unique identifier of the Airtable base containing the record to be updated.
fields
object
✅
"{\"Status\": \"Completed\", \"Priority\": \"High\", \"Notes\": \"All tasks finished.\"}"
Fields to update. Keys are field names (case-sensitive) or IDs (fldXXXX recommended). Only specified fields are modified. Empty strings convert to null. Field names must match Airtable schema exactly (e.g., 'Call Status' not 'call status'). Use AIRTABLE_GET_BASE_SCHEMA for exact names/IDs. Date-only fields require 'YYYY-MM-DD' format. Date-time fields require ISO 8601: 'YYYY-MM-DDTHH:MM:SS.sssZ'. Human-readable dates rejected even with typecast=true. SELECT FIELDS: With typecast=false (default), only existing select options accepted; new values fail with INVALID_MULTIPLE_CHOICE_OPTIONS. Set typecast=true to auto-create new options or verify existing options via AIRTABLE_GET_BASE_SCHEMA first.
recordId
string
✅
"recABC123def456G"
The unique identifier (ID) of the record to be updated within the specified table. MUST be in Airtable's record ID format: exactly 17 characters starting with 'rec' followed by 14 alphanumeric characters (e.g., 'recABC123def456G'). Simple numeric values or row numbers are NOT valid record IDs. You can obtain valid record IDs from the AIRTABLE_LIST_RECORDS action or the Airtable web interface.
typecast
boolean
true
Enables automatic data conversion and select option creation. CRITICAL FOR SELECT FIELDS: When false (default), Airtable rejects updates to single-select or multi-select fields if the value is not already an existing option, failing with 'Insufficient permissions to create new select option' error. When true: (1) automatically creates new select options if they don't exist, and (2) converts strings to appropriate types for other fields (e.g., '123' to number 123). RECOMMENDED: Set to true when updating select fields with potentially new values, or use AIRTABLE_GET_BASE_SCHEMA to verify option existence first. Set to false only when you want strict validation against existing options.
tableIdOrName
string
✅
"tblxxxxxxxxxxxxxx"
The unique identifier (ID) or the name of the table within the base that contains the record to be updated. Also accepts 'tableId' as an alias.
returnFieldsByFieldId
boolean
true
If True, API response keys record fields by field ID instead of name. Using field IDs is recommended for integrations resilient to field name changes.
Airtable Update Record Put
Airtable Update Record PutIntegration name: AIRTABLE_UPDATE_RECORD_PUT
Updates an existing record in an Airtable base using PUT method. Use when you want to replace all field values, clearing any unspecified fields. For partial updates that preserve unspecified fields, use the PATCH-based update action instead.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
baseId
string
✅
"appxxxxxxxxxxxxxx"
The unique identifier of the Airtable base containing the record to be updated.
fields
object
✅
"{\"Status\": \"Completed\", \"Priority\": \"High\", \"Notes\": \"All tasks finished.\"}"
Specifies fields to update. Keys are field names or IDs; values are new content. PUT method clears all unspecified cell values (destructive update). Empty strings are automatically converted to null to clear field values. For Date fields: use 'YYYY-MM-DD' format for date-only fields, or ISO 8601 format (e.g., '2026-01-02T10:30:00.000Z') for date-time fields. Set typecast=true to enable automatic format conversion.
recordId
string
✅
"recxxxxxxxxxxxxxx"
The unique identifier (ID) of the record to be updated within the specified table.
typecast
boolean
true
When set to true, enables automatic data conversion from strings to appropriate field types. For example, converts string '123' to number 123. Default is false.
tableIdOrName
string
✅
"tblxxxxxxxxxxxxxx"
The unique identifier (ID) or the name of the table within the base that contains the record to be updated.
returnFieldsByFieldId
boolean
true
If True, API response keys record fields by field ID instead of name. Using field IDs is recommended for integrations resilient to field name changes.
Airtable Update Table
Airtable Update TableIntegration name: AIRTABLE_UPDATE_TABLE
Updates the name, description, and/or date dependency settings of a table in Airtable. Use this action to modify table metadata without changing the table's fields or views. At least one of 'name', 'description', or 'dateDependencySettings' must be provided.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
name
string
"Updated Table Name"
The new name for the table. Must be non-empty if provided. At least one of 'name', 'description', or 'dateDependencySettings' must be provided.
baseId
string
✅
"appHPvgqYXl3LNHXq"
The unique identifier of the Airtable base containing the table to update.
description
string
"This is an updated table description."
The new description for the table. Must not exceed 20,000 characters. At least one of 'name', 'description', or 'dateDependencySettings' must be provided.
tableIdOrName
string
✅
"tblUkxCONS303zkN7"
The unique identifier or name of the table to update.
dateDependencySettings
object
—
Configuration for date-based task scheduling in Airtable tables.
Airtable Upload Attachment
Airtable Upload AttachmentIntegration name: AIRTABLE_UPLOAD_ATTACHMENT
Uploads a file attachment to a specified field in an Airtable record. Use when you need to add a file to an attachment field. The file must be provided as a base64-encoded string.
Parameters
Your Toolhouse AI worker will automatically pass these parameters as input when the tool is called.
file
string
✅
"VGhpcyBpcyBhIHRlc3QgZmlsZSBmb3IgQWlydGFibGUgYXR0YWNobWVudCB1cGxvYWQu"
The file content encoded as a base64 string. This is the base64-encoded binary content of the file to be uploaded.
baseId
string
✅
"appHPvgqYXl3LNHXq"
The unique identifier of the Airtable base containing the record.
filename
string
✅
"test.txt"
The name of the file including its extension (e.g., 'test.txt', 'document.pdf', 'image.jpg').
recordId
string
✅
"rec14OLsbTuy1pm0t"
The unique identifier of the record to which the attachment will be uploaded.
contentType
string
✅
"text/plain"
MIME type of the file being uploaded (e.g., 'text/plain', 'image/jpeg', 'application/pdf').
attachmentFieldIdOrName
string
✅
"fldTsvfulF1e8W0N3"
The field ID (e.g., 'fldXXXXXXXXXXXXXX') or field name of the attachment field where the file will be uploaded.