# Esoru by resortlife.travel

> Read-only Maldives resort research, comparisons and media for approved travel agencies.

- name: travel.resortlife/esoru
- version: 0.2.0
- connection class: R1 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/travel.resortlife%2Fesoru
- tools: https://api.protogrid.dev/v1/servers/travel.resortlife%2Fesoru/tools

**An agent can connect on its own if it already holds `ESORU_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "esoru": {
      "type": "http",
      "url": "https://resortlife.travel/api/mcp",
      "headers": {
        "Authorization": "Bearer ${ESORU_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${ESORU_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-21d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 21 of 21 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,681 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 83 (weight 15)

- warn `stability.changes`: 27 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 21, about 3,681 tokens to load them all
- tool set hash: db55ab6928ea16ecb9d8664aa10084c8
- tools last changed: 2026-11-03T03:06:51.629Z
- badge: [![protogrid quality](https://protogrid.dev/badge/travel.resortlife/esoru.svg)](https://protogrid.dev/servers/travel.resortlife/esoru)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-03 `get_male_flights` changed (description, annotations)
  - before: Current arrivals and departures on the board at Velana International Airport, Malé: scheduled and estimated times in Maldives time, status, terminal. Use it to check a guest's flight today, or which flights from a city are on the board. It covers only what the airport shows now, so it is not a timetable, gives no journey lengths, and cannot say whether a transfer connects: use a resort's transfers for that and ask our team to confirm a connection. Check the feed block before relying on it.
  - after: Current arrivals and departures on the board at Velana International Airport, Malé: scheduled and estimated times in Maldives time, status, terminal. It covers only what the airport shows now, so it is not a timetable, gives no journey lengths, and cannot say whether a transfer connects. The feed block reports whether the board is live and when it last updated.
- 2026-11-03 `when_to_see` changed (annotations)
- 2026-11-03 `list_surf_breaks` changed (description, annotations)
  - before: Named surf breaks with a verified position: wave type, skill level, best season, hazards and the nearest property. Check hazards before recommending one.
  - after: Named surf breaks with a verified position: wave type, skill level, best season, hazards and the nearest property.
- 2026-11-03 `get_dive_site` changed (inputSchema, annotations)
- 2026-11-03 `list_dive_sites` changed (description, inputSchema, annotations)
  - before: Named dive and snorkel sites with depth, skill level, current, best season and the species seen there. Coordinates appear only when the exact position has been verified. Use get_dive_site for the description and photo. Sites, not resort dive centres: see list_dive_centres for those.
  - after: Named dive and snorkel sites with depth, skill level, current, best season and the species seen there. Coordinates appear only when the exact position has been verified. These are sites, not resort dive centres.
- 2026-11-03 `find_nearby` changed (description, inputSchema, annotations)
  - before: What is close to a named place on the Maldives map: resorts, guesthouses, dive sites, surf breaks and restaurants at other properties, nearest first, with a mix of kinds and straight-line distance. Distance is not travel time, so use a resort's transfers for that. get_resort lists a resort's own restaurants.
  - after: What is close to a named place on the Maldives map: resorts, guesthouses, dive sites, surf breaks and restaurants at other properties, nearest first, with a mix of kinds and straight-line distance. Distance is not travel time.
- 2026-11-03 `get_vr_tour` changed (description, annotations)
  - before: The scene graph for one published 360° tour: every panorama with its title, category and panorama image URLs. Use it to answer what a guest can actually walk through before booking.
  - after: The scene graph for one published 360° tour: every panorama with its title, category and panorama image URLs: what a guest can walk through before booking.
- 2026-11-03 `list_vr_tours` changed (description, annotations)
  - before: Every resort with a published self-hosted 360° virtual tour, with scene counts and a thumbnail. Only returns tours that are live on the site. To find tours by atoll or theme, use search_resorts with hasVirtualTour.
  - after: Every resort with a published self-hosted 360° virtual tour, with scene counts and a thumbnail. Only returns tours that are live on the site.
- 2026-11-03 `get_resort_gallery` changed (annotations)
- 2026-11-03 `catalog_stats` changed (description, annotations)
  - before: How much of the Maldives this catalog actually covers — visible property count and atoll count. Call this before making a claim about breadth so the number quoted is the real one.
  - after: How much of the Maldives this catalog actually covers — visible property count and atoll count.

Full history: https://api.protogrid.dev/v1/servers/travel.resortlife%2Fesoru/changes

## Remotes

- https://resortlife.travel/api/mcp (streamable-http, auth api_key ${ESORU_TOKEN}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (21)

- `catalog_stats`: How much of the Maldives this catalog actually covers — visible property count and atoll count.
- `compare_resorts`: Side-by-side comparison of 2-6 properties on a fixed attribute set (location, transfers, scale, board, tier, experience tags).
- `find_nearby`: What is close to a named place on the Maldives map: resorts, guesthouses, dive sites, surf breaks and restaurants at other properties, nearest first, with a mix of kinds and straight-line distance. Distance is not travel time.
- `get_dive_site`: Full record for one dive site, including its description, photo with credit, protected status and marine-welfare guidance.
- `get_male_flights`: Current arrivals and departures on the board at Velana International Airport, Malé: scheduled and estimated times in Maldives time, status, terminal. It covers only what the airport shows now, so it is not a timetable, gives no journey lengths, and cannot say whether a transfer connects. The feed block reports whether the board is live and when it last updated.
- `get_resort`: Full record for one property: location, transfers, meal plans, room/dining counts, policies, sustainability, brand detail, a few photographs and its 360° tour when published. Optionally attaches the child catalogues (villas, dining, spa, dive, experiences) in the same call.
- `get_resort_gallery`: Photography for one property, in the site's own display order (editor's primary pick first, then owned bucket imagery). Returns direct image URLs with category and photo credit where recorded.
- `get_vr_tour`: The scene graph for one published 360° tour: every panorama with its title, category and panorama image URLs: what a guest can walk through before booking.
- `list_atolls`: The Maldives atolls carrying accommodation, with resort counts and lagoon centroid coordinates. Optionally includes each atoll's resort roster.
- `list_dining`: Restaurants and bars at a resort: cuisine, style, setting, dress code, signature dishes. Pricing and priced menu documents are excluded.
- `list_dive_centres`: Dive operations: operator, PADI level, courses, instructor languages, house reef quality, named dive sites and the marine life encountered there.
- `list_dive_sites`: Named dive and snorkel sites with depth, skill level, current, best season and the species seen there. Coordinates appear only when the exact position has been verified. These are sites, not resort dive centres.
- `list_experiences`: Activities and excursions offered at a resort: type, category, duration, what is included and any age restriction.
- `list_spas`: Spa and wellness facilities: operating brand, setting, treatment rooms, couples suites, signature treatments and specialties.
- `list_surf_breaks`: Named surf breaks with a verified position: wave type, skill level, best season, hazards and the nearest property.
- `list_villas`: Room and villa categories for a resort: size, occupancy, bed config, view, overwater/pool/beach flags and inclusions. Pricing is excluded.
- `list_vr_tours`: Every resort with a published self-hosted 360° virtual tour, with scene counts and a thumbnail. Only returns tours that are live on the site.
- `resolve_resort`: Turn a loosely-written resort name into its canonical slug and a confidence score. Handles the real-world drift between how a resort is written and how it is stored — "Soneva Fushi" vs "SonevaFushi", "ONE&ONLY" vs "One & Only", missing or extra suffix words. A score below 0.6 is not a confident match.
- `search_resorts`: Search the Maldives accommodation catalog by name, atoll, star class, transfer mode, meal plan and experience. Results list resorts before guesthouses and are not a ranking by quality. Can also narrow to a short transfer from the airport or to stays with a 360° tour. Returns compact summaries.
- `similar_resorts`: Nearest alternatives to a given property, matched on atoll, tier, transfer mode and experience profile.
- `when_to_see`: Where and in which months to see an animal in the Maldives: manta rays, whale sharks, turtles, hammerheads and others. Gives the species' season, the sites that list it with each site's stated season, a month-by-month count, and the nearest stays to each site by straight line. With a month, sites stated as out of season are left out and counted. Never promises a sighting.
