Exposes a Model Context Protocol (MCP) endpoint so Claude AI can manage your Tutor LMS courses, lessons, quizzes, enrollments, and more.
Server has 30 tools with explicit schemas and descriptions. Naming follows verb_noun convention consistently (list_, get_, create_, update_, delete_). Descriptions are present but brief (avg ~40 chars, below 194-char baseline). All tools have input schemas with types and enums where appropriate. Critical gaps: parameter descriptions are almost entirely missing (LLMs cannot infer what 'search', 'post_status', 'price' control without context). Output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages visible. No tool annotations (readOnlyHint, destructiveHint). Composition is sound, tools are single-responsibility and chainable via IDs.
Add a question to a quiz.
Answer a Q&A question.
Create an assignment inside a topic.
Create a new course.
Create a lesson inside a topic.
Create a quiz inside a topic.
Create a topic inside a course.
Parameter descriptions are almost entirely missing. LLMs cannot infer what 'search', 'post_status', 'price', 'video_source_type', 'feedback_mode' control without explicit guidance. This violates the pattern:tool-description requirement that every parameter must have a non-empty description.
Output schemas are not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., course_id, topic_id) without knowing what the response contains. This blocks tool chaining and forces agents to guess field names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Delete an assignment.
Delete or trash a course.
Delete a lesson.
Delete a quiz.
Delete a review.
Delete a topic.
Enroll a student in a course.
Get assignments for a topic. Pass assignment_id to filter a specific assignment.
Get full details of a course.
Get lessons for a topic. Pass lesson_id to filter a specific lesson.
Get quiz details including questions.
Get a student profile.
Get all topics for a course.
List announcements for a course.
List all courses.
List enrollments.
List Q&A questions.
List course reviews.
List enrolled students for a course.
Update a course.
Update enrollment status.
Update a lesson.
Update a topic.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive operations without explicit hints. Tools like tutor_delete_course, tutor_delete_topic, tutor_delete_lesson should be marked destructiveHint=true.
Tool descriptions are too brief (avg ~35 chars, well below 194-char baseline). Descriptions like 'List all courses.' and 'Get full details of a course.' lack context for when to use each tool vs. similar ones. LLMs cannot distinguish tutor_list_courses from tutor_get_course without richer descriptions.
No error handling guidance. Tools return raw API responses without recovery hints. E.g., if tutor_enroll_student fails because the student is already enrolled, the LLM has no guidance on what to do next. Errors should include actionable next steps per pattern:recovery-guide.