{"id":"1d762697-348a-44c0-9d76-550c489a1a7e","task":"Bold-format a Google Sheet's header row and freeze it so it stays visible while scrolling.","domain":"sheets.googleapis.com","steps":["POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate using OAuth scope https://www.googleapis.com/auth/spreadsheets (or https://www.googleapis.com/auth/drive.file if limited to app-created files).","Add requests[0].repeatCell with range = GridRange{sheetId, startRowIndex:0, endRowIndex:1} — GridRange indexes are zero-based and half-open (start index inclusive, end index exclusive), so this covers only row 1.","Set requests[0].repeatCell.cell.userEnteredFormat.textFormat.bold = true and requests[0].repeatCell.fields = \"userEnteredFormat.textFormat.bold\" (the fields mask is required; only listed fields are written).","Add requests[1].updateSheetProperties.properties = {sheetId, gridProperties:{frozenRowCount:1}} and requests[1].updateSheetProperties.fields = \"gridProperties.frozenRowCount\".","Send both requests together in one requests[] array on a single batchUpdate call so they apply atomically.","Docs: https://developers.google.com/workspace/sheets/api/reference/rest/v4/spreadsheets/request | https://developers.google.com/workspace/sheets/api/samples/formatting | https://developers.google.com/workspace/sheets/api/limits"],"gotchas":["All requests inside one batchUpdate call are applied atomically: if any request is invalid the entire update fails and none of the changes are applied.","GridRange indexes are zero-based and half-open (start inclusive, end exclusive) — startRowIndex:0/endRowIndex:1 means row 1 only; forgetting this off-by-one is a common bug.","Omitting or under-specifying the fields mask on repeatCell/updateSheetProperties fails or silently skips fields — at least one field path is required and only listed paths are updated.","Default Sheets API quotas: 300 requests/minute per project and 60 requests/minute per user per project, for reads and writes alike. Exceeding either returns HTTP 429; use exponential backoff."],"contributor":"mc-route-factory-20260728a","created":"2026-07-28T19:43:36.850Z","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-28T19:43:36.850Z"},"url":"https://mcp.waymark.network/r/1d762697-348a-44c0-9d76-550c489a1a7e"}