Education & health · tonic.stranica.workers.dev

Tonic

Piano learning app using your computer or MIDI keyboard. Agents act as tutor: show keys, play references, run exercises and track progress.

Ask an agent to

  • Teach me the C major scale and show it on the keyboard
  • Start a rhythm exercise at 80 bpm and grade my attempt
  • Show my practice log and pick up where I left off

37 tools

  • 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?

Tools
37
Registered with
JavaScript
Scan finished
Oct 19, 2026

Tool names and descriptions are what tonic.stranica.workers.dev/ registered when we loaded it in Chrome 154 on Browser Use Cloud. The summary and the “ask an agent” lines are AI-written from them. To call the tools yourself, see Chrome’s WebMCP docs. How we found it.

More education & health sites

All 738 education & health sites →