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_findRead 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.
| Field | Type | Description |
|---|---|---|
| type | one of coursework, course, term, session, plan | Which records to list: 'coursework' (default when filtering), 'course', 'term', 'session' or 'plan'. |
| id | string | Return just this record, every field. |
| view | one 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. |
| from | string | Earliest date, inclusive: coursework due, session started, term running on or after it. |
| to | string | Latest date, inclusive. ALWAYS pass from/to when the question concerns a period. |
| courseId | string | With a type, only this course's records; alone or with view 'grades', this course's grade and breakdown. |
| termId | string | With a type, only this term's records; alone or with view 'grades', this term's GPA. |
| status | string | Only records in this status (coursework todo/submitted/graded/missing; course enrolled/completed). |
| query | string | Text to match: a title, course name or code, topic. |
| subjectPersonId | string | Grades: 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. |
| limit | integer | Rows to return, default 25. |
| detail | one 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_updateAdd 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.
| Field | Type | Description |
|---|---|---|
| type | one of coursework, course, term, session, plan | Record 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* | object | The record's fields. Required when creating: coursework courseId + title + dueAt; course name + termId; term name + startDate + endDate; session startAt + durationMinutes; plan name. |
| record.id | string | Leave out when adding; to change a record use academics_change. |
| record.name | string | Term, course or plan name ('Fall 2026', 'Organic Chemistry II', 'BS Computer Science'). Required when creating one. |
| record.status | one of todo, in_progress, submitted, graded, missing, excused, planned, enrolled, completed, dropped, withdrawn, waitlisted, active | Coursework: 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.courseId | string | Coursework: its course (required). Session: the course studied. |
| record.termId | string | Course: its term (required when creating). |
| record.institution | string | Term or plan. |
| record.gradeScaleId | string | Term or course: grade-scale ID from academics_find, never invented. |
| record.endAt | string | Coursework: when a timed item ends. Session: when it ended. |
| record.durationMinutes | number | Coursework: length of a timed item. Session: minutes studied, required unless endAt is sent. |
| record.notes | string | The person's own notes. For coursework this is the box every client shows: anything the user says about the item belongs here. |
| record.kind | one of assignment, exam | Coursework: defaults to 'assignment'. |
| record.title | string | Coursework title. Required when creating. |
| record.type | one of homework, essay, lab_report, project, reading, paper, presentation, discussion, problem_set, quiz, midterm, final, test, practical, oral, other | Coursework: what sort of work. |
| record.categoryId | string | Coursework: grade-category ID from the course's gradingScheme (weighted mode). |
| record.dueAt | string | Coursework: required when creating. |
| record.availableAt | string | Coursework: when it opens. |
| record.pointsPossible | number | |
| record.pointsEarned | number | Coursework: entering this records the grade. |
| record.gradePercent | number | Coursework: grade as a percent. |
| record.letterGrade | string | Coursework: grade as a letter. |
| record.countsTowardGrade | boolean | Coursework: defaults true. false for extra credit or ungraded practice so grade math stays correct. |
| record.priority | one of low, normal, high | |
| record.estimatedHours | number | |
| record.submittedAt | string | Coursework: when it was turned in. |
| record.reminderLeadMinutes | integer | Coursework: minutes before dueAt to remind. Default 1440 (1 day). |
| record.room | string | Exam room. |
| record.seat | string | Exam seat. |
| record.format | string | Exam format, e.g. 'closed book, multiple choice'. |
| record.topics | list of string | Exam topics. |
| record.studyChecklist | list of object | Coursework prep checklist. Sending this REPLACES the whole list. |
| record.linkedNoteId | string | Coursework: Notes-module note ID, never invented. |
| record.linkedBookId | string | Coursework: Books-module book ID (e.g. the textbook), never invented. |
| record.description | string | Coursework: the assignment's OWN text as set by the course. Canvas overwrites it on every sync; never the student's words. |
| record.code | string | Course code, e.g. 'CHEM 201'. |
| record.section | string | |
| record.creditHours | number | Course credit hours; default 3. |
| record.instructorName | string | |
| record.instructorPersonIds | list of string | Course: People person IDs for the instructor(s), never invented. |
| record.location | string | |
| record.meetingTimes | list of object | Course: weekly class meetings. Sending this REPLACES the whole list. |
| record.gradingScheme | object | Course grading scheme. Fields you omit keep their current value. |
| record.includeInGpa | boolean | |
| record.passFail | boolean | |
| record.honorsBump | number | Course: extra grade points for honors/AP in weighted GPA. |
| record.finalGrade | object | Course: official final grade ('my final grade in chem was an A-'); null clears it. It overrides the computed grade for GPA. |
| record.targetPercent | number | Course: grade the student is aiming for. |
| record.color | string | |
| record.textbookCost | number | |
| record.courseFee | number | |
| record.level | one of high_school, undergrad, grad, other | Term level. |
| record.startDate | string | Term start; required when creating a term. |
| record.endDate | string | Term end; required when creating a term. |
| record.scheduleConfig | object | Term: rotating class-schedule config. Fields you omit keep their value; dayLabels [] clears them. |
| record.sortOrder | integer | Term: manual ordering. |
| record.subjectPersonId | string | Term: 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.startAt | string | Session: when it started. Required for a session. |
| record.courseworkId | string | Session: the coursework item it prepared for, never invented. |
| record.technique | one of freeform, pomodoro | Session: defaults to 'freeform'. |
| record.topic | string | Session topic. |
| record.focusRating | integer | Session focus, 1 to 5. |
| record.degreeType | string | Plan: e.g. 'BS', 'BA', 'MS'. |
| record.catalogYear | string | Plan: e.g. '2024-2025'. |
| record.totalCreditsRequired | number | Plan: credits to graduate; default 120. |
| record.minGpa | number | Plan: minimum GPA requirement. |
| record.expectedGraduation | string | Plan: expected graduation month, YYYY-MM. |
| record.requirements | list of object | Plan: requirement buckets. Sending this REPLACES the whole list. |
| record.linkedGoalId | string | Plan: 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_updateChange 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.
| Field | Type | Description |
|---|---|---|
| type | one of coursework, course, term, session, plan | Record 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* | object | The record's id plus the fields to change. |
| record.id* | string | The record to change. |
| record.name | string | Term, course or plan name ('Fall 2026', 'Organic Chemistry II', 'BS Computer Science'). Required when creating one. |
| record.status | one of todo, in_progress, submitted, graded, missing, excused, planned, enrolled, completed, dropped, withdrawn, waitlisted, active | Coursework: 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.courseId | string | Coursework: its course (required). Session: the course studied. |
| record.termId | string | Course: its term (required when creating). |
| record.institution | string | Term or plan. |
| record.gradeScaleId | string | Term or course: grade-scale ID from academics_find, never invented. |
| record.endAt | string | Coursework: when a timed item ends. Session: when it ended. |
| record.durationMinutes | number | Coursework: length of a timed item. Session: minutes studied, required unless endAt is sent. |
| record.notes | string | The person's own notes. For coursework this is the box every client shows: anything the user says about the item belongs here. |
| record.kind | one of assignment, exam | Coursework: defaults to 'assignment'. |
| record.title | string | Coursework title. Required when creating. |
| record.type | one of homework, essay, lab_report, project, reading, paper, presentation, discussion, problem_set, quiz, midterm, final, test, practical, oral, other | Coursework: what sort of work. |
| record.categoryId | string | Coursework: grade-category ID from the course's gradingScheme (weighted mode). |
| record.dueAt | string | Coursework: required when creating. |
| record.availableAt | string | Coursework: when it opens. |
| record.pointsPossible | number | |
| record.pointsEarned | number | Coursework: entering this records the grade. |
| record.gradePercent | number | Coursework: grade as a percent. |
| record.letterGrade | string | Coursework: grade as a letter. |
| record.countsTowardGrade | boolean | Coursework: defaults true. false for extra credit or ungraded practice so grade math stays correct. |
| record.priority | one of low, normal, high | |
| record.estimatedHours | number | |
| record.submittedAt | string | Coursework: when it was turned in. |
| record.reminderLeadMinutes | integer | Coursework: minutes before dueAt to remind. Default 1440 (1 day). |
| record.room | string | Exam room. |
| record.seat | string | Exam seat. |
| record.format | string | Exam format, e.g. 'closed book, multiple choice'. |
| record.topics | list of string | Exam topics. |
| record.studyChecklist | list of object | Coursework prep checklist. Sending this REPLACES the whole list. |
| record.linkedNoteId | string | Coursework: Notes-module note ID, never invented. |
| record.linkedBookId | string | Coursework: Books-module book ID (e.g. the textbook), never invented. |
| record.description | string | Coursework: the assignment's OWN text as set by the course. Canvas overwrites it on every sync; never the student's words. |
| record.code | string | Course code, e.g. 'CHEM 201'. |
| record.section | string | |
| record.creditHours | number | Course credit hours; default 3. |
| record.instructorName | string | |
| record.instructorPersonIds | list of string | Course: People person IDs for the instructor(s), never invented. |
| record.location | string | |
| record.meetingTimes | list of object | Course: weekly class meetings. Sending this REPLACES the whole list. |
| record.gradingScheme | object | Course grading scheme. Fields you omit keep their current value. |
| record.includeInGpa | boolean | |
| record.passFail | boolean | |
| record.honorsBump | number | Course: extra grade points for honors/AP in weighted GPA. |
| record.finalGrade | object | Course: official final grade ('my final grade in chem was an A-'); null clears it. It overrides the computed grade for GPA. |
| record.targetPercent | number | Course: grade the student is aiming for. |
| record.color | string | |
| record.textbookCost | number | |
| record.courseFee | number | |
| record.level | one of high_school, undergrad, grad, other | Term level. |
| record.startDate | string | Term start; required when creating a term. |
| record.endDate | string | Term end; required when creating a term. |
| record.scheduleConfig | object | Term: rotating class-schedule config. Fields you omit keep their value; dayLabels [] clears them. |
| record.sortOrder | integer | Term: manual ordering. |
| record.subjectPersonId | string | Term: 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.startAt | string | Session: when it started. Required for a session. |
| record.courseworkId | string | Session: the coursework item it prepared for, never invented. |
| record.technique | one of freeform, pomodoro | Session: defaults to 'freeform'. |
| record.topic | string | Session topic. |
| record.focusRating | integer | Session focus, 1 to 5. |
| record.degreeType | string | Plan: e.g. 'BS', 'BA', 'MS'. |
| record.catalogYear | string | Plan: e.g. '2024-2025'. |
| record.totalCreditsRequired | number | Plan: credits to graduate; default 120. |
| record.minGpa | number | Plan: minimum GPA requirement. |
| record.expectedGraduation | string | Plan: expected graduation month, YYYY-MM. |
| record.requirements | list of object | Plan: requirement buckets. Sending this REPLACES the whole list. |
| record.linkedGoalId | string | Plan: 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_deleteDelete (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.
| Field | Type | Description |
|---|---|---|
| type | one of coursework, course, term, session, plan | Record 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. |
| id | string | The record to remove. |
| courseworkId | string | Older name for a coursework item's id. |
| courseId | string | Older name for a course's id. |
| termId | string | Older name for a term's id. |
| planId | string | Older name for a degree plan's id. |