| name | moodle-api-user |
| description | Interact with the MicroTutor Moodle LMS via REST API to manage courses, users, enrollments, assignments, quizzes, forums, and grades. Use when the user says "use the api" or asks to query, create, update, or manage any Moodle content including course data, student enrollments, activity modules, submissions, or grades. |
| allowed-tools | Bash, Read, Write |
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