Tool tree
gradeNot graded
get_progress_reportAnswer
Read the full state of the student: overall mastery, every topic with its mastery percentage and card count, cards due now, weakest topics, exam date and days remaining, and recent session accuracy. Call this first to understand who you are helping.
View tool JSON
{
"name": "get_progress_report",
"kind": "answer",
"impl": "imperative",
"description": "Read the full state of the student: overall mastery, every topic with its mastery percentage and card count, cards due now, weakest topics, exam date and days remaining, and recent session accuracy. Call this first to understand who you are helping.",
"inputSchema": {
"type": "object",
"properties": {}
}
}list_topicsAnswer
List every topic in the study library with its chapter, difficulty, number of cards, how many are due, and its mastery percentage from 0 to 100.
View tool JSON
{
"name": "list_topics",
"kind": "answer",
"impl": "imperative",
"description": "List every topic in the study library with its chapter, difficulty, number of cards, how many are due, and its mastery percentage from 0 to 100.",
"inputSchema": {
"type": "object",
"properties": {}
}
}get_weak_topicsAnswer
Find the topics the student is most likely to lose marks on: those whose mastery falls below a threshold, weakest first. Use this to decide what to drill or what to put in a revision plan.
View tool JSON
{
"name": "get_weak_topics",
"kind": "answer",
"impl": "imperative",
"description": "Find the topics the student is most likely to lose marks on: those whose mastery falls below a threshold, weakest first. Use this to decide what to drill or what to put in a revision plan.",
"inputSchema": {
"type": "object",
"properties": {
"threshold": {
"type": "number",
"description": "Mastery percentage below which a topic counts as weak. Defaults to 60."
}
}
}
}list_cardsAnswer
List flashcards, optionally filtered to one topic. Returns each card id, its question and answer, how many times it has been reviewed, and when it is next due. Use the returned ids with update_card or delete_card.
View tool JSON
{
"name": "list_cards",
"kind": "answer",
"impl": "imperative",
"description": "List flashcards, optionally filtered to one topic. Returns each card id, its question and answer, how many times it has been reviewed, and when it is next due. Use the returned ids with update_card or delete_card.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "Topic name to filter by. Omit for every card."
},
"onlyDue": {
"type": "boolean",
"description": "When true, return only cards that are due for review now."
}
}
}
}get_due_forecastAnswer
Show how many cards fall due on each of the next N days, plus how many are already overdue. Use it to warn the student about a review pile-up before it happens.
View tool JSON
{
"name": "get_due_forecast",
"kind": "answer",
"impl": "imperative",
"description": "Show how many cards fall due on each of the next N days, plus how many are already overdue. Use it to warn the student about a review pile-up before it happens.",
"inputSchema": {
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "How many days ahead to forecast. Defaults to 7."
}
}
}
}add_topicAction
Create a topic in the study library, for example "Deadlock Handling" in the chapter "Process Synchronisation". Returns the topic. Safe to call twice: an existing topic with the same name is returned unchanged.
View tool JSON
{
"name": "add_topic",
"kind": "act",
"impl": "imperative",
"description": "Create a topic in the study library, for example \"Deadlock Handling\" in the chapter \"Process Synchronisation\". Returns the topic. Safe to call twice: an existing topic with the same name is returned unchanged.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The topic name as the student would say it."
},
"chapter": {
"type": "string",
"description": "The chapter or unit this topic belongs to."
},
"difficulty": {
"type": "string",
"enum": [
"easy",
"medium",
"hard"
]
}
},
"required": [
"name"
]
}
}add_cardsAction
Add one or many flashcards to a topic in a single call. This is the main way to turn notes, a syllabus or a textbook chapter into study material. Write the front as a question the student must answer from memory and the back as the complete answer.
View tool JSON
{
"name": "add_cards",
"kind": "act",
"impl": "imperative",
"description": "Add one or many flashcards to a topic in a single call. This is the main way to turn notes, a syllabus or a textbook chapter into study material. Write the front as a question the student must answer from memory and the back as the complete answer.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "Topic name. The topic must already exist — call add_topic first."
},
"cards": {
"type": "array",
"description": "The cards to add.",
"items": {
"type": "object",
"properties": {
"front": {
"type": "string",
"description": "The question shown to the student."
},
"back": {
"type": "string",
"description": "The full answer."
},
"hint": {
"type": "string",
"description": "An optional nudge shown on request."
}
},
"required": [
"front",
"back"
]
}
}
},
"required": [
"topic",
"cards"
]
}
}update_cardAction
Rewrite a flashcard. Use it to fix a wrong answer, sharpen a vague question, or add a hint. Get card ids from list_cards.
View tool JSON
{
"name": "update_card",
"kind": "act",
"impl": "imperative",
"description": "Rewrite a flashcard. Use it to fix a wrong answer, sharpen a vague question, or add a hint. Get card ids from list_cards.",
"inputSchema": {
"type": "object",
"properties": {
"cardId": {
"type": "string"
},
"front": {
"type": "string"
},
"back": {
"type": "string"
},
"hint": {
"type": "string"
}
},
"required": [
"cardId"
]
}
}attach_explanationAction
Attach a worked explanation to a card — why the answer is what it is, or where the student went wrong. The explanation is shown under the answer during review. This is the single most useful thing to do after a student misses a question.
View tool JSON
{
"name": "attach_explanation",
"kind": "act",
"impl": "imperative",
"description": "Attach a worked explanation to a card — why the answer is what it is, or where the student went wrong. The explanation is shown under the answer during review. This is the single most useful thing to do after a student misses a question.",
"inputSchema": {
"type": "object",
"properties": {
"cardId": {
"type": "string"
},
"explanation": {
"type": "string",
"description": "A short, plain explanation the student can read in ten seconds."
}
},
"required": [
"cardId",
"explanation"
]
}
}delete_cardSensitive Action
Permanently remove a flashcard. The student is asked to confirm before anything is deleted.
View tool JSON
{
"name": "delete_card",
"kind": "transact",
"impl": "imperative",
"description": "Permanently remove a flashcard. The student is asked to confirm before anything is deleted.",
"inputSchema": {
"type": "object",
"properties": {
"cardId": {
"type": "string"
}
},
"required": [
"cardId"
]
}
}delete_topicSensitive Action
Permanently remove a topic and every card inside it. The student is asked to confirm first.
View tool JSON
{
"name": "delete_topic",
"kind": "transact",
"impl": "imperative",
"description": "Permanently remove a topic and every card inside it. The student is asked to confirm first.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string"
}
},
"required": [
"topic"
]
}
}start_review_sessionAction
Open the review screen and begin quizzing the student. Scope "due" reviews everything scheduled for today, "weak" drills the three weakest topics, "topic" drills one named topic, and "all" ignores scheduling. While a session is running, extra tools appear for reading, revealing and grading the card on screen.
View tool JSON
{
"name": "start_review_session",
"kind": "act",
"impl": "imperative",
"description": "Open the review screen and begin quizzing the student. Scope \"due\" reviews everything scheduled for today, \"weak\" drills the three weakest topics, \"topic\" drills one named topic, and \"all\" ignores scheduling. While a session is running, extra tools appear for reading, revealing and grading the card on screen.",
"inputSchema": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"due",
"weak",
"topic",
"all"
]
},
"topic": {
"type": "string",
"description": "Required when scope is \"topic\"."
},
"limit": {
"type": "number",
"description": "Maximum cards in the queue. Defaults to 20."
}
}
}
}end_review_sessionAction
Finish the running review session and return a summary: how many cards were reviewed, the accuracy, which questions were missed, and how long it took. Use the missed list to decide what to explain next.
View tool JSON
{
"name": "end_review_session",
"kind": "act",
"impl": "imperative",
"description": "Finish the running review session and return a summary: how many cards were reviewed, the accuracy, which questions were missed, and how long it took. Use the missed list to decide what to explain next.",
"inputSchema": {
"type": "object",
"properties": {}
}
}set_exam_dateAction
Record what the student is preparing for and when it is. Everything downstream — the plan, the urgency of each topic — keys off this.
View tool JSON
{
"name": "set_exam_date",
"kind": "act",
"impl": "imperative",
"description": "Record what the student is preparing for and when it is. Everything downstream — the plan, the urgency of each topic — keys off this.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "What the exam is called, e.g. \"Operating Systems end-sem\"."
},
"date": {
"type": "string",
"description": "The exam date as YYYY-MM-DD."
}
},
"required": [
"date"
]
}
}create_study_planAction
Generate a day-by-day revision plan from today to the exam. Weak topics get proportionally more slots and are front-loaded, then interleaved across days for spacing. The plan appears in the Plan tab where the student can tick days off.
View tool JSON
{
"name": "create_study_plan",
"kind": "act",
"impl": "imperative",
"description": "Generate a day-by-day revision plan from today to the exam. Weak topics get proportionally more slots and are front-loaded, then interleaved across days for spacing. The plan appears in the Plan tab where the student can tick days off.",
"inputSchema": {
"type": "object",
"properties": {
"dailyMinutes": {
"type": "number",
"description": "How long the student can study each day. Defaults to 30."
},
"examDate": {
"type": "string",
"description": "YYYY-MM-DD. Defaults to the stored exam date."
}
}
}
}mark_plan_dayAction
Tick a day of the revision plan as done, or untick it.
View tool JSON
{
"name": "mark_plan_day",
"kind": "act",
"impl": "imperative",
"description": "Tick a day of the revision plan as done, or untick it.",
"inputSchema": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"done": {
"type": "boolean"
}
},
"required": [
"date"
]
}
}show_viewAction
Bring a part of the app into view for the student: "library", "review", "plan" or "activity". Use it so the student is looking at whatever you are talking about.
View tool JSON
{
"name": "show_view",
"kind": "act",
"impl": "imperative",
"description": "Bring a part of the app into view for the student: \"library\", \"review\", \"plan\" or \"activity\". Use it so the student is looking at whatever you are talking about.",
"inputSchema": {
"type": "object",
"properties": {
"view": {
"type": "string",
"enum": [
"library",
"review",
"plan",
"activity"
]
}
},
"required": [
"view"
]
}
}say_to_studentSensitive Action
Post a short coaching note into the app itself, so it survives after the chat is closed. Use it for encouragement, a warning about a pile-up, or a one-line summary of what you just did.
View tool JSON
{
"name": "say_to_student",
"kind": "transact",
"impl": "imperative",
"description": "Post a short coaching note into the app itself, so it survives after the chat is closed. Use it for encouragement, a warning about a pile-up, or a one-line summary of what you just did.",
"inputSchema": {
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
]
}
}