Sonatina Piano Camps MCP
An MCP server that allows AI assistants to retrieve Sonatina piano camp programs, dates, and tuition information. It facilitates enrollment by asking the user the necessary form questions and returning a pre-filled link to the official Sonatina enrollment form, without submitting data or charging fees.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.sonatina.com/mcpWhat its tools do
3 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Retrieve upcoming camp dates and tuition fees
- Identify required enrollment form fields
- Generate a pre-filled enrollment form link
Source and maintenance
Protocol and capabilities
- Server
- sonatina 0.1.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 3 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
get_catalog — Sonatina programs, dates, tuition and policies
This year's programs with session dates and tuition, next year's under `nextYear` once its dates are posted, the online offerings, and the policy FAQ (payment deadlines, cancellations). Session dates carry no year: take it from `year` or `nextYear.year`. Some of this year's sessions may be over; get_enrollment_form lists only weeks still ahead. Read-only. No seat counts.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false
}get_enrollment_form — A program's enrollment form: upcoming weeks and the questions to ask
Everything needed to interview someone for one program's enrollment form: the upcoming weeks on the form (productId, dates, pay-in-full / deposit prices, whether enrollment is open), the questions you may prefill (key, what to ask, kind, choices, required), who must fill it in, and what they still have to do on the form themselves. Read-only. Programs: sonata = The Sonatas (adult week-long camps); intermezzo = The Intermezzi (adult long weekends); capriccio = The Capriccios & Suites (adult); sonatina = Summer Sonatina (children); virtual = Virtual courses and camps.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"program"
],
"properties": {
"program": {
"enum": [
"sonata",
"intermezzo",
"capriccio",
"sonatina",
"virtual"
],
"type": "string"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}build_enrollment_link — Build a prefilled enrollment form link
Builds a link to the program's Jotform with the person's answers filled in and, if given, the week and the pay-in-full / deposit choice preselected. This does NOT enroll, reserve a seat or charge anything: the person must open the link, check the answers, accept the waivers, pay and submit on the form. Answers are not stored or logged. Use keys from get_enrollment_form; unknown keys and invalid answers are returned in `skipped`, required questions not yet answered in `missingRequired` (they can still answer them on the form), and answers to confirm with the person before handing over the link in `warnings`.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"program",
"answers"
],
"properties": {
"answers": {
"type": "object",
"description": "Question key → answer. Addresses are objects; everything else is a string.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
]
}
},
"program": {
"enum": [
"sonata",
"intermezzo",
"capriccio",
"sonatina",
"virtual"
],
"type": "string"
},
"productId": {
"type": "string",
"description": "A week from get_enrollment_form. Omit to let them pick on the form."
},
"paymentOption": {
"type": "string",
"description": "One of the week's paymentOptions labels, e.g. 'Pay Deposit'."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-02: 2 of 2 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 326 ms
- 95th percentile latency
- 326 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 326 ms · metadata changed · 3 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http sonatina-piano-camps-mcp https://www.sonatina.com/mcpCodex
codex mcp add sonatina-piano-camps-mcp --url https://www.sonatina.com/mcpCursor
{
"mcpServers": {
"sonatina-piano-camps-mcp": {
"url": "https://www.sonatina.com/mcp"
}
}
}Cline
{
"mcpServers": {
"sonatina-piano-camps-mcp": {
"type": "streamableHttp",
"url": "https://www.sonatina.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"sonatina-piano-camps-mcp": {
"type": "http",
"url": "https://www.sonatina.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http sonatina-piano-camps-mcp https://www.sonatina.com/mcpClaude Desktop
{
"mcpServers": {
"sonatina-piano-camps-mcp": {
"url": "https://www.sonatina.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"sonatina-piano-camps-mcp": {
"serverUrl": "https://www.sonatina.com/mcp"
}
}
}Let your agent find its tools
Find servers like Sonatina Piano Camps MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.