LeashIndex Get the report

Index / storage

io.github.Fireiscoolsolo/canvas-lms-mcp-server

io-github-fireiscoolsolo-canvas-lms-mcp-server declares 237 capabilities across 237 tools, with 2 critical issues. One of them, no-revocation, is recorded for every server in the index because MCP has no field in which to declare a way to switch a tool off; a missing declaration is not evidence that the control is missing.

100/100 exposureHigh exposure

Manifest recorded 2026-11-03 from tools/list answered by the npm package canvas-lms-mcp-remote@1.3.0 (published to npm as canvas-lms-mcp-remote, listed in the official MCP registry as io.github.Fireiscoolsolo/canvas-lms-mcp-server 1.3.0), run in an isolated container with no network access and placeholder credentials. The date changes only when the manifest does. Not verified by a maintainer.

Issues

These describe what this server's manifest declares. A product can provide controls that MCP has no way to express — token revocation, an admin console, audit logs — and this page cannot see them. The absence of a declaration is not evidence that a control is absent.

critical · no-revocation · All 237 tools

237 of 237 tools declare no way for the customer to switch them off once granted. This applies to every tool because MCP has no field in which to declare a revocation mechanism; the product may provide one outside MCP that a manifest cannot show.

critical · irreversible-uncapped · 32 of 237 tools

32 tools are classified as irreversible or destructive and declare no limit. 28 of them are counted only because the server annotated them destructiveHint. In MCP that annotation marks a tool that may make destructive changes rather than only additive ones; it does not say the change cannot be undone.

high · no-expiry · All 237 tools

237 of 237 tools declare no expiry. This applies to every tool because MCP has no field in which to declare an expiry; the product may provide one outside MCP that a manifest cannot show.

high · no-audit-trail · All 237 tools

237 of 237 tools declare no record of their actions that the customer can read. This applies to every tool because MCP has no field in which to declare an audit requirement; the product may provide one outside MCP that a manifest cannot show.

high · uncapped-write · 27 of 237 tools

27 tools can modify data and declare no limit.

low · uncapped-read · 178 of 237 tools

178 tools can read data and declare no limit.

Declared capabilities

How each tool was read. declared means the server's own annotation said so — self-reported and unverified. inferred is from the tool's name. assumed means nothing indicated either way.

ToolRead asBasis
whoamiread declared
get_my_profileread declared
get_my_settingsread declared
check_token_expiryread declared
get_rate_limit_statusread declared
list_my_enrollmentsread declared
get_activity_streamread declared
get_activity_stream_summaryread declared
list_todoread declared
get_todo_countread declared
list_upcoming_eventsread declared
get_dashboard_cardsread declared
list_favorite_coursesread declared
add_favorite_coursewrite inferred
remove_favorite_coursedestructive declared
get_communication_channelsread declared
get_notification_preferencesread declared
get_my_page_viewsread declared
list_content_sharesread declared
get_custom_dataread declared
set_custom_datawrite inferred
list_bookmarksread declared
create_bookmarkwrite inferred
delete_bookmarkdestructive declared
list_my_observeesread declared
list_notification_categoriesread declared
update_notification_preferencewrite inferred
list_coursesread declared
get_courseread declared
get_syllabusread declared
get_course_settingsread declared
list_course_tabsread declared
get_course_activity_streamread declared
list_sectionsread declared
list_course_usersread declared
get_user_in_courseread declared
get_course_permissionsread declared
list_course_nicknamesread declared
set_course_nicknamewrite inferred
remove_course_nicknamedestructive declared
get_course_progressread declared
list_todo_for_courseread declared
list_blackout_datesread declared
course_contactsread declared
list_assignmentsread declared
get_assignmentread declared
list_assignment_groupsread declared
get_assignment_groupread declared
list_assignment_overridesread declared
get_my_overrideread declared
get_assignment_datesread declared
get_score_statisticsread declared
get_late_policyread declared
list_missing_submissionsread declared
list_upcoming_assignmentsread declared
list_overdue_assignmentsread declared
assignment_briefread declared
get_my_submissionread declared
list_my_submissionsread declared
get_submission_summaryread declared
get_submission_historyread declared
list_submission_attachmentsread declared
get_originality_reportread declared
get_rubric_assessmentread declared
list_submission_commentsread declared
mark_submission_readread inferred
submit_assignment_textdestructive declared
submit_assignment_urldestructive declared
submit_assignment_filedestructive declared
upload_submission_filewrite inferred
post_submission_commentdestructive declared
upload_comment_attachmentwrite inferred
download_submission_attachmentwrite assumed
submit_annotation_assignmentdestructive declared
get_all_gradesread declared
calculate_gparead declared
get_course_grade_breakdownread declared
what_if_graderead inferred
reset_what_if_gradesread inferred
get_grading_standardread declared
list_grading_periodsread declared
get_my_assignment_analyticsread declared
get_my_activity_analyticsread declared
get_my_communication_analyticsread declared
get_unposted_gradesread declared
compute_needed_scoreread declared
grade_impact_rankingread declared
get_grade_trendread declared
final_grade_scenariosread declared
list_quizzesread declared
get_quizread declared
get_my_quiz_submissionread declared
list_my_quiz_submissionsread declared
get_quiz_submission_timeread declared
list_quiz_questionsread declared
get_quiz_extensionsread declared
get_quiz_ip_filtersread declared
get_quiz_assignment_overridesread declared
list_new_quizzesread declared
get_new_quizread declared
get_new_quiz_itemsread declared
list_topicsread declared
get_topicread declared
get_full_topic_viewread declared
list_entriesread declared
list_entry_repliesread declared
post_entrydestructive declared
reply_to_entrydestructive declared
edit_my_entrydestructive declared
delete_my_entrydestructive declared
rate_entrydelete inferred
mark_topic_readread inferred
mark_all_entries_readread inferred
mark_entry_readread inferred
subscribe_topicwrite assumed
unsubscribe_topicwrite assumed
list_announcementsread declared
get_unread_discussion_countread declared
list_global_announcementsread declared
dismiss_global_announcementwrite inferred
mark_announcement_readread inferred
mark_all_announcements_readread inferred
list_conversationsread declared
get_conversationread declared
send_messagedestructive declared
reply_to_conversationdestructive declared
find_recipientsread declared
add_recipientsdestructive declared
mark_conversation_readread inferred
mark_conversation_unreadread inferred
star_conversationwrite assumed
unstar_conversationdelete inferred
archive_conversationdelete inferred
delete_conversationdestructive declared
get_unread_conversation_countread declared
batch_update_conversationsdestructive declared
list_calendar_eventsread declared
get_calendar_eventread declared
create_personal_eventwrite inferred
update_calendar_eventwrite inferred
delete_calendar_eventdestructive declared
list_appointment_groupsread declared
get_appointment_groupread declared
reserve_appointment_slotdestructive declared
cancel_reservationdestructive declared
list_my_reservationsread declared
get_course_paceread declared
list_course_filesread declared
list_foldersread declared
get_folderread declared
get_folder_treeread declared
get_file_metadataread declared
get_file_public_urlread declared
download_filewrite assumed
read_course_fileread declared
list_my_filesread declared
upload_to_my_fileswrite inferred
get_storage_quotaread declared
delete_my_filedestructive declared
create_folderwrite inferred
list_pagesread declared
get_page_contentread declared
list_page_revisionsread declared
get_page_revisionread declared
list_modulesread declared
get_moduleread declared
list_module_itemsread declared
get_module_itemread declared
mark_module_item_donewrite assumed
mark_module_item_readread inferred
select_mastery_pathdestructive declared
get_module_item_sequenceread declared
list_media_objectsread declared
get_media_captionsread declared
download_media_captionswrite assumed
create_content_exportwrite inferred
get_content_exportread declared
list_external_toolsread declared
get_tool_launch_urlread declared
list_conferencesread declared
list_collaborationsread declared
list_eportfoliosread declared
get_eportfolio_pagesread declared
list_my_groupsread declared
get_groupread declared
list_group_membersread declared
list_group_discussionsread declared
list_group_filesread declared
list_group_pagesread declared
post_group_discussiondestructive declared
list_group_categoriesread declared
join_groupdestructive declared
leave_groupdestructive declared
get_group_activity_streamread declared
list_rubricsread declared
get_rubricread declared
get_my_rubric_assessmentread declared
list_my_peer_reviewsread declared
get_peer_review_assignmentread declared
submit_peer_reviewdestructive declared
list_outcomesread declared
get_outcomeread declared
list_outcome_groupsread declared
get_my_outcome_resultsread declared
get_outcome_rollupread declared
smart_searchread declared
search_course_contentread declared
grep_all_coursesread declared
list_planner_itemsread declared
list_planner_notesread declared
create_planner_notewrite inferred
update_planner_notewrite inferred
delete_planner_notedestructive declared
mark_planner_item_doneread inferred
dismiss_planner_itemwrite inferred
get_calendar_feed_urlread declared
export_deadlines_icswrite assumed
daily_briefingread declared
study_planread declared
schedule_study_planwrite assumed
get_week_aheadread declared
get_workload_forecastread declared
get_all_unreadread declared
course_health_checkread declared
semester_snapshotread declared
diff_since_last_checkread declared
syllabus_digestread declared
deadline_conflict_checkread declared
study_priority_rankingread declared
download_all_course_fileswrite assumed
export_course_archivedelete inferred
semester_wrap_upread declared
export_all_courseswrite assumed
raw_canvas_requestdestructive declared
search_toolsread declared
test_connectionread declared
get_server_configread declared

Record history

Earlier records for this server. A correction is added here, never written over the record it corrects.

RecordedExposureSource
2026-10-29100 tools/list answered by the npm package canvas-lms-mcp-remote@1.2.3 (published to npm as canvas-lms-mcp-remote, listed in the official MCP registry as io.github.Fireiscoolsolo/canvas-lms-mcp-server 1.2.3), run in an isolated container with no network access and placeholder credentials
2026-10-27100 tools/list answered by the npm package canvas-lms-mcp-remote@1.1.2 (published to npm as canvas-lms-mcp-remote, listed in the official MCP registry as io.github.Fireiscoolsolo/canvas-lms-mcp-server 1.1.2), run in an isolated container with no network access and placeholder credentials
Answering this question about your own agent? The self-serve stack report applies the same reading to your own stack or server and gives you a dated document you can hand to a customer's security review. It is generated in your browser, with nobody to wait for. Buying one does not change this page, its score or its place in the index — see Independence.
Maintain this server? If this page misreads your manifest, or your server has changed, submit its current tools/list response and it will be re-scored and dated. Corrections are published alongside the original, not in place of it.