Skip to main content
The course tools expose everything about a single Canvas course: metadata, syllabus, wiki pages, navigation tabs, enrolled users, modules, grades, and a one-call context snapshot. Most tools require only a course_id, which you can obtain from list_courses or resolve_course.

get_course_overview

Returns course-level metadata along with the list of teachers. This is typically the first call when you need basic facts about a course — term, dates, student count, and instructor info.

Parameters

course_id
string
required
Canvas course ID.

Response

course
object
required

Example

canvas tool run get_course_overview --args '{"course_id": "112233"}'

get_course_syllabus

Returns syllabus metadata and optionally the full syllabus body. The body is HTML and can be large; use body_char_limit to truncate it when you only need a summary.

Parameters

course_id
string
required
Canvas course ID.

Response

course_id
string
required
Canvas course ID.
course_name
string
required
Full course name.
course_code
string
Short course code.
term
object
Enrollment term object.
syllabus_body
string
The syllabus body as raw HTML, truncated to body_char_limit if needed. null when include_body is false or no syllabus exists.
has_syllabus_body
boolean
required
true if a syllabus body exists in Canvas, regardless of include_body.
syllabus_public
boolean
Whether the syllabus is publicly accessible.
syllabus_raw_length
integer
Full character length of the syllabus body before any truncation.
html_url
string
Direct URL to the course in Canvas.

Example

canvas tool run get_course_syllabus --args '{"course_id": "112233", "include_body": true, "body_char_limit": 5000}'

list_course_pages

Lists wiki pages in a course. Results can be filtered by search term and publication status.

Parameters

course_id
string
required
Canvas course ID.

Response

course_id
string
required
Canvas course ID.
count
integer
required
Number of pages returned.
pages
object[]
required

Example

canvas tool run list_course_pages --args '{"course_id": "112233", "published_only": true, "limit": 25}'

canvas_get_page

Fetches the full content of a single course wiki page by URL slug or page ID. Pass the url slug (e.g. "week-3-notes") or a numeric page ID. This tool does not support assignment, discussion, or file URLs — use resolve_canvas_url for those.

Parameters

course_id
string
required
Canvas course ID.
url_or_id
string
required
The page URL slug (e.g. "course-syllabus") or numeric page ID. Also accepts a full Canvas page URL — the slug is extracted automatically.

Response

course_id
string
required
Canvas course ID.
requested
object
required
Echo of the url_or_id and force_as_id values that were used.
page
object
required

Example

canvas tool run canvas_get_page --args '{"course_id": "112233", "url_or_id": "week-3-lecture-notes"}'

list_course_tabs

Lists the left-sidebar navigation tabs visible in a course. Tabs represent entries like Home, Syllabus, Assignments, People, and any external tool links.

Parameters

course_id
string
required
Canvas course ID.

Response

course_id
string
required
Canvas course ID.
count
integer
required
Number of tabs returned.
tabs
object[]
required

Example

canvas tool run list_course_tabs --args '{"course_id": "112233"}'

get_course_tab

Fetches a single navigation tab by its tab ID and optionally resolves and fetches the tab’s destination. Use this to follow a sidebar link through to its content.

Parameters

course_id
string
required
Canvas course ID.
tab_id
string
required
The tab identifier, e.g. "home", "syllabus", "assignments". Obtain tab IDs from list_course_tabs.

Response

course_id
string
required
Canvas course ID.
tab_id
string
required
The tab identifier that was queried.
tab
object
required
Tab object with the same fields as list_course_tabs entries.
target
object
When include_target is true, the resolved content at the tab’s destination URL. Shape depends on the destination resource type (same structure as resolve_canvas_url response).

Example

canvas tool run get_course_tab --args '{"course_id": "112233", "tab_id": "syllabus", "include_target": true}'

list_course_people

Lists users enrolled in a course. Can be filtered by name, enrollment type, and whether to include email addresses.

Parameters

course_id
string
required
Canvas course ID.

Response

course_id
string
required
Canvas course ID.
count
integer
required
Number of users returned.
people
object[]
required

Example

canvas tool run list_course_people --args '{"course_id": "112233", "enrollment_types": ["teacher", "ta"], "include_email": true}'

list_modules

Lists modules in a course and optionally expands each module’s items and their content details.

Parameters

course_id
string
required
Canvas course ID.

Example

canvas tool run list_modules --args '{"course_id": "112233", "include_items": true, "include_content_details": true, "limit": 10}'

get_course_grade_summary

Returns the current grade summary for a student in a course, including enrollment grade data, raw point totals, submission counts, and a per-assignment-group breakdown.

Parameters

course_id
string
required
Canvas course ID.

Response

course_id
string
required
Canvas course ID.
course_name
string
required
Full course name.
student_id
string
required
The student ID that was queried.
grades
object
Canvas enrollment grades object. Contains current_score, final_score, current_grade, and final_grade when available.
raw_points
object
submission_counts
object
assignment_group_breakdown
object[]
Per-group grade data, each with id, name, group_weight, earned_points, possible_points, percent, and weighted_contribution_estimate.

Example

canvas tool run get_course_grade_summary --args '{"course_id": "112233"}'

resolve_canvas_url

Parses a Canvas URL into its component object identifiers and optionally fetches the identified resource. Use this when you have a Canvas URL and need to know what it points to and how to retrieve its content.
canvas_get_page only handles wiki page URLs. For all other Canvas URLs — assignments, discussions, files, submissions — use resolve_canvas_url.

Parameters

url
string
required
A full Canvas URL, e.g. "https://school.instructure.com/courses/112233/assignments/789".

Response

url
string
required
The original URL that was parsed.
domain
string
required
The hostname extracted from the URL.
course_id
string
Extracted Canvas course ID.
resource_type
string
Type of resource identified. Common values: "assignment", "discussion_topic", "page", "file", "syllabus", "course_grades", "course_people", "course".
resource_id
string
Expanded Canvas resource ID.
resource_id_aliases
string[]
All known ID aliases for the resource (short, tilde, and full formats).
The suggested tool name to use for this resource type.
details
object
Fetched resource content when fetch_details is true. Shape matches the response from the recommended tool.
detail_error
string
Error message if the details fetch failed. null on success.

Example

canvas tool run resolve_canvas_url --args '{"url": "https://school.instructure.com/courses/112233/assignments/789", "fetch_details": true}'

get_course_context_snapshot

Returns an aggregated, single-call context snapshot for a course. Combines the course overview, syllabus, upcoming assignments, recent announcements, modules, and grade summary into one response. Designed to give an LLM or tool a quick orientation to a course without making multiple sequential requests.

Parameters

course_id
string
required
Canvas course ID.

Response

course_id
string
required
Canvas course ID.
overview
object
Result from get_course_overview.
syllabus
object
Result from get_course_syllabus.
upcoming_assignments
object
Result from list_course_assignments with bucket: "upcoming".
announcements
object
Result from list_announcements.
modules
object
Result from list_modules with items and content details.
grade_summary
object
Result from get_course_grade_summary.
errors
object[]
Array of section-level errors. Each entry has section (the snapshot key that failed) and error (the error message). Individual section failures do not abort the entire snapshot.

Example

canvas tool run get_course_context_snapshot --args '{"course_id": "112233", "include_syllabus_body": false, "upcoming_limit": 10}'

Build docs developers (and LLMs) love