Tools
list_courses, search_lessons, list_lessons, get_lesson, get_chunk, create_flashcard, append_note, generate_presentation, create_presentation, update_presentation, replace_presentation_slides, add_presentation_slide, update_presentation_slide, get_presentation, list_presentations, get_transcript, create_audio_overview, get_audio_overview, get_audio_overview_url, get_course_progress, get_recent_activity.
Read
list_coursesList every course with its id and completion progress. Call this first to discover course ids for scoping.
search_lessonsHybrid semantic + keyword search across lesson content (local embeddings, no API key). Returns the most relevant sections.
| Name | Type | Default | Description |
|---|---|---|---|
| query* | string | — | Natural-language search query. |
| course_id | string | — | Restrict to one course id (from list_courses). Omit to search the whole library. |
| limit | integer (1–20) | 8 | Max sections to return. |
list_lessonsList lesson titles within a course, optionally filtered to one module.
| Name | Type | Default | Description |
|---|---|---|---|
| course_title* | string | — | Course title substring (case-insensitive). |
| module_name | string | — | Optional module-name substring filter. |
get_lessonFetch the full markdown body of one lesson by lesson_id.
| Name | Type | Default | Description |
|---|---|---|---|
| lesson_id* | string | — | The lesson UUID (from search_lessons or list_lessons). |
get_chunkFetch one lesson section by lesson_id + anchor, as returned by search_lessons. Use to read a hit in full when the preview was truncated.
| Name | Type | Default | Description |
|---|---|---|---|
| lesson_id* | string | — | The lesson UUID. |
| anchor* | string | — | The chunk anchor slug from a search hit. |
Write
These tools add flashcards and notes to the lessons in your library. Note text enters semantic search asynchronously.
create_flashcardCreate a flashcard (front question + back answer) on a lesson. Appears in the lesson's deck immediately.
| Name | Type | Default | Description |
|---|---|---|---|
| lesson_id* | string | — | The lesson UUID the card belongs to. |
| question* | string | — | Front / question. |
| answer* | string | — | Back / answer. |
append_noteAppend a timestamped markdown note entry to a lesson's notes.
| Name | Type | Default | Description |
|---|---|---|---|
| lesson_id* | string | — | The lesson UUID the note belongs to. |
| content_md* | string | — | Markdown body of the note. |
Presentations
Short slide decks for team kickoffs when a course is assigned. View at
/presentations/<id>; download .pptx from /api/presentations/<id>/pptx.
Ready decks are readable by anyone with course access; only the owner can edit.
generate_presentationAI-generate a 6–12 slide deck from a course, module, or lesson. Default purpose is intro (syllabus-aware kickoff template).
| Name | Type | Default | Description |
|---|---|---|---|
| scope_type* | 'lesson' | 'module' | 'course' | — | Prefer 'course' for team intros. |
| course_id* | string | — | Course UUID. |
| lesson_id | string | — | Required when scope_type='lesson'. |
| module_name | string | — | Required when scope_type='module'. |
| purpose | 'intro' | 'overview' | 'summary' | intro | Deck intent. |
| force | boolean | false | Bypass sources_hash cache. |
create_presentationCreate a presentation from an explicit slides array (agent-authored).
| Name | Type | Default | Description |
|---|---|---|---|
| course_id* | string | — | Course UUID. |
| title* | string | — | Deck title. |
| slides* | array | — | Ordered slides with title, optional body_md / speaker_notes_md / layout. |
| scope_type | 'lesson' | 'module' | 'course' | course | Scope. |
| purpose | 'intro' | 'overview' | 'summary' | intro | Deck intent. |
update_presentationUpdate title and/or purpose on a presentation you own.
| Name | Type | Default | Description |
|---|---|---|---|
| presentation_id* | string | — | Presentation UUID. |
| title | string | — | New deck title. |
| purpose | 'intro' | 'overview' | 'summary' | — | New purpose. |
replace_presentation_slidesReplace ALL slides on a presentation you own.
| Name | Type | Default | Description |
|---|---|---|---|
| presentation_id* | string | — | Presentation UUID. |
| slides* | array | — | New ordered slides array. |
add_presentation_slideAppend or insert one slide on a presentation you own.
| Name | Type | Default | Description |
|---|---|---|---|
| presentation_id* | string | — | Presentation UUID. |
| title* | string | — | Slide title. |
| body_md | string | — | Markdown body. |
| position | integer | — | 0-based insert index; omit to append. |
update_presentation_slidePatch one slide by 0-based position on a presentation you own.
| Name | Type | Default | Description |
|---|---|---|---|
| presentation_id* | string | — | Presentation UUID. |
| position* | integer | — | 0-based slide index. |
| title | string | — | New title. |
| body_md | string | — | New body. |
get_presentationRead one presentation by id — metadata plus ordered slides (owner any status; others only ready + course access).
| Name | Type | Default | Description |
|---|---|---|---|
| id* | string | — | Presentation UUID. |
list_presentationsList presentations. Default: yours. mine_only=false includes course-shared ready decks.
| Name | Type | Default | Description |
|---|---|---|---|
| course_id | string | — | Optional course UUID filter. |
| mine_only | boolean | true | Set false to include shared ready decks. |
Video lessons
Read the timestamped transcript behind a video lesson in your library.
get_transcriptFetch a video lesson's raw timestamped transcript (one [h:mm:ss] line per segment).
| Name | Type | Default | Description |
|---|---|---|---|
| lesson_id* | string | — | The video lesson's UUID. |
Audio overviews
A roughly five-minute spoken overview (mp3) of a lesson, module, or course.
create_audio_overviewGenerate a single-voice audio overview. Takes about 60–120 seconds; re-running on unchanged content returns the cached overview instantly.
| Name | Type | Default | Description |
|---|---|---|---|
| scope_type* | lesson | module | course | — | What the overview covers. |
| course_id* | string | — | Course id (from list_courses or get_lesson). |
| lesson_id | string | — | Required when scope_type is lesson. |
| module_name | string | — | Required when scope_type is module. |
| force | boolean | false | Generate a fresh overview even if one exists for this content. |
get_audio_overviewRead one audio overview: status, scope, duration, and its script once ready.
| Name | Type | Default | Description |
|---|---|---|---|
| id* | string | — | The audio overview id. |
get_audio_overview_urlGet a fresh signed URL for an overview's mp3 when the previous one expired.
| Name | Type | Default | Description |
|---|---|---|---|
| id* | string | — | The audio overview id. |
| ttl_seconds | integer | 900 | URL lifetime in seconds (60–3600). |
Progress & activity
get_course_progressWhere you left off in one course: the lesson to resume, your most recent activity, a grouped recap, and completion counts.
| Name | Type | Default | Description |
|---|---|---|---|
| course_id* | string | — | Course id (from list_courses). |
get_recent_activityYour recent learning activity, newest first: notes, highlights, completions, chat citations, flashcard reviews, and generated reviews.
| Name | Type | Default | Description |
|---|---|---|---|
| course_id | string | — | Only activity in this course. |
| lesson_id | string | — | Only activity on this lesson. |
| kinds | string[] | — | Filter: note, highlight, completion, chat_citation, flashcard_review, review_generated. |
| limit | integer | 25 | Max rows (1–100). |