Skip to main content
Glama

canvas_find_files

Read-onlyIdempotent

Find Canvas course files by name or topic when Files or Pages lists are hidden; searches pages, modules, assignments, announcements, and visible files, returning file IDs, names, and link locations.

Instructions

Find files in a course by name or topic, including courses that hide their Files or Pages list from students (canvas_files / canvas_pages return 403 or 404). Searches the course's front page, syllabus, modules, assignments, announcements, page list and the course pages they link to, plus the Files list when visible, and returns each Canvas file_id with its name and where it is linked. Then read a file with canvas_file_content (text, PDF/Office, ZIP) or canvas_file_original (original bytes). Omit query to list every linked file. Links to other sites (e.g. Dropbox) are listed separately.

Input Schema

NameRequiredDescriptionDefault
queryNoWords from the file name or topic, e.g. "lecture 5", "hw3.zip", "midterm review". All words must match.
course_idYesCanvas course id, from canvas_courses.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond that: the exact set of surfaces searched (front page, syllabus, modules, assignments, announcements, page list, linked pages, Files list) and the fact that external links like Dropbox are reported separately. It stops short of noting cost/latency of crawling many pages or result limits, which would matter for a broad crawl.

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?

Front-loads the purpose and the 403/404 trigger, then the search surface, then the read handoff. It is dense but every clause carries information; the enumeration of searched surfaces is long but justifies itself for a crawling tool. Minor length cost only.

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

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by explaining exactly what is returned: each Canvas file_id with its name and where it is linked, plus separate listing of off-site links. Combined with the two follow-up read tools being named, an agent has everything needed to call it and act on results.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description earns an extra point by documenting the omission semantics of query ("omit query to list every linked file") and noting that all words must match implicitly via the topic framing. It adds real meaning beyond the schema text rather than restating it.

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?

Opens with a specific verb+resource ("Find files in a course by name or topic") and immediately scopes it to courses that hide Files/Pages from students, which cleanly separates it from siblings canvas_files and canvas_pages. An agent can pick this tool without inspecting either 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?

Gives an explicit trigger (canvas_files / canvas_pages return 403 or 404), names the fallback behavior, and routes onward to canvas_file_content or canvas_file_original for reading. It also states the degenerate case: omit query to list every linked file.

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