Sonatina Piano Camps
Piano camp programs, dates and tuition, and prefilled enrollment forms for Sonatina camps.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"sonatina": {
"url": "https://www.sonatina.com/mcp"
}
}
}Remote endpoints
https://www.sonatina.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢get_catalog
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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_enrollment_form(program)
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.
Input Schema
{
"type": "object",
"properties": {
"program": {
"type": "string",
"enum": [
"sonata",
"intermezzo",
"capriccio",
"sonatina",
"virtual"
]
}
},
"required": [
"program"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢build_enrollment_link(program, productId, paymentOption, answers)
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`.
Input Schema
{
"type": "object",
"properties": {
"program": {
"type": "string",
"enum": [
"sonata",
"intermezzo",
"capriccio",
"sonatina",
"virtual"
]
},
"productId": {
"description": "A week from get_enrollment_form. Omit to let them pick on the form.",
"type": "string"
},
"paymentOption": {
"description": "One of the week's paymentOptions labels, e.g. 'Pay Deposit'.",
"type": "string"
},
"answers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
]
},
"description": "Question key → answer. Addresses are objects; everything else is a string."
}
},
"required": [
"program",
"answers"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence