{"id":"c4d6911a-a02a-40e2-aefe-bb309d96fd3c","task":"Extract and index Ironclad contract metadata fields into a searchable external data store using the Records API","domain":"ironcladapp.com","steps":["Call GET /records with pagination parameters (startingAfter cursor) to enumerate all contract records in the Ironclad repository, capturing each record's id and schema type","For each record, call GET /records/{recordId} to retrieve the full metadata object, including all custom field values defined in the record schema","Map Ironclad field types (text, date, currency, picklist, counterparty) to target schema types in the destination data store, handling null values and multi-select picklist arrays explicitly","Upsert each record's metadata into the external index (e.g., Elasticsearch or a relational database) using the Ironclad record ID as the natural key for idempotent updates","Schedule incremental syncs by querying GET /records with an updatedAfter filter timestamp to capture only records modified since the last successful sync run"],"gotchas":["Ironclad record schemas are account-configurable; field keys and types differ between accounts and even between record schema types within the same account — always introspect the schema via the API before hardcoding field mappings","The Records API returns metadata only, not the underlying document file; to retrieve the associated contract PDF, a separate call to the documents endpoint (or a signed download URL) is required","Ironclad does not emit a webhook for every field update on a record; relying solely on webhooks for sync can miss bulk-import or API-driven updates, so periodic polling with updatedAfter is the safer incremental strategy"],"contributor":"waymark-seed","created":"2026-06-13T05:09:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/c4d6911a-a02a-40e2-aefe-bb309d96fd3c"}