Skip to main content
The core tools cover everyday Canvas data you reach for most often: today’s date, enrolled courses, fuzzy course lookup, announcements, and calendar events. Every other tool builds on the course IDs these tools surface.

get_today

Returns today’s date in ISO 8601 format (YYYY-MM-DD). Use this when you need a reliable current date without relying on client-side clocks or LLM knowledge cutoffs. No parameters.

Response

today
string
required
Today’s date in ISO 8601 format, e.g. "2025-09-01".

Example

canvas tool run get_today --args '{}'
{ "today": "2025-09-01" }

list_courses

Lists Canvas courses for the authenticated user. By default returns only starred (favorite) courses.

Parameters

favorites_only
boolean
default:"true"
When true, returns only courses the user has starred in Canvas. Set to false to include all active enrollments. Defaults to true.
Filter courses by name or course code. Case-insensitive substring match performed server-side.
limit
integer
Maximum number of courses to return. Must be between 1 and 300. Defaults to 50.

Response

source
string
required
Either "favorites" (when favorites_only is true) or "active-enrollments".
count
integer
required
Number of courses returned.
courses
object[]
required

Example

canvas tool run list_courses --args '{"favorites_only": true, "limit": 10}'
{
  "source": "favorites",
  "count": 2,
  "courses": [
    {
      "id": "112233",
      "name": "Introduction to Algorithms",
      "course_code": "CMSC351",
      "term_name": "Fall 2025",
      "state": "available"
    }
  ]
}

resolve_course

Fuzzy-matches a natural-language query against the user’s Canvas courses and returns ranked matches. Useful when you have a partial course name or code and need to discover the right course_id before calling other tools.

Parameters

query
string
required
The search string to match against course names and course codes. Supports partial strings and space-separated tokens.
favorites_only
boolean
default:"true"
When true, searches only starred courses. Set to false to search all active enrollments. Defaults to true.
limit
integer
Maximum number of matches to return. Must be between 1 and 20. Defaults to 5.

Response

count
integer
required
Number of matches found above the relevance threshold.
matches
object[]
required

Example

canvas tool run resolve_course --args '{"query": "algorithms", "limit": 3}'
{
  "count": 1,
  "matches": [
    {
      "id": "112233",
      "name": "Introduction to Algorithms",
      "course_code": "CMSC351",
      "term_name": "Fall 2025",
      "state": "available",
      "score": 0.86
    }
  ]
}

list_announcements

Lists announcements for one or more courses. Results are filtered to active announcements by default and can be scoped to a date range.

Parameters

course_ids
string[]
required
Array of Canvas course IDs to fetch announcements for. At least one ID is required.

Response

course_ids
string[]
required
The course IDs that were queried.
count
integer
required
Number of announcements returned.
announcements
object[]
required

Example

canvas tool run list_announcements --args '{"course_ids": ["112233", "445566"], "start_date": "2025-09-01T00:00:00Z", "limit": 20}'

list_calendar_events

Lists calendar events and assignment due dates across one or more courses. Can be filtered by event type and date range.

Parameters

course_ids
string[]
Array of Canvas course IDs to scope the calendar query. When omitted, Canvas returns events across all enrolled courses.

Response

course_ids
string[]
required
The course IDs that were queried.
count
integer
required
Number of events returned.
events
object[]
required

Example

canvas tool run list_calendar_events --args '{"course_ids": ["112233"], "type": "assignment", "start_date": "2025-09-01T00:00:00Z", "end_date": "2025-12-15T23:59:59Z"}'

Build docs developers (and LLMs) love