AGENTS.md
+96 −16
https://raw.githubusercontent.com/vishalsachdev/canvas-mcp/HEAD/AGENTS.md
− CANVAS_ROLE=student # ~37 tools (student + shared)− CANVAS_ROLE=educator # 92 tools (educator + shared)− CANVAS_ROLE=all # Default profile; 98 tools by default, 103 with all feature-gated tools enabled− Three things to know before using them:− | `update_discussion_topic` | Edit discussion or announcement title/body and settings. Optional guards: `expect_body_sha256` (topics have no `updated_at`), `find`/`replace` on the message, `require` (see Guarded edits) |− | `get_syllabus` | Full Syllabus tab content, untruncated (text/html/both). Educators write it with `update_syllabus` |− | `get_page_content` | Read page content |− | `list_discussion_topics` | Discussion forums (discussions only; set `include_announcements` to also list announcements). Shows `Anonymity:` when Canvas reports an `anonymous_state`. Canvas REST returns 404 for fully anonymous topics; the topic read tools then say the topic exists and must be opened in the Canvas UI, instead of reporting it missing |− | `get_discussion_topic_details` | One topic's details; `raw_dates=True` appends the topic's dates and, for a graded discussion, its assignment and checkpoint dates. Prints the message's SHA-256 for `update_discussion_topic`'s `expect_body_sha256` |− | `list_discussion_entries` | Posts in a discussion |− Same parameters on update_assignment (description). Discussion topics and the− Omit every guard parameter and the tools behave exactly as before.− | Course code | `badm_350_120251_246794` | SIS course code |− | SIS ID | `sis_course_id:ABC123` | If configured |− The server automatically resolves identifiers to Canvas IDs.− No anonymization needed - students only access their own data via Canvas "self" endpoints.+ CANVAS_ROLE=student # 51 tools by default (student + shared), 62 with every student write tool enabled+ CANVAS_ROLE=educator # 93 tools by default, 95 with every gated tool enabled+ CANVAS_ROLE=all # Default profile; 112 tools by default, 125 with all feature-gated tools enabled+ | `get_my_assignment_scores` | Every assignment's score and status in one course, by assignment group (weights, drop rules) |+ | `calculate_grade_scenarios` | Recompute your grade the way Canvas does (compared with Canvas's own score), try what-if scores, and get the percentage needed on remaining work for a target % or letter |+ | `list_my_announcements` | Announcements across ALL active courses (default last 14 days); `list_announcements` is per-course |+ | `get_my_activity_stream` | Recent activity feed grouped by kind: announcements, discussions, conversations, grades/comments (course activity only; no group or non-course inbox items) |+ | `list_my_groups` | Groups you belong to, with course, course ID and member count. To read a group's discussions or announcements, pass its course ID and group ID to `list_discussion_topics(course_identifier, group_id=..., include_announcements=True)` and `get_discussion_with_replies(course_identifier, topic_id, include_replies=True, group_id=...)` |+ | `get_group_members` | Members of one of your groups (no emails) |+ | `list_group_files` | Files stored in one of your groups |+ Shared discussion reads, including the course-wide group listing, require group+ membership in every tool profile unless Canvas explicitly grants `manage_grades`+ or `read_as_admin`. Missing or malformed permission data never grants staff access.+ The group tools only read groups you are a member of; they check your membership+ before every call and refuse other groups even when Canvas would allow the read.+ | `list_quizzes` | Classic quizzes and New Quizzes in a course: dates, limits, your submission state (read-only) |+ | `get_quiz_details` | One quiz's settings plus your own attempts used/remaining and kept score from the latest record (read-only; earlier history and New Quizzes details are limited) |+ | `list_calendar_events` | Calendar across courses, personal and group calendars: events and due dates |+ | `get_calendar_event` | One calendar event in full |+ | `list_planner_notes` | Your own planner notes (personal to-dos) in a date window |+ | `find_message_recipients` | Find instructors, TAs or classmates you can message in a course, with their user IDs (non-staff names pseudonymised while anonymization is on, and a name search then returns staff only) |+ | `create_planner_note` | Add a note to your own planner |+ | `update_planner_note` | Change one of your planner notes (preview, then token) |+ | `delete_planner_note` | Delete one of your planner notes (preview, then token) |+ | `mark_planner_item_complete` | Tick or untick an item in your own planner; for course content this also syncs its "Mark as done" module requirement, so `mark_module_item_done` must be permitted too |+ | `create_personal_calendar_event` | Add an event to your personal calendar |+ | `delete_personal_calendar_event` | Delete an event from your personal calendar (preview, then token) |+ | `send_message` | Send a new Inbox message to 1-5 people in a course (two calls: preview, then confirm) |+ | `reply_to_conversation` | Reply to an Inbox conversation you are already in (two calls: preview, then confirm) |+ Four things to know before using them:+ 4. **Planner and personal-calendar deletes and note edits are two calls too.**+ Show the preview, then confirm with the token. These tools only touch the+ student's own notes and personal calendar; course, group and appointment+ events are refused, so do not retry those with other IDs.+ 5. **Planner-note creation, planner completion, and personal-event creation write immediately.**+ `create_planner_note`, `mark_planner_item_complete`, and+ `create_personal_calendar_event` have no preview or confirmation-token step.+ Get the user's approval before calling them. Completing or un-completing+ course content can change module progression and re-lock later modules.+ 6. **`send_message` and `reply_to_conversation` are two calls too.** Show the
Showing the first 40 of each.