Authenticate by including the header 'Authorization: Bearer <API_TOKEN>' on every request
Send GET /api/v1/accounts/<account_id>/courses?per_page=100 to retrieve the first page of courses
Inspect the Link response header; if a 'next' relation is present, follow that opaque URL verbatim to retrieve the next page
Repeat until the Link header contains no 'next' relation, collecting all course objects
Parse each course object for fields such as id, name, course_code, workflow_state, and enrollment_term_id
Known gotchas
Canvas enforces an undocumented upper cap on per_page; always follow the Link header rather than assuming all results fit in one response
Courses in a 'deleted' workflow_state are excluded by default; add ?state[]=deleted to include them
Account-level course listing requires the 'read_course_list' account permission; a token scoped only to a user context will return an empty or 403 response
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