Tool tree
gradeNot graded
page: Every page
get_schedule_contextAnswer
Read the active demo student's program, completed course codes, requirements, preferences, term, campus, unavailable times and current plan. includeHistory adds up to ten recent plan snapshots, newest first. Omits name, student ID, grades and free-text notes. Identify a student in the UI first.
View tool JSON
{
"name": "get_schedule_context",
"kind": "answer",
"impl": "imperative",
"description": "Read the active demo student's program, completed course codes, requirements, preferences, term, campus, unavailable times and current plan. includeHistory adds up to ten recent plan snapshots, newest first. Omits name, student ID, grades and free-text notes. Identify a student in the UI first.",
"inputSchema": {
"type": "object",
"properties": {
"includeHistory": {
"type": "boolean",
"description": "Include plan history for undo; preferences and commitments are not undone."
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}search_course_sectionsAnswer
Search the selected term/campus (including online) by course code, title or interest. Returns section IDs, meetings, seats, prerequisite problems and degree fit. Eligible sections only by default. Optional days, times, format and unavailableTimes are hard constraints. Does not save.
View tool JSON
{
"name": "search_course_sections",
"kind": "answer",
"impl": "imperative",
"description": "Search the selected term/campus (including online) by course code, title or interest. Returns section IDs, meetings, seats, prerequisite problems and degree fit. Eligible sections only by default. Optional days, times, format and unavailableTimes are hard constraints. Does not save.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 120
},
"eligibleOnly": {
"type": "boolean"
},
"unavailableTimes": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
]
},
"startTime": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"endTime": {
"type": "string",
"pattern": "^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"
},
"label": {
"type": "string",
"maxLength": 80
}
},
"required": [
"day",
"startTime",
"endTime"
],
"additionalProperties": false
},
"description": "Optional replacement for saved unavailable times for this request only; [] ignores saved blocks. Omit to use saved blocks. Local campus time; split overnight blocks. Does not save."
},
"days": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
]
},
"maxItems": 5,
"uniqueItems": true,
"description": "Allowed meeting days; every meeting must fit. Empty means any day."
},
"earliestStart": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
"description": "Earliest permitted class start, local campus time (HH:MM)."
},
"latestEnd": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
"description": "Latest permitted class end, local campus time (HH:MM)."
},
"format": {
"type": "string",
"enum": [
"any",
"online",
"in-person"
]
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}suggest_schedulesAction
Generate up to three conflict-free drafts without saving. Default to saved credit target (12 if unset), closest total at or above target within six courses. Override with targetCredits OR exact courseCount; courseCodes are mandatory inclusions. Saved preferences rank results; days, times, format and unavailableTimes are hard constraints. Alternatively, replaceSectionId previews up to ten swaps for one current section, preserving all others. Core courses keep their code; electives share a requirement category. Returns expectedPlan for applying a draft or swap. Does not save commitments or enroll.
View tool JSON
{
"name": "suggest_schedules",
"kind": "act",
"impl": "imperative",
"description": "Generate up to three conflict-free drafts without saving. Default to saved credit target (12 if unset), closest total at or above target within six courses. Override with targetCredits OR exact courseCount; courseCodes are mandatory inclusions. Saved preferences rank results; days, times, format and unavailableTimes are hard constraints. Alternatively, replaceSectionId previews up to ten swaps for one current section, preserving all others. Core courses keep their code; electives share a requirement category. Returns expectedPlan for applying a draft or swap. Does not save commitments or enroll.",
"inputSchema": {
"type": "object",
"properties": {
"courseCount": {
"type": "integer",
"minimum": 1,
"maximum": 6
},
"targetCredits": {
"type": "integer",
"minimum": 1,
"maximum": 24
},
"courseCodes": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"maxItems": 6,
"uniqueItems": true
},
"replaceSectionId": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Preview replacements for this planned section instead of generating full drafts; cannot combine with load or courseCodes options."
},
"courseCode": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Only with replaceSectionId: restrict the replacement course."
},
"sameTimeOnly": {
"type": "boolean",
"description": "Only with replaceSectionId: keep meetings inside the original day/time windows."
},
"unavailableTimes": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
]
},
"startTime": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"endTime": {
"type": "string",
"pattern": "^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"
},
"label": {
"type": "string",
"maxLength": 80
}
},
"required": [
"day",
"startTime",
"endTime"
],
"additionalProperties": false
},
"description": "Optional replacement for saved unavailable times for this request only; [] ignores saved blocks. Omit to use saved blocks. Local campus time; split overnight blocks. Does not save."
},
"days": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
]
},
"maxItems": 5,
"uniqueItems": true,
"description": "Allowed meeting days; every meeting must fit. Empty means any day."
},
"earliestStart": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
"description": "Earliest permitted class start, local campus time (HH:MM)."
},
"latestEnd": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
"description": "Latest permitted class end, local campus time (HH:MM)."
},
"format": {
"type": "string",
"enum": [
"any",
"online",
"in-person"
]
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}preview_scheduleAction
Validate sectionIds (defaults to current plan) without saving: conflicts, duplicate/completed courses, prerequisites, seats, term, campus and unavailable times. Returns meetings, credits and metrics. explainSectionId adds eligibility, degree fit, preference score and trade-offs against that plan. Alternatively provide 2–5 schedules to compare; rankBy chooses a metric (lower is better). Comparison excludes invalid/empty options and flags differing credit loads. unavailableTimes overrides saved commitments for this request only.
View tool JSON
{
"name": "preview_schedule",
"kind": "act",
"impl": "imperative",
"description": "Validate sectionIds (defaults to current plan) without saving: conflicts, duplicate/completed courses, prerequisites, seats, term, campus and unavailable times. Returns meetings, credits and metrics. explainSectionId adds eligibility, degree fit, preference score and trade-offs against that plan. Alternatively provide 2–5 schedules to compare; rankBy chooses a metric (lower is better). Comparison excludes invalid/empty options and flags differing credit loads. unavailableTimes overrides saved commitments for this request only.",
"inputSchema": {
"type": "object",
"properties": {
"sectionIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"maxItems": 6,
"uniqueItems": true
},
"explainSectionId": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"unavailableTimes": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
]
},
"startTime": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"endTime": {
"type": "string",
"pattern": "^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"
},
"label": {
"type": "string",
"maxLength": 80
}
},
"required": [
"day",
"startTime",
"endTime"
],
"additionalProperties": false
},
"description": "Optional replacement for saved unavailable times for this request only; [] ignores saved blocks. Omit to use saved blocks. Local campus time; split overnight blocks. Does not save."
},
"schedules": {
"type": "array",
"maxItems": 5,
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"sectionIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"maxItems": 6,
"uniqueItems": true
}
},
"required": [
"sectionIds"
],
"additionalProperties": false
},
"description": "Compare complete schedules; cannot combine with sectionIds or explainSectionId."
},
"rankBy": {
"type": "string",
"enum": [
"gapMinutes",
"campusDays",
"daysWithClasses",
"earlyMeetings",
"eveningMeetings"
],
"description": "Only with schedules; defaults to gapMinutes. Gaps include online meetings; travel time is not estimated."
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}apply_scheduleAction
Save changes to the browser demo plan only when the student requests them. Choose at most one: sectionIds replaces/clears the plan, addSectionId, removeSectionId, swap, or undo:true. Every plan change requires expectedPlan from fresh context or suggestions. Optionally save unavailableTimes (replaces all blocks, [] clears) with expectedUnavailableTimes from context, alone or atomically with a plan change except undo. Validates against proposed commitments before saving; availability-only saves and removals may leave flagged conflicts. Undo restores one valid snapshot, preserving commitments/preferences. Never enrolls or finalizes.
View tool JSON
{
"name": "apply_schedule",
"kind": "act",
"impl": "imperative",
"description": "Save changes to the browser demo plan only when the student requests them. Choose at most one: sectionIds replaces/clears the plan, addSectionId, removeSectionId, swap, or undo:true. Every plan change requires expectedPlan from fresh context or suggestions. Optionally save unavailableTimes (replaces all blocks, [] clears) with expectedUnavailableTimes from context, alone or atomically with a plan change except undo. Validates against proposed commitments before saving; availability-only saves and removals may leave flagged conflicts. Undo restores one valid snapshot, preserving commitments/preferences. Never enrolls or finalizes.",
"inputSchema": {
"type": "object",
"properties": {
"sectionIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"maxItems": 6,
"uniqueItems": true
},
"addSectionId": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"removeSectionId": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"swap": {
"type": "object",
"properties": {
"sectionId": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"replacementSectionId": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"sectionId",
"replacementSectionId"
],
"additionalProperties": false
},
"undo": {
"type": "boolean",
"enum": [
true
]
},
"expectedPlan": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"maxItems": 100,
"uniqueItems": false
},
"unavailableTimes": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
]
},
"startTime": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"endTime": {
"type": "string",
"pattern": "^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"
},
"label": {
"type": "string",
"maxLength": 80
}
},
"required": [
"day",
"startTime",
"endTime"
],
"additionalProperties": false
},
"description": "Save this complete list of weekly commitments. Read context and preserve existing blocks when adding. Use neutral labels for private commitments."
},
"expectedUnavailableTimes": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri"
]
},
"startTime": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"endTime": {
"type": "string",
"pattern": "^(([01][0-9]|2[0-3]):[0-5][0-9]|24:00)$"
},
"label": {
"type": "string",
"maxLength": 80
}
},
"required": [
"day",
"startTime",
"endTime"
],
"additionalProperties": false
}
}
},
"required": [],
"additionalProperties": false
},
"page": "/"
}