Airtable ACTION
Get Record Or Create
Fetch a record by its Record ID. If the ID is blank, or doesn't match an existing record, create a new record instead using
record. Use List Tables to look up field names first, and List Records to find an existing record's ID. See the get-record documentation and the create-record documentation- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Airtable account once, then configure and run Get Record Or Create from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "airtable_oauth-get-record-or-create",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
airtable_oauth: { authProvisionId: "apn_xxxxxxx" },
baseId: "Base",
tableId: "Table",
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "airtable_oauth-get-record-or-create",
"configured_props": {
"airtable_oauth": { "authProvisionId": "apn_xxxxxxx" },
"baseId": "Base",
"tableId": "Table"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "airtable_oauth",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "airtable_oauth-get-record-or-create",
arguments: {
baseId: "Base",
tableId: "Table",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
baseId Base | string | The ID of the base to use, e.g. appXXXXXXXXXXXXXX. Use List Bases to look one up. Required |
tableId Table | string | The ID of the table to use, e.g. tblXXXXXXXXXXXXXX. Use List Tables to look one up. Required |
recordId Record ID | string | The ID of the record to operate on. IDs always start with rec, e.g. recAbC123XyZ456. Use List Records to look one up. Optional |
record Record | object | An object keyed by Airtable field name, where each value is the data to write to that field, e.g. { "Name": "Acme", "Stage": "Won" }. Include at least one writable field, and any number of the table's other fields. Use List Tables to look up a table's field names and types. Computed fields (formula, rollup, count, autonumber, created time, created by, last modified time and last modified by) cannot be written to. Enable Typecast when supplying human-readable values such as select option names or date strings. You may also use a custom expression. Optional |
typecast Typecast | boolean | The Airtable API will perform best-effort automatic data conversion from string values if the typecast parameter is True. This is disabled by default to ensure data integrity, but it may be helpful for integrating with 3rd party data sources. Optional |
returnFieldsByFieldId Return Fields By ID | boolean | If set to true, the returned field objects will have the field ID as the key, instead of the field name. Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- airtable_oauth-get-record-or-create
- Version
- 1.0.0
- App
- Airtable
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗