---
description: "Connect AI agents to Extralingo: search language schools abroad, compare courses and prices, and request bookings via streamable HTTP MCP."
title: Extralingo MCP server for developers
---

[Skip to content](#main)

All bookings are covered by the Extralingo Promise

## 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

<dl>

<dt>Endpoint:</dt>
<dd><code>https://www.extralingo.com/mcp</code></dd>

<dt>Transport:</dt>
<dd>Streamable HTTP (JSON-RPC 2.0 at POST /mcp)</dd>

<dt>MCP protocol versions:</dt>
<dd><code>2025-06-18, 2025-03-26</code></dd>

<dt>Server version:</dt>
<dd><code>3.0.1</code></dd>

</dl>

## 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](https://www.extralingo.com/auth.md) · [`/.well-known/oauth-protected-resource`](https://www.extralingo.com/.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

- [Site index for agents](https://www.extralingo.com/llms.txt)
- Many public pages also respond to Accept: text/markdown.
- [MCP server card](https://www.extralingo.com/.well-known/mcp.json)
- [Agent resource directory (ARD)](https://www.extralingo.com/.well-known/ard.json)
- [AI catalog (same payload as ARD)](https://www.extralingo.com/.well-known/ai-catalog.json)
- [OpenAPI 3.1 (REST)](https://www.extralingo.com/openapi.json)
- [Authentication guide](https://www.extralingo.com/auth.md)

## Listed on

- [MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers/com.extralingo%2Fextralingo/versions/latest)
- [Smithery](https://smithery.ai/servers/extralingo/extralingo)
- [Glama](https://glama.ai/mcp/connectors/com.extralingo/extralingo)

## Contact

Questions about the MCP server or API integration:

- [support@extralingo.com](mailto:support@extralingo.com)
- [Contact form](https://www.extralingo.com/en/contact)

## 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.

![](https://www.extralingo.com/img/icon-trusted-schools.svg)

### The right school.

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

![](https://www.extralingo.com/img/icon-transparent-pricing.svg)

### The right price.

- Lowest price, guaranteed
- No hidden costs

![](https://www.extralingo.com/img/icon-secure-booking.svg)

### Peace of mind.

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

Recognised by

[![FEDELE · Official partner agency](https://lingodays.com/storage/recognitions/fedele/logo-vxkc4fzy.png)](https://fedele.org/en/agencies/extralingo/ "FEDELE · Official partner agency") [![StudyTravel · Reference-Checked](https://lingodays.com/storage/recognitions/studytravel/logo-7bw5npm9.png)](https://studytravel.network/magazine/news/0/30856/new-reference-checked-agent-features-launched-by-study-travel-ltd "StudyTravel · Reference-Checked") [![Verified Educators · Verified agency](https://lingodays.com/storage/recognitions/verified-educators/logo-hf96d7cd.png)](https://verifiededucators.com/institutions/extralingo "Verified Educators · Verified agency")

Featured in

[![LINDA](https://www.extralingo.com/img/logo-linda.png)](https://www.linda.nl/persoonlijk/taalschool-buitenland-boekingswebsite-taalreis/) [![MT/Sprout](https://www.extralingo.com/img/logo-mtspr.png)](https://mtsprout.nl/groei/hoe-extralingo-de-markt-voor-taalreizen-wil-disrupten) [![Quote](https://www.extralingo.com/img/logo-quote.png)](https://www.quotenet.nl/nieuws/a218801/oprichters-belvilla-investeren-in-start-up-extralingo-taalreizen-218801/) [![FD](https://www.extralingo.com/img/logo-fd.png)](https://fd.nl/fd-persoonlijk/1295895/het-huishoudboekje-van-steffen-beumer)

Read the Promise →

Pay easily with your preferred payment method

![](https://www.extralingo.com/uploads/americanexpress.svg "Americanexpress") ![](https://www.extralingo.com/uploads/mastercard.svg "Mastercard") ![](https://www.extralingo.com/uploads/visa.svg "Visa") ![](https://www.extralingo.com/uploads/trustly.svg "Trustly") ![](https://www.extralingo.com/uploads/apple-pay.svg "Apple pay") ![](https://www.extralingo.com/uploads/bancontact.svg "Bancontact") ![](https://www.extralingo.com/uploads/iDEAL_Wero_Lockup_Yellow_Horizontal_RGB.png "iDeal Wero") ![](https://www.extralingo.com/uploads/belfius.svg "Belfius") ![](https://www.extralingo.com/uploads/blik.svg "Blik") ![](https://www.extralingo.com/uploads/giropay.svg "Giropay") ![](https://www.extralingo.com/uploads/sofort.svg "Sofort") ![](https://www.extralingo.com/uploads/sepa.svg "Sepa")

**9.4** Excellent 3,546 reviews

Extralingo B.V.

Chamber of Commerce: 69857652 · VAT number: NL858040463B01

Address: Eeuwigelaan 3, 1861CL Bergen (NH), The Netherlands

Email: [support@extralingo.com](mailto:support@extralingo.com) · [Customer Service](https://www.extralingo.com/en/contact)

```json
{"@context":"https://schema.org","@type":"BreadcrumbList","description":"Breadcrumbs list","itemListElement":[{"@type":"ListItem","item":"https://www.extralingo.com/en","name":"Book a language course abroad","position":1},{"@type":"ListItem","item":"https://www.extralingo.com/en/developers","name":"For developers","position":2}],"name":"Breadcrumbs"}
{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.extralingo.com/en/#website","url":"https://www.extralingo.com/en","name":"Extralingo","description":"Find and book language schools worldwide at the best prices","publisher":{"@id":"https://www.extralingo.com/#org"},"inLanguage":"en"},{"@type":"Organization","@id":"https://www.extralingo.com/#org","name":"Extralingo","legalName":"Extralingo B.V.","vatID":"NL858040463B01","url":"https://www.extralingo.com/","description":"Extralingo uses technology to make the language travel market accessible. Through our global platform, we give schools the opportunity to reach language students all over the world while giving these language students the opportunity to easily and transparently compare language schools.","address":{"@type":"PostalAddress","streetAddress":"Eeuwigelaan 3","postalCode":"1861 CL","addressLocality":"Bergen","addressRegion":"Noord-Holland","addressCountry":"NL"},"logo":{"@type":"ImageObject","url":"https://www.extralingo.com/img/logo.png","width":"796","height":"178"},"founder":[{"@type":"Person","name":"Steffen Beumer"},{"@type":"Person","name":"Robin Wissink"},{"@type":"Person","name":"Dries Veen"}],"contactPoint":{"@type":"ContactPoint","contactType":"customer support","email":"support@extralingo.com","url":"https://www.extralingo.com/en/contact","availableLanguage":["en","nl","da","sv"]},"foundingDate":"2017","foundingLocation":"Bergen, Netherlands","areaServed":"Global","brand":{"@type":"Brand","name":"Extralingo.com"},"sameAs":["https://www.linkedin.com/company/extralingo","https://www.instagram.com/extralingocom/","https://www.facebook.com/extralingo","https://www.tiktok.com/@extralingo","https://www.wikidata.org/wiki/Q141551393","https://www.crunchbase.com/organization/extralingo"]}]}
{
      "@context": "https://schema.org",
      "@type": "WebPage",
      "@id": "https://www.extralingo.com/en/developers#webpage",
      "url": "https://www.extralingo.com/en/developers",
      "name": "Extralingo MCP server for developers",
      "description": "Connect AI agents to Extralingo: search language schools abroad, compare courses and prices, and request bookings via streamable HTTP MCP.",
      "isPartOf": { "@id": "https://www.extralingo.com/en/#website" },
      "about": { "@id": "https://www.extralingo.com/#org" },
      "publisher": { "@id": "https://www.extralingo.com/#org" },
      "inLanguage": "en"
   }
```
