Skip to main content
Glama
Dathis

ZHAW Moodle MCP Server

by Dathis

moodle_sync_course

Idempotent

Synchronize Moodle course files to your local download directory, downloading new and updated files while reporting changes without deleting local copies.

Instructions

Synchronise all files of a course into the local download directory. Downloads new files, re-downloads changed ones and reports what changed. Files removed from Moodle are reported but never deleted locally.

    Args:
        course_id: course id from moodle_list_courses
        dry_run: only report what would change, download nothing
        update_changed: re-download files that changed on Moodle
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dry_runNo
course_idYes
update_changedNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
newNo
failedNo
dry_runYes
removedNoGone from Moodle; local files are kept
renamedNo
updatedNo
restoredNoKnown files missing locally, re-downloaded
course_idYes
unchangedNo
course_nameYes
download_directoryYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits: it never deletes files locally, it reports changes, and it can perform a dry run. This goes beyond the annotations, which only state readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds context about what the tool does and doesn't do, which is valuable. However, it doesn't mention potential side effects like network usage or disk space, but the core behavior is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It starts with a clear one-sentence summary, then elaborates on behavior, and finally lists parameter explanations. The parameter descriptions are formatted as a list, making them easy to scan. It could be slightly more concise by removing the Args section since the schema already lists parameters, but the added semantics justify the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, behavior, and parameter semantics. It also has an output schema, so return values are likely documented there. The description doesn't mention prerequisites like being logged in, but that's likely handled by other tools (moodle_login) and the annotations. Overall, it's complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the meaning of all three parameters: course_id (from moodle_list_courses), dry_run (only report, download nothing), and update_changed (re-download changed files). This adds value beyond the schema, which only provides types and defaults. The description clarifies the semantics of each parameter, especially dry_run and update_changed, which are not self-explanatory from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: synchronise all course files into a local download directory. It specifies the action (synchronise), the resource (course files), and the target (local download directory). It also distinguishes itself from siblings by mentioning it reports changes and never deletes locally, which differentiates it from moodle_download_resource and moodle_sync_all.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the tool's behavior in detail: downloads new files, re-downloads changed ones, reports changes, and never deletes locally. It also explains the dry_run parameter's effect. However, it doesn't explicitly state when to use this tool versus alternatives like moodle_sync_all or moodle_download_resource, though the behavior description implies its use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.