Skip to main content
Glama

canvas_file_original

Read-onlyIdempotent

Retrieve the original, unmodified Canvas file by file ID with exact bytes and SHA-256 to view scanned PDFs/images or preserve ZIPs and code archives.

Instructions

Retrieve the ORIGINAL, unmodified file for a Canvas file_id (from canvas_files, canvas_file, or a /files/ link inside a page or assignment), as an MCP resource with its exact bytes and SHA-256. Use it (1) for scanned or handwritten PDFs and images with no text layer: read the resource and view the pages as images; (2) when the user wants the original ZIP or other file itself, e.g. to unpack it, run or compile the code in a sandbox, or keep the archive. To just read what is inside a ZIP, canvas_file_content is simpler: it unpacks on the server. Only accepts a Canvas file ID, never a URL. Maximum 15 MiB.

Input Schema

NameRequiredDescriptionDefault
file_idYesCanvas file id, from canvas_files, canvas_find_files or a module item.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: the result is an MCP resource carrying exact bytes plus a SHA-256, and the hard 15 MiB cap. The one gap is that it does not say what happens when a file exceeds 15 MiB (error vs. truncation), which an agent needs before calling.

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?

Front-loaded with the action and its defining qualifier, then the use cases, then the alternative, then the input constraint and size limit. The numbered cases make a dense paragraph scannable, and no sentence is filler.

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?

With no output schema, the description takes responsibility for explaining the return (MCP resource, exact bytes, SHA-256) and the size ceiling. For a one-parameter read tool, everything needed to call it correctly and interpret the result is present.

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% and the single file_id param is already documented, so the baseline is 3. The description still adds meaning by enumerating acceptable sources (canvas_files, canvas_file, or a '/files/<id>' link inside a page or assignment) and by explicitly ruling out URLs — clarifying that an id must be extracted, not a link passed through.

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 with a sharp qualifier: 'Retrieve the ORIGINAL, unmodified file for a Canvas file_id'. Capitalized ORIGINAL and the explicit contrast with canvas_file_content make it unmistakable against the many sibling file tools (canvas_files, canvas_file, canvas_file_download_link, canvas_file_content).

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 two numbered when-to-use conditions (scanned/handwritten PDFs with no text layer; user wants the actual ZIP/archive to unpack, run or keep) and names the alternative canvas_file_content with the condition that selects it ('to just read what is inside a ZIP'). It also states a hard exclusion: 'Only accepts a Canvas file ID, never a URL.'

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