Skip To Main Content
All modules

Academics

Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.

Assignment or Examcoursework

A graded assignment or exam in a course. The same operations reach courses (type 'course'), semesters (type 'term'), study sessions (type 'session') and degree plans (type 'plan'); find with view 'grades' reads engine-computed grades and GPA.

academics_findFindthrough vritto_find

Read Academics: one record by id, records of a type filtered by dates, course, term, status or text, view 'grades' for engine-computed grades and GPA, or with no filter a compact summary (counts, current courses, upcoming coursework). ALWAYS pass from/to when the question concerns a period. The ONLY correct source for grade and GPA answers.

Note: view 'grades' reads computed grades and GPA (courseId for one course); with no filter, counts, current courses and upcoming coursework.

FieldTypeDescription
typeone of coursework, course, term, session, planWhich records to list: 'coursework' (default when filtering), 'course', 'term', 'session' or 'plan'.
idstringReturn just this record, every field.
viewone of grades, upcoming'grades' engine-computed grades and GPA (with courseId one course's grade and breakdown, termId one term); 'upcoming' open coursework due from now on, soonest first.
fromstringEarliest date, inclusive: coursework due, session started, term running on or after it.
tostringLatest date, inclusive. ALWAYS pass from/to when the question concerns a period.
courseIdstringWith a type, only this course's records; alone or with view 'grades', this course's grade and breakdown.
termIdstringWith a type, only this term's records; alone or with view 'grades', this term's GPA.
statusstringOnly records in this status (coursework todo/submitted/graded/missing; course enrolled/completed).
querystringText to match: a title, course name or code, topic.
subjectPersonIdstringGrades: whose. Omit (or 'me') for the account owner's own; a People person id ONLY when the user asks about that family member's school work. A GPA is never blended across people.
limitintegerRows to return, default 25.
detailone of summary, full"summary" (default) compact rows or GPA totals; "full" every field (grading schemes, meeting times, raw grades, notes, the whole transcript).
Example input
{
  "view": "grades"
}
academics_addCreate or Updatethrough vritto_create or vritto_update

Add one record (set type): coursework (default; courseId + title + dueAt), a course (name + termId), a term (name + startDate + endDate), a study session (startAt + durationMinutes) or a degree plan (name). Due dates schedule reminders; grading categories and requirement lists replace whole when sent.

Note: Set type for a course, term, session or plan. gradingScheme categories and plan requirements replace whole when sent.

FieldTypeDescription
typeone of coursework, course, term, session, planRecord type: 'coursework' (default) an assignment or exam with its grade; 'course' a class in a term; 'term' a semester or quarter; 'session' a study session; 'plan' a degree plan.
record*objectThe record's fields. Required when creating: coursework courseId + title + dueAt; course name + termId; term name + startDate + endDate; session startAt + durationMinutes; plan name.
record.idstringLeave out when adding; to change a record use academics_change.
record.namestringTerm, course or plan name ('Fall 2026', 'Organic Chemistry II', 'BS Computer Science'). Required when creating one.
record.statusone of todo, in_progress, submitted, graded, missing, excused, planned, enrolled, completed, dropped, withdrawn, waitlisted, activeCoursework: todo, in_progress, submitted, graded, missing, excused (a grade implies graded). Course: planned, enrolled, in_progress, completed, dropped, withdrawn, waitlisted. Term: planned, active, completed.
record.courseIdstringCoursework: its course (required). Session: the course studied.
record.termIdstringCourse: its term (required when creating).
record.institutionstringTerm or plan.
record.gradeScaleIdstringTerm or course: grade-scale ID from academics_find, never invented.
record.endAtstringCoursework: when a timed item ends. Session: when it ended.
record.durationMinutesnumberCoursework: length of a timed item. Session: minutes studied, required unless endAt is sent.
record.notesstringThe person's own notes. For coursework this is the box every client shows: anything the user says about the item belongs here.
record.kindone of assignment, examCoursework: defaults to 'assignment'.
record.titlestringCoursework title. Required when creating.
record.typeone of homework, essay, lab_report, project, reading, paper, presentation, discussion, problem_set, quiz, midterm, final, test, practical, oral, otherCoursework: what sort of work.
record.categoryIdstringCoursework: grade-category ID from the course's gradingScheme (weighted mode).
record.dueAtstringCoursework: required when creating.
record.availableAtstringCoursework: when it opens.
record.pointsPossiblenumber
record.pointsEarnednumberCoursework: entering this records the grade.
record.gradePercentnumberCoursework: grade as a percent.
record.letterGradestringCoursework: grade as a letter.
record.countsTowardGradebooleanCoursework: defaults true. false for extra credit or ungraded practice so grade math stays correct.
record.priorityone of low, normal, high
record.estimatedHoursnumber
record.submittedAtstringCoursework: when it was turned in.
record.reminderLeadMinutesintegerCoursework: minutes before dueAt to remind. Default 1440 (1 day).
record.roomstringExam room.
record.seatstringExam seat.
record.formatstringExam format, e.g. 'closed book, multiple choice'.
record.topicslist of stringExam topics.
record.studyChecklistlist of objectCoursework prep checklist. Sending this REPLACES the whole list.
record.linkedNoteIdstringCoursework: Notes-module note ID, never invented.
record.linkedBookIdstringCoursework: Books-module book ID (e.g. the textbook), never invented.
record.descriptionstringCoursework: the assignment's OWN text as set by the course. Canvas overwrites it on every sync; never the student's words.
record.codestringCourse code, e.g. 'CHEM 201'.
record.sectionstring
record.creditHoursnumberCourse credit hours; default 3.
record.instructorNamestring
record.instructorPersonIdslist of stringCourse: People person IDs for the instructor(s), never invented.
record.locationstring
record.meetingTimeslist of objectCourse: weekly class meetings. Sending this REPLACES the whole list.
record.gradingSchemeobjectCourse grading scheme. Fields you omit keep their current value.
record.includeInGpaboolean
record.passFailboolean
record.honorsBumpnumberCourse: extra grade points for honors/AP in weighted GPA.
record.finalGradeobjectCourse: official final grade ('my final grade in chem was an A-'); null clears it. It overrides the computed grade for GPA.
record.targetPercentnumberCourse: grade the student is aiming for.
record.colorstring
record.textbookCostnumber
record.courseFeenumber
record.levelone of high_school, undergrad, grad, otherTerm level.
record.startDatestringTerm start; required when creating a term.
record.endDatestringTerm end; required when creating a term.
record.scheduleConfigobjectTerm: rotating class-schedule config. Fields you omit keep their value; dayLabels [] clears them.
record.sortOrderintegerTerm: manual ordering.
record.subjectPersonIdstringTerm: whose studies, a People person id for a family member's term (a child's school term). Omit for the account owner's own; courses and coursework inherit it.
record.startAtstringSession: when it started. Required for a session.
record.courseworkIdstringSession: the coursework item it prepared for, never invented.
record.techniqueone of freeform, pomodoroSession: defaults to 'freeform'.
record.topicstringSession topic.
record.focusRatingintegerSession focus, 1 to 5.
record.degreeTypestringPlan: e.g. 'BS', 'BA', 'MS'.
record.catalogYearstringPlan: e.g. '2024-2025'.
record.totalCreditsRequirednumberPlan: credits to graduate; default 120.
record.minGpanumberPlan: minimum GPA requirement.
record.expectedGraduationstringPlan: expected graduation month, YYYY-MM.
record.requirementslist of objectPlan: requirement buckets. Sending this REPLACES the whole list.
record.linkedGoalIdstringPlan: Goals-module goal ID to roll degree progress into, never invented.
Example input
{
  "type": "coursework",
  "record": {
    "courseId": "course_math221",
    "kind": "exam",
    "title": "Midterm 1",
    "type": "midterm",
    "dueAt": "2026-10-14T10:00:00-05:00",
    "pointsPossible": 100
  }
}
academics_changeUpdatethrough vritto_update

Change one record by record.id (set type for anything but coursework); sent fields merge. Record a grade (pointsEarned/pointsPossible, gradePercent or letterGrade marks it graded), a course's final grade, a new due date or status. Resolve the id with academics_find first.

Note: Entering a grade marks the item graded. Set type for a course, term, session or plan.

FieldTypeDescription
typeone of coursework, course, term, session, planRecord type: 'coursework' (default) an assignment or exam with its grade; 'course' a class in a term; 'term' a semester or quarter; 'session' a study session; 'plan' a degree plan.
record*objectThe record's id plus the fields to change.
record.id*stringThe record to change.
record.namestringTerm, course or plan name ('Fall 2026', 'Organic Chemistry II', 'BS Computer Science'). Required when creating one.
record.statusone of todo, in_progress, submitted, graded, missing, excused, planned, enrolled, completed, dropped, withdrawn, waitlisted, activeCoursework: todo, in_progress, submitted, graded, missing, excused (a grade implies graded). Course: planned, enrolled, in_progress, completed, dropped, withdrawn, waitlisted. Term: planned, active, completed.
record.courseIdstringCoursework: its course (required). Session: the course studied.
record.termIdstringCourse: its term (required when creating).
record.institutionstringTerm or plan.
record.gradeScaleIdstringTerm or course: grade-scale ID from academics_find, never invented.
record.endAtstringCoursework: when a timed item ends. Session: when it ended.
record.durationMinutesnumberCoursework: length of a timed item. Session: minutes studied, required unless endAt is sent.
record.notesstringThe person's own notes. For coursework this is the box every client shows: anything the user says about the item belongs here.
record.kindone of assignment, examCoursework: defaults to 'assignment'.
record.titlestringCoursework title. Required when creating.
record.typeone of homework, essay, lab_report, project, reading, paper, presentation, discussion, problem_set, quiz, midterm, final, test, practical, oral, otherCoursework: what sort of work.
record.categoryIdstringCoursework: grade-category ID from the course's gradingScheme (weighted mode).
record.dueAtstringCoursework: required when creating.
record.availableAtstringCoursework: when it opens.
record.pointsPossiblenumber
record.pointsEarnednumberCoursework: entering this records the grade.
record.gradePercentnumberCoursework: grade as a percent.
record.letterGradestringCoursework: grade as a letter.
record.countsTowardGradebooleanCoursework: defaults true. false for extra credit or ungraded practice so grade math stays correct.
record.priorityone of low, normal, high
record.estimatedHoursnumber
record.submittedAtstringCoursework: when it was turned in.
record.reminderLeadMinutesintegerCoursework: minutes before dueAt to remind. Default 1440 (1 day).
record.roomstringExam room.
record.seatstringExam seat.
record.formatstringExam format, e.g. 'closed book, multiple choice'.
record.topicslist of stringExam topics.
record.studyChecklistlist of objectCoursework prep checklist. Sending this REPLACES the whole list.
record.linkedNoteIdstringCoursework: Notes-module note ID, never invented.
record.linkedBookIdstringCoursework: Books-module book ID (e.g. the textbook), never invented.
record.descriptionstringCoursework: the assignment's OWN text as set by the course. Canvas overwrites it on every sync; never the student's words.
record.codestringCourse code, e.g. 'CHEM 201'.
record.sectionstring
record.creditHoursnumberCourse credit hours; default 3.
record.instructorNamestring
record.instructorPersonIdslist of stringCourse: People person IDs for the instructor(s), never invented.
record.locationstring
record.meetingTimeslist of objectCourse: weekly class meetings. Sending this REPLACES the whole list.
record.gradingSchemeobjectCourse grading scheme. Fields you omit keep their current value.
record.includeInGpaboolean
record.passFailboolean
record.honorsBumpnumberCourse: extra grade points for honors/AP in weighted GPA.
record.finalGradeobjectCourse: official final grade ('my final grade in chem was an A-'); null clears it. It overrides the computed grade for GPA.
record.targetPercentnumberCourse: grade the student is aiming for.
record.colorstring
record.textbookCostnumber
record.courseFeenumber
record.levelone of high_school, undergrad, grad, otherTerm level.
record.startDatestringTerm start; required when creating a term.
record.endDatestringTerm end; required when creating a term.
record.scheduleConfigobjectTerm: rotating class-schedule config. Fields you omit keep their value; dayLabels [] clears them.
record.sortOrderintegerTerm: manual ordering.
record.subjectPersonIdstringTerm: whose studies, a People person id for a family member's term (a child's school term). Omit for the account owner's own; courses and coursework inherit it.
record.startAtstringSession: when it started. Required for a session.
record.courseworkIdstringSession: the coursework item it prepared for, never invented.
record.techniqueone of freeform, pomodoroSession: defaults to 'freeform'.
record.topicstringSession topic.
record.focusRatingintegerSession focus, 1 to 5.
record.degreeTypestringPlan: e.g. 'BS', 'BA', 'MS'.
record.catalogYearstringPlan: e.g. '2024-2025'.
record.totalCreditsRequirednumberPlan: credits to graduate; default 120.
record.minGpanumberPlan: minimum GPA requirement.
record.expectedGraduationstringPlan: expected graduation month, YYYY-MM.
record.requirementslist of objectPlan: requirement buckets. Sending this REPLACES the whole list.
record.linkedGoalIdstringPlan: Goals-module goal ID to roll degree progress into, never invented.
Example input
{
  "type": "coursework",
  "record": {
    "id": "cw_midterm1",
    "pointsEarned": 88,
    "pointsPossible": 100
  }
}
academics_removeDeletethrough vritto_delete

Delete (archive) one record (set type). A course takes its coursework (and grades) with it; a term keeps its courses, which still count toward the GPA as 'unassigned'. Only for explicit removals; resolve the id first and confirm intent.

Note: Set type for a course (its coursework goes too), a term (its courses stay), a session or a plan.

FieldTypeDescription
typeone of coursework, course, term, session, planRecord type: 'coursework' (default) an assignment or exam with its grade; 'course' a class in a term; 'term' a semester or quarter; 'session' a study session; 'plan' a degree plan.
idstringThe record to remove.
courseworkIdstringOlder name for a coursework item's id.
courseIdstringOlder name for a course's id.
termIdstringOlder name for a term's id.
planIdstringOlder name for a degree plan's id.