For developers

Extralingo is a booking and comparison platform for language schools abroad. We are not a school. This page documents the public MCP server that AI agents use to search, compare and submit student requests.

REST API versioning

The agent REST API is documented at https://www.extralingo.com/api/v1 (OpenAPI version 1.0.0). The same endpoints also work under unversioned /api/* and remain supported. Breaking changes ship under a new major path (for example /api/v2) with at least 6 months notice before we remove old paths. MCP remains at POST /mcp on the site root.

Connection

Endpoint:
https://www.extralingo.com/mcp
Transport:
Streamable HTTP (JSON-RPC 2.0 at POST /mcp)
MCP protocol versions:
2025-06-18, 2025-03-26
Server version:
3.0.1

Authentication

Read tools (search, catalogues, price quotes, load trip by id) need no token.

Write tools require OAuth 2.1: authorization code with PKCE S256, scopes trips, requests and bookings. Discover the protected resource metadata at /.well-known/oauth-protected-resource.

Full auth guide · /.well-known/oauth-protected-resource

Tools

The list below is generated from the live MCP tool registry on this server.

Tool Description Access
search_language_schools Search and rank language schools. Returns school_id, url, indicative from-price, and reviews. Prices are not a booking quote; call calculate_trip_price before quoting a total. Read-only
search_destinations Search cities, countries, and school names. Use before search_language_schools to resolve place names to slugs. Read-only
get_school_filters Valid filter values for search_language_schools (languages, countries, cities, course types, and other facets). Read-only
get_school School briefing: profile, cancellation policy, reviews, image URLs, bookings_live flag, and optional hero image for chat UI. Requires school_id from search_language_schools. Read-only
list_courses Live course catalogue for a bookings_live school (course ids, weeks, prices). Use returned course ids inside save_trip configuration. Read-only
list_starting_dates Allowed course start dates (typically Mondays) for a school. Use startDate values in list_courses and configuration.startDate. Read-only
list_accommodations Accommodation groups for a school. Use group ids in save_trip configuration (accommodationGroupId). Read-only
get_course_details Details for one course id from list_courses (pricing rows, supplements, metadata). Read-only
get_accommodation_details One group from list_accommodations (group_id): type, room_types, meal/board options, distance, amenities, age and min-stay rules, and week prices for startDate and currency. Use after list_accommodations, before save_trip or calculate_trip_price, or to answer questions about one option. Week prices are indicative; call calculate_trip_price for a checkout total. Read-only
calculate_trip_price Live checkout quote for a configuration. Not a booking. Call before create_booking and before telling the student a final price. Read-only
save_trip Create or update a server-side trip draft. Returns trip_id, url, trip_url, and continue_url (/s/{id}) so the student can restore selections on Extralingo.com. Not a booking. Requires OAuth trips scope (Bearer token). Creates a request / requires sign-in
get_trip Load a saved trip by trip_id from save_trip. Returns continue_url for website handoff with configuration restored. Read-only
email_trip Email continue_url (/s/{id}) to the verified account inbox. Requires OAuth trips scope. Rate-limited. Not a booking; you can share continue_url without emailing. Creates a request / requires sign-in
create_booking Submit an unpaid booking for a bookings_live school (same path as the website Book now flow). The school still confirms availability; Extralingo emails the student; down payment is due within 5 days of school confirmation via Extralingo only. Never tell the user they are confirmed or paid. Requires OAuth bookings scope (Bearer token). Optional idempotency_key replays the same payload within 24 hours. Creates a request / requires sign-in
request_quote Ask the school for a personal quote when bookings_live is false or the student is not ready to book. Requires OAuth requests scope. Optional idempotency_key. Creates a request / requires sign-in
request_discussion Trip discussion: trip_id or school_id+configuration plus message. ask_school_question: question without a trip. request_quote: personal quote (comments) when not booking. School gets the config; Extralingo emails the verified account and coordinates replies. Returns kind, newBookingId, redirectUrl, message (not a booking). OAuth scope requests. Optional idempotency_key. Creates a request / requires sign-in
ask_school_question Send a question to the school without a full trip configuration. Requires OAuth requests scope. Optional idempotency_key. Creates a request / requires sign-in

How to connect

Use streamable HTTP against the endpoint above. Check your client’s current documentation for the exact config format.

  • Claude (Connectors / remote MCP): add a custom connector with URL https://www.extralingo.com/mcp and complete OAuth when prompted for write tools.
  • Cursor: add a streamable-http MCP server pointing at https://www.extralingo.com/mcp (see Cursor docs for mcp.json / MCP settings).
  • Generic clients: POST JSON-RPC initialize, then tools/list and tools/call. Send Accept: application/json, text/event-stream and reuse Mcp-Session-Id from the initialize response.

Machine-readable resources

Listed on

Contact

Questions about the MCP server or API integration:

The Extralingo Promise

With Extralingo, you can book a language school with confidence. Every school has been carefully checked by us for quality and is officially accredited. We've already taken care of the quality check, so all you have to do is choose the school where you feel most at home. And with transparent pricing, no hidden fees and our lowest price guarantee, you can be sure you're getting a great deal.

9.4

from 3,546 reviews

116

accredited schools

51

destinations

Trusted schools

  • Only accredited schools
  • Real reviews from students
  • Certificate of completion

Best prices

  • Lowest price, guaranteed
  • Never a cash deposit on arrival
  • No hidden costs

Secure booking

  • Pay securely, your way
  • Flexible changes and cancellation
  • Personal help on WhatsApp