REST API-versies
De agent-REST API is gedocumenteerd op https://www.extralingo.com/api/v1 (OpenAPI-versie 1.0.0). Dezelfde endpoints werken ook onder unversioned /api/* en blijven ondersteund. Breaking changes komen onder een nieuw major-pad (bijvoorbeeld /api/v2) met minstens 6 maanden notice voordat oude paden verdwijnen. MCP blijft op POST /mcp op de site-root.
Verbinding
- Endpoint:
https://www.extralingo.com/mcp- Transport:
- Streamable HTTP (JSON-RPC 2.0 via POST /mcp)
- MCP-protocolversies:
2025-06-18, 2025-03-26- Serverversie:
3.0.1
Authenticatie
Leestools (zoeken, catalogi, prijsquotes, trip laden op id) hebben geen token nodig.
Schrijftools vereisen OAuth 2.1: authorization code met PKCE S256, scopes trips, requests en bookings. Protected resource metadata staat op /.well-known/oauth-protected-resource.
Tools
De lijst hieronder komt uit het live MCP-toolregister op deze server.
| Tool | Beschrijving | Toegang |
|---|---|---|
| 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. | Alleen lezen |
| search_destinations | Search cities, countries, and school names. Use before search_language_schools to resolve place names to slugs. | Alleen lezen |
| get_school_filters | Valid filter values for search_language_schools (languages, countries, cities, course types, and other facets). | Alleen lezen |
| 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. | Alleen lezen |
| list_courses | Live course catalogue for a bookings_live school (course ids, weeks, prices). Use returned course ids inside save_trip configuration. | Alleen lezen |
| list_starting_dates | Allowed course start dates (typically Mondays) for a school. Use startDate values in list_courses and configuration.startDate. | Alleen lezen |
| list_accommodations | Accommodation groups for a school. Use group ids in save_trip configuration (accommodationGroupId). | Alleen lezen |
| get_course_details | Details for one course id from list_courses (pricing rows, supplements, metadata). | Alleen lezen |
| 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. | Alleen lezen |
| calculate_trip_price | Live checkout quote for a configuration. Not a booking. Call before create_booking and before telling the student a final price. | Alleen lezen |
| 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). | Maakt een verzoek aan / vereist inloggen |
| get_trip | Load a saved trip by trip_id from save_trip. Returns continue_url for website handoff with configuration restored. | Alleen lezen |
| 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. | Maakt een verzoek aan / vereist inloggen |
| 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. | Maakt een verzoek aan / vereist inloggen |
| 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. | Maakt een verzoek aan / vereist inloggen |
| 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. | Maakt een verzoek aan / vereist inloggen |
| ask_school_question | Send a question to the school without a full trip configuration. Requires OAuth requests scope. Optional idempotency_key. | Maakt een verzoek aan / vereist inloggen |
Zo verbind je
Gebruik streamable HTTP op het endpoint hierboven. Raadpleeg de actuele documentatie van je client voor het exacte configformaat.
- Claude (Connectors / remote MCP): voeg een custom connector toe met URL https://www.extralingo.com/mcp en doorloop OAuth wanneer schrijftools dat vragen.
- Cursor: voeg een streamable-http MCP-server toe op https://www.extralingo.com/mcp (zie Cursor-docs voor mcp.json / MCP-instellingen).
- Generieke clients: POST JSON-RPC initialize, daarna tools/list en tools/call. Stuur Accept: application/json, text/event-stream en hergebruik Mcp-Session-Id uit de initialize-response.
Machineleesbare bronnen
- Site-index voor agents
- Veel openbare pagina’s reageren ook op Accept: text/markdown.
- MCP-serverkaart
- Agent resource directory (ARD)
- AI-catalogus (zelfde payload als ARD)
- OpenAPI 3.1 (REST)
- Authenticatiegids
Gelist op
Contact
Vragen over de MCP-server of API-integratie:



