{"ok":true,"site":{"host":"classmate-steel.vercel.app","url":"https://classmate-steel.vercel.app/","type":"live","desc":"Study with the lecture.","tools":[{"name":"classmate_get_session","kind":"answer","impl":"imperative","description":"Read the lecture session once: source, title, slide/note/transcript counts, cadence, and how to study with the student.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_get_now","kind":"act","impl":"imperative","description":"Read the current lecture slice: timecode, transcript, notes, board, and studentAsk. If studentAsk is set, the student typed on the desk — call classmate_reply so they see your answer on the page.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_observe_next","kind":"act","impl":"imperative","description":"Wait until the next media-time checkpoint or until the student signals Lost / Got it / Ask. Then call classmate_get_now. If wake.now.studentAsk is set, classmate_reply first.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_play","kind":"act","impl":"imperative","description":"Resume lecture playback.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_pause","kind":"act","impl":"imperative","description":"Pause lecture playback.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_seek","kind":"act","impl":"imperative","description":"Jump the lecture to a time in seconds or a timecode like 12:40.","inputSchema":{"type":"object","properties":{"time":{"description":"Seconds or timecode (mm:ss or hh:mm:ss).","anyOf":[{"type":"number"},{"type":"string"}]}},"required":["time"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_highlight_notes","kind":"act","impl":"imperative","description":"Highlight the student's uploaded notes that match a concept from the current moment. The notes pane scrolls to the hit.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Concept, quote, or heading to find in the notes."},"reason":{"type":"string","description":"Short why this matters right now."}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_cite","kind":"answer","impl":"imperative","description":"Return ClassCorpus-style citations for this moment: slide page, note heading, and transcript timecode. Use these in answers instead of inventing sources.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_show_slide","kind":"act","impl":"imperative","description":"Pin and highlight the slide that matches this moment, by page number, id, or concept. Creates a time anchor so later playback stays synced.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Slide number, id, title, or concept."},"reason":{"type":"string"}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_add_margin","kind":"act","impl":"imperative","description":"Park a short margin note on the board at the current timecode.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_reply","kind":"act","impl":"imperative","description":"Write an answer on the desk next to the student's Ask. The student does not see your ChatGPT sidebar — they only see this page. Use this whenever studentAsk is set.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"Your answer, 1-5 sentences, grounded in the current lecture."},"askId":{"type":"string","description":"Optional id from get_now.asks."}},"required":["text"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_draw_diagram","kind":"act","impl":"imperative","description":"Draw a study diagram onto the shared board for the current concept. Uses image generation when available, otherwise a chalkboard SVG the student can see immediately.","inputSchema":{"type":"object","properties":{"title":{"type":"string"},"prompt":{"type":"string","description":"What the diagram should show."},"bullets":{"type":"array","items":{"type":"string"},"description":"Short chalkboard labels if image generation is unavailable."}},"required":["title","prompt"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_make_cards","kind":"act","impl":"imperative","description":"Drop flashcards onto the board for the current lecture moment.","inputSchema":{"type":"object","properties":{"cards":{"type":"array","items":{"type":"object","properties":{"front":{"type":"string"},"back":{"type":"string"}},"required":["front","back"]}}},"required":["cards"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_quiz","kind":"act","impl":"imperative","description":"Park one multiple-choice check on the board for this moment.","inputSchema":{"type":"object","properties":{"question":{"type":"string"},"choices":{"type":"array","items":{"type":"string"}},"answer":{"type":"number","description":"Zero-based index of the correct choice."},"explanation":{"type":"string"}},"required":["question","choices","answer"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_load_url","kind":"act","impl":"imperative","description":"Load a YouTube lecture or a direct mp4/webm URL onto the desk, fetch captions, and start playback.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"YouTube watch/share URL or a direct video file URL."}},"required":["url"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_seek_slide","kind":"act","impl":"imperative","description":"Jump the video to the time this slide is anchored. Pass a 1-based page number or slide id.","inputSchema":{"type":"object","properties":{"slide":{"description":"1-based slide number or id.","anyOf":[{"type":"number"},{"type":"string"}]}},"required":["slide"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_seek_note","kind":"act","impl":"imperative","description":"Jump the video to the timestamp on a note block.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_export_timing","kind":"act","impl":"imperative","description":"Return a p2present-compatible classmate.json manifest (video, timing[], notes) for this session.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"classmate_load_manifest","kind":"act","impl":"imperative","description":"Apply a classmate/p2present JSON manifest: timing cues, notes, and optional YouTube/mp4 source.","inputSchema":{"type":"object","properties":{"json":{"type":"string","description":"Raw JSON string of classmate.json / p2present timing."}},"required":["json"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Health & Education","apiSurface":"spec","toolCount":19}}