← WebMCP Directory

dust-off-piano.netlify.app

dust-off-piano.netlify.app

live Unverified (seed import) Health & Education 16 tools imperative implementation

A beginner piano tutor that can hear what you play and play back to you, built on WebMCP. Works with a MIDI keyboard or the keys on screen.

First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com

Answer 7 · Act 8 · Transact 1 · Score: Not yet scored

Tool inspector

save_lesson

act imperative

Write a lesson into the library so the student can do it again on their own, without you. This is the most valuable thing you can do here. A live session ends when you stop talking; a saved lesson is still there on Tuesday morning. Write one at the end of anything that went well, shaped around what you just watched them struggle with — the page can perform every step of it with no agent involved. Pass an existing id to revise a lesson instead of adding another near-duplicate. Steps run in order: "say" is text alone, "show" lights keys with finger numbers, "demo" plays it for them, "play" waits for them and grades it. Give it at least one "play" step.

Input schema

PropertyTypeRequiredDescription
id string no Omit to create. Pass an existing id to revise that lesson.
title string yes Short and concrete, e.g. "G to A, slowly".
summary string no One line the student will read on the lesson card.
level string no How hard it is.
tempo integer no Beats per minute for the demonstrations. 60-80 suits a beginner.
steps array yes The lesson, in order.
Raw JSON schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Omit to create. Pass an existing id to revise that lesson."
    },
    "title": {
      "type": "string",
      "description": "Short and concrete, e.g. \"G to A, slowly\"."
    },
    "summary": {
      "type": "string",
      "description": "One line the student will read on the lesson card."
    },
    "level": {
      "type": "string",
      "enum": [
        "first steps",
        "beginner",
        "improver",
        "challenge"
      ],
      "description": "How hard it is."
    },
    "tempo": {
      "type": "integer",
      "description": "Beats per minute for the demonstrations. 60-80 suits a beginner."
    },
    "steps": {
      "type": "array",
      "description": "The lesson, in order.",
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "say",
              "show",
              "demo",
              "play"
            ],
            "description": "say | show | demo | play"
          },
          "text": {
            "type": "string",
            "description": "What the page tells the student at this step."
          },
          "notes": {
            "type": "array",
            "description": "Note names like \"C4\" or MIDI numbers. Nest an array for a chord. Required except for \"say\".",
            "items": {}
          },
          "fingers": {
            "type": "array",
            "description": "Finger per note, 1 = thumb to 5 = little.",
            "items": {
              "type": "integer"
            }
          },
          "label": {
            "type": "string",
            "description": "A name for what is highlighted, e.g. \"C major\"."
          },
          "beats": {
            "type": "number",
            "description": "demo only — beats per note. 1 is a steady walk."
          },
          "together": {
            "type": "boolean",
            "description": "demo only — sound the notes as one chord."
          },
          "focus": {
            "type": "string",
            "enum": [
              "accuracy",
              "timing",
              "evenness"
            ],
            "description": "play only — what to judge. \"accuracy\" is the right notes, \"timing\" is steady gaps, \"evenness\" is every note the same volume. Touch is the thing beginners cannot hear in themselves and the page can measure, so it is worth a step of its own."
          },
          "ignore_octave": {
            "type": "boolean",
            "description": "play only — accept the right notes in any octave."
          }
        },
        "required": [
          "kind"
        ]
      }
    }
  },
  "required": [
    "title",
    "steps"
  ]
}

Similar websites

pocketgull.app

pocketgull.app

Pocket Gull is a real-time clinical AI consult engine powered by Google Gemini. Features 10D multi-paradigm strategy, FHIR R4 export & 3D spatial anatomy.

live Unverified Health & Education Transact tools
98 tools A20 / Act75 / T3 Not yet scored Seen 2026-11-05
generate_medical_summary translate_clinical_text get_current_patient_data navigate_to_body_part inject_clinical_note
Inspect tools
webmcp-six-lac.vercel.app

webmcp-six-lac.vercel.app

AI Navigation Layer: Model Context Protocol (MCP) Semantic DOM integration for intelligent, safe, and observable web navigation.

live Unverified Health & Education
93 tools A4 / Act89 / T0 Not yet scored Seen 2026-11-05
ver_certificados ver_certificado_react meus_cursos abrir_curso_react abrir_curso_nextjs
Inspect tools
ghqsandbox.net

ghqsandbox.net

Interactive math and physics tools an AI agent can drive directly through WebMCP.

live Unverified Health & Education
91 tools A22 / Act69 / T0 Not yet scored Seen 2026-11-05
list_learning_tools open_tool list_expressions add_expression plot_point
Inspect tools
app.formative.com

app.formative.com

Formative classroom assessment and learning platform

live Unverified Health & Education Transact tools
86 tools A41 / Act36 / T9 Not yet scored Seen 2026-11-05
addFolder addFormative addFormativeItem addOneRoster addOrg
Inspect tools

Related on Influzer