Skip to main content
Glama

canvas_module_sequence

Read-only

Retrieves the actual previous, current, and next module-item relationships for a Canvas asset so you can navigate course content in true sequence instead of assuming ID order.

Instructions

Get Canvas's real previous/current/next module-item relationships.

Asset types: ModuleItem, File, Page, Discussion, Assignment, Quiz, ExternalTool. Use the returned sequence instead of assuming ID order. This is read-only and does not mark viewed/completed requirements.

Input Schema

NameRequiredDescriptionDefault
refreshNo
asset_idYes
course_idYes
asset_typeYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.12.0

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the "this is read-only" sentence is largely redundant. The added value is the explicit note that it does not mark viewed/completed requirements — a real side-effect guarantee an agent would otherwise worry about, since some Canvas reads do advance progress. No disclosure of caching or the effect of the refresh flag.

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 core capability is front-loaded in the first sentence and the remaining lines are short and functional. The enumerated asset types duplicate the schema enum, which is the only clearly non-earning content, but overall the text is tight.

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

Completeness3/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-shape explanation is not required, and the read-only behavior is covered. Still missing for a tool of this specificity: the semantics of asset_id per asset type, refresh behavior, and the failure mode when an asset is not in any module — gaps the schema cannot fill at 0% coverage.

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

Parameters2/5

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

Schema description coverage is 0% for four parameters, so the description must compensate and it largely does not. It restates the asset_type enum (already in the schema) but says nothing about course_id, asset_id, or refresh — notably whether refresh forces a re-fetch past a cache, which is the only non-obvious parameter.

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 opening sentence names a specific verb (get) and a specific resource (Canvas module-item relationships) and scopes the result to previous/current/next, which is meaningfully different from a flat list tool like list_modules. The asset-type list further bounds what inputs are acceptable. It stops short of explicitly naming a sibling it replaces, but an agent can still distinguish it from list_modules.

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

Usage Guidelines3/5

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

"Use the returned sequence instead of assuming ID order" is a genuine usage cue about when this tool beats manual ordering inference. However, there is no when-not guidance, no mention of prerequisites (e.g., the asset must belong to a module), and no statement of what happens for un-moduled items, leaving the agent to infer the boundaries.

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