Skip to main content
Glama

List Courses

list_courses
Read-only

Retrieve all Canvas courses for the authenticated user, including active, concluded, or all enrollments by setting flags.

Instructions

List courses for the authenticated user.

Input Schema

NameRequiredDescriptionDefault
include_allNoInclude all enrollments instead of only current active ones.
include_concludedNoInclude concluded/past enrollments in the results.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.10.0
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "type": "object",
      -  "x-fastmcp-wrap-result": true
      -}New value: +null
  2. Changed9 schema fields changedv1.8.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / include_all / description
      Added value: +"Include all enrollments instead of only current active ones."
    • removedInput schema / properties / include_all / title
      Removed value: -"Include All"
    • addedInput schema / properties / include_concluded / description
      Added value: +"Include concluded/past enrollments in the results."
    • removedInput schema / properties / include_concluded / title
      Removed value: -"Include Concluded"
    • removedInput schema / title
      Removed value: -"list_coursesArguments"
    • removedOutput schema / properties / result / title
      Removed value: -"Result"
    • removedOutput schema / title
      Removed value: -"list_coursesOutput"
    • addedOutput schema / x-fastmcp-wrap-result
      Added value: +true
  3. Changed1 schema field changedv1.0.0
    • addedInput schema / title
      Added value: +"list_coursesArguments"
  4. First observed

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful scope context ('for the authenticated user') but does not disclose return behavior, pagination, or the effect of the include_all/include_concluded flags beyond what the schema states.

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 a single, front-loaded sentence with no wasted text. It is perhaps overly terse, but it is not bloated or poorly structured.

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?

For a low-complexity read tool with 100% schema coverage, a readOnly annotation, and no output schema, the definition provides enough to know the tool's core purpose and scope. Sibling disambiguation is missing, but the tool-level information is otherwise complete.

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?

Schema description coverage is 100%, so both optional boolean parameters are fully documented in the schema. The description does not add meaning beyond the schema, but a baseline of 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb and resource ('List courses') and gives the scope ('for the authenticated user'). It is clear what the tool does, but it does not differentiate itself from similar siblings such as get_my_enrollments or get_course_details.

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

Usage Guidelines2/5

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. Siblings like get_my_enrollments, get_course_details, and list_assignments are not referenced, leaving the agent to infer the distinction.

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

Deploy Server

Other Tools