add_song
Add a song to the student's library so it gets Listen, Practice, sections and progress like any other song. Write the melody in Tonic notation: note names with octave (C4, F#4, Bb3) and beats after a colon (E4:0.5…
title: string, origin: string?, genre: string?, moods: array?, difficulty: integer?, key: string?, bpm: number?, beats_per_bar: integer?, … (list cut; the site may define more)
clear_keyboard
Remove highlights and captions from the on-screen piano and stop any reference playback.
close_result
Close the result or "listen" card that is showing and return to the page underneath. Same as the student pressing Done.
complete_plan_item
Mark a practice-plan item done (or not done) by its id or exact title.
item_id: string?, title: string?, done: boolean?
connect_midi
Try to connect a MIDI keyboard or digital piano. Browsers only grant MIDI access from a real click, so this may fail; if it does, ask the student to press "Connect a MIDI keyboard" under the piano.
export_progressread-only
Everything stored in this browser (attempts, plan, log, settings, added songs) as JSON, the same as the Export button. Use it to move progress to another browser with import_progress.
get_app_stateread-only
Current UI state: mode, running exercise and progress, latest result, tempo, input instrument and highlighted keys. Use get_started for the first call; use this whenever the page state is unclear.
get_attempt_resultsread-only
Full results of an attempt: notes hit and missed, timing offsets in milliseconds with early/late tendency, and per-prompt answers for find_note and ear_training. Defaults to the latest attempt. Call it after the…
attempt_id: string?
get_input_statusread-only
Which instrument the student is playing on: computer keyboard or a connected MIDI keyboard / digital piano, with playable range and polyphony. Adapt exercises to it: keep computer-keyboard drills within the range and…
get_keyboard_layoutread-only
Which computer keys play which notes. The student plays the piano on their typing keyboard: home row A S D F G H J K L ; ' are the white keys, W E T Y U O P the black keys, Z and X shift the octave. Use this to give…
get_learning_pathsread-only
The five learning paths the app is organised around (find your way around the keys, learn chords, scales and rhythm, train your ear, play a song) with their steps, which are done, and the next step's ready-to-use…
get_practice_logread-onlyuntrusted content
Past practice sessions and recent attempts with scores, newest first. Use it to pick up where the student left off and to notice trends.
limit: integer?
get_practice_planread-only
The practice plan shown on the Practice screen: each item with its id, whether it is done, and its exercise spec, which you can pass to start_exercise unchanged.
get_recent_notesread-only
What the student has been playing freely, outside a drill: the notes held right now and what chord or interval they make, the last notes with timing, and the phrase since the last pause. Use it for "what chord is…
seconds: number?
get_songread-only
Everything about one song: each section with length, note range, whether it fits the computer keyboard (and the octave shift it needs), the student's best score, its distinct notes and computer keys, plus ready-made…
song_id: string
get_song_progressread-only
Best score per section and overall mastery for one song, or for every song the student has tried. A song counts as learned when every section scores 80 or more.
song_id: string?
get_startedread-only
Call this first when teaching. Returns a small session brief with the teaching rules and exactly one recommended next tool call, including ready-to-use input.
get_teaching_guideread-only
How to teach with this page: nine short rules on order, pacing by score, wording for beginners, songs, free play and saving. Read once per session.
import_progress
Replace what is stored in this browser with a JSON export from export_progress or the Export button. Shows a confirmation card first.
json: object
load_sample_progress
Fill the app with a sample plan and practice log, for trying things out. Same as the "Load sample" link. Shows a confirmation card first.
log_practice_session
Save a practice session to the student's log with a short summary and optional tutor notes. Attaches recent attempts (default: everything since the last logged session). Shows a confirmation card first.
summary: string, notes: string?, attempt_ids: array?
play_back_attempt
Play back what the student played in an attempt, at the timing they played it, keys lighting up. Same as the "Hear yours" button. Defaults to the latest attempt.
attempt_id: string?
play_reference
Play something for the student to hear, lighting up keys as it plays: a scale, a chord progression, a melody or a rhythm. Same parameters as start_exercise. Returns right away; playback runs for `duration_seconds`.
kind: string, name: string?, bpm: number?, root: string?, mode: string?, octaves: integer?, direction: string?, note_value: string?, … (list cut; the site may define more)
remove_song
Remove a song the agent or the student added earlier. Built-in songs cannot be removed. Shows a confirmation card first.
song_id: string
replay_prompt
In an ear-training drill, play the prompt again for the student. Same as the "Play it again" button.
reset_progress
Erase the plan, log, attempts, added songs and settings from this browser. Same as the Reset link. Shows a confirmation card first.
save_recording_as_song
Turn what the student just played freely into a song in their library. Takes the phrase since the last pause (or the last N seconds), snaps it to a beat grid, writes it in Tonic notation and shows a confirmation card.…
title: string, bpm: number?, beats_per_bar: integer?, grid: string?, seconds: number?, key: string?, genre: string?, moods: array?, … (list cut; the site may define more)
say
Speak one or two short sentences out loud through the page, in the browser voice. Use it for coaching while the student has both hands on the keys and eyes on the keyboard, e.g. "Good. Now a little slower." Keep it…
text: string
search_songsread-only
Browse the song library: 20 public-domain pieces (kids, folk, holiday, hymn, classical) rated 1–5. Filter by text, genre, mood, difficulty, hands, and whether it fits the computer keyboard. Set for_student true to…
query: string?, genre: string?, mood: string?, max_difficulty: integer?, min_difficulty: integer?, hands: string?, fits_computer_keyboard: boolean?, for_student: boolean?, … (list cut; the site may define more)
set_metronome
Set the practice tempo and switch the free-running metronome on or off. Exercises use their own bpm and count in one bar automatically.
bpm: number?, on: boolean?
set_practice_plan
Replace the student's practice plan shown in the app. Each item can carry an exercise spec so the student can start it with one click. Shows a confirmation card first.
title: string, items: array
show_on_keyboard
Light up keys on the on-screen piano with a caption, and optionally sound them. Give notes, a chord symbol, or a scale. Good for "this is C major", "here is a G7 chord", or pointing out a single key.
notes: array?, chord: string?, scale_root: string?, scale_mode: string?, caption: string?, play: boolean?
show_screen
Move the page to a screen: home (the learning paths), a learning path by id, songs (optionally with a song expanded), or practice (plan and log). Closes a finished result if it is showing. Use this instead of clicking…
screen: string, path_id: string?, song_id: string?
start_exercise
Start an exercise on screen for the student to play on their computer keyboard or MIDI keyboard. Timed kinds (scale, chords, melody, rhythm) count in one bar with clicks, light up each target key in time, and end on…
kind: string, name: string?, bpm: number?, root: string?, mode: string?, octaves: integer?, direction: string?, note_value: string?, … (list cut; the site may define more)
update_settings
Toggle the app's sound, the key-letter labels on the on-screen piano, or shift which octave the computer keyboard plays (-2 to 2; 0 means A = C4).
sound: boolean?, show_key_labels: boolean?, octave_shift: integer?
wait_for_notesread-only
Listens for the next thing the student plays outside a drill (a note, a chord, or a short burst) and returns it named, e.g. "C major" or "a perfect 5th". Use it for "play me a C chord" checks and "what is this?"…
timeout_seconds: number?
wait_for_resultread-only
Waits until the running exercise finishes, then returns its full results with coaching, so you never need to poll or ask the student to say "done". Call it right after start_exercise. The cap defaults to the time the…
timeout_seconds: number?