# Moodle MCP server

Agent View of the PolicyLayer registry record for Moodle: identity, probed posture, risk grade, and all 233 tools classified. HTML page: https://policylayer.com/tools/falkenslab-moodle-mcp

## Facts

- Server id: `@falkenslab/moodle-mcp`
- Install: `npx -y @falkenslab/moodle-mcp`
- Homepage: https://www.npmjs.com/package/@falkenslab/moodle-mcp
- Registry record: grade F, identity unverified
- Lifecycle: active
- Rate-limited: no
- Tools: 233 (229 with introspected schema)
- Tool categories present: Destructive, Execute, Read, Write
- Context-window cost: 56457 tokens per request — https://policylayer.com/token-cost/falkenslab-moodle-mcp
- Tags: falkenslab moodle mcp, admin, automation
- Record last modified: 2026-10-18T19:17:21.093Z

## Tools (233)

| Tool | Category | Risk | Record |
| --- | --- | --- | --- |
| `delete_activity` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-activity.md |
| `delete_book_chapter` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-book-chapter.md |
| `delete_database_entry` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-database-entry.md |
| `delete_database_field` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-database-field.md |
| `delete_event` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-event.md |
| `delete_feedback_item` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-feedback-item.md |
| `delete_feedback_template` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-feedback-template.md |
| `delete_glossary_entry` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-glossary-entry.md |
| `delete_grade_category` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-grade-category.md |
| `delete_grade_item` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-grade-item.md |
| `delete_group` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-group.md |
| `delete_grouping` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-grouping.md |
| `delete_lesson_page` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-lesson-page.md |
| `delete_post` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-post.md |
| `delete_question_category` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-question-category.md |
| `delete_questions` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-questions.md |
| `delete_section` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-section.md |
| `delete_workshop_example` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/delete-workshop-example.md |
| `override_workshop_grade` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/override-workshop-grade.md |
| `remove_quiz_slot` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/remove-quiz-slot.md |
| `remove_site` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/remove-site.md |
| `remove_workshop_reviewer` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/remove-workshop-reviewer.md |
| `reset_course` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/reset-course.md |
| `unenrol_user` | Destructive | Critical | https://policylayer.com/tools/falkenslab-moodle-mcp/unenrol-user.md |
| `browser_navigate` | Execute | High | https://policylayer.com/tools/falkenslab-moodle-mcp/browser-navigate.md |
| `browser_wait` | Execute | High | https://policylayer.com/tools/falkenslab-moodle-mcp/browser-wait.md |
| `enrol_users` | Execute | High | https://policylayer.com/tools/falkenslab-moodle-mcp/enrol-users.md |
| `grade_forum_user` | Execute | High | https://policylayer.com/tools/falkenslab-moodle-mcp/grade-forum-user.md |
| `rate` | Execute | High | https://policylayer.com/tools/falkenslab-moodle-mcp/rate.md |
| `start_quiz_attempt` | Execute | High | https://policylayer.com/tools/falkenslab-moodle-mcp/start-quiz-attempt.md |
| `answer_lesson_page` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/answer-lesson-page.md |
| `assess_workshop_submission` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/assess-workshop-submission.md |
| `browser_snapshot` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/browser-snapshot.md |
| `download_file` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/download-file.md |
| `finish_quiz_attempt` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/finish-quiz-attempt.md |
| `get_activities_overview` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-activities-overview.md |
| `get_activity_content` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-activity-content.md |
| `get_activity_report` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-activity-report.md |
| `get_activity_settings` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-activity-settings.md |
| `get_assignment` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-assignment.md |
| `get_attempt_review` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-attempt-review.md |
| `get_choice` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-choice.md |
| `get_choice_results` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-choice-results.md |
| `get_completion_report` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-completion-report.md |
| `get_conversation` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-conversation.md |
| `get_course_completion_criteria` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-course-completion-criteria.md |
| `get_course_completion_status` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-course-completion-status.md |
| `get_course_logs` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-course-logs.md |
| `get_course_structure` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-course-structure.md |
| `get_course_updates` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-course-updates.md |
| `get_database_fields` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-database-fields.md |
| `get_database_templates` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-database-templates.md |
| `get_discussion` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-discussion.md |
| `get_event` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-event.md |
| `get_feedback_items` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-feedback-items.md |
| `get_forum_grades` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-forum-grades.md |
| `get_grade_letters` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-grade-letters.md |
| `get_gradebook_setup` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-gradebook-setup.md |
| `get_grader_report` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-grader-report.md |
| `get_h5p_activity` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-h5p-activity.md |
| `get_lesson_page` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-lesson-page.md |
| `get_lesson_pages` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-lesson-pages.md |
| `get_me` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-me.md |
| `get_my_grades` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-my-grades.md |
| `get_participation_report` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-participation-report.md |
| `get_quiz_attempt` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-quiz-attempt.md |
| `get_quiz_info` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-quiz-info.md |
| `get_quiz_results` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-quiz-results.md |
| `get_quiz_statistics` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-quiz-statistics.md |
| `get_quiz_structure` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-quiz-structure.md |
| `get_rubric` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-rubric.md |
| `get_scorm` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-scorm.md |
| `get_site_info` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-site-info.md |
| `get_submissions` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-submissions.md |
| `get_survey` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-survey.md |
| `get_survey_results` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-survey-results.md |
| `get_wiki_page` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-wiki-page.md |
| `get_workshop` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-workshop.md |
| `get_workshop_allocation` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-workshop-allocation.md |
| `get_workshop_submission` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/get-workshop-submission.md |
| `list_assignments` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-assignments.md |
| `list_badges` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-badges.md |
| `list_book_chapters` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-book-chapters.md |
| `list_conversations` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-conversations.md |
| `list_courses` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-courses.md |
| `list_database_entries` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-database-entries.md |
| `list_database_presets` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-database-presets.md |
| `list_deadlines` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-deadlines.md |
| `list_discussions` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-discussions.md |
| `list_enrolment_methods` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-enrolment-methods.md |
| `list_events` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-events.md |
| `list_feedback_templates` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-feedback-templates.md |
| `list_glossary_categories` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-glossary-categories.md |
| `list_glossary_entries` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-glossary-entries.md |
| `list_groupings` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-groupings.md |
| `list_groups` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-groups.md |
| `list_notifications` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-notifications.md |
| `list_participants` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-participants.md |
| `list_pending` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-pending.md |
| `list_potential_users` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-potential-users.md |
| `list_question_banks` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-question-banks.md |
| `list_question_categories` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-question-categories.md |
| `list_questions` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-questions.md |
| `list_questions_to_grade` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-questions-to-grade.md |
| `list_scales` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-scales.md |
| `list_sites` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-sites.md |
| `list_wiki_pages` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-wiki-pages.md |
| `list_workshop_examples` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/list-workshop-examples.md |
| `server_info` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/server-info.md |
| `show_browser` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/show-browser.md |
| `validate_gift` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/validate-gift.md |
| `validate_html` | Read | Low | https://policylayer.com/tools/falkenslab-moodle-mcp/validate-html.md |
| `add_book_chapter` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-book-chapter.md |
| `add_database_entry` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-database-entry.md |
| `add_database_field` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-database-field.md |
| `add_feedback_item` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-feedback-item.md |
| `add_glossary_category` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-glossary-category.md |
| `add_glossary_entry` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-glossary-entry.md |
| `add_grade_category` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-grade-category.md |
| `add_grade_item` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-grade-item.md |
| `add_lesson_page` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-lesson-page.md |
| `add_question_category` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-question-category.md |
| `add_questions_to_quiz` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-questions-to-quiz.md |
| `add_quiz_section` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-quiz-section.md |
| `add_scale` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-scale.md |
| `add_section` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-section.md |
| `add_site` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-site.md |
| `add_workshop_example` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/add-workshop-example.md |
| `allocate_marker` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/allocate-marker.md |
| `allocate_workshop_randomly` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/allocate-workshop-randomly.md |
| `allocate_workshop_reviewer` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/allocate-workshop-reviewer.md |
| `answer_choice` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/answer-choice.md |
| `answer_quiz_questions` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/answer-quiz-questions.md |
| `apply_database_preset` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/apply-database-preset.md |
| `assess_workshop_example` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/assess-workshop-example.md |
| `auto_create_groups` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/auto-create-groups.md |
| `award_badge` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/award-badge.md |
| `backup_course` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/backup-course.md |
| `browser_click` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/browser-click.md |
| `browser_select` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/browser-select.md |
| `browser_type` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/browser-type.md |
| `browser_upload` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/browser-upload.md |
| `calculate_workshop_grades` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/calculate-workshop-grades.md |
| `configure` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/configure.md |
| `copy_between_sites` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/copy-between-sites.md |
| `copy_course` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/copy-course.md |
| `create_activity` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-activity.md |
| `create_badge` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-badge.md |
| `create_discussion` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-discussion.md |
| `create_event` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-event.md |
| `create_group` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-group.md |
| `create_grouping` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-grouping.md |
| `create_question` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-question.md |
| `create_wiki_page` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/create-wiki-page.md |
| `duplicate_activity` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/duplicate-activity.md |
| `edit_activity` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-activity.md |
| `edit_book_chapter` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-book-chapter.md |
| `edit_database_entry` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-database-entry.md |
| `edit_database_field` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-database-field.md |
| `edit_feedback_item` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-feedback-item.md |
| `edit_glossary_entry` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-glossary-entry.md |
| `edit_lesson_page` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-lesson-page.md |
| `edit_post` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-post.md |
| `edit_question_category` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-question-category.md |
| `edit_quiz_slot` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-quiz-slot.md |
| `edit_scale` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-scale.md |
| `edit_section` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-section.md |
| `edit_wiki_page` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-wiki-page.md |
| `edit_workshop_example` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/edit-workshop-example.md |
| `export_database_entries` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/export-database-entries.md |
| `export_glossary` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/export-glossary.md |
| `export_grades` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/export-grades.md |
| `export_questions` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/export-questions.md |
| `grade_quiz_question` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/grade-quiz-question.md |
| `grade_submission` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/grade-submission.md |
| `grant_extension` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/grant-extension.md |
| `import_activities` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/import-activities.md |
| `import_database_entries` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/import-database-entries.md |
| `import_glossary` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/import-glossary.md |
| `import_grades` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/import-grades.md |
| `import_groups` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/import-groups.md |
| `import_questions` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/import-questions.md |
| `login` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/login.md |
| `logout` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/logout.md |
| `mark_course_complete` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/mark-course-complete.md |
| `mark_notifications_read` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/mark-notifications-read.md |
| `message_participants` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/message-participants.md |
| `move_book_chapter` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/move-book-chapter.md |
| `move_feedback_item` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/move-feedback-item.md |
| `move_lesson_page` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/move-lesson-page.md |
| `move_questions` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/move-questions.md |
| `open_scorm` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/open-scorm.md |
| `override_completion` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/override-completion.md |
| `reply_to_post` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/reply-to-post.md |
| `restore_course` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/restore-course.md |
| `save_feedback_template` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/save-feedback-template.md |
| `save_submission` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/save-submission.md |
| `save_workshop_submission` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/save-workshop-submission.md |
| `schedule_workshop_allocation` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/schedule-workshop-allocation.md |
| `send_message` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/send-message.md |
| `set_badge_criteria` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-badge-criteria.md |
| `set_badge_enabled` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-badge-enabled.md |
| `set_book_chapter_visibility` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-book-chapter-visibility.md |
| `set_completion` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-completion.md |
| `set_course_completion_criteria` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-course-completion-criteria.md |
| `set_database_entry_approved` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-database-entry-approved.md |
| `set_database_template` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-database-template.md |
| `set_discussion_state` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-discussion-state.md |
| `set_discussion_subscription` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-discussion-subscription.md |
| `set_enrolment_method` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-enrolment-method.md |
| `set_glossary_entry_approved` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-glossary-entry-approved.md |
| `set_grade` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-grade.md |
| `set_grade_letters` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-grade-letters.md |
| `set_group_members` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-group-members.md |
| `set_grouping_groups` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-grouping-groups.md |
| `set_question_status` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-question-status.md |
| `set_quiz_override` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-quiz-override.md |
| `set_quiz_pages` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-quiz-pages.md |
| `set_rubric` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-rubric.md |
| `set_user_roles` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-user-roles.md |
| `set_workflow_state` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-workflow-state.md |
| `set_workshop_phase` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/set-workshop-phase.md |
| `submit_assignment` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/submit-assignment.md |
| `submit_survey` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/submit-survey.md |
| `update_activity` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/update-activity.md |
| `update_course` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/update-course.md |
| `update_event` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/update-event.md |
| `update_grade_category` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/update-grade-category.md |
| `update_grade_item` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/update-grade-item.md |
| `update_group` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/update-group.md |
| `update_question` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/update-question.md |
| `use_feedback_template` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/use-feedback-template.md |
| `use_site` | Write | Medium | https://policylayer.com/tools/falkenslab-moodle-mcp/use-site.md |

## Tool descriptions

- `delete_activity` — Delete an activity from a course, with its participants' data (submissions, attempts, posts, grades). Destructive: confirm with the person first, naming the activity.
- `delete_book_chapter` — Delete a chapter with its files; deleting a chapter (not a subchapter) deletes its subchapters too. Returns the chapters afterwards. Can't be undone: confirm with the person first.
- `delete_database_entry` — Delete a database entry with its values and files. A student deletes their own while Moodle lets them change it; a teacher, anyone's. Can't be undone: confirm with the person first.
- `delete_database_field` — Delete a database field: what every entry has in it goes too, and its tags leave the templates. Returns the fields. Can't be undone: confirm with the person first.
- `delete_event` — Delete a calendar event the person can manage (a course event, or their own), by its id from list_events or create_event. Activities' dates are changed in the activity instead. Can't be undone: confirm with the person first.
- `delete_feedback_item` — Delete a feedback item; the answers people gave to it go with it. Returns the items left. Can't be undone: confirm with the person first.
- `delete_feedback_template` — Delete a feedback template (a public one takes a manager's rights). Can't be undone: confirm with the person first.
- `delete_glossary_entry` — Delete a glossary entry with its files. A student deletes their own while the site's editing time lasts; a teacher, anyone's. Can't be undone: confirm with the person first.
- `delete_grade_category` — Delete a grade category: Moodle moves what it held into its parent and deletes its total's grades; the course's own category can't be deleted. Can't be undone: confirm with the person first.
- `delete_grade_item` — Delete a manual grade item and every grade in it. An activity's item goes with its activity, so it's refused. Can't be undone: confirm with the person first.
- `delete_group` — Delete a group; its members stay in the course. Activities set to work by groups lose it. Can't be undone: confirm with the person first.
- `delete_grouping` — Delete a grouping; its groups stay. Can't be undone: confirm with the person first.
- `delete_lesson_page` — Delete a lesson's page. Answers of other pages that jumped to it are left as Moodle leaves them: check them with get_lesson_pages. Returns the page ids left, in order. Can't be undone: confirm with the person first.
- `delete_post` — Delete a forum post and its replies through Moodle's own confirmation; a discussion's first post takes the whole discussion. Only a moderator deletes someone else's post or one with replies. Can't be undone: confirm with the person first.
- `delete_question_category` — Delete a question bank's category: its subcategories move up to its parent; one with questions needs moveTo, the category its questions go to. Moodle keeps a bank's last top-level category. Confirm with the person first.
- `delete_questions` — Delete questions from a bank, every version of each, as the bank's delete action does. Moodle doesn't delete a question a quiz uses: it hides it, and hidden lists those. Can't be undone: confirm with the person first.
- `delete_section` — Delete a section and every activity in it, with their participants' data. Destructive: confirm with the person first, saying which activities go with it.
- `delete_workshop_example` — Delete an example submission with its assessments (the reference one and participants' practice ones). Can't be undone: confirm with the person first.
- `override_workshop_grade` — Override a grade Moodle calculated in a workshop: a submission's grade, or an assessment's grade for assessing (give one of the two ids, from get_workshop), with feedback for the author or the reviewer; remove: true takes the override aw…
- `remove_quiz_slot` — Remove a slot from a quiz, as the edit page's delete icon does; the question stays in its bank. A quiz with attempts can't change its questions. Returns the quiz's structure. Confirm with the person first.
- `remove_site` — Forget a site added at run time, by name, and delete its browser profile with its session. Not the active site (switch first) nor one from the person's configuration (they remove it there). Can't be undone: confirm with the person first.
- `remove_workshop_reviewer` — Remove a reviewer's allocation to a submission: Moodle deletes their assessment of it. An assessment already graded is only deleted with evenIfAssessed, and its grade is lost. Returns the submission's reviewers afterwards. Confirm with t…
- `reset_course` — Reset a course as Moodle's reset form does: delete only what's named in delete (submissions, attempts, posts, grades… in every activity that has them), unenrol the people with unenrolRoles, move the start date (and the activities' dates …
- `unenrol_user` — Unenrol someone from a course: removes every enrolment of theirs the person may remove, with their roles and group memberships in the course; removed and kept name the enrolment methods. Their work in the course stays in Moodle but they …
- `browser_navigate` — Open a page of the configured Moodle site in the browser tools' tab: a URL of the site, or a path relative to it. Other sites are refused. A fallback: use it only when no Moodle tool covers the task, and say which task, so a tool can be …
- `browser_wait` — Wait in the browser tools' tab until a text shows, until it's gone (in the page or any frame in it, such as a SCORM package's), or for some seconds (at most 30): for pages that load or change on their own. A fallback: use it only when no…
- `enrol_users` — Enrol users in a course by manual enrolment, as the "Enrol users" dialog does: with a role (the enrolment's default unless roleId), from start (now) until end (the enrolment's default duration). Takes them as list_potential_users gives t…
- `grade_forum_user` — Give a participant their whole-forum grade, as the forum's grader does: points ("7"), a scale item, or "none" to take it away; notify sends them Moodle's notification. Students may see it: confirm with the person first.
- `rate` — Rate a forum post, a glossary entry or a database record as the person, as the rating menu under it does: a scale item's name, or a number (a point scale's points); "none" takes the person's rating away. Returns the item's aggregate afte…
- `start_quiz_attempt` — Start an attempt at a quiz, or continue the one in progress, as the quiz page's button does; returns the attempt's id and its questions with their fields and options. Starting uses up one of the attempts allowed, and a time limit starts …
- `answer_lesson_page` — Go on in a lesson as the person: press a content page's button (by its label, or by its position from 1), or answer a question page's fields by name (an option's value for choice and select, text for text). Returns Moodle's feedback, if …
- `assess_workshop_submission` — Assess a workshop submission as the person, through the workshop's assessment form (its grading strategy's): a grade and comment per criterion in the form's order, overall feedback for the author (HTML), and any other field by name. A ne…
- `browser_snapshot` — The page in the browser tools' tab as an accessibility tree (roles, names, values), with a ref per element ([ref=e12]) for the other browser tools. By default the main region only (#region-main, where Moodle puts the content), or the who…
- `download_file` — Save a file of the Moodle site to a local folder, with the person's session: a resource's or folder's file (get_activity_content), an assignment's brief file or submitted file (get_assignment, get_submissions), a forum attachment (get_di…
- `finish_quiz_attempt` — Submit an attempt for grading, as "Submit all and finish" does: no answer can change afterwards. Returns the review when the quiz shows it. Final: confirm with the person first, after checking the answers with get_quiz_attempt.
- `get_activities_overview` — Moodle's activities overview of a course, as the person sees it: per activity, its columns (due date, submissions, what needs grading, attempts, the person's own grade, forum subscriptions…), by type or for every type in the course. For …
- `get_activity_content` — Read a content activity as a person would, so Moodle logs the view: a page's or label's text, a book's chapters, a URL resource's target, or a file resource's or folder's files (as links). Takes the id and type from get_course_structure.…
- `get_activity_report` — Read a course's activity report: per activity, how many times it was viewed, by how many people and when last, from the logs (between from and until when given). Counts only, no one's name. Activities nobody viewed come with zero.
- `get_activity_settings` — Read every setting of an activity as its edit form holds them, without changing anything: its module, name, description, each field with its form name, label, value and options, a resource's, folder's or SCORM's files, and its access res…
- `get_assignment` — Read an assignment as the logged-in student sees it: the brief and its files, dates, the submission's status and content, grade and feedback, and whether it can be edited or submitted now.
- `get_attempt_review` — Read a finished attempt's review, as far as the quiz shows it: status, marks and grade, and per question whether it was right, the mark, feedback and the right answer. Someone else's attempt (a teacher's view) names them by alias, and th…
- `get_choice` — Read a choice activity (a poll) as the person sees it: its question, the options with their ids, whether it's open, whether several can be chosen and whether the answer can change, and the person's answer.
- `get_choice_results` — Read a choice's responses as its report shows a teacher: each option with how many chose it and who (aliases when the server pseudonymizes), and who hasn't answered where the choice shows that. The report names people whatever the choice…
- `get_completion_report` — Read a course's progress report: every participant's completion (an alias when the server pseudonymizes) of every activity that tracks it, in one group when given; whether it's manual or automatic, and whether a teacher overrode it.
- `get_conversation` — Read a message conversation: its members and each message's sender (aliases when the server pseudonymizes), text and time; names and contact data in the texts are redacted when pseudonymizing. A page at a time, counted from the newest: l…
- `get_course_completion_criteria` — Read what completes a course, from its "Course completion" settings: activities, other courses, a date, days enrolled, unenrolment, a course grade, self completion, roles that mark it, how they combine, what the form offers, whether comp…
- `get_course_completion_status` — Read each participant's course completion from the course completion report: whether and when they completed the course, and each criterion met and when; participants as aliases when the server pseudonymizes. Some criteria (a grade, a da…
- `get_course_logs` — Read a course's logs, newest first, as its logs report lists them: by a user (an alias when the server pseudonymizes), an activity, a kind of action and a time span, a page at a time: limit entries (50 by default) after skipping offset; …
- `get_course_structure` — Get a Moodle course's sections and activities: ids, names, types, URLs, visibility, whether the person can open each one, restrictions and, where Moodle tracks it, the person's completion: only as a student, on activities with completion…
- `get_course_updates` — What changed in a course's activities since a date (settings, content files, forum posts, submissions, attempts, grades…), as Moodle tracks it for the person, with each activity's name and type. Useful at the start of a session: what's n…
- `get_database_fields` — Read a database activity's fields in order: each one's id, name (templates name it [[name]]), type, description, whether an entry needs it, and its type's settings (choices, sizes…). Takes an editing teacher's role.
- `get_database_templates` — Read a database activity's templates (list, listHeader, listFooter, single, add, search, rss, rssTitle, css, js): what was saved, or Moodle's default for its fields. Fields appear as [[name]], Moodle's other tags as ##tag##. Refused befo…
- `get_discussion` — Read a Moodle forum discussion's posts, oldest first, a page at a time (limit posts, 50 by default, after skipping offset; more says whether there are others): author (an alias when the server pseudonymizes), time, the post it replies to…
- `get_event` — Read one calendar event by its id, as list_events gives them.
- `get_feedback_items` — Read a feedback activity's items as its teacher builds them, in order: type (multichoice, multichoicerated, textfield, textarea, numeric, info, label, captcha, pagebreak), position, question, whether required, a choice's options (with we…
- `get_forum_grades` — Read the whole-forum grades of a forum graded as a whole, as its grader shows them: one per person it can grade (aliases when the server pseudonymizes), with how it's graded (points or scale) and who graded.
- `get_grade_letters` — Read a course's grade letters, from the highest boundary to the lowest: its own when overridden, the site's defaults otherwise.
- `get_gradebook_setup` — Read how a course's grades are computed, as the gradebook setup page shows it: its categories (aggregation, weight, maximum) and grade items (category, maximum, weight). No one's grades.
- `get_grader_report` — Read everyone's grades in a course as the grader report shows them, in one group when given: its columns (grade items, categories, the course total) and a row per participant (an alias when the server pseudonymizes) with their grades.
- `get_h5p_activity` — Read an H5P activity: its content type (the H5P library), whether Moodle tracks attempts, and the person's own attempts with their scores. Solving the content itself (it runs in a player) is for the browser fallback tools.
- `get_lesson_page` — Read the page of a lesson the person is on (starting the lesson the first time): a content page with its buttons, a question with its fields, or the end with the score. Answer it with answer_lesson_page.
- `get_lesson_pages` — Read a lesson's pages as its teacher has them in Moodle's lesson editor, in order: type (content, a question type, cluster, end of cluster, end of branch), title, contents, and a content page's buttons or a question's answers with their …
- `get_me` — Tell who the logged-in person is: user id, username, full name, email, language, time zone, first and last access, and the site. With courseId, also their roles in that course and whether they can edit it and grade in it.
- `get_my_grades` — Get the logged-in person's grade report for a course: each grade item (with its activity id), category and the course total, with grade, range, percentage, weight, letter, feedback and contribution, as Moodle shows them. Takes the course…
- `get_participation_report` — Read an activity's participation report: everyone with a role (all the roles it offers, unless roleId) and how many actions they made there (views or posts only with action; since a date with since); those who did nothing come with 0. Pe…
- `get_quiz_attempt` — Read every question of an attempt in progress, page by page: text, images, fields with their options, and the answers saved so far.
- `get_quiz_info` — Read a quiz's page as the person: description, its rules (attempts allowed, grading method, time limit…), dates, overall feedback, the person's attempts (with their ids, in progress or finished, and grades) and whether they can start one…
- `get_quiz_results` — Read a quiz's attempts as its grades report shows them: per attempt the participant (an alias when the server pseudonymizes), state, dates, grade and the mark per question; with responses, also each answer given (redacted when pseudonymi…
- `get_quiz_statistics` — Read a quiz's statistics report, which tells which questions work: the quiz's figures (attempts, averages, median, standard deviation, skewness, kurtosis, internal consistency, error ratio, standard error) and per question its facility i…
- `get_quiz_structure` — List a quiz's questions as its edit page does, in order: each slot's page, question id, type (or random), name and mark. Teachers only.
- `get_rubric` — Read how an assignment is graded: simple (a grade or a scale), a rubric (criteria with their levels and scores) or a marking guide (criteria with their maximum score). The criterion and level ids are what grade_submission's fields take. …
- `get_scorm` — Read a SCORM activity as the person sees it: attempts allowed and made, grading method, the grade reported and each attempt's, and its SCOs (the package's parts) with the person's status and score in the last attempt. Use it before open_…
- `get_site_info` — What the Moodle site says about itself: its name, URL, language, how people log in (its own form, guest access, single sign-on providers) and whether it's in maintenance; readable before logging in. With courseId, also the activity and r…
- `get_submissions` — Get the participants' submissions to a Moodle assignment, a page at a time (limit participants, 25 by default, after skipping offset; more says whether there are others): who (an alias when the server pseudonymizes, else id and name), st…
- `get_survey` — Read a survey (the questionnaire plugin, or Moodle's feedback) as the person: whether they can answer it now, its messages (completed, closed…), and every question on every page, with whether it's required and its fields (names, options).
- `get_survey_results` — Read what people answered in a feedback or a questionnaire, as its reports show a teacher: every response (who gave it, an alias when the server pseudonymizes, none when anonymous) and, per question, each response's answer (text redacted…
- `get_wiki_page` — Read a wiki page: its content (HTML as Moodle renders it, its text, images and media), its sections, the pages it links to and its latest version; with history, every version, newest first. Authors as aliases, and pages others wrote reda…
- `get_workshop` — Read a workshop's phase and its report as a teacher sees it: every submission (author, title, grade once calculated) and every assessment (reviewer, the submission's author, the grade it gives, its weight, the grade for assessing). Peopl…
- `get_workshop_allocation` — Read a workshop's allocation as its manual allocation page shows it (in the course's current group): each submission with its author and the reviewers allocated to it, and the participants who may be allocated as reviewers. People as ali…
- `get_workshop_submission` — Read a workshop submission as its page shows it: title, text (HTML), attached files, author (an alias when the server pseudonymizes, where Moodle shows authors) and whether the person can edit it now. Without submissionId or author, the …
- `list_assignments` — List the assignments of a Moodle course: their ids (course module ids, for the other assignment tools), names, URLs, visibility and section. Takes the course id from list_courses.
- `list_badges` — List a course's badges: name, description, image, what earns it (Moodle's summary), whether it's enabled and whether the person has it; for a teacher, disabled badges too and how many people have each. Fails with a clear error where the …
- `list_book_chapters` — List a book's chapters in order: id, title, whether each is a subchapter or hidden, and its place; with content, each chapter's HTML and images too (one page read per chapter, logged by Moodle as a view). A teacher sees hidden chapters, …
- `list_conversations` — List the person's message conversations, latest first: private, group or with themselves, their members (aliases when the server pseudonymizes), unread count and the last message as text. A page at a time: limit conversations (20 by defa…
- `list_courses` — List the Moodle courses the logged-in person is enrolled in (as teacher or student), with their ids, names, category, URL, visibility, dates and, where Moodle tracks it, the person's progress: only as a student, in courses with completio…
- `list_database_entries` — Read a database activity's entries in its list's order: author (an alias when the server pseudonymizes), when added and changed, whether approved, and each field's value for the entries the person can edit (all of them for a teacher; the…
- `list_database_presets` — List the presets a database activity can be given: Moodle's own (image gallery, journal, proposals, resources) and those saved on the site that the person can see, each with the id apply_database_preset takes.
- `list_deadlines` — What the person has to do by a date, from Moodle's calendar (submit an assignment, attempt a quiz…), in one course or all of them: from a week ago (overdue ones) to some days ahead. Each with its activity id, date, whether it's overdue a…
- `list_discussions` — List the discussions of a Moodle forum: subject, who started it and when, the last post's author and time, the number of replies (0: unanswered) and whether it's locked. A page at a time: limit discussions (30 by default) after skipping …
- `list_enrolment_methods` — List how people can enrol in a course, in the order Moodle tries them: each method's type, name, whether it's on, how many it enrolled, the role it gives and, for self enrolment and guest access, whether it asks for a key (never the key)…
- `list_events` — List the upcoming events of the person's calendar, as its "Upcoming events" view does, in one course or in all: course events, activities' dates and the person's own events.
- `list_feedback_templates` — List the templates a feedback activity can use: the course's own and the site's public ones.
- `list_glossary_categories` — List a glossary's categories, by id and name, which add_glossary_entry and edit_glossary_entry take.
- `list_glossary_entries` — Read a glossary's entries in its order: concept, definition (HTML), aliases, categories, author (an alias when the server pseudonymizes), whether approved, attachments. What the person sees: approved entries and their own waiting; pendin…
- `list_groupings` — List a course's groupings (sets of groups an activity can be limited to) with their groups' ids. Needs the right to manage groups.
- `list_groups` — List the groups of a course the person can see, with their members (as aliases when the server pseudonymizes). Their ids are what the reports' group filter takes.
- `list_notifications` — List the person's notifications, newest first (only unread ones when asked), a page at a time: limit of them (30 by default) after skipping offset; more says whether there are others to ask for with a bigger offset. Each: subject, text, …
- `list_participants` — List a course's participants with their roles and groups, as the participants page does: people as aliases when the server pseudonymizes, never emails or profile fields. Filter by role, group, or those who haven't accessed the course sin…
- `list_pending` — List what the logged-in person still has to do in a course: activities whose completion is tracked and not complete or, where completion isn't tracked, graded activities without a grade yet; with their dates, restrictions and whether the…
- `list_potential_users` — Find users the person may enrol in a course by manual enrolment, as the "Enrol users" dialog does: matching search in their name or the identity fields the site shows (up to 100 when empty). People as aliases when the server pseudonymize…
- `list_question_banks` — List the question banks of a course: its shared banks (usable by any quiz in the course) and the activities' own banks (a quiz's, usable only there). Returns their ids, which list_questions, import_questions and create_question take. On …
- `list_question_categories` — List a question bank's categories as its categories page shows them, parents before their subcategories: id, name, parent, description and how many questions are directly in each. The bank's hidden Top is the top-level ones' parentId. Ta…
- `list_questions` — List a question bank's categories and the questions in them, category by category: id, name, type, status and category. A page at a time: limit questions (100 by default) after skipping offset; more says whether there are others. Takes t…
- `list_questions_to_grade` — List a quiz's questions that wait for grading by hand (essays…), each with how many to grade and the finished attempts whose answer needs it (by attempt id, with the participant as an alias when the server pseudonymizes). Read an answer …
- `list_scales` — List the scales a course's grades can use: its own and the site's standard ones, with their values and whether something grades with them.
- `list_sites` — List the Moodle sites this server knows, by name: their URL, which one is active (every other tool works on it) and whether each comes from the person's configuration or was added at run time. Switch with use_site.
- `list_wiki_pages` — List the pages of a wiki's subwiki by title: each one's id, the pages it links to (those not created yet without an id) and its latest version (number, date, author as an alias when the server pseudonymizes). The person's subwiki unless …
- `list_workshop_examples` — List a workshop's example submissions as its page shows a teacher: title, and whether its reference assessment is made, with its grade. Moodle lists them in the setup phase, where the workshop uses examples.
- `server_info` — Show this server's version and effective configuration: the active Moodle site and the others, the browser profile folder, the browser, and where each setting came from. Contains no secrets. Does not open the browser.
- `show_browser` — Show the browser to the person, so they can watch what the tools do: the window opens now (the session is kept) and each tool brings the Moodle page it works on to the front. Or hide it again: the window closes and tools go on without on…
- `validate_gift` — Check questions in GIFT before import_questions, without Moodle: each question split at blank lines as Moodle's importer does, with its type in Moodle's names, title, text and answers, and each problem with its line (a question Moodle ca…
- `validate_html` — Check HTML for a page, a label, a description or a post before sending it, without Moodle, and approximately: only Moodle knows exactly what its cleaning keeps. Reports, with their lines, parse errors and tags left open, what Moodle's cl…
- `add_book_chapter` — Add a chapter to a book through Moodle's chapter form: its title and content (HTML, with local images embedded), at the end or after another chapter, as a subchapter of the chapter before it if asked, hidden if asked (shown by default, a…
- `add_database_entry` — Add an entry to a database activity as the person, through its "Add entry" form: a value per field, by id or name (get_database_fields names them), local files for file and picture fields; fields left out stay as the form has them (a dat…
- `add_database_field` — Add a field to a database activity through Moodle's form for its type: text, textarea, number, date, menu, radiobutton, checkbox, multimenu, url, file, picture or latlong, with a name unique in the database, a description, whether it's r…
- `add_feedback_item` — Add an item to a feedback activity, after item after (0: first; last without it): a question of any type with its options and settings, a label with its contents, or a page break or a CAPTCHA. Returns its id and the items in order. Chang…
- `add_glossary_category` — Add a category to a glossary; with autoLink, Moodle links its name wherever it appears in the course. Returns its id and the categories. Changes the course: confirm with the person first.
- `add_glossary_entry` — Add an entry to a glossary as the person: its concept, definition (HTML, with local images embedded), aliases, categories and attached local files. A student's entry waits for a teacher's approval where the glossary asks for it. Returns …
- `add_grade_category` — Add a grade category to a course's gradebook, at the top level or inside another, with its aggregation. Returns it as the setup shows it. Changes how grades are computed: confirm with the person first.
- `add_grade_item` — Add a grade item graded in the gradebook (not by an activity): out of maxGrade (Moodle's default 100) or on a scale, at the top level or in a category, optionally hidden from students. Returns it as the setup shows it. Changes how grades…
- `add_lesson_page` — Add a page to a lesson through Moodle's lesson editor: a content page with its buttons, a question page (multichoice, truefalse, shortanswer, numerical, matching, essay) with its answers, responses, scores and jumps, or a cluster, end of…
- `add_question_category` — Add a category to a question bank, at the top level or inside parentId, with an optional description (HTML). Returns the category. Changes the bank: confirm with the person first.
- `add_questions_to_quiz` — Add questions to a quiz: bank questions by id (from list_questions) and/or random questions from a bank category, at the end or on a given page. A quiz that has been attempted can't change its questions: Moodle refuses. Returns the quiz'…
- `add_quiz_section` — Add a section heading to a quiz, starting at a slot (the first of its page: see set_quiz_pages), optionally shuffling its questions. Returns the new section's id and the quiz's structure. Changes the quiz: confirm with the person first.
- `add_scale` — Add a scale to a course: its name and values from the lowest to the highest (no commas in them), and a description. Returns it. Changes the course: confirm with the person first.
- `add_section` — Add a section to a course, at the end or after a given section, optionally named and described. Returns its id and the course structure. Changes the course: confirm with the person first.
- `add_site` — Add a Moodle site to this server, kept for later sessions: its URL (any page of it works) and, optionally, a short name (letters, digits, dots, hyphens; its host by default). Without url, the person is asked for both in their app, where …
- `add_workshop_example` — Add an example submission to a workshop, for participants to practise assessing: title, text (HTML, with local images embedded) and attached files. Then assess_workshop_example makes its reference assessment. Only where the workshop uses…
- `allocate_marker` — Allocate a marker (someone who can grade; several where the assignment uses several per submission) to participants' submissions, as the grading table's bulk action does; Moodle leaves submissions past marking alone. Participants and mar…
- `allocate_workshop_randomly` — Allocate submissions to reviewers at random, as the workshop's random allocation does: perSubmission reviews for each submission, or perReviewer for each reviewer; keeping the current allocations unless keepCurrent is false (graded ones …
- `allocate_workshop_reviewer` — Allocate a reviewer to a submission, as the manual allocation page's "Add reviewer" does, in any phase. The submission by its id or its author, the reviewer one get_workshop_allocation lists as a potential reviewer (aliases when the serv…
- `answer_choice` — Answer a choice activity as the person, with one option (several where the choice allows them) by id from get_choice, as "Save my choice" does. Returns the choice afterwards. Answers as the person, and some choices don't allow changing i…
- `answer_quiz_questions` — Save answers in an attempt in progress, as the attempt's pages do; it doesn't finish the attempt. Each answer names a question's slot and its fields by name with the value to give: an option's value for choice and select fields, "1" or "…
- `apply_database_preset` — Give a database activity a preset, as Moodle's "Use this preset" does: its fields are added, a field with the same name and type is kept with what entries have in it, every other field is deleted with its content, and its templates repla…
- `assess_workshop_example` — Assess an example submission through the workshop's assessment form, as assess_workshop_submission does a submission: a teacher's assessment is the reference participants' are compared with; a participant's is their practice, where the w…
- `auto_create_groups` — Split a course's participants into groups at once, as Moodle's "Auto-create groups" does: count groups, or groups of count members, named by naming (# a number, @ a letter), filled at random or by name or ID number (or left empty), from …
- `award_badge` — Award a badge by hand to a participant (an alias when the server pseudonymizes), as one of the roles its manual criterion names (roleId when the person holds several). The badge must be enabled and have a manual criterion. Moodle issues …
- `backup_course` — Back a course up to a .mbz file in a local folder, through Moodle's backup wizard: its content, and with withUsers its people's data too (anonymize makes their names anonymous). Or only some of it: sections (each with everything in it) a…
- `browser_click` — Click an element of the browser tools' tab by its snapshot ref (a link, button, checkbox, tab…), and wait for the page it leads to. Links to other sites are blocked. A click can change the site (save, delete, submit): confirm with the pe…
- `browser_select` — Choose options in a select of the browser tools' tab by its snapshot ref, by their values or visible labels (several for a multiple select). A fallback: use it only when no Moodle tool covers the task, and say which task, so a tool can b…
- `browser_type` — Fill a text field of the browser tools' tab by its snapshot ref, replacing what it holds; optionally press Enter after. Password fields are refused: the person logs in themselves (login). A fallback: use it only when no Moodle tool cover…
- `browser_upload` — Set local files on a file input of the browser tools' tab by its snapshot ref (in Moodle's file picker, the "Upload a file" input), as if the person had chosen them. Absolute paths. A fallback: use it only when no Moodle tool covers the …
- `calculate_workshop_grades` — Calculate a workshop's grades in the evaluation phase, as "Re-calculate grades" does: each submission's grade from its assessments, each assessment's grade for assessing by the workshop's evaluation method, comparison its strictness. Ove…
- `configure` — Set this server's configuration for this session: the Moodle site (url; a new one is added to the server's sites and kept, a known one becomes active, see use_site), whether the browser runs without a window (headless), how student tools…
- `copy_between_sites` — Copy a course's content from one of this server's sites to another (list_sites): some activities (activityIds), some sections with everything in them (sectionIds), or, with neither, the whole course. Through Moodle's backup on the first …
- `copy_course` — Copy a course into a new one, as Moodle's "Copy course" does: its content (and, with withUsers, its people's enrolments and data) under a new full and short name, in a category (the course's unless given), with new dates. Needs the right…
- `create_activity` — Create an activity or resource of any type (page, label, url, resource, folder, assign, quiz, forum…) at the end of a section, through Moodle's own form, hidden from students by default. Common fields have their own inputs, access restri…
- `create_badge` — Create a course badge, disabled and without criteria, through Moodle's new badge form: its name, description (plain text) and image (a local PNG, JPEG or GIF, at most 256 KB). Then set_badge_criteria gives it criteria and set_badge_enabl…
- `create_discussion` — Start a discussion in a Moodle forum, with optional attachments and embedded images (local files); a teacher can post announcements this way in the announcements forum. Returns the new discussion's id, and whether it's pinned and the per…
- `create_event` — Create an event in a course's calendar, which its participants see: a name, a start (ISO 8601 with its time zone), and optionally a duration and a description (HTML). Returns the event. Visible to the course: confirm with the person first.
- `create_group` — Create a group in a course with Moodle's group form. Add its members with set_group_members. Returns its id. Changes the course: confirm with the person first.
- `create_grouping` — Create a grouping in a course with Moodle's form; give it its groups with set_grouping_groups. Returns its id. Confirm with the person first.
- `create_question` — Create one question in a question bank through its type's form, of any type: multichoice, truefalse, shortanswer, numerical, essay, calculated (simple and multichoice too), match, randomsamatch, drag and drop into text (ddwtos), onto an …
- `create_wiki_page` — Create a page in a wiki's subwiki as the person, with its content (HTML in an HTML wiki, Moodle's default, or the wiki's markup; [[Title]] links to another page): the person's subwiki unless groupId or participant choose another. A subwi…
- `duplicate_activity` — Duplicate an activity right after itself, with its settings and content (not participants' data). Returns the copy's id and the course structure. Changes the course: confirm with the person first.
- `edit_activity` — Move an activity to another section (at its end) or before another activity, to reorder a course; rename it; or set its visibility ("shown", "hidden", or "stealth": hidden from the course page but available by link). Only what is given c…
- `edit_book_chapter` — Change a chapter's title, content (HTML, with local images embedded) or whether it is a subchapter, through its form: only what is given changes. move_book_chapter moves it, set_book_chapter_visibility shows or hides it. Returns the chap…
- `edit_database_entry` — Change a database entry through its edit form: the fields given (files too), the rest as they are; removeFiles takes a file or picture field's file away. A student changes their own while Moodle lets them; a teacher, anyone's. Confirm wi…
- `edit_database_field` — Change a database field's name, description, whether it's required, or its type's settings (one by one): what is left out stays. Renaming it renames its tag in the templates, as Moodle does. Its type can't change: delete it and add anoth…
- `edit_feedback_item` — Change a feedback item with what is given: question, label, required, a choice's options (given, they replace them all) and settings, a numeric range, a label's contents, its dependency (removeDependency takes it away) and other fields. …
- `edit_glossary_entry` — Change a glossary entry: only what is given (attachments replaces its files, [] removes them). A student changes their own while the site's editing time lasts; a teacher, anyone's. Returns the entry. Confirm with the person first.
- `edit_lesson_page` — Change a lesson's page through its form in the lesson editor: title, contents, buttons or answers (given, they replace them all), options and other fields; only what is given changes, and a page keeps its type. A jump to a page the lesso…
- `edit_post` — Change a forum post through Moodle's own form, as its author (within the site's editing time) or a moderator: its subject, message (HTML), and attachments to add or remove. Only what's given changes. Returns the post afterwards (its auth…
- `edit_question_category` — Change a question bank's category: its name, description (HTML) or parent (moving it with its subcategories and questions; the bank's Top moves it to the top level). Only what is given changes. Changes the bank: confirm with the person f…
- `edit_quiz_slot` — Change one slot of a quiz: its maximum mark, and where it is (after another slot, 0 for first, and on a page), as the edit page does. After attempts, Moodle lets the mark change (it regrades them) but not the order. Returns the quiz's st…
- `edit_scale` — Change a course's scale: its name, values or description. A scale something grades with keeps its values. Returns it. Confirm with the person first.
- `edit_section` — Change a section: rename it, describe it, show or hide it (with its activities), restrict access to it, or move it after another section. Only what is given changes. Returns the course structure. Changes the course: confirm with the pers…
- `edit_wiki_page` — Change a wiki page's content, the whole page or one section (a heading, as get_wiki_page's sections lists them), as its editor does: a new version, by the person. Refused while someone else has the page open in its editor: try again late…
- `edit_workshop_example` — Change an example submission: only what is given (attachments replace those there). Changes the course: confirm with the person first.
- `export_database_entries` — Save a database activity's entries to a local CSV file, as its "Export entries" does: a column per field (images and files aren't in it), with the authors' details, times and approval if asked. Every entry of the person's group. The file…
- `export_glossary` — Save a glossary's approved entries into a local folder as Moodle's XML (with aliases, categories and files), as its "Export entries" does; import_glossary brings them into another glossary. The file holds what participants wrote as is: o…
- `export_grades` — Save a course's grades into a local folder as Moodle exports them for a teacher: a spreadsheet (xlsx, ods), CSV or XML, with the items, group, display and feedback chosen. The file names every participant: only with names in clear (the s…
- `export_questions` — Save a bank's questions, or a category's with its subcategories, to a local GIFT or Moodle XML file: each question's latest version, hidden ones left out, with their categories, so import_questions recreates them. validate_gift reads a G…
- `grade_quiz_question` — Grade one question of a finished attempt by hand, with a comment, as the review's "Make comment or override mark" does: an essay waiting for grading, or any question whose mark is overridden. The mark is in the question's points (0 to it…
- `grade_submission` — Grade a participant in an assignment, as Moodle's grader does: a grade (simple grading), a rubric's levels or a marking guide's scores per criterion (ids from get_rubric) with remarks, feedback comments (HTML, when the assignment has the…
- `grant_extension` — Grant participants an extension of an assignment's due date until a date, as the assignment's extension form does (several at once). Takes them as get_submissions gives them: users (aliases) when the server pseudonymizes, else userIds. M…
- `import_activities` — Import activities from another course into a course, as Moodle's "Import" does: all of them, or only activityIds, with their sections, never people's data. Returns the new activities' ids. It can take minutes: Moodle does it in steps, an…
- `import_database_entries` — Add entries to a database activity from a local CSV file, as its "Import entries" does: a header row with the fields' names (as export_database_entries writes it; a Username column makes that user the author), UTF-8. Returns how many Moo…
- `import_glossary` — Import the entries of a glossary's XML file (as export_glossary saves it) into this glossary, as the person's own entries, approved; with categories, their categories too. Moodle rejects duplicates where the glossary takes none, and entr…
- `import_grades` — Import grades into a course's gradebook from a local CSV file, as Moodle's CSV import does: mapFrom is the column that identifies each person and mapTo what it holds (user id, username, ID number or email); items says which grade item (a…
- `import_groups` — Create groups from a local CSV file, as Moodle's "Import groups" does: a groupname column, and optionally description, enrolmentkey, groupidnumber, groupingname (made when missing) and enablemessaging. Moodle creates the groups without m…
- `import_questions` — Import questions into a question bank from GIFT or Moodle XML, given as text or as a local file, through the bank's import form: the way to add several at once. Moodle checks the whole file first: when it can't parse it, nothing is impor…
- `login` — Make sure there is a Moodle session. If there is one, returns the logged-in user at once. Otherwise opens a browser window at the site's login page and waits until the person logs in there themselves (the server never sees their password…
- `logout` — End the person's Moodle session in the server's browser, so someone else can log in (another account: login opens the window again). Only Moodle's session ends: a single sign-on provider may keep its own and log the same person back in. …
- `mark_course_complete` — Mark a participant's course completion by hand (an alias when the server pseudonymizes), as the course completion report's link does: the course's "Manual completion by others" criterion for a role the person holds. Moodle completes the …
- `mark_notifications_read` — Mark all the person's notifications read, as the notifications popover's "Mark all as read" does. Doing it twice changes nothing.
- `message_participants` — Send one private message to several participants of a course, as the participants page's "Send a message" does: to users (aliases) or userIds, or to everyone chosen by role, group or inactiveSince (everyone when none is given), the perso…
- `move_book_chapter` — Move a chapter one place up or down, as the table of contents' arrows do: a chapter moves with its subchapters, past the whole chapter before or after it; a subchapter moves alone. Call it again to move further. Returns the chapters afte…
- `move_feedback_item` — Move a feedback item to a position (from 1). Returns the items in order. Changes the course: confirm with the person first.
- `move_lesson_page` — Move a lesson's page after another (0: first), as the lesson editor's move link does. Jumps by page id still lead to the same pages; next-page and previous-page follow the new order. Returns the page ids in order. Changes the course: con…
- `move_questions` — Move questions of a bank into one of its categories, several at once; each keeps its id and versions. Changes the bank: confirm with the person first.
- `open_scorm` — Open a SCORM activity in Moodle's player, as the person, in the browser tools' tab: the last attempt continues unless newAttempt, at the first SCO unless scoId. Opening it starts an attempt in Moodle. Then do the package with the browser…
- `override_completion` — Set a participant's completion of an activity as a teacher does from the progress report (an override, shown as such). Takes the participant as get_completion_report gives them. Returns the state saved. Changes the participant's progress…
- `reply_to_post` — Reply to a post in a Moodle forum discussion, with optional attachments (local files). The subject defaults to Moodle's "Re: …". Returns the new post's id and its discussion. Posts as the person, visibly: confirm the text with the person…
- `restore_course` — Restore a .mbz backup through Moodle's restore wizard: into a new course in a category (no intoCourseId), or into an existing course, adding to its content (mode merge, the default) or replacing it (replace deletes the course's content f…
- `save_feedback_template` — Save a feedback activity's items as a new template: the course's own, or public (every course's, a manager's) with public. Returns its id. Confirm with the person first.
- `save_submission` — Save the logged-in student's submission to an assignment: its online text (HTML, replacing what was there) and files to add (absolute local paths). Doesn't submit it for grading when the assignment asks students to click submit: submit_a…
- `save_workshop_submission` — Add the person's submission to a workshop, or change the one they have, through its submission form: title, text (HTML, with local images embedded), attached local files; only what is given changes (a new one needs a title). Moodle takes…
- `schedule_workshop_allocation` — Turn the workshop's scheduled allocation on or off: when on, Moodle allocates at random by itself at the end of the submission phase (once its submissions deadline passes), with the random allocation's settings given here (those left out…
- `send_message` — Send a private message to someone, as the messaging drawer does: to user (an alias) when the server pseudonymizes, else userId. The text is plain; no aliases in it, since the recipient reads it. Returns the message and its conversation. …
- `set_badge_criteria` — Set a badge's criteria: completing activities (with completion tracking; all of them or any one), completing the course (with a minimum course grade and a date), or awarded by hand by people with some roles (any one of them by default); …
- `set_badge_enabled` — Make a badge available to users or not. Enabling it awards it at once to everyone who already meets its criteria, and they're told: confirm with the person first. It needs criteria first. Returns the badge.
- `set_book_chapter_visibility` — Show a chapter to students or hide it from them, as the table of contents' eye does: a chapter's subchapters go with it, and a subchapter of a hidden chapter stays hidden. Returns the chapters afterwards. Changes what students see: confi…
- `set_completion` — Mark the person's own completion of an activity with manual completion, done or not done, as its "Mark as done" button does. Activities that complete on their own (by viewing, grade, submission) can't be marked: Moodle says so. Doing it …
- `set_course_completion_criteria` — Set a course's completion criteria: a criterion given replaces that kind's settings, one in remove goes, one not given stays; overall says whether all criteria or any one complete the course. Activities need completion tracking, roles th…
- `set_database_entry_approved` — Approve a database entry waiting for approval, or take its approval back: one waiting shows only to its author and to who approves. Its author sees it: confirm with the person first.
- `set_database_template` — Save one of a database's templates as given, without Moodle's HTML editor in between: list (repeated per entry, between listHeader and listFooter), single, add (the entry form: each field's tag once), search, rss, rssTitle, css or js. Fi…
- `set_discussion_state` — Pin or unpin, lock or unlock a forum discussion, as the discussion list's menu does; what's already so is left alone. Returns the discussion as the forum lists it afterwards. Students see it: confirm with the person first.
- `set_discussion_subscription` — Subscribe the person to a forum discussion, or unsubscribe them, as the discussion list's toggle does: Moodle then emails them its new posts. What's already so is left alone. Returns the discussion as the forum lists it afterwards.
- `set_enrolment_method` — Change an enrolment method with its form, by its id or the course's first of a type (methodType "self": added when the course has none and Moodle offers it): turn it on or off, its key, dates, role, limit and welcome message. Only what's…
- `set_glossary_entry_approved` — Approve an entry waiting for approval (list_glossary_entries with pending lists them), or take an approval back: the entry then waits again, hidden from all but its author and who approves. Its author sees it: confirm with the person first.
- `set_grade` — Set a participant's grade in a grade item, as the gradebook's single view does: a manual item takes it; an activity's or a category's is overridden (until override false takes it off). Also feedback and excluding it from the totals. The …
- `set_grade_letters` — Set a course's own grade letters, each from its minGrade percent, overriding the site's; useDefaults goes back to the site's. Changes how grades show to students: confirm with the person first.
- `set_group_members` — Add and remove members of a group, as its members page does: only the course's participants can be added. Takes them as list_participants gives them: aliases (add, remove) when the server pseudonymizes, else user ids (addIds, removeIds).…
- `set_grouping_groups` — Make a grouping's groups exactly groupIds, adding and removing as its page does; groups of other courses are left out and named. Returns its groups afterwards. Confirm with the person first.
- `set_question_status` — Set a bank question ready (quizzes can use it) or draft, as the bank's status menu does.
- `set_quiz_override` — Give a participant their own quiz settings, as the quiz's user overrides do: open and close dates, time limit in minutes, or number of attempts (0 unlimited); what isn't given stays the quiz's. Takes the participant as list_participants …
- `set_quiz_pages` — Set how a quiz's questions are split into pages: perPage questions a page (0 for all on one), as "Repaginate" does, or page breaks exactly after the slots in breaksAfter. Returns the quiz's structure. Changes the quiz: confirm with the p…
- `set_rubric` — Define how an assignment is graded with a rubric (criteria, each with two levels or more: a definition and its score) or a marking guide (criteria, each with a short name, a description for students, one for markers and a maximum score, …
- `set_user_roles` — Set a participant's roles in a course, as the participants page's roles column does: gives the roles in roleIds the person may assign and takes away the other ones they may assign; roles from elsewhere stay. Returns the roles afterwards.…
- `set_workflow_state` — Set the marking workflow state of participants' submissions, as the grading table's bulk action does: "released" shows them their grades (notify tells them). Takes them as get_submissions gives them. Students may see it: confirm with the…
- `set_workshop_phase` — Switch a workshop to a phase (setup, submission, assessment, evaluation, closed), forwards or back, as its page's phase links do. Moodle allocates nothing and calculates no grades on its own when it switches. Changes what students can do…
- `submit_assignment` — Submit the saved submission for grading: it can't be changed afterwards unless the teacher reopens it. When the site asks to accept a statement (it's your own work…), the call fails quoting it until acceptStatement is true. Final: confir…
- `submit_survey` — Answer a survey and submit it, page by page as its form goes: responses maps field names (from get_survey) to values ("1"/"0" for checkboxes, an option's value for choices and selects, text otherwise). Every name is checked first; Moodle…
- `update_activity` — Change an existing activity through Moodle's own form: name, description, a page's or label's content, a URL's target, visibility, access restrictions, completion, a file resource's or folder's files (add, remove by their path as get_act…
- `update_course` — Change a course's full name, short name, summary (HTML) or any other setting by its field name in Moodle's course settings form (settings), through that form. Only what is given changes. Returns the course afterwards. Changes the course:…
- `update_event` — Change a calendar event through the calendar's own form: only what's given changes; a new start keeps its length unless a new one is given. Activities' dates are changed in the activity instead. Returns the event afterwards. Visible to t…
- `update_grade_category` — Change a grade category from get_gradebook_setup: its name, aggregation, weight in its parent (percent, overriding the automatic one), or move it into another category. Returns it afterwards. Changes how grades are computed: confirm with…
- `update_grade_item` — Change a grade item from get_gradebook_setup: move it into a category, set its weight (percent, overriding the automatic one) or a manual item's maximum grade (an activity's is set in the activity). Returns the item afterwards. Changes h…
- `update_group` — Change a group's name, description, ID number or enrolment key; what isn't given stays. Confirm with the person first.
- `update_question` — Change a question of a bank through its type's form, with create_question's inputs: only what's given changes (a list given, such as answers, pairs, choices, items, drags, markers, drops or a wildcard's values, replaces the question's). …
- `use_feedback_template` — Add a template's items to a feedback activity, after the items it has, or in their place with replace (their answers go with them). Returns the items. Changes the course: confirm with the person first.
- `use_site` — Make another known site the active one, by name (list_sites): every other tool works on it from now on. The previous site's browser closes and keeps its session; if the new one has none, the next tool asks to log in. Tell the person whic…

## Related servers

- UnClick (1662 tools) — https://policylayer.com/tools/io-github-malamutemayhem-unclick-mcp-server.md
- Apibase (1384 tools) — https://policylayer.com/tools/io-github-whiteknightonhorse-apibase.md
- Delx Mcp A2a (1068 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-mcp-a2a.md
- MCP Framework Personal (912 tools) — https://policylayer.com/tools/inggerman-mcps.md
- Hermoso (896 tools) — https://policylayer.com/tools/hermoso.md
- Nodebench (824 tools) — https://policylayer.com/tools/io-github-homenshum-nodebench.md
- Altium-MCP-Suite (817 tools) — https://policylayer.com/tools/altium-mcp-suite.md
- Eda Agent (777 tools) — https://policylayer.com/tools/eda-agent.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=falkenslab-moodle-mcp · API: https://policylayer.com/registry/api · Recommended policies for every tool: https://policylayer.com/policies/falkenslab-moodle-mcp
