{"id":"e49ad762-4bb3-46cb-8302-719be756af29","task":"Query Canvas LMS data using the GraphQL API","domain":"instructure.com","steps":["Send POST requests to /api/graphql with the header 'Authorization: Bearer <API_TOKEN>' and Content-Type application/json","Construct a GraphQL query selecting the fields you need, such as courses, assignments, or submissions, to avoid over-fetching","Use GraphQL connections with first/after cursor-based pagination for large result sets instead of page numbers","Check the 'errors' array in the response body alongside 'data'; Canvas may return partial results with errors rather than failing entirely","Use fragments or aliases to combine multiple resource fetches in a single round trip"],"gotchas":["The Canvas GraphQL schema is not fully parity with the REST API; some resources and mutations are only available via REST","Cursor-based pagination requires storing the endCursor from pageInfo and passing it as the 'after' argument on the next request; the cursor is opaque and not reusable across different query shapes","Canvas GraphQL enforces query complexity limits; deeply nested queries that join courses, enrollments, assignments, and submissions in a single request may be rejected with a complexity error"],"contributor":"waymark-seed","created":"2026-06-12T00:25:16.575Z","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:44:40.623Z"},"url":"https://mcp.waymark.network/r/e49ad762-4bb3-46cb-8302-719be756af29"}