← AirtableCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
changed
Update to Airtable
Snapshot Sep 30, 2026 · 23:18 UTC · version 7.0.0
Collection source: not recorded for this historical snapshot. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.
Supporting file metadata differs
Newly listed paths: agents/openai.yaml. This compares saved file lists, not package contents; a different collection source can change the list.
Observed in package metadata. These changes alone do not establish a new customer-facing feature.
Supporting files
Before
[]
After
[{"relative_path":"agents/openai.yaml","size_in_bytes":247}]
Compare saved observations
Download comparison JSONFull technical diff · 1 changed fields
changed /included_files
BEFORE
[]
AFTER
[
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 247
}
]Full snapshot data
{
"name": "airtable-filters",
"description": "Use this skill when the user wants to find, filter, or narrow down Airtable records by field values, even when they don't explicitly say \"filter.\"",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 247
}
],
"skill_md_contents": "---\nname: airtable-filters\ndescription: Use this skill when the user wants to find, filter, or narrow down Airtable records by field values, even when they don't explicitly say \"filter.\"\nlicense: MIT\nmetadata:\n version: '1.0.0'\n author: airtable\n---\n\n# Airtable MCP Filters\n\nMCP tools that list or display records from tables or interface pages accept an optional `filters` parameter, using the same schema.\n\nWhen querying records from an interface page, these filters are combined with the page's built-in filters using AND.\n\n## Schema shape\n\nWhen no top-level `operator` is specified, conditions are combined with AND. The first element in a condition's `operands` array is always a **field ID** — look up the table's schema to find field IDs before filtering.\n\n## Field type categories\n\n- **Text-like**: singleLineText, multilineText, email, url, phoneNumber, richText, barcode\n- **Numeric**: number, percent, currency, rating, duration, autoNumber, count\n- **Date**: date, dateTime, createdTime, lastModifiedTime\n- **Single select**: singleSelect\n- **Multiple selects**: multipleSelects\n- **Single collaborator**: singleCollaborator\n- **Multiple collaborators**: multipleCollaborators\n- **Linked records**: multipleRecordLinks\n- **Attachment**: multipleAttachments\n- **Checkbox**: checkbox\n\nComputed fields (formula, rollup, lookup) support whichever operators match their result type.\n\n## Comparison operators\n\n| Operator | Second operand | Field categories |\n| ----------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |\n| `=` | string, number, boolean, choice ID | text-like, numeric, date, checkbox, single select, multiple selects, single collaborator, multiple collaborators, linked records |\n| `!=` | string, number, choice ID | text-like, numeric, date, single select, single collaborator |\n| `<`, `>`, `<=`, `>=` | number or date value object | numeric, date |\n| `contains` | string | text-like, linked records |\n| `doesNotContain` | string | text-like, linked records |\n| `doesNotContain` | array of IDs | multiple selects, multiple collaborators |\n| `isEmpty`, `isNotEmpty` | _(none)_ | text-like, numeric, date, single select, multiple selects, single collaborator, multiple collaborators, linked records, attachment |\n| `hasAnyOf`, `hasAllOf` | array of IDs | multiple selects, multiple collaborators, linked records |\n| `isAnyOf` | array of IDs | single select, single collaborator |\n| `isNoneOf` | array of IDs | single select, single collaborator, linked records |\n| `isWithin` | date range object | date |\n| `filename`, `fileType` | string or `\"image\"`/`\"text\"` | attachment |\n\nWhen matching a field against multiple values, prefer dedicated operators (`isAnyOf`, `isNoneOf`, `hasAnyOf`, `hasAllOf`) over combining multiple `=` conditions with `or`/`and`, when those operators are available for the field type.\n\n## Field-type rules\n\n### Select fields\n\nFor select fields, operand values must be **choice IDs** (e.g., `\"selABCDEFGHIJKLM\"`), not display names. Look up the table's schema to find choice IDs before filtering.\n\n### Collaborator fields\n\nWhen filtering by a collaborator group ID, use `operatorOptions` to match individual members of the group instead of the literal group ID. See the tool's `operatorOptions` parameter for details.\n\nExample operand: `{\"operator\": \"hasAnyOf\", \"operands\": [\"fldCRi9oz2vRLcIWr\", \"ugpDUVUnftA7H9bG8\"], \"operatorOptions\": {\"matchGroupsByMembership\": true}}`\n\n### Attachment fields\n\nUse `fileType` to filter attachments by type (e.g., `\"image\"`, `\"text\"`) rather than `isNotEmpty` when the user specifies a file type.\n\n### Date fields\n\nDate comparisons (`=`, `!=`, `<`, `>`, `<=`, `>=`) use a date value object instead of a raw date string, and `isWithin` uses a date range object. The tool schema defines the available modes for each. Always include `timeZone`.\n\n## Composing conditions\n\nA filter's top-level operands array can contain two or more conditions, which are combined with the top-level operator (AND by default). For simple multi-condition filters, this flat structure is sufficient.\n\nWhen the logic requires mixing AND and OR, nest a filter object as one of the operands. Each nested filter has its own operator and operands.\n\n**OR inside AND** — useful when one condition is fixed and another allows multiple alternatives:\n\n> \"Scripted videos that are either in Writing or Pre-Production\"\n> → Bucket = Scripted AND (Status = Writing OR Status = Pre-Production)\n\n**AND inside OR** — useful when you want records matching either a simple condition or a combination:\n\n> \"Approved videos, or videos assigned to Bailey that are in Cut 2\"\n> → Status = Approved OR (Editor = Bailey AND Status = Cut 2 Ready)\n\nWhen combining many conditions on different fields, prefer a flat AND rather than unnecessary nesting. Only nest when the logic genuinely requires mixed AND/OR at different levels.\n\nPrefer composing all conditions into a single `filters` object rather than splitting them across multiple calls. A single call with a composed filter is more efficient and returns the correct result set directly.\n\n## Examples\n\nFilter where a text field equals \"orange\" OR a number field is greater than 5:\n\n```json\n{\n \"operator\": \"or\",\n \"operands\": [\n {\"operator\": \"=\", \"operands\": [\"fld8WsrpLHHevsnW8\", \"orange\"]},\n {\"operator\": \">\", \"operands\": [\"fldulcCPDVz87Bmnw\", 5]}\n ]\n}\n```\n\nFilter for records where a date field is within the past week:\n\n```json\n{\n \"operands\": [\n {\n \"operator\": \"isWithin\",\n \"operands\": [\"fldABC12345678x\", {\"mode\": \"pastWeek\", \"timeZone\": \"America/New_York\"}]\n }\n ]\n}\n```\n"
}SHA-256: 7055bc278b13501a1c75696b45205c5700905b8f8183238bb0115d8635924091