accueil / serveurs / Communication / com.extralingo/extralingo
com.extralingo/extralingo
serveur MCP (Model Context Protocol) · extralingo 3.0.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.extralingo/extralingo est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.extralingo/extralingo » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 17 outils
- ask_school_question≈ 721 tokens
Send a question to the school without a full trip configuration. Requires OAuth requests scope. Optional idempotency_key.
Paramètres, retour & exemple (8)
Paramètrescontact· object · optionnel
Optional first_name, last_name. Email always comes from the verified account.message· string · requis
Student message to the school.trip_id· string · optionnel
Optional trip_id from save_trip.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.school_id· integer · requis
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.configuration· object · optionnel
Same shape as the Extralingo school-page configurator: startDate (YYYY-MM-DD), students[] with courseId, weeks, optional accommodationGroupId, mealType, extras.idempotencyKey· string · optionnel
Optional alias of idempotency_key.idempotency_key· string · optionnel
Optional. Same semantics as create_booking (24 hour replay window).
Exemple d'appel{"name": "ask_school_question", "arguments": {"message": "texte", "school_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"kind": "question", "message": "texte", "success": "texte", "redirectUrl": "texte", "newBookingId": 1}} - calculate_trip_price≈ 666 tokens
Live checkout quote for a configuration. Not a booking. Call before create_booking and before telling the student a final price.
Paramètres, retour & exemple (7)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.trip_id· string · optionnel
Optional saved trip id; when set, the quote may be stored on that trip.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.school_id· integer · optionnel
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.country_code· string · optionnel
Visitor country ISO 3166-1 alpha-2 (e.g. NL). Affects fee display where applicable.discountCode· string · optionnel
Optional promotion or discount code.configuration· object · optionnel
Same shape as the Extralingo school-page configurator: startDate (YYYY-MM-DD), students[] with courseId, weeks, optional accommodationGroupId, mealType, extras.
Exemple d'appel{"name": "calculate_trip_price", "arguments": {"locale": "en", "trip_id": "texte", "currency": "texte", "school_id": 1, "country_code": "texte", "discountCode": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": {}, "quote": {}, "success": "texte"}} - create_booking≈ 960 tokens
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.
Paramètres, retour & exemple (13)
Paramètresphone· string · optionnel
Student phone number (required).contact· object · optionnel
Optional first_name, last_name, phone. Email always comes from the verified account; contact.email must match or be omitted.trip_id· string · optionnel
Optional trip_id from save_trip linking this booking to a draft.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.school_id· integer · optionnel
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.phoneCountry· string · optionnel
ISO 3166-1 alpha-2 country for the phone (e.g. NL).configuration· object · optionnel
Same shape as the Extralingo school-page configurator: startDate (YYYY-MM-DD), students[] with courseId, weeks, optional accommodationGroupId, mealType, extras.termsAccepted· boolean · optionnel
Must be true when not using OAuth (OAuth grants record acceptance).idempotencyKey· string · optionnel
Optional alias of idempotency_key.studentDetails· array · optionnel
Per-student details aligned with configuration.students (names, dates of birth, etc.).idempotency_key· string · optionnel
Optional. Same key + same payload within 24 hours replays the original response; conflicting payload returns validation_failed.privacyAccepted· boolean · optionnel
Must be true when not using OAuth.specialRequests· string · optionnel
Free-text notes for the school.
Exemple d'appel{"name": "create_booking", "arguments": {"phone": "texte", "contact": {}, "trip_id": "texte", "currency": "texte", "school_id": 1, "phoneCountry": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "texte", "success": "texte", "bookingId": 1, "redirectUrl": "texte", "studentMessage": "texte", "bookingReference": "texte", "agent_must_tell_the_user": []}} - email_trip≈ 368 tokens
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.
Paramètres, retour & exemple (5)
Paramètresemail· string · optionnel
Optional. Must match the verified OAuth account email if sent. The link is always sent to that account.locale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.trip_id· string · requis
trip_id from save_trip.lastName· string · optionnel
Optional salutation for the email body.firstName· string · optionnel
Optional salutation for the email body.
Exemple d'appel{"name": "email_trip", "arguments": {"trip_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "message": "texte", "success": "texte", "trip_id": "texte", "trip_url": "texte", "emailed_to": "texte", "continue_url": "texte"}} - get_accommodation_details≈ 783 tokens
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.
Paramètres, retour & exemple (4)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.group_id· string · requis
Accommodation group id from list_accommodations.startDate· string · optionnel
Course start calendar date (YYYY-MM-DD). Typically a Monday from list_starting_dates.
Exemple d'appel{"name": "get_accommodation_details", "arguments": {"group_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"group": {}, "success": "texte"}} - get_course_details≈ 363 tokens
Details for one course id from list_courses (pricing rows, supplements, metadata).
Paramètres, retour & exemple (5)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.course_id· string · requis
Course product id from list_courses.school_id· integer · requis
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.startDate· string · optionnel
Course start calendar date (YYYY-MM-DD). Typically a Monday from list_starting_dates.
Exemple d'appel{"name": "get_course_details", "arguments": {"course_id": "texte", "school_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"course": {}, "success": "texte"}} - get_school≈ 331 tokens
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.
Paramètres, retour & exemple (3)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.school_id· integer · requis
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.include_hero_image· boolean · optionnel
When true, structuredContent may include a compressed JPEG in MCP image content; hero_image is stripped from structuredContent after attach.
Exemple d'appel{"name": "get_school", "arguments": {"school_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": {}, "success": "texte"}} - get_school_filters≈ 204 tokens
Valid filter values for search_language_schools (languages, countries, cities, course types, and other facets).
Paramètres, retour & exemple (1)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.
Exemple d'appel{"name": "get_school_filters", "arguments": {"locale": "en"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": {}, "success": "texte"}} - get_trip≈ 311 tokens
Load a saved trip by trip_id from save_trip. Returns continue_url for website handoff with configuration restored.
Paramètres, retour & exemple (1)
Paramètrestrip_id· string · requis
trip_id returned by save_trip.
Exemple d'appel{"name": "get_trip", "arguments": {"trip_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "note": "texte", "success": "texte", "summary": "texte", "trip_id": "texte", "trip_url": "texte", "school_id": 1, "school_url": "texte", "school_name": "texte", "continue_url": "texte", "configuration": {}}} - list_accommodations≈ 536 tokens
Accommodation groups for a school. Use group ids in save_trip configuration (accommodationGroupId).
Paramètres, retour & exemple (5)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.school_id· integer · requis
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.startDate· string · optionnel
Course start calendar date (YYYY-MM-DD). Typically a Monday from list_starting_dates.country_code· string · optionnel
Visitor country ISO 3166-1 alpha-2 (e.g. NL). Affects fee display where applicable.
Exemple d'appel{"name": "list_accommodations", "arguments": {"school_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"school": {}, "success": "texte", "currency": "texte", "start_date": "texte", "location_discount": {}, "busy_school_months": {}, "accommodation_groups": [], "has_location_discounts": true, "accommodation_categories": [], "allows_double_room_individual_bookings": true}} - list_courses≈ 527 tokens
Live course catalogue for a bookings_live school (course ids, weeks, prices). Use returned course ids inside save_trip configuration.
Paramètres, retour & exemple (5)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.school_id· integer · requis
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.startDate· string · optionnel
Course start calendar date (YYYY-MM-DD). Typically a Monday from list_starting_dates.country_code· string · optionnel
Visitor country ISO 3166-1 alpha-2 (e.g. NL). Affects fee display where applicable.
Exemple d'appel{"name": "list_courses", "arguments": {"school_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"school": {}, "success": "texte", "currency": "texte", "start_date": "texte", "course_types": [], "pricing_rule": {}, "location_discount": {}, "busy_school_months": {}, "has_location_discounts": true}} - list_starting_dates≈ 264 tokens
Allowed course start dates (typically Mondays) for a school. Use startDate values in list_courses and configuration.startDate.
Paramètres, retour & exemple (2)
Paramètreslocale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.school_id· integer · requis
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.
Exemple d'appel{"name": "list_starting_dates", "arguments": {"school_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"dates": [], "success": "texte"}} - request_discussion≈ 774 tokens
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.
Paramètres, retour & exemple (8)
Paramètrescontact· object · optionnel
Optional first_name, last_name. Email always comes from the verified account.message· string · optionnel
Student message to the school.trip_id· string · optionnel
Optional trip_id from save_trip.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.school_id· integer · optionnel
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.configuration· object · optionnel
Same shape as the Extralingo school-page configurator: startDate (YYYY-MM-DD), students[] with courseId, weeks, optional accommodationGroupId, mealType, extras.idempotencyKey· string · optionnel
Optional alias of idempotency_key.idempotency_key· string · optionnel
Optional. Same semantics as create_booking (24 hour replay window).
Exemple d'appel{"name": "request_discussion", "arguments": {"contact": {}, "message": "texte", "trip_id": "texte", "currency": "texte", "school_id": 1, "configuration": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"kind": "discussion", "message": "texte", "success": "texte", "redirectUrl": "texte", "newBookingId": 1}} - request_quote≈ 716 tokens
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.
Paramètres, retour & exemple (8)
Paramètrescontact· object · optionnel
Optional first_name, last_name. Email always comes from the verified account.trip_id· string · optionnel
Optional trip_id from save_trip.comments· string · optionnel
Student message to the school.currency· string · optionnel
ISO 4217 currency for prices in this call. Usually EUR.school_id· integer · optionnel
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.configuration· object · optionnel
Same shape as the Extralingo school-page configurator: startDate (YYYY-MM-DD), students[] with courseId, weeks, optional accommodationGroupId, mealType, extras.idempotencyKey· string · optionnel
Optional alias of idempotency_key.idempotency_key· string · optionnel
Optional. Same semantics as create_booking (24 hour replay window).
Exemple d'appel{"name": "request_quote", "arguments": {"contact": {}, "trip_id": "texte", "comments": "texte", "currency": "texte", "school_id": 1, "configuration": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"kind": "quote", "message": "texte", "success": "texte", "redirectUrl": "texte", "newBookingId": 1}} - save_trip≈ 726 tokens
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).
Paramètres, retour & exemple (5)
Paramètresemail· string · optionnel
Optional student email for anonymous drafts. With OAuth, the verified account email is used.locale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.trip_id· string · optionnel
Omit to create a new trip. Pass an existing trip_id from save_trip to update the same continue_url.school_id· integer · optionnel
Craft CMS school entry id from search_language_schools hits (field school_id). Not the CRM UUID.configuration· object · optionnel
Same shape as the Extralingo school-page configurator: startDate (YYYY-MM-DD), students[] with courseId, weeks, optional accommodationGroupId, mealType, extras.
Exemple d'appel{"name": "save_trip", "arguments": {"email": "texte", "locale": "en", "trip_id": "texte", "school_id": 1, "configuration": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "note": "texte", "success": "texte", "summary": "texte", "trip_id": "texte", "trip_url": "texte", "school_id": 1, "school_url": "texte", "school_name": "texte", "continue_url": "texte", "configuration": {}}} - search_destinations≈ 352 tokens
Search cities, countries, and school names. Use before search_language_schools to resolve place names to slugs.
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnel
Maximum results (1–20).query· string · optionnel
Destination or school name prefix. Empty returns popular destinations.locale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.language· string · optionnel
Optional language slug to restrict destinations (e.g. spanish).
Exemple d'appel{"name": "search_destinations", "arguments": {"limit": 1, "query": "texte", "locale": "en", "language": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"hits": [], "query": "texte", "locale": "en", "schools": [], "success": "texte"}} - search_language_schools≈ 470 tokens
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.
Paramètres, retour & exemple (8)
Paramètrescity· string · optionnel
Single city slug filter. Prefer cities[] for multiple.limit· integer · optionnel
Maximum schools to return (1–20).query· string · optionnel
Free-text search (school name, city, or keyword). Empty returns popular matches for the other filters.cities· array · optionnel
City slug filters from get_school_filters.locale· string · optionnel · en | nl | da | sv
Response language and site context. One of en, nl, da, sv.country· string · optionnel
Country slug or name filter from get_school_filters.language· string · optionnel
Language slug filter from get_school_filters (e.g. spanish, english).course_type· string · optionnel
Course type slug from get_school_filters (e.g. intensive, private).
Exemple d'appel{"name": "search_language_schools", "arguments": {"city": "texte", "limit": 1, "query": "texte", "cities": [], "locale": "en", "country": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": {}, "success": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».