Read and write access to a Moodle LMS (courses, users, grades, assignments, quizzes, forums, groups, calendar, messages, badges, completion).
Server has 41 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, parameter descriptions are minimal (typically 1-2 lines), output schemas are not documented, and error handling guidance is absent. Most tools accept a 'format' parameter but lack constraints (enum). No evidence of pagination support despite many list/get tools. Security model is sound (no secrets in params, server-side injection via lifespan context), but tool composition could be tighter, several tools do similar things (e.g., moodle_get_user_courses vs moodle_get_enrolled_courses_by_user). Average tool description ~80 chars, below the 194-char baseline for A+ tools.
Add members to a group
Create a calendar event
Create a forum discussion
Create groups in a course
Delete a calendar event
Remove members from a group
Delete groups from a course
Enrol users in a course
Output schemas not documented. Tools return data but LLMs cannot predict field names, types, or structure. Agents cannot plan downstream calls or extract required IDs for chaining.
Format parameter lacks enum constraint. Tools accept 'format' (markdown or json) but no validation prevents LLMs from passing invalid values like 'xml' or 'csv'.
No pagination support visible. List/get tools (moodle_list_user_courses, moodle_search_courses, moodle_get_messages) lack limit/offset or cursor parameters. Large result sets will blow context windows.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Get submissions for an assignment
Get list of available web service functions
Get calendar events
Get course completion status for a user
Get message conversations
Get course categories
Get course contents (sections and modules)
Get detailed information about a course
Get grades for a course
Get groups in a course
Get user dashboard information
Get courses a user is enrolled in
Get enrolled users in a course
Get forum discussions
Get posts in a forum discussion
Get members of a group
Get messages for the current user
Get quiz attempts
Get quizzes in a course
Get recently accessed courses
Get site information and verify connection to Moodle
Get count of unread messages
Get upcoming calendar events
Get assignments for a user
Get badges earned by a user
Get user grade overview
Get user preferences
Get user profile information
List all courses for a user
Search for courses by name or other criteria
Search for users by name, email, or username
Send a message to a user
Test connection to Moodle server
Duplicate/overlapping tools reduce clarity. moodle_list_user_courses and moodle_get_enrolled_courses_by_user appear to do the same thing; moodle_get_calendar_events and moodle_get_upcoming_events are similar. LLMs waste reasoning cycles choosing between them.
Error handling guidance absent. Tools have no documented recovery paths. If a user_id lookup fails or a write is blocked, LLMs receive no hint about what to try next (e.g., 'Try search_users() first').