# 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, and the guide's frequently used comments), through Moodle's advanced grading editor, ready to use. Creates one where there is none and replaces the one there is, so its criterion and level ids change. Refused once anything has been graded with it: Moodle would regrade. Returns the definition as get_rubric gives it. Changes how students are graded: confirm with the person first.

Agent View of the PolicyLayer registry record for `set_rubric`. HTML page: https://policylayer.com/tools/falkenslab-moodle-mcp/set-rubric

## Facts

- Tool: `set_rubric`
- Server: Moodle (`@falkenslab/moodle-mcp`) — https://policylayer.com/tools/falkenslab-moodle-mcp.md
- Install: `npx -y @falkenslab/moodle-mcp`
- Homepage: https://www.npmjs.com/package/@falkenslab/moodle-mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 6 (4 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Its name, as the advanced grading page lists it |
| `method` | string | yes |  |
| `comments` | array | no | A marking guide's frequently used comments, in order |
| `criteria` | array | yes | In order |
| `description` | string | no | Its description (HTML) |
| `assignmentId` | integer | yes | The assignment's id (course module id), as list_assignments gives it |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "set_rubric",
    "arguments": {
      "name": "<name>",
      "method": "<method>",
      "criteria": [],
      "assignmentId": 0
    }
  }
}
```

## Why set_rubric is rated Medium

An AI agent can call set_rubric faster than any human can review: one bad instruction and it creates or modifies resources in Moodle by the hundred, each call as confident as the last.

Risk signals: High parameter count (13 properties)

## Use case

AI agents use set_rubric to create or update resources in Moodle, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Moodle environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Moodle:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "set_rubric": {
      "limits": [
        {
          "counter": "set_rubric_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Moodle (232)

- `delete_activity` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-activity.md
- `delete_book_chapter` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-book-chapter.md
- `delete_database_entry` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-database-entry.md
- `delete_database_field` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-database-field.md
- `delete_event` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-event.md
- `delete_feedback_item` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-feedback-item.md
- `delete_feedback_template` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-feedback-template.md
- `delete_glossary_entry` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-glossary-entry.md
- `delete_grade_category` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-grade-category.md
- `delete_grade_item` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-grade-item.md
- `delete_group` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-group.md
- `delete_grouping` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-grouping.md
- `delete_lesson_page` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-lesson-page.md
- `delete_post` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-post.md
- `delete_question_category` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-question-category.md
- `delete_questions` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-questions.md
- `delete_section` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-section.md
- `delete_workshop_example` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/delete-workshop-example.md
- `override_workshop_grade` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/override-workshop-grade.md
- `remove_quiz_slot` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/remove-quiz-slot.md
- `remove_site` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/remove-site.md
- `remove_workshop_reviewer` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/remove-workshop-reviewer.md
- `reset_course` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/reset-course.md
- `unenrol_user` — Destructive — https://policylayer.com/tools/falkenslab-moodle-mcp/unenrol-user.md
- `browser_navigate` — Execute — https://policylayer.com/tools/falkenslab-moodle-mcp/browser-navigate.md
- `browser_wait` — Execute — https://policylayer.com/tools/falkenslab-moodle-mcp/browser-wait.md
- `enrol_users` — Execute — https://policylayer.com/tools/falkenslab-moodle-mcp/enrol-users.md
- `grade_forum_user` — Execute — https://policylayer.com/tools/falkenslab-moodle-mcp/grade-forum-user.md
- `rate` — Execute — https://policylayer.com/tools/falkenslab-moodle-mcp/rate.md
- `start_quiz_attempt` — Execute — https://policylayer.com/tools/falkenslab-moodle-mcp/start-quiz-attempt.md
- …and 202 more: https://policylayer.com/tools/falkenslab-moodle-mcp.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 · Policy library: https://policylayer.com/policies/falkenslab-moodle-mcp
