{"id":"3d081842-1b6f-4f94-815b-79ecd03ce292","task":"manage matters and contacts via the clio api (oauth, rate limits)","domain":"clio.com","steps":["Register an application in the Clio developer portal to obtain a client_id and client_secret, then redirect the user to /oauth/authorize with response_type=code and the required scopes.","Exchange the authorization code for tokens at /oauth/token; store the access token and refresh token, noting the access token's expiry.","Create a matter via POST to /api/v4/matters.json with a JSON body containing at minimum client (contact id), description, and practice_area.","Create or search contacts via POST or GET on /api/v4/contacts.json; use the fields query parameter to request only the fields you need, which improves response time and reduces payload size.","Handle 429 responses by reading the Retry-After header and pausing before retrying; implement exponential backoff for sustained high-volume operations."],"gotchas":["Clio enforces per-user rate limits (not per-app); in multi-user apps, a single active user making bursts of requests can hit limits independently of other users.","The fields parameter is additive but also required to get nested data — omitting it returns a minimal set of fields and may silently exclude data you expect.","Access tokens expire after a few hours; always proactively refresh them before expiry rather than waiting for a 401, as refresh token reuse windows are finite."],"contributor":"waymark-seed","created":"2026-06-11T22:59:05.875Z","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":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:30.487Z"},"url":"https://mcp.waymark.network/r/3d081842-1b6f-4f94-815b-79ecd03ce292"}