Canvas LMS integration
Canvas LMS by Instructure is the learning management system of many schools and universities. List and manage courses, their people, sections and enrollments; create, update and delete assignments, assignment groups, due-date overrides, modules and module items, wiki pages, discussion topics and announcements; read and post discussion entries; read submissions and grades, grade or comment on a submission, or submit as a student; read calendar events, the planner, to-do items and missing work; read and send inbox messages; read quizzes, files, groups, users and accounts. Not exposed: file uploads, bulk grading, New Quizzes and quiz questions, rubrics and outcomes, SIS imports, reports and other account administration, LTI tools, content migrations, analytics, and the group- or section-scoped copies of routes. Lists return their first page (10 items, more with per_page). Grades, submissions, rosters and inbox messages are students' personal and educational records (FERPA in the US): share them only with people entitled to see them. Authentication is OAuth2 with a developer key that a Canvas admin of your institution creates (LiveContext has no shared Canvas app); the connection also asks for your Canvas address, and calls act with your own permissions.
Say what should happen.
The workflow builds itself.
What you can do with Canvas LMS
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Assignment, 5 operations
create_assignmentCreate assignmentPOSTCreates an assignment in a course: name, HTML description, points, grading type, submission types, due, unlock and lock dates, group and publish state. A published assignment is visible to the students it is assigned to.delete_assignmentDelete assignmentDELETEDeletes an assignment from a course and returns the deleted assignment.get_assignmentGet assignmentGETReturns one assignment of a course: name, HTML description, due, lock and unlock dates, points, grading type, submission types, assignment group, publish state and links.list_assignmentsList assignmentsGETLists a course's assignments: name, description, due, lock and unlock dates, points, grading type, submission types, group and publish state. bucket filters by due status (upcoming, overdue, ungraded...).update_assignmentUpdate assignmentPUTUpdates an assignment: name, description, points, grading type, submission types, dates, group or publish state. Only the fields sent change. notify_of_update sends students a notification that it changed.
Calendar event, 5 operations
create_calendar_eventCreate calendar eventPOSTCreates a calendar event on a course, group or user calendar (context_code such as course_123): title, HTML description, start and end, location, all-day or an RRULE recurrence. Members of that course or group see it.delete_calendar_eventDelete calendar eventDELETEDeletes a calendar event (with an optional cancel reason) and returns it. For a recurring series, which chooses one, all or following events.get_calendar_eventGet calendar eventGETReturns one calendar event or assignment event: title, start and end, location, description, context, recurrence and links.list_calendar_eventsList calendar eventsGETLists the connected user's calendar events or assignments (type) for a date range (today by default) and contexts (course_123, group_4, user_5): title, times, location, description and links.update_calendar_eventUpdate calendar eventPUTUpdates a calendar event: title, description, times, location, all-day flag or calendar. For a recurring series, which chooses one, all or following events.
Discussion topic, 5 operations
create_discussion_topicCreate discussion topicPOSTCreates a discussion topic in a course, or an announcement with is_announcement true: title, HTML message, type, publish state, delayed post and lock dates, pinned and rating. Once published, the course's students see it and may be notified.delete_discussion_topicDelete discussion topicDELETEDeletes a discussion topic or announcement, and its assignment when it is a graded discussion.get_discussion_topicGet discussion topicGETReturns one discussion topic of a course: title, HTML message, author, discussion type, dates, reply and unread counts, lock and publish state.list_discussion_topicsList discussion topicsGETLists a course's discussion topics (or its announcements with only_announcements): title, message, author, posting and reply dates, unread counts and state. Filter by scope, unread or a title search.update_discussion_topicUpdate discussion topicPUTUpdates a discussion topic or announcement: title, HTML message, discussion type, publish state, delayed post or lock date, pinned and rating options. On a published topic, students see the change.
Item, 5 operations
create_module_itemCreate module itemPOSTAdds an item to a module: an existing assignment, quiz, file, discussion or page (by content id or page_url), an external URL or a text sub-header, with an optional completion requirement.delete_module_itemDelete module itemDELETERemoves an item from a module and returns the removed item.get_module_itemGet module itemGETReturns one module item: title, type, linked content id or page URL, position, indent, completion requirement and links.list_module_itemsList module itemsGETLists the items of a module in order: title, type (Assignment, Page, File, Discussion, Quiz, ExternalUrl...), content id, completion requirement and links.list_planner_itemsList planner itemsGETLists the connected user's planner items (assignments, quizzes, discussions, pages, events, to-do notes) for a date range: type, the item, its submission status and link.
Module, 5 operations
create_moduleCreate modulePOSTCreates a module in a course: name, position, unlock date, prerequisite modules and whether items must be completed in order.delete_moduleDelete moduleDELETEDeletes a module from a course and returns it.get_moduleGet moduleGETReturns one module of a course: name, position, unlock date, prerequisites, publish state, items count and, with student_id, that student's completion state.list_modulesList modulesGETLists a course's modules: name, position, unlock date, prerequisites, publish state and, with student_id, that student's completion state. include items returns the items inline when possible.update_moduleUpdate modulePUTUpdates a module: name, position, unlock date, prerequisites, sequential progress or publish state.
Page, 5 operations
create_pageCreate pagePOSTCreates a wiki page in a course with a title and an HTML body; can publish it (the course's students then see it), schedule its publication, make it the front page and set who may edit it.delete_pageDelete pageDELETEDeletes a wiki page from a course and returns it.get_pageGet pageGETReturns one wiki page of a course with its HTML body, title, url slug, dates, editing roles, last editor and publish state.list_pagesList pagesGETLists a course's wiki pages: title, url (its slug), dates, editing roles and publish state. Sort, search by title or filter by publish state; include body adds the HTML content.update_pageUpdate pagePUTUpdates a wiki page's title, HTML body, editing roles, publish state or front-page status. Changing the title changes its url slug.
Submission, 5 operations
get_submissionGet submissionGETReturns one student's submission for an assignment (personal data): status, score, grade, body or URL, attachments, submitted and graded dates. include adds comments, history or rubric assessment.grade_submissionGrade submissionPUTGrades a student's submission and/or adds a comment; the student sees them once the assignment's grades are posted (automatic by default). posted_grade sets the score or grade, excuse excuses it, late_policy_status marks it late or missing.list_course_submissionsList course submissionsGETLists submissions across assignments of a course (grades: personal data). Filter by student_ids (all for every student; omitted means the connected user's own), assignment ids, submitted or graded since, or state.list_submissionsList submissionsGETLists all submissions for one assignment (students' work, grades and comments: personal data): status, score, grade, submitted and graded dates, lateness and attempt.submit_assignmentSubmit assignmentPOSTSubmits an assignment as the connected student: text entry (submission[body]), a URL, or files already uploaded (file ids), with an optional comment. Only allowed submission types of the assignment work.
User, 5 operations
get_course_userGet course userGETReturns one user of a course (personal data: name, sortable name, login id, avatar and, when visible, email).get_userGet userGETReturns a user's details (personal data: name, sortable name, login id, email, avatar, locale, time zone, bio, pronouns, last login). Use self for the connected user.list_account_usersList account usersGETLists the users of an account, for account admins (personal data: names, login id, email when visible). Search by name or id, filter by enrollment type, sort by name, email, SIS id or last login.list_course_usersList course usersGETLists the people in a course (personal data: names, login id, email when visible), optionally with their enrollments. Filter by name or id search, enrollment type or state, section or user ids.list_group_usersList group usersGETLists the members of a group (personal data: names and avatar). Search by name or id.
Course, 4 operations
create_courseCreate coursePOSTCreates a course in an account (the connected user needs permission to create courses there): name, code, dates, description, time zone and home page. enroll_me makes them its teacher; offer publishes it.get_courseGet courseGETReturns one course: name, course code, dates, workflow state, default view and the connected user's enrollments in it. include adds syllabus_body, total_scores, term, teachers and more.list_coursesList coursesGETLists the courses of the connected user (active by default): id, name, course code, dates, workflow state, enrollments and term. Filter by enrollment type or state; include adds grades, syllabus, teachers or term.update_courseUpdate coursePUTUpdates a course's name, code, dates, description, visibility, time zone, home page, syllabus or image. course[event] can also publish (offer), conclude or delete the course. Needs course editing rights.
Enrollment, 4 operations
end_enrollmentEnd enrollmentDELETEEnds an enrollment, chosen with task: conclude (the default), inactivate or deactivate (the user stays on the roster but loses access), or delete.enroll_userEnroll userPOSTEnrolls a user in a course as a student, teacher, TA, observer or designer, optionally in a section and with dates. enrollment_state active skips the invitation; notify sends the user a notification.list_course_enrollmentsList course enrollmentsGETLists a course's enrollments (personal data): user, role, state, section, last activity and grades (current and final score). Filter by type, state or user.list_user_enrollmentsList user enrollmentsGETLists a user's enrollments across courses, with grades (current and final score) per course (personal data). Use self for the connected user. Filter by type or state.
Assignment group, 3 operations
create_assignment_groupCreate assignment groupPOSTCreates an assignment group (a grade category) in a course with a name, a position and the percent of the total grade it weighs.get_assignment_groupGet assignment groupGETReturns one assignment group of a course: name, position, weight, drop rules, and its assignments when include asks for them.list_assignment_groupsList assignment groupsGETLists a course's assignment groups (grade categories) sorted by position: name, position, weight and drop rules. include assignments returns each group's assignments too.
Conversation, 3 operations
get_conversationGet conversationGETReturns one inbox conversation with its participants and messages, newest first (private messages: personal data). Marks it read unless auto_mark_as_read is false.list_conversationsList conversationsGETLists the connected user's inbox conversations, newest first (private messages: personal data): subject, last message, date, counts, state and participants. Filter by scope (unread, sent...) or course.send_conversation_messageSend conversation messagePOSTSends a Canvas inbox message to users, or to a whole course or group (course_123), as the connected user: real people receive it. Reuses an existing private conversation with the same recipients unless force_new.
Group, 3 operations
get_groupGet groupGETReturns one group: name, description, member count, join level, context and group category.list_course_groupsList course groupsGETLists the student groups of a course visible to the connected user: name, description, member count, join level and group category.list_my_groupsList my groupsGETLists the connected user's active groups: name, description, member count, join level and course or account.
Override, 3 operations
create_assignment_overrideCreate assignment overridePOSTGives specific students, a group or a section their own due, unlock and lock dates for an assignment (an extension). Send exactly one target: student_ids (with a title), group_id or course_section_id.delete_assignment_overrideDelete assignment overrideDELETEDeletes an assignment override (the special due, unlock and lock dates of some students, a group or a section) and returns its former details.list_assignment_overridesList assignment overridesGETLists an assignment's overrides: the different due, unlock and lock dates given to specific students, a group or a section.
Section, 3 operations
create_sectionCreate sectionPOSTCreates a section in a course with a name and optional start and end dates.get_sectionGet sectionGETReturns one section of a course: name, dates, course id and, with include, its students (personal data).list_sectionsList sectionsGETLists a course's sections: name, start and end dates, SIS ids and, with include, its students (personal data) or the total number of students.
Entry, 2 operations
list_discussion_entriesList discussion entriesGETLists the top-level entries of a discussion (participants' posts: personal data), newest first, each with author, message, read state and up to 10 recent replies. Some topics require the user to post before reading (403).post_discussion_entryPost discussion entryPOSTPosts a top-level entry (a reply to the topic itself) in a course discussion as the connected user, visible to the other participants.
File, 2 operations
get_fileGet fileGETReturns one file's details: display name, file name, size, file type (mime class), dates, lock state and a download link.list_course_filesList course filesGETLists a course's files: display name, file name, size, file type (mime class), dates, lock and visibility state, and a download link. Filter by content type or name search, sort.
Quizz, 2 operations
get_quizGet quizGETReturns one classic quiz: title, type, description, time limit, attempts, question count, points, dates, publish and lock state. The access code is not returned.list_quizzesList quizzesGETLists a course's classic quizzes: title, type, description, time limit, allowed attempts, question count, points, due, lock and unlock dates and publish state. The access code is not returned.
Reply, 2 operations
list_discussion_repliesList discussion repliesGETLists the replies to one top-level discussion entry (participants' posts: personal data), newest first: author, message, read state and date.post_discussion_replyPost discussion replyPOSTPosts a reply to a top-level discussion entry as the connected user, visible to the other participants.
Account, 1 operation
list_accountsList accountsGETLists the accounts the connected user can view or manage (account admins only; students and teachers usually get an empty list): id, name, parent and root account.
Add message, 1 operation
reply_to_conversationReply to conversationPOSTAdds a message to an existing inbox conversation as the connected user, sent to all its participants or to the recipients given. Real people receive it.
Announcement, 1 operation
list_announcementsList announcementsGETLists announcements of the given courses (context_codes such as course_123): title, message, posting date and course. By default from 14 days ago to 28 days after the start date.
Front page, 1 operation
get_front_pageGet front pageGETReturns the front page of a course with its HTML body, title, url slug and dates.
Missing submission, 1 operation
list_missing_submissionsList missing submissionsGETLists past-due assignments a student has not submitted (personal data). Use self for the connected user; a parent observer or admin can pass a student's id. course_ids restricts the courses.
Profile, 1 operation
get_user_profileGet user profileGETReturns a user's profile (personal data: name, title, bio, primary email, login id, avatar, time zone, locale). Use self for the connected user. The calendar feed link is not returned.
Progress, 1 operation
get_user_course_progressGet user course progressGETReturns a user's module progress in a course (personal data): requirements that exist, those completed, the next requirement's link and when the course was completed. Use self for the connected user.
Submission summary, 1 operation
get_submission_summaryGet submission summaryGETCounts the gradeable students of an assignment in three groups: graded, ungraded (submitted, not graded) and not submitted.
Todo, 1 operation
list_todo_itemsList todo itemsGETLists the connected user's to-do items: assignments or quizzes to submit soon and, for teachers, assignments needing grading with their count.
Unread count, 1 operation
get_unread_conversation_countGet unread conversation countGETReturns the number of unread inbox conversations of the connected user.
Upcoming event, 1 operation
list_upcoming_eventsList upcoming eventsGETLists the connected user's upcoming calendar events and assignment due dates: title, times, location, context and links.
Use Canvas LMS from Claude Code, Cursor or Codex
Connect Canvas LMS in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Canvas LMS operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Canvas LMS
- Create your workspace
Sign up free. Nothing to install.
- Connect Canvas LMS once
Add your Canvas LMS connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Canvas LMS integration FAQ
What can you do with the Canvas LMS integration?
LiveContext exposes 82 operations on Canvas LMS, covering assignment, calendar event, discussion topic and item.
