Skip to main content
Glama

list_modules

Read-only

Lists course modules with inlined items, due dates, and lock status to show what is in a course and help discover files students can access.

Instructions

List modules in a course with items and content details inlined.

This is the most reliable "what is in this course" query. Each module includes its items (assignments, pages, files, quizzes, external URLs) with due dates and lock status. Prefer this over list_course_files for file discovery — files often 403 for students at the enumeration level but are reachable as module items.

Input Schema

NameRequiredDescriptionDefault
course_idYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.12.0

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already cover safety (readOnlyHint true, destructiveHint false) and open-world access, so the description's real contribution is the payload shape — items with due dates and lock status — plus the non-obvious failure mode where file enumeration 403s for students but module items remain reachable. That second point is exactly the kind of hidden behavior an agent could not infer from annotations. It stops short of pagination or size expectations, keeping it at 4 rather than 5.

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

Conciseness5/5

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

Three short sentences in a deliberate order: what it returns, why to trust it, then what to use instead and why. The opening sentence carries the core purpose and the qualification follows, so nothing important is buried, and no wording is redundant.

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?

An output schema exists, so return values need no prose, and the description fills the remaining gaps that matter for a single-parameter read-only listing tool: payload contents, ranking among siblings, and a known authorization quirk. The only omission is any hint about how to obtain the course_id, a minor gap given the surrounding course-scoped siblings.

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

Parameters3/5

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

There is a single required parameter, course_id, and schema description coverage is 0%, so the schema itself says nothing about its meaning or accepted values. The description only implies it via "in a course," adding no format, range, or source guidance (e.g., where to obtain a course id). Baseline 3 is appropriate for one obvious identifier with no compensating detail.

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 first sentence gives a specific verb and resource ("List modules in a course") and immediately states the scope twist that items and content details are inlined. That phrasing separates it from list_course_files and canvas_module_sequence without the agent needing to open any schema.

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

Usage Guidelines5/5

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

It explicitly ranks itself ("the most reliable 'what is in this course' query") and names a concrete alternative to avoid ("Prefer this over list_course_files for file discovery") with the reason why. Both the when-to-use and the when-to-use-something-else conditions are stated outright.

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