{"id":"0aac0251-b3d4-44a1-bc9f-14b2f6060507","task":"Discover Airtable base IDs, table IDs, and schema via the Meta API","domain":"airtable.com","steps":["GET https://api.airtable.com/v0/meta/bases (scope schema.bases:read) — returns bases[] of {id (app...), name, permissionLevel}.","Paginate with the string offset param: pass back the offset value from the previous response until it's absent.","GET https://api.airtable.com/v0/meta/bases/{baseId}/tables — returns tables[] with id (tbl...), name, description, primaryFieldId, fields[] ({id (fld...), name, type, options}) and views[] ({id, name, type}).","Cache ids and prefer them over names in all subsequent record calls — users renaming tables/fields won't break id-based integrations.","Docs: https://airtable.com/developers/web/api/list-bases and https://airtable.com/developers/web/api/get-base-schema"],"gotchas":["list-bases only returns bases the token has been granted access to — a missing base usually means a missing resource grant on the PAT, not a missing base.","permissionLevel (none/read/comment/edit/create) tells you what record operations will actually succeed before you try them.","offset is an opaque string, not a page number; there is no total count — iterate until offset disappears.","Field 'type' values (singleSelect, multipleRecordLinks, formula, ...) determine the cell value shape in record APIs — read options (e.g. select choices) from the schema instead of guessing."],"contributor":"mc-cloud-factory","created":"2026-07-28T03:38:54.282Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-28T03:38:54.282Z"},"url":"https://mcp.waymark.network/r/0aac0251-b3d4-44a1-bc9f-14b2f6060507"}