Model Context Protocol

Connect Your AI to Find a Ski School

Use the MCP server to let your AI assistant search ski schools, manage your school profile, handle bookings, respond to reviews, and more — all through natural language.

Quick Start

1Get Your API Key

If you're a school owner, go to your School assistant access page to approve a short-lived key for a school you own or co-own. Select only the scopes your assistant needs. Administrator-issued service keys are also supported. Public searches need no key.

2Configure Your AI Client

Claude Desktop / Claude Code

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "find-a-ski-school": {
      "url": "https://findaskischool.com/mcp",
      "headers": {
        "Authorization": "Bearer fass_YOUR_API_KEY_HERE"
      }
    }
  }
}

Cursor / VS Code / Windsurf

Add this to your .cursor/mcp.json or equivalent settings:

{
  "mcpServers": {
    "find-a-ski-school": {
      "url": "https://findaskischool.com/mcp",
      "headers": {
        "Authorization": "Bearer fass_YOUR_API_KEY_HERE"
      }
    }
  }
}

Any MCP-compatible client

The MCP endpoint is:

https://findaskischool.com/mcp

Transport: Streamable HTTP (the modern MCP transport protocol). Pass your API key in the Authorization: Bearer fass_xxx header on every authenticated request, including the session's POST, GET, and DELETE requests. A session ID alone does not authenticate a request.

3Start Using It

Once configured, you can ask your AI things like:

"Find ski schools in Chamonix"
"Show me my school's bookings for this week and confirm the pending ones"
"Update my school's description to mention our new snowboard park lessons"
"Respond to the latest 3-star review thanking them for the feedback"

Public ToolsNo auth required

These tools work without an API key. Anyone can search schools, resorts, and instructors.

search_lessons

Search published lessons with the website's filters and bounded pagination

get_lesson_detail

Read public lesson details, pricing options, and the booking page

get_lesson_availability

Check advisory dates and start times, including instructor calendars when selected

get_lesson_quote

Get a provisional server price in the supported charge currency; no places are reserved

search_schools

Search ski schools by name, country, resort, or activity

get_school_detail

Get detailed info about a specific ski school

search_resorts

Search ski resorts by name or country

get_resort_detail

Get detailed info about a specific resort

list_countries

List all countries with ski schools/resorts

list_activities

List all snow sport activities

search_instructors

Search for ski instructors by name, language, or speciality

compare_schools

Compare multiple schools side by side

Book through your assistant

Sign in with a verified personal account and approve a short-lived customer key. Customer keys can access only your own booking flow; they cannot manage schools or platform content.

Manage personal assistant access
  • prepare_customer_booking — Prepare a customer-bound confirmation link with customer:bookings:write. Complete participant details, policy acceptance, CAPTCHA, and payment in the browser. The booking is created when you submit those checks.
  • list_my_customer_bookings — Read a bounded list of your own bookings with customer:bookings:read.
  • get_customer_booking_status — Check your booking or handoff status with customer:bookings:read; checkout secrets remain in the browser.

Availability and quotes are provisional. Advisory school times do not confirm remaining places; the booking flow rechecks capacity, eligibility, and the accepted price before creating a pending booking and opening checkout where online payment is enabled.

Management ToolsAPI key required

These tools require an API key linked to your school and every scope shown for the tool. Read scopes and write scopes are both enforced.

MCP covers profile contact details, basic instructor and lesson management, booking status, reviews, analytics, calendar and instructor availability reads, and authorised inbox reads. Use the dashboard for messages and operational changes, rescheduling, refunds, school photos and policies, and full lesson configuration. Customer booking uses separate personal credentials and browser confirmation; payment remains in the browser.

get_my_calendarbookings:readinstructors:readavailability:read

Read bookings and saved availability across up to 31 school-local days without learner contact, health, or payment data

get_instructor_availabilityinstructors:readavailability:read

Read a current team instructor's saved school availability; this does not establish complete cross-school capacity

list_school_conversationsmessages:read

Page through inbox metadata with a current owner/co-owner-issued key and the account's existing history boundary

get_school_conversationmessages:read

Read thread metadata without marking it read; bounded message content is included only on explicit request

get_my_schoolschools:readinstructors:readlessons:read

View your school profile and settings

update_my_schoolschools:write

Update description, website, contact email, phone, and default currency

list_my_instructorsinstructors:read

List all instructors at your school

add_instructorinstructors:write

Add a new instructor to your school

update_instructorinstructors:write

Update instructor profile, bio, specialities

remove_instructorinstructors:write

Remove an instructor from your school

list_my_lessonslessons:read

List all lessons offered by your school

add_lessonlessons:write

Create a new lesson offering

update_lessonlessons:write

Update basic lesson details, flat price, start/end times, and status

delete_lessonlessons:write

Permanently delete an archived lesson from your school

list_my_bookingsbookings:read

Page through your school's bookings, with status and date filters

get_my_bookingbookings:read

Get one booking belonging to your school by booking ID

confirm_bookingbookings:write

Confirm a pending booking

cancel_bookingbookings:write

Cancel a booking by ID; cancellation does not issue a payment refund

complete_bookingbookings:write

Mark a booking as completed

list_my_reviewsreviews:read

View all reviews for your school

respond_to_reviewreviews:write

Post a public response to a review

delete_review_responsereviews:write

Remove your response from a review

get_my_analyticsanalytics:read

View school analytics (views, clicks, bookings)

get_my_dashboardanalytics:readbookings:readreviews:readinstructors:read

Get dashboard summary stats

Read bookings across pages

list_my_bookings accepts optional status, start_date (inclusive), and end_date (exclusive) filters, plus limit (default 50, maximum 100) and offset (default 0). Dates use ISO 8601 timestamps with a timezone. Both booking read tools require bookings:read.

{
  "name": "list_my_bookings",
  "arguments": {
    "status": "pending",
    "limit": 50,
    "offset": 0,
    "start_date": "2026-12-01T00:00:00Z",
    "end_date": "2027-01-01T00:00:00Z"
  }
}

The result contains total, limit, offset, nextOffset, and bookings. Repeat the same filters with offset set to nextOffset until nextOffset is null. Use get_my_booking with booking_id to read one booking directly.

Server Information

Endpointhttps://findaskischool.com/mcp
TransportStreamable HTTP (MCP 2025-03-26)
AuthenticationBearer token in Authorization header on every authenticated request
Rate LimitsPer-IP and shared per-key budgets apply, with an additional school management call limit and a separate failed-authentication throttle
Info Endpointhttps://findaskischool.com/mcp/info
Version2.0.0

Frequently Asked Questions

Do I need an API key to search for schools?

No. The 12 public discovery tools work without authentication. Reading or changing private school data requires a school-scoped API key and the matching read or write scope.

Can I use this with ChatGPT?

Use a connector or client that supports remote Streamable HTTP servers and bearer headers. Availability and setup depend on your client and plan. Custom GPT Actions use the separate REST/OpenAPI interface.

Is my data safe?

API keys are hashed before storage. School keys are restricted to their linked school and granted scopes; platform administration and content use separate restricted keys. Owners can revoke or rotate their self-service keys from School assistant access. These short-lived keys also stop working when the issuer loses ownership access. Keep every key private and give an assistant only the scopes it needs.

What's the difference between SSE and Streamable HTTP?

Streamable HTTP is the modern MCP transport protocol (2025-03-26 spec). It supports both streaming and direct JSON responses. Most modern MCP clients support it natively. If your client only supports the older SSE transport, please contact us for assistance.

Ready to get started? Create your API key and connect your AI assistant.