Agent skill

moodle-api-user

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.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/moodle-api-user

SKILL.md

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:

bash
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

bash
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

bash
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

bash
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:

  1. Always check permissions first - Use access information functions before attempting operations
  2. Handle pagination - Many list functions support limitfrom/limitnum parameters
  3. Use specific functions - Prefer specific functions over generic ones for better performance
  4. Parse JSON responses - Use jq or Python for clean JSON handling
  5. Log errors - Capture error responses for debugging
  6. Respect rate limits - Be mindful of API load on the production server

Security Notes

  • Never commit the token - Always use MOODLE_API_TOKEN environment variable, never hardcode tokens
  • Store in .env - Keep tokens in .env file (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_items
  • block_starredcourses_get_starred_courses
  • core_badges_get_user_badge_by_hash
  • core_badges_get_user_badges
  • core_block_fetch_addable_blocks
  • core_block_get_course_blocks
  • core_block_get_dashboard_blocks
  • core_blog_get_entries
  • core_blog_view_entries
  • core_calendar_create_calendar_events
  • core_calendar_delete_calendar_events
  • core_calendar_get_action_events_by_course
  • core_calendar_get_action_events_by_courses
  • core_calendar_get_action_events_by_timesort
  • core_calendar_get_allowed_event_types
  • core_calendar_get_calendar_access_information
  • core_calendar_get_calendar_day_view
  • core_calendar_get_calendar_event_by_id
  • core_calendar_get_calendar_events
  • core_calendar_get_calendar_export_token
  • core_calendar_get_calendar_monthly_view
  • core_calendar_get_calendar_upcoming_view
  • core_calendar_submit_create_update_form
  • core_calendar_update_event_start_day
  • core_comment_add_comments
  • core_comment_delete_comments
  • core_comment_get_comments
  • core_competency_competency_viewed
  • core_competency_delete_evidence
  • core_competency_get_scale_values
  • core_competency_grade_competency_in_course
  • core_competency_list_course_competencies
  • core_competency_user_competency_plan_viewed
  • core_competency_user_competency_viewed
  • core_competency_user_competency_viewed_in_course
  • core_competency_user_competency_viewed_in_plan
  • core_completion_get_activities_completion_status
  • core_completion_get_course_completion_status
  • core_completion_mark_course_self_completed
  • core_completion_update_activity_completion_status_manually
  • core_course_check_updates
  • core_course_get_categories
  • core_course_get_contents
  • core_course_get_course_module
  • core_course_get_course_module_by_instance
  • core_course_get_courses
  • core_course_get_courses_by_field
  • core_course_get_enrolled_courses_by_timeline_classification
  • core_course_get_enrolled_courses_with_action_events_by_timeline_classification
  • core_course_get_recent_courses
  • core_course_get_updates_since
  • core_course_get_user_administration_options
  • core_course_get_user_navigation_options
  • core_course_search_courses
  • core_course_set_favourite_courses
  • core_course_view_course
  • core_enrol_get_course_enrolment_methods
  • core_enrol_get_enrolled_users
  • core_enrol_get_users_courses
  • core_enrol_search_users
  • core_files_delete_draft_files
  • core_files_get_files
  • core_files_get_unused_draft_itemid
  • core_filters_get_available_in_context
  • core_get_component_strings
  • core_grades_get_enrolled_users_for_search_widget
  • core_grades_get_enrolled_users_for_selector
  • core_grades_get_gradable_users
  • core_grades_get_gradeitems
  • core_grades_get_groups_for_search_widget
  • core_grades_get_groups_for_selector
  • core_grades_grader_gradingpanel_point_fetch
  • core_grades_grader_gradingpanel_point_store
  • core_grades_grader_gradingpanel_scale_fetch
  • core_grades_grader_gradingpanel_scale_store
  • core_group_get_activity_allowed_groups
  • core_group_get_activity_groupmode
  • core_group_get_course_groupings
  • core_group_get_course_groups
  • core_group_get_course_user_groups
  • core_group_get_groups_for_selector
  • core_h5p_get_trusted_h5p_file
  • core_message_block_user
  • core_message_confirm_contact_request
  • core_message_create_contact_request
  • core_message_data_for_messagearea_search_messages
  • core_message_decline_contact_request
  • core_message_delete_contacts
  • core_message_delete_conversations_by_id
  • core_message_delete_message
  • core_message_delete_message_for_all_users
  • core_message_get_blocked_users
  • core_message_get_contact_requests
  • core_message_get_conversation
  • core_message_get_conversation_between_users
  • core_message_get_conversation_counts
  • core_message_get_conversation_members
  • core_message_get_conversation_messages
  • core_message_get_conversations
  • core_message_get_member_info
  • core_message_get_messages
  • core_message_get_received_contact_requests_count
  • core_message_get_self_conversation
  • core_message_get_unread_conversation_counts
  • core_message_get_unread_conversations_count
  • core_message_get_unread_notification_count
  • core_message_get_user_contacts
  • core_message_get_user_message_preferences
  • core_message_get_user_notification_preferences
  • core_message_mark_all_conversation_messages_as_read
  • core_message_mark_all_notifications_as_read
  • core_message_mark_message_read
  • core_message_mark_notification_read
  • core_message_message_processor_config_form
  • core_message_message_search_users
  • core_message_mute_conversations
  • core_message_search_contacts
  • core_message_send_instant_messages
  • core_message_send_messages_to_conversation
  • core_message_set_favourite_conversations
  • core_message_unblock_user
  • core_message_unmute_conversations
  • core_message_unset_favourite_conversations
  • core_my_view_page
  • core_notes_create_notes
  • core_notes_delete_notes
  • core_notes_get_course_notes
  • core_notes_view_notes
  • core_question_update_flag
  • core_rating_add_rating
  • core_rating_get_item_ratings
  • core_reportbuilder_can_view_system_report
  • core_reportbuilder_list_reports
  • core_reportbuilder_retrieve_report
  • core_reportbuilder_retrieve_system_report
  • core_reportbuilder_view_report
  • core_search_get_results
  • core_search_get_search_areas_list
  • core_search_get_top_results
  • core_search_view_results
  • core_table_get_dynamic_table_content
  • core_tag_get_tag_areas
  • core_tag_get_tag_cloud
  • core_tag_get_tag_collections
  • core_tag_get_tagindex
  • core_tag_get_tagindex_per_area
  • core_user_add_user_device
  • core_user_add_user_private_files
  • core_user_agree_site_policy
  • core_user_get_course_user_profiles
  • core_user_get_private_files_info
  • core_user_get_user_preferences
  • core_user_get_users_by_field
  • core_user_remove_user_device
  • core_user_set_user_preferences
  • core_user_update_picture
  • core_user_update_user_device_public_key
  • core_user_update_user_preferences
  • core_user_view_user_list
  • core_user_view_user_profile
  • core_webservice_get_site_info
  • core_xapi_delete_state
  • core_xapi_delete_states
  • core_xapi_get_state
  • core_xapi_get_states
  • core_xapi_post_state
  • core_xapi_statement_post
  • enrol_guest_get_instance_info
  • enrol_guest_validate_password
  • enrol_self_enrol_user
  • enrol_self_get_instance_info
  • gradereport_grader_get_users_in_report
  • gradereport_overview_get_course_grades
  • gradereport_overview_view_grade_report
  • gradereport_singleview_get_grade_items_for_search_widget
  • gradereport_user_get_access_information
  • gradereport_user_get_grade_items
  • gradereport_user_get_grades_table
  • gradereport_user_view_grade_report
  • message_airnotifier_are_notification_preferences_configured
  • message_airnotifier_enable_device
  • message_airnotifier_get_user_devices
  • message_airnotifier_is_system_configured
  • message_popup_get_popup_notifications
  • message_popup_get_unread_popup_notification_count
  • mod_assign_get_assignments
  • mod_assign_get_grades
  • mod_assign_get_participant
  • mod_assign_get_submission_status
  • mod_assign_get_submissions
  • mod_assign_get_user_flags
  • mod_assign_get_user_mappings
  • mod_assign_list_participants
  • mod_assign_lock_submissions
  • mod_assign_reveal_identities
  • mod_assign_revert_submissions_to_draft
  • mod_assign_save_grade
  • mod_assign_save_grades
  • mod_assign_save_submission
  • mod_assign_save_user_extensions
  • mod_assign_set_user_flags
  • mod_assign_start_submission
  • mod_assign_submit_for_grading
  • mod_assign_submit_grading_form
  • mod_assign_unlock_submissions
  • mod_assign_view_assign
  • mod_assign_view_grading_table
  • mod_assign_view_submission_status
  • mod_bigbluebuttonbn_can_join
  • mod_bigbluebuttonbn_completion_validate
  • mod_bigbluebuttonbn_end_meeting
  • mod_bigbluebuttonbn_get_bigbluebuttonbns_by_courses
  • mod_bigbluebuttonbn_get_join_url
  • mod_bigbluebuttonbn_get_recordings
  • mod_bigbluebuttonbn_get_recordings_to_import
  • mod_bigbluebuttonbn_meeting_info
  • mod_bigbluebuttonbn_update_recording
  • mod_bigbluebuttonbn_view_bigbluebuttonbn
  • mod_book_get_books_by_courses
  • mod_book_view_book
  • mod_chat_get_chat_latest_messages
  • mod_chat_get_chat_users
  • mod_chat_get_chats_by_courses
  • mod_chat_get_session_messages
  • mod_chat_get_sessions
  • mod_chat_login_user
  • mod_chat_send_chat_message
  • mod_chat_view_chat
  • mod_chat_view_sessions
  • mod_choice_delete_choice_responses
  • mod_choice_get_choice_options
  • mod_choice_get_choice_results
  • mod_choice_get_choices_by_courses
  • mod_choice_submit_choice_response
  • mod_choice_view_choice
  • mod_data_add_entry
  • mod_data_approve_entry
  • mod_data_delete_entry
  • mod_data_get_data_access_information
  • mod_data_get_databases_by_courses
  • mod_data_get_entries
  • mod_data_get_entry
  • mod_data_get_fields
  • mod_data_search_entries
  • mod_data_update_entry
  • mod_data_view_database
  • mod_feedback_get_analysis
  • mod_feedback_get_current_completed_tmp
  • mod_feedback_get_feedback_access_information
  • mod_feedback_get_feedbacks_by_courses
  • mod_feedback_get_finished_responses
  • mod_feedback_get_items
  • mod_feedback_get_last_completed
  • mod_feedback_get_non_respondents
  • mod_feedback_get_page_items
  • mod_feedback_get_responses_analysis
  • mod_feedback_get_unfinished_responses
  • mod_feedback_launch_feedback
  • mod_feedback_process_page
  • mod_feedback_view_feedback
  • mod_folder_get_folders_by_courses
  • mod_folder_view_folder
  • mod_forum_add_discussion
  • mod_forum_add_discussion_post
  • mod_forum_can_add_discussion
  • mod_forum_delete_post
  • mod_forum_get_discussion_post
  • mod_forum_get_discussion_posts
  • mod_forum_get_forum_access_information
  • mod_forum_get_forum_discussions
  • mod_forum_get_forum_discussions_paginated
  • mod_forum_get_forums_by_courses
  • mod_forum_prepare_draft_area_for_post
  • mod_forum_set_lock_state
  • mod_forum_set_pin_state
  • mod_forum_set_subscription_state
  • mod_forum_toggle_favourite_state
  • mod_forum_update_discussion_post
  • mod_forum_view_forum
  • mod_forum_view_forum_discussion
  • mod_glossary_add_entry
  • mod_glossary_delete_entry
  • mod_glossary_get_authors
  • mod_glossary_get_categories
  • mod_glossary_get_entries_by_author
  • mod_glossary_get_entries_by_author_id
  • mod_glossary_get_entries_by_category
  • mod_glossary_get_entries_by_date
  • mod_glossary_get_entries_by_letter
  • mod_glossary_get_entries_by_search
  • mod_glossary_get_entries_by_term
  • mod_glossary_get_entries_to_approve
  • mod_glossary_get_entry_by_id
  • mod_glossary_get_glossaries_by_courses
  • mod_glossary_prepare_entry_for_edition
  • mod_glossary_update_entry
  • mod_glossary_view_entry
  • mod_glossary_view_glossary
  • mod_h5pactivity_get_attempts
  • mod_h5pactivity_get_h5pactivities_by_courses
  • mod_h5pactivity_get_h5pactivity_access_information
  • mod_h5pactivity_get_results
  • mod_h5pactivity_get_user_attempts
  • mod_h5pactivity_log_report_viewed
  • mod_h5pactivity_view_h5pactivity
  • mod_imscp_get_imscps_by_courses
  • mod_imscp_view_imscp
  • mod_label_get_labels_by_courses
  • mod_lesson_finish_attempt
  • mod_lesson_get_attempts_overview
  • mod_lesson_get_content_pages_viewed
  • mod_lesson_get_lesson
  • mod_lesson_get_lesson_access_information
  • mod_lesson_get_lessons_by_courses
  • mod_lesson_get_page_data
  • mod_lesson_get_pages
  • mod_lesson_get_pages_possible_jumps
  • mod_lesson_get_questions_attempts
  • mod_lesson_get_user_attempt
  • mod_lesson_get_user_attempt_grade
  • mod_lesson_get_user_grade
  • mod_lesson_get_user_timers
  • mod_lesson_launch_attempt
  • mod_lesson_process_page
  • mod_lesson_view_lesson
  • mod_lti_get_ltis_by_courses
  • mod_lti_get_tool_launch_data
  • mod_lti_view_lti
  • mod_page_get_pages_by_courses
  • mod_page_view_page
  • mod_quiz_get_attempt_access_information
  • mod_quiz_get_attempt_data
  • mod_quiz_get_attempt_review
  • mod_quiz_get_attempt_summary
  • mod_quiz_get_combined_review_options
  • mod_quiz_get_quiz_access_information
  • mod_quiz_get_quiz_feedback_for_grade
  • mod_quiz_get_quiz_required_qtypes
  • mod_quiz_get_quizzes_by_courses
  • mod_quiz_get_user_attempts
  • mod_quiz_get_user_best_grade
  • mod_quiz_process_attempt
  • mod_quiz_save_attempt
  • mod_quiz_start_attempt
  • mod_quiz_view_attempt
  • mod_quiz_view_attempt_review
  • mod_quiz_view_attempt_summary
  • mod_quiz_view_quiz
  • mod_resource_get_resources_by_courses
  • mod_resource_view_resource
  • mod_scorm_get_scorm_access_information
  • mod_scorm_get_scorm_attempt_count
  • mod_scorm_get_scorm_sco_tracks
  • mod_scorm_get_scorm_scoes
  • mod_scorm_get_scorm_user_data
  • mod_scorm_get_scorms_by_courses
  • mod_scorm_insert_scorm_tracks
  • mod_scorm_launch_sco
  • mod_scorm_view_scorm
  • mod_survey_get_questions
  • mod_survey_get_surveys_by_courses
  • mod_survey_submit_answers
  • mod_survey_view_survey
  • mod_url_get_urls_by_courses
  • mod_url_view_url
  • mod_wiki_edit_page
  • mod_wiki_get_page_contents
  • mod_wiki_get_page_for_editing
  • mod_wiki_get_subwiki_files
  • mod_wiki_get_subwiki_pages
  • mod_wiki_get_subwikis
  • mod_wiki_get_wikis_by_courses
  • mod_wiki_new_page
  • mod_wiki_view_page
  • mod_wiki_view_wiki
  • mod_workshop_add_submission
  • mod_workshop_delete_submission
  • mod_workshop_evaluate_assessment
  • mod_workshop_evaluate_submission
  • mod_workshop_get_assessment
  • mod_workshop_get_assessment_form_definition
  • mod_workshop_get_grades
  • mod_workshop_get_grades_report
  • mod_workshop_get_reviewer_assessments
  • mod_workshop_get_submission
  • mod_workshop_get_submission_assessments
  • mod_workshop_get_submissions
  • mod_workshop_get_user_plan
  • mod_workshop_get_workshop_access_information
  • mod_workshop_get_workshops_by_courses
  • mod_workshop_update_assessment
  • mod_workshop_update_submission
  • mod_workshop_view_submission
  • mod_workshop_view_workshop
  • report_insights_action_executed
  • report_insights_set_fixed_prediction
  • report_insights_set_notuseful_prediction
  • tool_analytics_potential_contexts
  • tool_lp_data_for_course_competencies_page
  • tool_lp_data_for_plan_page
  • tool_lp_data_for_plans_page
  • tool_lp_data_for_user_competency_summary
  • tool_lp_data_for_user_competency_summary_in_course
  • tool_lp_data_for_user_competency_summary_in_plan
  • tool_lp_data_for_user_evidence_list_page
  • tool_lp_data_for_user_evidence_page
  • tool_mobile_call_external_functions
  • tool_mobile_get_autologin_key
  • tool_mobile_get_config
  • tool_mobile_get_content
  • tool_mobile_get_plugins_supporting_mobile
  • tool_mobile_get_public_config
  • tool_mobile_get_tokens_for_qr_login
  • tool_mobile_validate_subscription_key
  • tool_moodlenet_search_courses
  • tool_moodlenet_verify_webfinger

Didn't find tool you were looking for?

Be as detailed as possible for better results