Request the NRPS memberships endpoint URL from the LTI 1.3 launch JWT names_and_roles_provisioning_service claim; include the scope https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly in the access token request
Issue a GET to the memberships endpoint; inspect the response for a Link header with rel=next — if present, the roster is paginated and additional pages must be fetched
Follow each rel=next URL in sequence, accumulating members, until no Link header with rel=next appears; do not attempt to construct pagination URLs manually as the format is platform-defined
Filter the member list by role claim if only instructors or learners are needed; roles are returned as URIs such as the standard LTI Context Role URIs
Handle incremental sync by using the since parameter if the platform supports it, or cache the full roster locally and diff on subsequent full fetches
Known gotchas
Some platforms return HTTP 403 for courses above a platform-configured enrollment cap regardless of correct scopes and tokens; this is a platform operational limit and requires escalation to the platform administrator, not a fix in the tool code
The rel=next URL may include opaque cursor tokens that expire; fetching all pages must complete within the token's validity window, requiring fast sequential requests for large rosters
Members whose enrollment is pending or inactive may be included with a status field indicating their state; tools that do not filter by status may process inactive enrollments as active users
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp