Skip to main content
Glama

List Discussion Topics

list_discussion_topics
Read-only

Retrieve course discussion topics from Canvas, optionally including announcements or group-space discussions by ID. Use it to browse and review discussion threads tied to a specific course.

Instructions

List discussion topics for a specific course.

Returns discussion topics only. Announcements are a separate Canvas collection and are NOT included unless include_announcements=True. To list announcements on their own, use list_announcements instead.

Without group_id this lists course-level topics only. Topics that students start inside a group space are missing from that list; use list_group_discussion_topics to find them across all groups.

Input Schema

NameRequiredDescriptionDefault
group_idNoCanvas group ID, to read a discussion inside a group space instead of the course (default: None). Discussions that students start in a group exist only there. The group must belong to the course.
course_identifierYesCourse code or Canvas ID
include_announcementsNoAlso list the course's announcements alongside its discussion topics (default: False). Each entry is labelled "Type: Announcement" or "Type: Discussion".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.15.0
    • addedInput schema / properties / group_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Canvas group ID, to read a discussion inside a group\nspace instead of the course (default: None). Discussions that\nstudents start in a group exist only there. The group must\nbelong to the course."
      +}
  2. 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
  3. Changed9 schema fields changedv1.8.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / course_identifier / description
      Added value: +"Course code or Canvas ID"
    • removedInput schema / properties / course_identifier / title
      Removed value: -"Course Identifier"
    • addedInput schema / properties / include_announcements / description
      Added value: +"Also list the course's announcements\nalongside its discussion topics (default: False). Each entry is\nlabelled \"Type: Announcement\" or \"Type: Discussion\"."
    • removedInput schema / properties / include_announcements / title
      Removed value: -"Include Announcements"
    • removedInput schema / title
      Removed value: -"list_discussion_topicsArguments"
    • removedOutput schema / properties / result / title
      Removed value: -"Result"
    • removedOutput schema / title
      Removed value: -"list_discussion_topicsOutput"
    • addedOutput schema / x-fastmcp-wrap-result
      Added value: +true
  4. Changed1 schema field changedv1.0.0
    • addedInput schema / title
      Added value: +"list_discussion_topicsArguments"
  5. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered; the description adds real behavioral context beyond that — the default result set silently omits group-space topics, and include_announcements mixes two entry types into one list. It does not mention pagination or result limits, which keeps it from a 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 paragraphs, each doing distinct work: what it returns, what it excludes plus the alternative, and the group-space caveat plus its alternative. Front-loaded with the core purpose; nothing 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?

For a read-only, three-parameter list tool with no output schema, the description covers selection, scoping caveats, and sibling routing well. Remaining gaps are minor: no note on pagination, result caps, or permission requirements for private course content.

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 the schema already documents group_id, course_identifier, and include_announcements. The description reinforces the group_id scoping effect and the announcement-exclusion default, but adds no format or syntax detail beyond what the schema provides — the baseline 3 applies.

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?

States a specific verb and resource ('List discussion topics for a specific course') and immediately bounds the scope: discussions only, announcements excluded by default. It uses the description to actively differentiate itself from three siblings (list_announcements, list_group_discussion_topics, and the course-level default), so an agent can select it without opening a 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?

Explicit routing rules: use list_announcements to list announcements on their own, and use list_group_discussion_topics to find student-started group topics across all groups. The condition selecting each alternative is named, including the default case (no group_id = course-level only).

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