Search / com.extralingo/extralingo
Extralingo
R0· no sign-inSearch language schools abroad, compare courses, dates and prices, and request bookings.
v3.0.1 · active · website · descriptor JSON · versions
Search / com.extralingo/extralingo
R0· no sign-inSearch language schools abroad, compare courses, dates and prices, and request bookings.
v3.0.1 · active · website · descriptor JSON · versions
{
"mcpServers": {
"extralingo": {
"type": "http",
"url": "https://www.extralingo.com/mcp"
}
}
}claude mcp add --transport http extralingo https://www.extralingo.com/mcp[mcp_servers.extralingo]
url = "https://www.extralingo.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"extralingo": {
"type": "remote",
"url": "https://www.extralingo.com/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"extralingo": {
"type": "http",
"url": "https://www.extralingo.com/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=extralingo&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd3d3LmV4dHJhbGluZ28uY29tL21jcCJ9"
}{
"servers": {
"extralingo": {
"type": "http",
"url": "https://www.extralingo.com/mcp"
}
}
}{
"mcpServers": {
"extralingo": {
"httpUrl": "https://www.extralingo.com/mcp"
}
}
}extensions:
"extralingo":
enabled: true
name: "extralingo"
type: streamable_http
uri: "https://www.extralingo.com/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations17 of 17 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 5,955 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes17 tool changes in 30 daysstability.rug_pull5 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageask_school_questionchangeddescription, input schema, output schemameaning changedSend a question to the school without a full trip config. Requires auth_token. Contact email is always the verified account email.
Send a question to the school without a full trip configuration. Requires OAuth requests scope. Optional idempotency_key.
request_discussionchangeddescription, input schema, output schemameaning changedOpen a trip discussion with the school. Requires auth_token. Contact email is always the verified account email.
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.
request_quotechangeddescription, input schema, output schemaAsk the school for a personal quote. Use when bookings_live is false, or the student is not ready to book. Requires auth_token. Contact email is always the verified account email.
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.
create_bookingchangeddescription, input schema, output schemameaning changedMakes a real unpaid booking with the school. The school still confirms availability. A down payment is due within 5 days of the school's confirmation via Extralingo only. Requires a credential (OAuth bookings scope or a legacy auth_token), idempotencyKey and phone. Contact email is always the verified account email. Never tell the user they are confirmed or paid.
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.
email_tripchangeddescription, input schema, output schemaEmail continue_url (/s/{id}) to the verified account email. Requires OAuth trips scope. Rate-limited. This is not a booking. Without auth, share continue_url from save_trip instead.
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.
get_tripchangeddescription, input schema, output schemaLoad a saved trip by trip_id. Returns continue_url for website handoff with the configuration restored.
Load a saved trip by trip_id from save_trip. Returns continue_url for website handoff with configuration restored.
save_tripchangeddescription, input schema, output schemaCreate or update a server-side trip draft. Returns trip_id, url (legacy), trip_url, and continue_url (/s/{id}) so the student can continue on Extralingo.com with selections restored. Not a booking. Requires OAuth trips scope (Bearer token).
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).
calculate_trip_pricechangeddescription, input schema, output schemaLive checkout quote for a configuration. Not a booking. Call this before create_booking.
Live checkout quote for a configuration. Not a booking. Call before create_booking and before telling the student a final price.
get_accommodation_detailschangeddescription, input schema, output schemameaning changedDetails for one accommodation group id from list_accommodations.
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.
get_course_detailschangeddescription, input schema, output schemaDetails for one course id from list_courses.
Details for one course id from list_courses (pricing rows, supplements, metadata).
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-100% +updated-17d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://www.extralingo.com/mcp streamable-http | none | yes | 100% | 557 ms | 2025-06-18 | 2026-10-20 |
ask_school_question | Send a question to the school without a full trip configuration. Requires OAuth requests scope. Optional idempotency_key. |
calculate_trip_priceread-only | Live checkout quote for a configuration. Not a booking. Call before create_booking and before telling the student a final price. |
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. |
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. |
get_accommodation_detailsread-only | 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. |
get_course_detailsread-only | Details for one course id from list_courses (pricing rows, supplements, metadata). |
get_schoolread-only | 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. |
get_school_filtersread-only | Valid filter values for search_language_schools (languages, countries, cities, course types, and other facets). |
get_tripread-only | Load a saved trip by trip_id from save_trip. Returns continue_url for website handoff with configuration restored. |
list_accommodationsread-only | Accommodation groups for a school. Use group ids in save_trip configuration (accommodationGroupId). |
list_coursesread-only | Live course catalogue for a bookings_live school (course ids, weeks, prices). Use returned course ids inside save_trip configuration. |
list_starting_datesread-only | Allowed course start dates (typically Mondays) for a school. Use startDate values in list_courses and configuration.startDate. |
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. |
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. |
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). |
search_destinationsread-only | Search cities, countries, and school names. Use before search_language_schools to resolve place names to slugs. |
search_language_schoolsread-only | 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. |
Schemas: list_tools.
{
"name": "com.extralingo/extralingo",
"title": "Extralingo",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://www.extralingo.com/mcp",
"type": "streamable-http"
}
],
"version": "3.0.1",
"websiteUrl": "https://www.extralingo.com/en/developers",
"description": "Search language schools abroad, compare courses, dates and prices, and request bookings."
}