Moodle API User Skill
This skill enables Claude to interact with the MicroTutor Moodle LMS (microtutorcourses.org) via its REST API. It provides access to 416+ web service functions for comprehensive course management and content operations.
API Configuration
The Moodle REST API is configured via environment variables:
- MOODLE_API_URL:
https://microtutorcourses.org - MOODLE_API_TOKEN: Web service token (stored in environment)
When to Use This Skill
Activate this skill when the user requests to:
- List, search, or retrieve course information
- Get enrolled users or manage enrollments
- Access course contents, sections, and activities
- Retrieve or manage assignments and submissions
- Work with quizzes, forums, or other activity modules
- Query grades or completion data
- Manage users or check user profiles
- Access H5P activities or interactive content
- Create, update, or delete course content
API Call Format
All Moodle REST API calls follow this pattern:
curl -X POST "${MOODLE_API_URL}/webservice/rest/server.php" \
-d "wstoken=${MOODLE_API_TOKEN}" \
-d "wsfunction=<function_name>" \
-d "moodlewsrestformat=json" \
-d "<parameter1>=<value1>" \
-d "<parameter2>=<value2>"
The response is always JSON.
Core Functions (165 functions)
- Courses:
core_course_*- Course management, contents, navigation - Users:
core_user_*- User profiles, preferences, files - Enrollments:
core_enrol_*- Enrollment queries and management - Grades:
core_grades_*- Grade items, panels, reports - Calendar:
core_calendar_*- Events, views, access - Messages:
core_message_*- Messaging and notifications - Comments:
core_comment_*- Comment operations - Completion:
core_completion_*- Course and activity completion - Groups:
core_group_*- Group management - Files:
core_files_*- File operations
Activity Module Functions (209 functions)
- Assignments:
mod_assign_*- Assignment management, submissions, grading - Quizzes:
mod_quiz_*- Quiz attempts, questions, grades - Forums:
mod_forum_*- Discussions, posts, subscriptions - H5P:
mod_h5pactivity_*- Interactive content, attempts, results - Books:
mod_book_*- Book resources - Glossaries:
mod_glossary_*- Glossary entries - Wikis:
mod_wiki_*- Wiki pages and collaboration - Workshops:
mod_workshop_*- Peer assessment activities - Lessons:
mod_lesson_*- Lesson activities - Folders/Pages/Resources:
mod_folder_*,mod_page_*,mod_resource_* - SCORM:
mod_scorm_*- SCORM packages - Feedback:
mod_feedback_*- Feedback activities - Chat/Choice/Survey/Data: Various communication and data collection modules
Other Functions
- Enrollment plugins:
enrol_*- Guest and self-enrollment - Reports:
report_*,gradereport_*- Analytics and grade reports - Tools:
tool_*- Mobile, analytics, competencies, Moodle.net - Blocks:
block_*- Recently accessed items, starred courses - Messages:
message_*- Notification preferences
Examples
Example 1: Get Site Information
curl -X POST "${MOODLE_API_URL}/webservice/rest/server.php" \
-d "wstoken=${MOODLE_API_TOKEN}" \
-d "wsfunction=core_webservice_get_site_info" \
-d "moodlewsrestformat=json"
Example 2: List All Courses
curl -X POST "${MOODLE_API_URL}/webservice/rest/server.php" \
-d "wstoken=${MOODLE_API_TOKEN}" \
-d "wsfunction=core_course_get_courses" \
-d "moodlewsrestformat=json"
Example 3: Get Course Contents
curl -X POST "${MOODLE_API_URL}/webservice/rest/server.php" \
-d "wstoken=${MOODLE_API_TOKEN}" \
-d "wsfunction=core_course_get_contents" \
-d "courseid=${MOODLE_COURSE_ID}" \
-d "moodlewsrestformat=json"
Best Practices
NEVER make destructive changes without explicit user instructions. Follow these best practices:
- Always check permissions first - Use access information functions before attempting operations
- Handle pagination - Many list functions support limitfrom/limitnum parameters
- Use specific functions - Prefer specific functions over generic ones for better performance
- Parse JSON responses - Use
jqor Python for clean JSON handling - Log errors - Capture error responses for debugging
- Respect rate limits - Be mindful of API load on the production server
Security Notes
- Never commit the token - Always use
MOODLE_API_TOKENenvironment variable, never hardcode tokens - Store in .env - Keep tokens in
.envfile (add to.gitignore) - Read-only by default - Most operations are read-only; write operations require appropriate permissions
- Audit write operations - Changes made via API are logged to Moodle's activity logs
- Token scope - The current token has access to the full "Moodle mobile web service" (416 functions)
- Revoke if compromised - Tokens can be revoked via Moodle admin interface
List of All Functions
From https://microtutorcourses.org/admin/webservice/documentation.php
block_recentlyaccesseditems_get_recent_itemsblock_starredcourses_get_starred_coursescore_badges_get_user_badge_by_hashcore_badges_get_user_badgescore_block_fetch_addable_blockscore_block_get_course_blockscore_block_get_dashboard_blockscore_blog_get_entriescore_blog_view_entriescore_calendar_create_calendar_eventscore_calendar_delete_calendar_eventscore_calendar_get_action_events_by_coursecore_calendar_get_action_events_by_coursescore_calendar_get_action_events_by_timesortcore_calendar_get_allowed_event_typescore_calendar_get_calendar_access_informationcore_calendar_get_calendar_day_viewcore_calendar_get_calendar_event_by_idcore_calendar_get_calendar_eventscore_calendar_get_calendar_export_tokencore_calendar_get_calendar_monthly_viewcore_calendar_get_calendar_upcoming_viewcore_calendar_submit_create_update_formcore_calendar_update_event_start_daycore_comment_add_commentscore_comment_delete_commentscore_comment_get_commentscore_competency_competency_viewedcore_competency_delete_evidencecore_competency_get_scale_valuescore_competency_grade_competency_in_coursecore_competency_list_course_competenciescore_competency_user_competency_plan_viewedcore_competency_user_competency_viewedcore_competency_user_competency_viewed_in_coursecore_competency_user_competency_viewed_in_plancore_completion_get_activities_completion_statuscore_completion_get_course_completion_statuscore_completion_mark_course_self_completedcore_completion_update_activity_completion_status_manuallycore_course_check_updatescore_course_get_categoriescore_course_get_contentscore_course_get_course_modulecore_course_get_course_module_by_instancecore_course_get_coursescore_course_get_courses_by_fieldcore_course_get_enrolled_courses_by_timeline_classificationcore_course_get_enrolled_courses_with_action_events_by_timeline_classificationcore_course_get_recent_coursescore_course_get_updates_sincecore_course_get_user_administration_optionscore_course_get_user_navigation_optionscore_course_search_coursescore_course_set_favourite_coursescore_course_view_coursecore_enrol_get_course_enrolment_methodscore_enrol_get_enrolled_userscore_enrol_get_users_coursescore_enrol_search_userscore_files_delete_draft_filescore_files_get_filescore_files_get_unused_draft_itemidcore_filters_get_available_in_contextcore_get_component_stringscore_grades_get_enrolled_users_for_search_widgetcore_grades_get_enrolled_users_for_selectorcore_grades_get_gradable_userscore_grades_get_gradeitemscore_grades_get_groups_for_search_widgetcore_grades_get_groups_for_selectorcore_grades_grader_gradingpanel_point_fetchcore_grades_grader_gradingpanel_point_storecore_grades_grader_gradingpanel_scale_fetchcore_grades_grader_gradingpanel_scale_storecore_group_get_activity_allowed_groupscore_group_get_activity_groupmodecore_group_get_course_groupingscore_group_get_course_groupscore_group_get_course_user_groupscore_group_get_groups_for_selectorcore_h5p_get_trusted_h5p_filecore_message_block_usercore_message_confirm_contact_requestcore_message_create_contact_requestcore_message_data_for_messagearea_search_messagescore_message_decline_contact_requestcore_message_delete_contactscore_message_delete_conversations_by_idcore_message_delete_messagecore_message_delete_message_for_all_userscore_message_get_blocked_userscore_message_get_contact_requestscore_message_get_conversationcore_message_get_conversation_between_userscore_message_get_conversation_countscore_message_get_conversation_memberscore_message_get_conversation_messagescore_message_get_conversationscore_message_get_member_infocore_message_get_messagescore_message_get_received_contact_requests_countcore_message_get_self_conversationcore_message_get_unread_conversation_countscore_message_get_unread_conversations_countcore_message_get_unread_notification_countcore_message_get_user_contactscore_message_get_user_message_preferencescore_message_get_user_notification_preferencescore_message_mark_all_conversation_messages_as_readcore_message_mark_all_notifications_as_readcore_message_mark_message_readcore_message_mark_notification_readcore_message_message_processor_config_formcore_message_message_search_userscore_message_mute_conversationscore_message_search_contactscore_message_send_instant_messagescore_message_send_messages_to_conversationcore_message_set_favourite_conversationscore_message_unblock_usercore_message_unmute_conversationscore_message_unset_favourite_conversationscore_my_view_pagecore_notes_create_notescore_notes_delete_notescore_notes_get_course_notescore_notes_view_notescore_question_update_flagcore_rating_add_ratingcore_rating_get_item_ratingscore_reportbuilder_can_view_system_reportcore_reportbuilder_list_reportscore_reportbuilder_retrieve_reportcore_reportbuilder_retrieve_system_reportcore_reportbuilder_view_reportcore_search_get_resultscore_search_get_search_areas_listcore_search_get_top_resultscore_search_view_resultscore_table_get_dynamic_table_contentcore_tag_get_tag_areascore_tag_get_tag_cloudcore_tag_get_tag_collectionscore_tag_get_tagindexcore_tag_get_tagindex_per_areacore_user_add_user_devicecore_user_add_user_private_filescore_user_agree_site_policycore_user_get_course_user_profilescore_user_get_private_files_infocore_user_get_user_preferencescore_user_get_users_by_fieldcore_user_remove_user_devicecore_user_set_user_preferencescore_user_update_picturecore_user_update_user_device_public_keycore_user_update_user_preferencescore_user_view_user_listcore_user_view_user_profilecore_webservice_get_site_infocore_xapi_delete_statecore_xapi_delete_statescore_xapi_get_statecore_xapi_get_statescore_xapi_post_statecore_xapi_statement_postenrol_guest_get_instance_infoenrol_guest_validate_passwordenrol_self_enrol_userenrol_self_get_instance_infogradereport_grader_get_users_in_reportgradereport_overview_get_course_gradesgradereport_overview_view_grade_reportgradereport_singleview_get_grade_items_for_search_widgetgradereport_user_get_access_informationgradereport_user_get_grade_itemsgradereport_user_get_grades_tablegradereport_user_view_grade_reportmessage_airnotifier_are_notification_preferences_configuredmessage_airnotifier_enable_devicemessage_airnotifier_get_user_devicesmessage_airnotifier_is_system_configuredmessage_popup_get_popup_notificationsmessage_popup_get_unread_popup_notification_countmod_assign_get_assignmentsmod_assign_get_gradesmod_assign_get_participantmod_assign_get_submission_statusmod_assign_get_submissionsmod_assign_get_user_flagsmod_assign_get_user_mappingsmod_assign_list_participantsmod_assign_lock_submissionsmod_assign_reveal_identitiesmod_assign_revert_submissions_to_draftmod_assign_save_grademod_assign_save_gradesmod_assign_save_submissionmod_assign_save_user_extensionsmod_assign_set_user_flagsmod_assign_start_submissionmod_assign_submit_for_gradingmod_assign_submit_grading_formmod_assign_unlock_submissionsmod_assign_view_assignmod_assign_view_grading_tablemod_assign_view_submission_statusmod_bigbluebuttonbn_can_joinmod_bigbluebuttonbn_completion_validatemod_bigbluebuttonbn_end_meetingmod_bigbluebuttonbn_get_bigbluebuttonbns_by_coursesmod_bigbluebuttonbn_get_join_urlmod_bigbluebuttonbn_get_recordingsmod_bigbluebuttonbn_get_recordings_to_importmod_bigbluebuttonbn_meeting_infomod_bigbluebuttonbn_update_recordingmod_bigbluebuttonbn_view_bigbluebuttonbnmod_book_get_books_by_coursesmod_book_view_bookmod_chat_get_chat_latest_messagesmod_chat_get_chat_usersmod_chat_get_chats_by_coursesmod_chat_get_session_messagesmod_chat_get_sessionsmod_chat_login_usermod_chat_send_chat_messagemod_chat_view_chatmod_chat_view_sessionsmod_choice_delete_choice_responsesmod_choice_get_choice_optionsmod_choice_get_choice_resultsmod_choice_get_choices_by_coursesmod_choice_submit_choice_responsemod_choice_view_choicemod_data_add_entrymod_data_approve_entrymod_data_delete_entrymod_data_get_data_access_informationmod_data_get_databases_by_coursesmod_data_get_entriesmod_data_get_entrymod_data_get_fieldsmod_data_search_entriesmod_data_update_entrymod_data_view_databasemod_feedback_get_analysismod_feedback_get_current_completed_tmpmod_feedback_get_feedback_access_informationmod_feedback_get_feedbacks_by_coursesmod_feedback_get_finished_responsesmod_feedback_get_itemsmod_feedback_get_last_completedmod_feedback_get_non_respondentsmod_feedback_get_page_itemsmod_feedback_get_responses_analysismod_feedback_get_unfinished_responsesmod_feedback_launch_feedbackmod_feedback_process_pagemod_feedback_view_feedbackmod_folder_get_folders_by_coursesmod_folder_view_foldermod_forum_add_discussionmod_forum_add_discussion_postmod_forum_can_add_discussionmod_forum_delete_postmod_forum_get_discussion_postmod_forum_get_discussion_postsmod_forum_get_forum_access_informationmod_forum_get_forum_discussionsmod_forum_get_forum_discussions_paginatedmod_forum_get_forums_by_coursesmod_forum_prepare_draft_area_for_postmod_forum_set_lock_statemod_forum_set_pin_statemod_forum_set_subscription_statemod_forum_toggle_favourite_statemod_forum_update_discussion_postmod_forum_view_forummod_forum_view_forum_discussionmod_glossary_add_entrymod_glossary_delete_entrymod_glossary_get_authorsmod_glossary_get_categoriesmod_glossary_get_entries_by_authormod_glossary_get_entries_by_author_idmod_glossary_get_entries_by_categorymod_glossary_get_entries_by_datemod_glossary_get_entries_by_lettermod_glossary_get_entries_by_searchmod_glossary_get_entries_by_termmod_glossary_get_entries_to_approvemod_glossary_get_entry_by_idmod_glossary_get_glossaries_by_coursesmod_glossary_prepare_entry_for_editionmod_glossary_update_entrymod_glossary_view_entrymod_glossary_view_glossarymod_h5pactivity_get_attemptsmod_h5pactivity_get_h5pactivities_by_coursesmod_h5pactivity_get_h5pactivity_access_informationmod_h5pactivity_get_resultsmod_h5pactivity_get_user_attemptsmod_h5pactivity_log_report_viewedmod_h5pactivity_view_h5pactivitymod_imscp_get_imscps_by_coursesmod_imscp_view_imscpmod_label_get_labels_by_coursesmod_lesson_finish_attemptmod_lesson_get_attempts_overviewmod_lesson_get_content_pages_viewedmod_lesson_get_lessonmod_lesson_get_lesson_access_informationmod_lesson_get_lessons_by_coursesmod_lesson_get_page_datamod_lesson_get_pagesmod_lesson_get_pages_possible_jumpsmod_lesson_get_questions_attemptsmod_lesson_get_user_attemptmod_lesson_get_user_attempt_grademod_lesson_get_user_grademod_lesson_get_user_timersmod_lesson_launch_attemptmod_lesson_process_pagemod_lesson_view_lessonmod_lti_get_ltis_by_coursesmod_lti_get_tool_launch_datamod_lti_view_ltimod_page_get_pages_by_coursesmod_page_view_pagemod_quiz_get_attempt_access_informationmod_quiz_get_attempt_datamod_quiz_get_attempt_reviewmod_quiz_get_attempt_summarymod_quiz_get_combined_review_optionsmod_quiz_get_quiz_access_informationmod_quiz_get_quiz_feedback_for_grademod_quiz_get_quiz_required_qtypesmod_quiz_get_quizzes_by_coursesmod_quiz_get_user_attemptsmod_quiz_get_user_best_grademod_quiz_process_attemptmod_quiz_save_attemptmod_quiz_start_attemptmod_quiz_view_attemptmod_quiz_view_attempt_reviewmod_quiz_view_attempt_summarymod_quiz_view_quizmod_resource_get_resources_by_coursesmod_resource_view_resourcemod_scorm_get_scorm_access_informationmod_scorm_get_scorm_attempt_countmod_scorm_get_scorm_sco_tracksmod_scorm_get_scorm_scoesmod_scorm_get_scorm_user_datamod_scorm_get_scorms_by_coursesmod_scorm_insert_scorm_tracksmod_scorm_launch_scomod_scorm_view_scormmod_survey_get_questionsmod_survey_get_surveys_by_coursesmod_survey_submit_answersmod_survey_view_surveymod_url_get_urls_by_coursesmod_url_view_urlmod_wiki_edit_pagemod_wiki_get_page_contentsmod_wiki_get_page_for_editingmod_wiki_get_subwiki_filesmod_wiki_get_subwiki_pagesmod_wiki_get_subwikismod_wiki_get_wikis_by_coursesmod_wiki_new_pagemod_wiki_view_pagemod_wiki_view_wikimod_workshop_add_submissionmod_workshop_delete_submissionmod_workshop_evaluate_assessmentmod_workshop_evaluate_submissionmod_workshop_get_assessmentmod_workshop_get_assessment_form_definitionmod_workshop_get_gradesmod_workshop_get_grades_reportmod_workshop_get_reviewer_assessmentsmod_workshop_get_submissionmod_workshop_get_submission_assessmentsmod_workshop_get_submissionsmod_workshop_get_user_planmod_workshop_get_workshop_access_informationmod_workshop_get_workshops_by_coursesmod_workshop_update_assessmentmod_workshop_update_submissionmod_workshop_view_submissionmod_workshop_view_workshopreport_insights_action_executedreport_insights_set_fixed_predictionreport_insights_set_notuseful_predictiontool_analytics_potential_contextstool_lp_data_for_course_competencies_pagetool_lp_data_for_plan_pagetool_lp_data_for_plans_pagetool_lp_data_for_user_competency_summarytool_lp_data_for_user_competency_summary_in_coursetool_lp_data_for_user_competency_summary_in_plantool_lp_data_for_user_evidence_list_pagetool_lp_data_for_user_evidence_pagetool_mobile_call_external_functionstool_mobile_get_autologin_keytool_mobile_get_configtool_mobile_get_contenttool_mobile_get_plugins_supporting_mobiletool_mobile_get_public_configtool_mobile_get_tokens_for_qr_logintool_mobile_validate_subscription_keytool_moodlenet_search_coursestool_moodlenet_verify_webfinger
Scan to join WeChat group