BackUsing canvas-cli

Asking questions

How the assistant finds answers in your course material, cites the exact page, and tells you when it could not confirm something.

How It Works

You can ask questions in any scope, and the assistant answers by reading your course material rather than from memory. What it can reach depends on where you are:

ScopeAnswers from
GlobalYour course list, recent workspaces, upcoming work across courses, announcements, and a search of any one course's cached material and assignments
CourseThat course's cached files, pages, modules, assignments, lectures, and announcements
WorkspaceEverything in the course, plus the assignment's workup and every document the investigation read, with the checks described below

A workspace question goes through the most careful path. First canvas-cli checks whether a follow-up can be answered from something already read in this conversation, or whether one document clearly holds the answer, in which case it reads that document directly. Otherwise, including when the workup already covers the question, the assistant works in a loop of up to 30 tool calls so the answer is confirmed against the documents themselves. It plans which source is likely to hold the answer, calls a tool, looks at what came back, and decides what to read next. It is told to read documents rather than answer from search snippets, and to check a second source when a question compares two things.

A workspace answer about Lab 3 deliverables: the assistant read the handout, then answered with page citations and source lines.
One read of the handout, then an answer that cites the page for each claim.

Tools

In a workspace, the assistant can call these. Each call appears in the conversation as it happens:

ToolWhat it does
search_workspaceSearch the workspace and the course's documents; returns matching passages
search_courseSearch the whole course cache: modules, pages, assignments, quizzes, grading scheme, tools, announcements, lectures, and files
read_fileRead a document, up to about 120,000 characters, or one page or heading of it
list_filesList every document and file available
download_course_fileFetch a course file that ingestion skipped, and read it
list_assignmentsThe course's assignments and due dates
list_announcementsAnnouncement and discussion titles, optionally filtered
read_threadAn announcement or discussion with all its replies
open_lectureOpen a lecture's slides or recording
open_resourceOpen a workspace or course file, page, or link in your default app

Every read starts with the document’s outline, so the assistant can go straight to Page 57 or a heading instead of reading everything. Tool output is collapsed to a few lines; Ctrl O expands it.

Searches match the way people phrase course questions. Common words are dropped, words are reduced to their stems so “deadlines” finds “deadline”, and course vocabulary is treated as related: due and deadline, rubric and grading, late and penalty, lecture and slides, lab and practical, homework and pset, starter and template, among others. When two announcements match equally, the newer one ranks first.

Within a conversation the assistant remembers what it has already read, including which parts of a long document it has not seen yet, so a follow-up question does not start from zero.

Citations

Answers name the section each claim came from, down to the page of a PDF or the heading of a page: Lab3_Fourier_Series.pdf — Page 4, Syllabus — Grading. Under the answer, a line for each source shows its kind and the section that supports the answer. Slides are cited by slide, spreadsheets by sheet.

Checks

Before a workspace answer is shown, canvas-cli compares it with everything the assistant actually read. It checks:

  • Dates, in any format, and whether a weekday written next to a date is really that day
  • Figures: times, percentages, marks and points, counts, room numbers, sizes, and numbers written as words (“ten percent”)
  • Mismatched pairs, such as a date that the schedule lists next to a different lab
  • “Must” in an answer when the source only says “may” or “recommended”

Anything it cannot find in the evidence is named in a Grounding note under the answer:

An answer stating the midterm is on October 21, worth 25%, and 90 minutes long, followed by a Grounding note: this answer includes details I could not confirm in the sources I read (90 minutes).
The date and weight are in the course outline. The length is not, so it is flagged.

The same note appears, worded differently, when an answer rests on search snippets instead of a full read, or on the workup summary instead of a fresh look at the document. Numbers you used in your own question are not flagged.

When something isn’t there

If the answer is that the course does not say, the note lists exactly where the assistant looked, so you can judge how thorough it was:

An answer saying an illness extension is not specified, with a Grounding note listing a course search, the course outline read in full, the announcements, and a workspace search.
Not found after checking: every search and read, with what each returned.

Recovery Pass

Models sometimes stop early. After the assistant answers, canvas-cli looks for signs of that and, if it finds one, makes a few more tool calls, including at most two document reads, outside the 30-step budget:

  • An answer that says something was not found triggers the tools it never tried: the assignment list, announcements, and course and workspace search.
  • An answer that quotes a date or figure from a search snippet gets that document read in full.
  • An announcement that was listed but never opened gets opened.
  • A comparison grounded in only one source gets the other side found and read.

You will see Checking the source before I commit to that… while it happens. If the extra calls turn up new evidence, the answer is rewritten from it; otherwise you see (Nothing new turned up, so the answer above stands as written.)

Tips

  • Ask in a workspace when the details matter. That is where answers are fully checked and cited, and the assistant already knows which documents belong to the assignment.
  • Name the part you mean. “What does Part 3 ask for?” sends it straight to the right section.
  • Pin a file with @ to put it in front of the assistant directly. See @ Pins.
  • Start over with /clear if an earlier answer keeps steering the conversation wrong.
  • Refresh the course with /refresh after your instructor posts something new; answers only see what has been downloaded.
what exactly do I submit, and in what format?
how is part 2 marked?
did the prof change the due date?
is lab 3 worth more than lab 2?
open the lab handout

Questions that work well in a workspace.