Server Configuration
Describes the environment variables required to run the server.
Name | Required | Description | Default |
---|---|---|---|
CANVAS_API_URL | Yes | The URL for your university's Canvas API (e.g., https://canvas.illinois.edu/api/v1) | |
CANVAS_API_TOKEN | Yes | Your Canvas API token for authentication with the Canvas LMS API |
Schema
Prompts
Interactive templates invoked by user choice
Name | Description |
---|---|
summarize-course | Generate a summary of a Canvas course |
Resources
Contextual data attached and managed by the client
Name | Description |
---|---|
No resources |
Tools
Functions exposed to the LLM to take actions
Name | Description |
---|---|
list_courses | List courses for the authenticated user. |
get_course_details | Get detailed information about a specific course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
|
get_course_content_overview | Get a comprehensive overview of course content including pages, modules, and syllabus. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
include_pages: Whether to include pages information
include_modules: Whether to include modules and their items
include_syllabus: Whether to include syllabus content
|
list_assignments | List assignments for a specific course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
|
get_assignment_details | Get detailed information about a specific assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
|
assign_peer_review | Manually assign a peer review to a student for a specific assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
reviewer_id: The Canvas user ID of the student who will do the review
reviewee_id: The Canvas user ID of the student whose submission will be reviewed
|
list_peer_reviews | List all peer review assignments for a specific assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
|
list_submissions | List submissions for a specific assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
|
get_assignment_analytics | Get detailed analytics about student performance on a specific assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
|
list_discussion_topics | List discussion topics for a specific course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
include_announcements: Whether to include announcements in the list (default: False)
|
get_discussion_topic_details | Get detailed information about a specific discussion topic. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
topic_id: The Canvas discussion topic ID
|
list_discussion_entries | List discussion entries (posts) for a specific discussion topic with optional full content and replies. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
topic_id: The Canvas discussion topic ID
include_full_content: Whether to fetch full content for each entry (default: False)
include_replies: Whether to fetch replies for each entry (default: False)
|
get_discussion_entry_details | Get detailed information about a specific discussion entry including all its replies. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
topic_id: The Canvas discussion topic ID
entry_id: The Canvas discussion entry ID
include_replies: Whether to fetch and include replies (default: True)
|
get_discussion_with_replies | Enhanced function to get discussion entries with optional reply fetching. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
topic_id: The Canvas discussion topic ID
include_replies: Whether to fetch detailed replies for all entries (default: False)
|
post_discussion_entry | Post a new top-level entry to a discussion topic. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
topic_id: The Canvas discussion topic ID
message: The entry message content
|
reply_to_discussion_entry | Reply to a student's discussion entry/comment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
topic_id: The Canvas discussion topic ID
entry_id: The Canvas discussion entry ID to reply to
message: The reply message content
|
create_discussion_topic | Create a new discussion topic for a course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
title: The title/subject of the discussion topic
message: The content/body of the discussion topic
delayed_post_at: Optional ISO 8601 datetime to schedule posting (e.g., "2024-01-15T12:00:00Z")
lock_at: Optional ISO 8601 datetime to automatically lock the discussion
require_initial_post: Whether students must post before seeing other posts
pinned: Whether to pin this discussion topic
|
list_announcements | List announcements for a specific course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
|
create_announcement | Create a new announcement for a course with optional scheduling. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
title: The title/subject of the announcement
message: The content/body of the announcement
delayed_post_at: Optional ISO 8601 datetime to schedule posting (e.g., "2024-01-15T12:00:00Z")
lock_at: Optional ISO 8601 datetime to automatically lock the announcement
|
delete_announcement | Delete an announcement from a Canvas course.
Announcements are technically discussion topics in Canvas, so this uses
the discussion_topics endpoint to delete them.
Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
announcement_id: The Canvas announcement/discussion topic ID to delete
Returns:
String describing the deletion result with status and title
Raises:
HTTPError:
- 401: User doesn't have permission to delete the announcement
- 404: Announcement not found in the specified course
- 403: Editing is restricted for this announcement
Example usage:
result = delete_announcement("60366", "925355")
print(f"Result: {result}")
|
bulk_delete_announcements | Delete multiple announcements from a Canvas course.
Args:
course_identifier: The Canvas course code or ID
announcement_ids: List of announcement IDs to delete
stop_on_error: If True, stop processing on first error; if False, continue with remaining
Returns:
String with detailed results including successful and failed deletions
Example usage:
results = bulk_delete_announcements(
"60366",
["925355", "925354", "925353"],
stop_on_error=False
)
|
delete_announcement_with_confirmation | Delete an announcement with optional safety checks.
Args:
course_identifier: The Canvas course code or ID
announcement_id: The announcement ID to delete
require_title_match: If provided, only delete if the announcement title matches exactly
dry_run: If True, verify but don't actually delete (for testing)
Returns:
String with operation result including status and title match information
Raises:
ValueError: If require_title_match is provided and doesn't match the actual title
Example usage:
# Delete only if title matches exactly (safety check)
result = delete_announcement_with_confirmation(
"60366",
"925355",
require_title_match="Preparing for the week",
dry_run=False
)
|
delete_announcements_by_criteria | Delete announcements matching specific criteria.
Args:
course_identifier: The Canvas course code or ID
criteria: Dict with search criteria:
- "title_contains": str - Delete if title contains this text
- "older_than": str - Delete if posted before this date (ISO format)
- "newer_than": str - Delete if posted after this date (ISO format)
- "title_regex": str - Delete if title matches regex pattern
limit: Maximum number of announcements to delete (safety limit)
dry_run: If True, show what would be deleted without actually deleting
Returns:
String with operation results showing matched and deleted announcements
Example usage:
# Delete all announcements older than 30 days
from datetime import datetime, timedelta
results = delete_announcements_by_criteria(
"60366",
criteria={
"older_than": (datetime.now() - timedelta(days=30)).isoformat(),
"title_contains": "reminder"
},
limit=10,
dry_run=False
)
|
list_pages | List pages for a specific course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
sort: Sort criteria ('title', 'created_at', 'updated_at')
order: Sort order ('asc' or 'desc')
search_term: Search for pages containing this term in title or body
published: Filter by published status (True, False, or None for all)
|
get_page_content | Get the full content body of a specific page. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
page_url_or_id: The page URL or page ID
|
get_page_details | Get detailed information about a specific page. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
page_url_or_id: The page URL or page ID
|
get_front_page | Get the front page content for a course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
|
create_page | Create a new page in a Canvas course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
title: The title of the new page
body: The HTML content for the page
published: Whether the page should be published (default: True)
front_page: Whether this should be the course front page (default: False)
editing_roles: Who can edit the page (default: "teachers")
|
edit_page_content | Edit the content of a specific page. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
page_url_or_id: The page URL or page ID
new_content: The new HTML content for the page
title: Optional new title for the page
|
get_anonymization_status | Get current data anonymization status and statistics. Returns:
Status information about data anonymization
|
list_module_items | List items within a specific module, including pages. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
module_id: The module ID
include_content_details: Whether to include additional details about content items
|
list_groups | List all groups and their members for a specific course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
|
list_users | List users enrolled in a specific course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
|
get_student_analytics | Get detailed analytics about student activity, participation, and progress in a course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
current_only: Whether to include only assignments due on or before today
include_participation: Whether to include participation data (discussions, submissions)
include_assignment_stats: Whether to include assignment completion statistics
include_access_stats: Whether to include course access statistics
|
create_student_anonymization_map | Create a local CSV file mapping real student data to anonymous IDs for a course. This tool generates a de-anonymization key that allows faculty to identify students
from their anonymous IDs. The file is saved locally and should be kept secure.
Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
|
list_assignment_rubrics | Get rubrics attached to a specific assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
|
get_assignment_rubric_details | Get detailed rubric criteria and rating descriptions for an assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
|
get_rubric_details | Get detailed rubric criteria and scoring information. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
rubric_id: The Canvas rubric ID
|
get_submission_rubric_assessment | Get rubric assessment scores for a specific submission. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
user_id: The Canvas user ID of the student
|
grade_with_rubric | Submit grades using rubric criteria. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: The Canvas assignment ID
user_id: The Canvas user ID of the student
rubric_assessment: JSON string with rubric assessment data (format: {"criterion_id": {"points": X, "comments": "..."}, ...})
comment: Optional overall comment for the submission
|
list_all_rubrics | List all rubrics in a specific course with optional detailed criteria. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
include_criteria: Whether to include detailed criteria and ratings (default: True)
|
create_rubric | Create a new rubric in the specified course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
title: The title of the rubric
criteria: JSON string or dictionary containing rubric criteria structure
free_form_criterion_comments: Allow free-form comments on rubric criteria (default: True)
association_id: Optional ID to associate rubric with (assignment, course, etc.)
association_type: Type of association (Assignment, Course, Account) (default: Assignment)
use_for_grading: Whether to use rubric for grade calculation (default: False)
purpose: Purpose of the rubric association (grading, bookmark) (default: grading)
Example criteria format (as JSON string or dict):
{
"1": {
"description": "Quality of Work",
"points": 25,
"long_description": "Detailed description of quality expectations",
"ratings": {
"1": {"description": "Excellent", "points": 25, "long_description": "Exceeds expectations"},
"2": {"description": "Good", "points": 20, "long_description": "Meets expectations"},
"3": {"description": "Satisfactory", "points": 15, "long_description": "Approaches expectations"},
"4": {"description": "Needs Improvement", "points": 10, "long_description": "Below expectations"}
}
}
}
Note: Ratings can be provided as objects (as above) or arrays - both formats are supported.
|
update_rubric | Update an existing rubric in the specified course. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
rubric_id: The ID of the rubric to update
title: Optional new title for the rubric
criteria: Optional JSON string or dictionary containing updated rubric criteria structure
free_form_criterion_comments: Optional boolean to allow free-form comments
skip_updating_points_possible: Skip updating points possible calculation (default: False)
|
delete_rubric | Delete a rubric and remove all its associations. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
rubric_id: The ID of the rubric to delete
|
associate_rubric_with_assignment | Associate an existing rubric with an assignment. Args:
course_identifier: The Canvas course code (e.g., badm_554_120251_246794) or ID
rubric_id: The ID of the rubric to associate
assignment_id: The ID of the assignment to associate with
use_for_grading: Whether to use rubric for grade calculation (default: False)
purpose: Purpose of the association (grading, bookmark) (default: grading)
|
get_peer_review_assignments | Get comprehensive peer review assignment mapping showing who is assigned to review whom with accurate completion status. Args:
course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: Canvas assignment ID
include_names: Include student names (requires additional API call)
include_submission_details: Include submission metadata
|
get_peer_review_completion_analytics | Get detailed analytics on peer review completion rates with student-by-student breakdown and summary statistics. Args:
course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: Canvas assignment ID
include_student_details: Include per-student breakdown
group_by_status: Group students by completion status
|
generate_peer_review_report | Generate comprehensive peer review completion report with executive summary, detailed analytics, and actionable follow-up recommendations. Args:
course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: Canvas assignment ID
report_format: Report format (markdown, csv, json)
include_executive_summary: Include executive summary
include_student_details: Include student details
include_action_items: Include action items
include_timeline_analysis: Include timeline analysis
save_to_file: Save report to local file
filename: Custom filename for saved report
|
get_peer_review_followup_list | Get prioritized list of students requiring instructor follow-up based on peer review completion status. Args:
course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: Canvas assignment ID
priority_filter: Priority filter (urgent, medium, low, all)
include_contact_info: Include email addresses if available
days_threshold: Days since assignment for urgency calculation
|
get_peer_review_comments | Retrieve actual comment text for peer reviews on a specific assignment.
Args:
course_identifier: Canvas course code (e.g., badm_554_120251_246794) or ID
assignment_id: Canvas assignment ID
include_reviewer_info: Include reviewer student information
include_reviewee_info: Include reviewee student information
include_submission_context: Include original submission details
anonymize_students: Replace student names with anonymous IDs
|
analyze_peer_review_quality | Analyze the quality and content of peer review comments.
Args:
course_identifier: Canvas course code or ID
assignment_id: Canvas assignment ID
analysis_criteria: JSON string of custom analysis criteria (optional)
generate_report: Whether to generate detailed analysis report
|
identify_problematic_peer_reviews | Flag reviews that may need instructor attention.
Args:
course_identifier: Canvas course code or ID
assignment_id: Canvas assignment ID
criteria: JSON string of custom flagging criteria (optional)
|
extract_peer_review_dataset | Export all peer review data in various formats for analysis.
Args:
course_identifier: Canvas course code or ID
assignment_id: Canvas assignment ID
output_format: Output format (csv, json, xlsx)
include_analytics: Include quality analytics in output
anonymize_data: Anonymize student data
save_locally: Save file locally
filename: Custom filename (optional)
|
generate_peer_review_feedback_report | Create instructor-ready reports on peer review quality.
Args:
course_identifier: Canvas course code or ID
assignment_id: Canvas assignment ID
report_type: Report type (comprehensive, summary, individual)
include_student_names: Whether to include student names
format_type: Output format (markdown, html, text)
|
send_conversation | Send messages to students via Canvas conversations.
Args:
course_identifier: Canvas course ID or code
recipient_ids: List of Canvas user IDs to send to
subject: Message subject line (max 255 characters)
body: Message content (required)
group_conversation: If True, creates group conversation (required for custom subjects)
bulk_message: If True, sends individual messages with same subject to each recipient
context_code: Course context (e.g., "course_60366")
mode: "sync" or "async" for bulk messages (>100 recipients should use async)
force_new: Force creation of new conversation even if one exists
attachment_ids: Optional list of attachment IDs
Returns:
Dict with conversation details or batch operation status
|
send_peer_review_reminders | Send peer review completion reminders to specific students.
Args:
course_identifier: Canvas course ID
assignment_id: Canvas assignment ID for peer review
recipient_ids: List of Canvas user IDs needing reminders
custom_message: Optional custom message (uses default template if None)
include_assignment_link: Whether to include direct link to assignment
subject_prefix: Prefix for message subject
Returns:
Dict with sending results and any failures
|
list_conversations | List conversations for the current user.
Args:
scope: Conversation scope ("unread", "starred", "sent", "archived", or "all")
filter_ids: Optional list of conversation IDs to filter by
filter_mode: How to apply filter_ids ("and" or "or")
include_participants: Include participant information
include_all_ids: Include all conversation participant IDs
Returns:
List of conversations
|
get_conversation_details | Get detailed conversation information with messages.
Args:
conversation_id: ID of the conversation to retrieve
auto_mark_read: Automatically mark conversation as read when viewed
include_messages: Include all messages in the conversation
Returns:
Detailed conversation information
|
get_unread_count | Get number of unread conversations.
Returns:
Unread conversation count
|
mark_conversations_read | Mark multiple conversations as read.
Args:
conversation_ids: List of conversation IDs to mark as read
Returns:
Result of the batch operation
|
send_bulk_messages_from_list | Send customized messages to multiple recipients using templates.
Args:
course_identifier: Canvas course ID
recipient_data: List of dicts with recipient info and custom data
subject_template: Subject template with placeholders (e.g., "Reminder - {missing_count} reviews")
body_template: Body template with placeholders (e.g., "Hi {name}, you have {missing_count}...")
context_code: Course context
mode: "sync" or "async"
Returns:
Results of bulk message sending
|
send_peer_review_followup_campaign | Complete workflow: analyze peer reviews and send targeted reminders.
Args:
course_identifier: Canvas course ID
assignment_id: Canvas assignment ID for peer review
Returns:
Results of the complete campaign including analytics and messaging
|