Moodle-MCP
Allows interaction with Moodle LMS, including retrieving upcoming events from a Moodle instance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Moodle-MCPShow my upcoming events for this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Moodle-MCP
A Model Context Protocol (MCP) server implementation that provides capabilities to interact with Moodle LMS.
Features
The server exposes the following tools.
Courses & content
Tool | Description |
| Get all courses the current user is enrolled in |
| Get sections and modules for a specific course by its ID |
| Search across all course materials by query string |
| Get announcements from course news forums, optionally filtered by course ID |
| Get recent activity and updates across courses since a given time |
Assignments & deadlines
Tool | Description |
| Get assignments for courses, optionally filtered by course IDs |
| Get submission and grading status for a specific assignment |
| Get upcoming assignment deadlines across all courses, sorted by due date |
| Get unsubmitted assignments past their due date, most overdue first |
| Get a prioritized list of tasks needing action, sorted by urgency |
| Analyze an assignment: status, requirements, materials, progress, deadline |
| Extract requirements, deliverables, constraints, and evaluation criteria from an assignment |
| Find course content relevant to an assignment, ranked by relevance |
| Break an assignment into subtasks with effort, dependencies, and critical path |
| Build a step-by-step plan with timeline, resources, milestones, and risks |
Grades & progress
Tool | Description |
| Get a grade overview for all courses, or detailed grades for one course |
| Get progress and completion for one course or all courses |
| Health check for a course: progress, grades, unsubmitted and overdue counts |
| Analyze assignment distribution by week to identify heavy weeks |
Aggregated overviews
Tool | Description |
| Get upcoming events from Moodle |
| Combined overview of courses, upcoming deadlines, and grades |
| Daily summary of overdue count, today's deadlines, recent grades, events, and tasks |
| Weekly summary of submitted/graded counts, deadlines, overdue count, and progress |
| Ask a natural language question and have it routed to the right data sources |
Related MCP server: Google Calendar MCP Server
API Reference
For available Moodle API functions, please refer to the official documentation.
Setup Instructions
Method 1: Using mcp CLI (recommended)
Create your own
.envfile from.env.exampleAssume you have
uvinstalled, runuv add "mcp[cli]"to install the MCP CLI toolsRun
mcp install main.py -f .envto add the moodle-mcp server to Claude app
Method 2: Using uvx
Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following
{
"mcpServers": {
"moodle-mcp": {
"command": "uvx",
"args": ["moodle-mcp"],
"env": {
"MOODLE_URL": "https://{your-moodle-url}/webservice/rest/server.php",
"MOODLE_TOKEN": "{your-moodle-token}"
}
}
}
}Authentication
Getting your Moodle token
Navigate to your Moodle token management page
https://{your-moodle-url}/user/managetoken.phpUse the token with
Moodle mobile web servicein theServicecolumnAdd this token to your
.envfile
Available Tools
24 toolsanalyze_assignmentA
Comprehensive analysis of an assignment: status, requirements, materials count, course progress, and deadline info
| Name | Required | Description | Default |
|---|---|---|---|
| assignid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It lists what the tool analyzes but does not disclose behavioral traits like authentication requirements, rate limits, or whether it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the key action and lists the covered aspects. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists analysis areas but does not hint at the output format or how the analysis is presented. Given no output schema, this is a gap. Adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'assignid' with no description. The tool description does not explain the parameter's meaning beyond being an assignment ID. With 0% schema description coverage, the description should at least describe the parameter, but it fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs comprehensive analysis of an assignment and lists specific aspects (status, requirements, materials count, course progress, deadline info). This distinguishes it from sibling tools that focus on individual aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a full overview but does not explicitly state when to use this tool vs. more specific siblings like get_assignment_status or get_course_progress.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_moodleB
Ask a natural language question about your Moodle data. Routes to the right data sources based on your question
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as expected latency, authentication needs, or error handling. It merely states it 'routes to the right data sources' without elaboration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that directly convey purpose and behavior. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic NL query tool with no output schema, the description is minimal. It does not explain response format, error cases, or limitations, leaving the agent without sufficient context for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'question' is documented only by name and type in the schema with 0% coverage. The description adds no further detail on format, length, or examples, failing to compensate for the schema's lack of description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: answering natural language questions about Moodle data. It distinguishes from sibling tools which are specific data retrieval tools, making this the go-to for generic queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when asking questions about Moodle data but lacks explicit guidance on when not to use it or alternatives. For specific queries, sibling tools exist, but this is not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_implementation_planC
Create a step-by-step implementation plan for completing an assignment, with timeline, resources, milestones, and risk factors
| Name | Required | Description | Default |
|---|---|---|---|
| assignid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states 'Create' (implying a write operation) but does not clarify if the plan is persistent, requires permissions, or affects other data. No mention of destructive potential, idempotency, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but lists key plan components efficiently. It is front-loaded with the action and resource. However, it could be slightly more structured if broken into two sentences or bullet points for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description lacks crucial details: what the plan looks like, whether it is returned or stored, and any constraints on the assignment ID. For a tool with one parameter, this omission significantly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (assignid) with 0% description coverage. The tool description does not explain what 'assignid' represents or how to obtain it. The schema only provides type and title, so the agent must infer its meaning, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('step-by-step implementation plan for completing an assignment'), with specific components listed (timeline, resources, milestones, risk factors). This distinguishes it from siblings like 'get_actionable_tasks' or 'decompose_task' by emphasizing the plan's comprehensive structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'decompose_task' or 'extract_assignment_requirements'. There is no mention of prerequisites (e.g., having an assignment ID from another tool) or when not to use it, leaving the agent without decision-making context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
daily_briefingA
Aggregated daily summary: overdue count, today's deadlines, recent grades, upcoming events, actionable tasks
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses what the output contains but lacks details on performance, caching, or handling of missing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with 'Aggregated daily summary' and efficiently lists key components. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description adequately explains the output content. It could be improved by hinting at the format or structure of the summary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, schema coverage is trivially 100%. The description adds meaning by listing the components of the summary, exceeding the baseline of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides an 'aggregated daily summary' listing specific components (overdue count, deadlines, grades, events, tasks), distinguishing it from siblings that provide individual pieces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a combined overview is needed, but does not explicitly state when to use this tool versus individual sibling tools like get_overdue_assignments or get_upcoming_events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decompose_taskB
Break down an assignment into subtasks with estimated effort, dependencies, and critical path
| Name | Required | Description | Default |
|---|---|---|---|
| assignid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the high-level output (subtasks, effort, dependencies, critical path) but does not disclose any side effects, permission requirements, or the nature of the 'assignid' parameter. The behavioral context is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that covers the main purpose. However, it could benefit from additional structure or details to improve clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one required parameter, no output schema, and no annotations, the description is too brief. It does not explain the return format, prerequisites, or limitations, leaving many gaps for an agent executing this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage (no descriptions for any parameter), and the description does not explain the only parameter 'assignid'. It is unclear whether it is an assignment ID or task ID, and the description adds no semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'break down' and identifies the resource as 'assignment into subtasks with estimated effort, dependencies, and critical path'. This clearly differentiates from siblings like 'analyze_assignment' or 'extract_assignment_requirements'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when decomposing assignments into subtasks, but it does not explicitly state when to use it versus alternatives like 'analyze_assignment' or 'extract_assignment_requirements'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_assignment_requirementsC
Extract and structure requirements, deliverables, constraints, and evaluation criteria from an assignment description
| Name | Required | Description | Default |
|---|---|---|---|
| assignid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavioral traits. It only states the extraction goal without mentioning read-only nature, side effects, error behavior, or what happens with invalid input. This is insufficient for transparent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and objects, making it concise. However, it could benefit from additional details without becoming verbose, hence not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple interface (one parameter, no output schema), the description is too minimal. It doesn't specify input format, output structure, or how it relates to sibling tools, making it incomplete for the agent to decide when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, with one required parameter 'assignid' of type integer. The description does not explain what 'assignid' represents (e.g., the assignment ID), leaving the agent without needed context to provide the correct value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'extract and structure' and lists concrete items (requirements, deliverables, constraints, evaluation criteria) from an assignment description. However, it does not differentiate from the sibling tool 'analyze_assignment', which may perform a similar function, so it misses the distinction required for a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like 'analyze_assignment' or 'find_relevant_materials'. No context for prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_relevant_materialsC
Find course content and search results relevant to a specific assignment, ranked by relevance
| Name | Required | Description | Default |
|---|---|---|---|
| assignid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'ranked by relevance' but does not disclose whether the tool is read-only, what types of content are returned, authentication needs, or any side effects. Significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key purpose and filtering criteria. No wasted words, but brevity comes at the cost of missing details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one parameter, the description should explain what the tool returns (e.g., list of materials, rankings). It does not mention return format, types of content, or how relevance is determined, leaving the agent with incomplete context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'relevant to a specific assignment' but does not explain the 'assignid' parameter (its meaning, format, or source). The schema shows it's an integer but no further guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'find', specifies the resource 'course content and search results', and adds context 'relevant to a specific assignment, ranked by relevance'. This differentiates it from sibling tool 'search_course_materials' which likely lacks the assignment-specific relevance ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use versus alternatives, no exclusions mentioned. The description implies use for finding assignment-related materials but does not explain when not to use or mention alternative tools like 'search_course_materials'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_actionable_tasksB
Returns prioritized list of tasks needing action, sorted by urgency (overdue first)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description only states the output format. It does not disclose whether the tool is read-only, destructive, or has any side effects, leaving the agent uncertain about behavioral implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the action. Every word serves a purpose with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description covers the purpose and sorting, but lacks details on the output format (e.g., fields of each task). Without an output schema, this information is needed for the agent to properly use the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description does not need to add parameter semantics. Baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a prioritized list of tasks needing action, sorted by urgency. This distinguishes it from similar tools like get_overdue_assignments or get_upcoming_deadlines, but could be more explicit about what constitutes 'tasks needing action'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With many sibling tools that could overlap, the agent lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assignmentsA
Get assignments for courses. Optionally filter by course IDs. Returns all enrolled courses' assignments if no course IDs are provided.
| Name | Required | Description | Default |
|---|---|---|---|
| courseids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses default behavior and optional filtering, but lacks additional details like read-only nature, pagination, or potential limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that efficiently convey purpose and usage with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema and does not describe response format or fields. With many sibling tools, more detail on return structure would aid integration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage for parameter 'courseids'. Description compensates by explaining its optionality and the effect of omitting it, adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the resource (assignments), action (get), and scope (for courses, with optional filtering). Distinguishes from siblings by specifying default behavior (all courses if no IDs provided).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use: to retrieve assignments for courses, with optional filtering. Provides clear context but does not mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assignment_statusB
Get submission and grading status for a specific assignment by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| assignid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description accurately indicates it is a read-only operation ('Get submission and grading status'). However, it does not disclose behavioral details such as whether the assignment must be active, any authorization requirements, or what happens if the ID is invalid. The lack of annotations places more burden on the description, which partially fulfills it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose without unnecessary words. Every part is relevant and efficiently communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 parameter, no output schema), the description is fairly complete, but it lacks details on the return format or what 'status' includes. For a tool that presumably returns structured data, additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description only adds 'by its ID', which does not provide additional meaning beyond the schema. The parameter 'assignid' is required and integer-typed, but the description does not clarify its format, valid range, or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get submission and grading status'), the resource ('specific assignment'), and the scope ('by its ID'). This effectively distinguishes it from sibling tools like 'get_assignments' which lists assignments, and 'analyze_assignment' which likely does more analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_assignments' or 'analyze_assignment'. The description implies it requires an assignment ID but doesn't specify prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_course_announcementsA
Gets announcements from course news forums. Optionally filter by course ID
| Name | Required | Description | Default |
|---|---|---|---|
| courseid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, result ordering, or pagination. It only states the basic action without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence that conveys the essential information with no extraneous words. It is appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no output schema), the description is adequate but minimal. It does not mention return format, field details, or any ordering. A bit more context, such as listing typical announcement fields, would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning to the single parameter by stating it is an optional filter. Without the description, the parameter name 'courseid' alone does not convey its filter role. However, no further details on valid values or default behavior are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Gets' with a specific resource 'announcements from course news forums', which is clear and distinct from sibling tools like get_course_content or get_recent_activity. The purpose is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (announcements from course forums) but does not specify when to use this tool over alternatives. There is no guidance on when it is inappropriate or mention of prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_course_contentA
Get sections and modules for a specific course by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| courseid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency burden. It correctly identifies a read-like operation ('Get'), but does not disclose any side effects, permissions, or rate limits. For a simple retrieval, this is adequate but not exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with verb and object, contains no fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval with one parameter and no output schema, the description covers the essential purpose and input. It could mention the structure of sections/modules but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description adds 'by its ID' which reinforces the parameter's role but does not elaborate on valid values or sources. Given the single parameter, the baseline is 4 for 0 params, but the description offers minimal added meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Get' and the resource 'sections and modules for a specific course', with the condition 'by its ID'. This distinguishes it from sibling tools like get_course_announcements or get_course_health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no context on appropriate usage. It only states what it does, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_course_healthB
Overall health check for a course: progress, grades, unsubmitted/overdue counts
| Name | Required | Description | Default |
|---|---|---|---|
| courseid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not explicitly state that the tool is read-only or safe, nor does it mention any permissions or side effects. The term 'health check' implies read-only, but this is not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence with a front-loaded key point ('Overall health check'). It earns its place but could include more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and many sibling tools, the description is incomplete. It lists covered aspects but does not specify the return format, scope (e.g., individual or aggregated), or how the health check is computed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no detail about the 'courseid' parameter beyond its name. The description does not explain what a course ID is or how to obtain it, leaving the agent without guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Overall health check for a course' covering progress, grades, unsubmitted/overdue counts. This distinguishes it from sibling tools like get_course_progress or get_grades, which focus on individual aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a quick summary of multiple aspects, but it does not explicitly state when to use this tool over specific alternatives like get_course_progress or get_overdue_assignments. Some guidance would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_course_progressB
Progress/completion for courses. Optionally specify a course ID, or get all courses
| Name | Required | Description | Default |
|---|---|---|---|
| courseid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully cover behavioral traits. It only states what the tool does without mentioning side effects, authorization needs, rate limits, or the nature of the returned data (e.g., status, percentages). This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with the key action front-loaded. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and the simplicity of the input, the description should at least hint at the return structure (e.g., array of objects with course ID and progress percentage). It does not, leaving the agent with incomplete understanding of what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only one optional parameter, the description adds that courseid is optional and omitting it returns all courses. This adds some value beyond the schema, but does not explain the expected format or range of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves progress/completion for courses, with an option to filter by course ID. It differentiates from siblings like get_course_content or get_grades by focusing on progress, but lacks specificity on what progress metrics are returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides basic guidance: optionally specify a course ID or get all courses. However, it does not state when to use this over alternatives or any prerequisites, leaving usage context somewhat ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gradesA
Get grade overview for all courses, or detailed grades for a specific course if courseid is provided
| Name | Required | Description | Default |
|---|---|---|---|
| courseid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as authentication requirements, rate limits, or what happens on error (e.g., invalid courseid). It only hints at conditional behavior based on the parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that conveys the purpose and conditional behavior without redundancy. It front-loads the main action and remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the core functionality and parameter behavior. However, it could benefit from mentioning the return format or confirming it is a read-only operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the courseid parameter by explaining that its presence triggers detailed grades versus an overview. Since schema coverage is 0%, this explanation is essential and effectively clarifies the parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves grade overviews for all courses or detailed grades for a specific course when courseid is provided. This distinguishes it from sibling tools like get_assignments or get_course_progress.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when grades are needed) but does not explicitly state when not to use or mention alternatives. It lacks exclusion criteria or context about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_coursesA
Get all courses the current user is enrolled in
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It describes a simple read operation without side effects. It does not mention return format or authentication needs, but for a zero-parameter tool, the behavioral intent is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that front-loads the key purpose. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple list tool with no parameters. It tells the agent exactly what the tool returns (all courses the user is enrolled in). However, the absence of an output schema means the agent lacks structure details, but the description does not promise such details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema description coverage is 100% (vacuously). The description adds no parameter information because none is needed. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all courses the current user is enrolled in. The verb 'Get' and resource 'courses the current user is enrolled in' are specific. It implicitly distinguishes from sibling tools like get_course_content or get_course_progress which target specific courses or details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_course_content or get_course_progress. It does not mention any prerequisites or contexts where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_overdue_assignmentsA
Returns assignments past due date that are unsubmitted, sorted by most overdue first
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the filter (past due, unsubmitted) and sorting (most overdue first), which is behavioral. However, with no annotations provided, the description carries the full burden; it does not mention authentication requirements, scope (current user or all courses), or whether it's read-only. The behavior is adequately described for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy. It efficiently conveys the core functionality without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description is minimal but covers the essential behavior. It does not describe the return format (e.g., fields of assignment objects) or scope, which could be added for completeness. For a simple tool, it is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the input schema, so schema coverage is 100%. The description adds value by specifying the filtering and sorting behavior, which defines the tool's semantics. Per guidelines, 0 parameters baseline is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns assignments that are past due and unsubmitted, sorted by most overdue first. This distinguishes it from siblings like 'get_assignments' which likely returns all assignments, and 'get_upcoming_deadlines' which includes upcoming ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving overdue unsubmitted assignments but does not explicitly provide guidance on when to use this tool versus alternatives like 'get_assignments' or 'get_upcoming_deadlines'. No exclusion criteria or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_activityB
Returns recent activity/updates across courses. Optionally specify 'since' as Unix timestamp (defaults to 7 days ago)
| Name | Required | Description | Default |
|---|---|---|---|
| since | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states the tool returns activity/updates with a default time range, but fails to disclose if it is read-only, what types of activities are included, or any limitations like pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that cleanly states the purpose and parameter behavior. It is front-loaded and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacking output schema, the description should hint at return format or structure, but it does not. It also does not clarify whether 'across courses' means all enrolled courses or a subset. The scope of activity types is vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter schema has 0% coverage, meaning no description for 'since'. The description adds meaningful information: it specifies the parameter is optional, expects a Unix timestamp, and defaults to 7 days ago. This significantly aids agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns recent activity/updates across courses, with a specific verb and resource. It does not explicitly distinguish from sibling tools like get_course_announcements or get_upcoming_events, but the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description only mentions the optional 'since' parameter, with no context on appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_loadB
Study load analysis showing assignment distribution by week, identifying heavy weeks
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the analysis purpose but does not disclose assumptions (e.g., current user, current semester), data freshness, whether it includes only assignments with deadlines, or any constraints on the analysis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words with no unnecessary details. It is front-loaded with the core purpose immediately clear. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no parameters and no output schema, the description does not specify what the output contains (e.g., a list of weeks with assignment counts, heavy week labels). For a simple tool, this is a notable gap. The lack of output schema means the description should compensate, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage, so the baseline is 4 per the calibration rule. The description adds no param information, which is appropriate since there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Study load analysis showing assignment distribution by week') and clearly distinguishes from siblings like weekly_review or get_course_progress by focusing on assignment distribution and identifying heavy weeks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description implies usage for analyzing weekly assignment load but does not mention exclusions, prerequisites, or when to prefer sibling tools like weekly_review or get_course_health.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upcoming_deadlinesA
Get upcoming assignment deadlines across all courses, sorted by due date
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that results are sorted by due date, but does not address whether past deadlines or submitted assignments are included, or any authentication needs. The behavioral transparency is adequate for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action. Every word is necessary; no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description provides sufficient context: scope (across all courses), content (assignment deadlines), and ordering (sorted by due date). It lacks specifics on edge cases like assignments without deadlines, but is complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema description coverage is 100%. The description adds no parameter-level information, but none is needed. According to guidelines, baseline is 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves upcoming assignment deadlines across all courses, sorted by due date. The verb 'Get' and resource 'upcoming assignment deadlines' are specific, and it distinguishes from siblings like get_overdue_assignments and get_assignments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for upcoming deadlines, but does not explicitly state when to use it versus alternatives such as get_upcoming_events or get_assignments. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upcoming_eventsB
Get upcoming events from moodle
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether it is read-only, the scope of events returned, or any limitations. The description only repeats the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence, no wasted words, and the important action and resource are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no parameters, the description provides only minimal context. It does not specify what constitutes an 'event' or the time range, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and the schema coverage is trivially 100%. The description adds no parameter info, but this is acceptable for a parameterless tool; baseline is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'upcoming events from moodle', which defines its purpose. However, it does not differentiate from similar sibling tools like 'get_upcoming_deadlines' or 'get_course_announcements', though no direct events sibling exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it is not clear whether to use this over 'get_upcoming_deadlines' for deadlines that might be events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_course_materialsC
Search across all course materials by query string
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It fails to mention whether the tool is read-only, destructive, requires authentication, or any rate limits. The behavioral traits are entirely unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that front-loads the purpose. It is appropriately concise and free of superfluous information, though it could benefit from slightly more detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is incomplete. It does not explain the return format, result scope, pagination, or any limitations. For a simple search tool, it still leaves important contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should add meaning to the parameter. It merely repeats that a 'query string' is used, without explaining format, case sensitivity, wildcards, or search behavior. The added value over the schema is negligible.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resource 'course materials', specifying the input as a query string. It is specific and unambiguous, though it does not distinguish itself from sibling tools like 'find_relevant_materials' or 'get_course_content'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any conditions, exclusions, or prerequisites mentioned. The description only states the function without context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semester_dashboardA
Get an aggregated overview combining courses, upcoming deadlines, and grades
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It discloses the aggregation of three data types but does not mention caching, freshness, authentication requirements, or limitations (e.g., what if no data exists). For a simple read operation, this is acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 11 words, front-loaded with verb and resource, no redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain return format. It names components but omits structure (e.g., data types, grouping). However, for a simple overview tool, it provides sufficient high-level understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has no parameters with 100% coverage (empty properties). Per rubric, 0 parameters sets baseline 4; the description adds no parameter info, which is appropriate since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the verb 'Get' and resource 'aggregated overview', and specifies it combines courses, upcoming deadlines, and grades, effectively distinguishing it from sibling tools that focus on individual components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a high-level overview but does not provide explicit guidance on when to use this tool versus alternatives like get_courses or weekly_review, nor does it list exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weekly_reviewB
Aggregated weekly summary: submitted/graded counts, upcoming deadlines, overdue count, progress
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation by listing output data, but does not explicitly state safety (non-destructive), latency, or authentication needs. The behavioral traits are moderately clear for a simple aggregation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently communicates the tool's output. It is front-loaded with 'Aggregated weekly summary' and lists specifics. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description covers the main output categories but omits details like the time range (e.g., current week?) and return structure. It provides adequate context for an agent to understand the tool's purpose but lacks completeness in describing the exact output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description adds no parameter information beyond the schema (which is empty), but that is acceptable as no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides an aggregated weekly summary with specific categories (submitted/graded counts, deadlines, overdue, progress). It lacks an explicit verb but is descriptive enough. It distinguishes from siblings like daily_briefing and semester_dashboard through the 'weekly' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives (e.g., daily_briefing, get_upcoming_deadlines). The description does not mention prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct aspect of Moodle interaction, such as assignments, courses, grades, deadlines, or analytics. Overlapping concepts like 'get_course_progress' and 'get_course_health' are clearly differentiated by their descriptions, with the latter including additional metrics.
All tools use snake_case and follow a verb_noun pattern (e.g., 'get_assignments', 'analyze_assignment', 'create_implementation_plan'). The naming is uniform and predictable, with no mixed conventions or vague verbs.
With 24 tools, the count is slightly above the typical 3-15 range for a well-scoped server. However, each tool serves a specific purpose in assisting with Moodle tasks, making the set reasonable for a comprehensive assistant.
The tools cover a wide range of student-facing operations: retrieving courses, assignments, grades, deadlines, materials, and providing analytical summaries. Missing are direct actions like submitting assignments or updating course content, but the server focuses on analysis and retrieval, so gaps are minor.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Model Context Protocol server for Studex tools, notifications, and profile integrations
Model Context Protocol extension for Hebrew calendar
Model Context Protocol server for todo.vu task management and time tracking.
Google Events listings with dates, venues, and ticket links via a hosted MCP server.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables comprehensive calendar management with capabilities to create, list, update, and delete events through a Model Context Protocol server integrated with Google Calendar.1663MIT
- FlicenseNot gradedqualityDmaintenanceModel Context Protocol server that provides seamless access to Google Calendar API with asynchronous operation support, enabling efficient calendar management through a standardized interface.1
- AlicenseAqualityDmaintenanceProvides comprehensive Google Calendar integration capabilities allowing AI assistants to list, create, update, and delete calendar events through a standardized Model Context Protocol.522MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language interaction with Google Calendar via the Model Context Protocol, allowing LLMs like Claude to read and manage calendar events through the Google Calendar v3 API.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/loyaniu/moodle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server