Skip to main content
Glama

List Topics

list_topics
Read-onlyIdempotent

Retrieve Canvas course discussion topics with unread counts and posting requirements, optionally filtering by search term or announcements. Scan discussions before opening a thread.

Instructions

List discussion topics in a course with unread counts and whether you must post before seeing replies. Read-only. Set only_announcements for announcements; read a thread with get_full_topic_view.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of items to return. Smaller is faster.
course_idYesCanvas course ID, a numeric string such as "12345". Get it from list_courses.
search_termNoOptional text filter on names or titles (at least 2 characters, case-insensitive).
only_announcementsNoIf true, return announcements instead of discussion topics.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.0.2
    • changedInput schema / properties / course_id / description
      Previous value: -"Canvas course ID"New value: +"Canvas course ID, a numeric string such as \"12345\". Get it from list_courses."
    • changedInput schema / properties / limit / description
      Previous value: -"Max items to return"New value: +"Maximum number of items to return. Smaller is faster."
    • addedInput schema / properties / only_announcements / description
      Added value: +"If true, return announcements instead of discussion topics."
    • addedInput schema / properties / search_term / description
      Added value: +"Optional text filter on names or titles (at least 2 characters, case-insensitive)."
  2. First observedv1.0.1

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and the sentence 'Read-only' merely restates them. The genuinely additive content is the disclosure of return fields — unread counts and the must-post-before-seeing-replies flag — which tells the agent something the annotations cannot.

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?

Three compact sentences with the core purpose front-loaded and both routing hints trailing, which is the right ordering. The 'Read-only' clause is redundant against the annotations and slightly dilutes an otherwise waste-free description.

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?

No output schema exists, so the description carries the burden of describing return values, and it does so by calling out unread counts and the post-before-viewing flag. For a four-parameter read tool with full annotation coverage that is largely sufficient, with only pagination/filtering behavior left unstated.

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 coverage is 100%, so course_id, limit, search_term and only_announcements are all fully documented in the schema already. The description's note about only_announcements duplicates the schema text and adds no syntax or edge-case detail beyond it; baseline 3 applies.

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?

Names a specific verb and resource ('List discussion topics in a course') and adds scope details that identify what the listing returns. It distinguishes itself from get_full_topic_view as the per-thread reader, though it never contrasts itself with the nearby list_announcements or get_topic siblings a caller might confuse it with.

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?

Gives two concrete routing signals: use only_announcements to get announcements, and use get_full_topic_view to read a thread. That covers the main branch points, but there is no guidance on when a search_term filter is preferable to paging, or when to reach for this versus list_announcements.

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