# Reserva Directo — guía completa para agentes > Buscador de 3.813 alojamientos en 38 países, con foco en Latinoamérica, que enlaza al motor de reservas oficial de cada alojamiento. Reserva Directo no es una OTA: no procesa reservas, no cobra comisión y no toma pagos. Busca, compara y redirige; la reserva ocurre siempre en el sitio del hotel. Este documento es autosuficiente: un agente que lo lea entero puede navegar el sitio sin explorarlo. Catálogo al 2026-09-28. Sitio: https://reservadirecto.com ## Qué es y qué no es Reserva Directo es un **buscador de alojamientos**, no una agencia de viajes online. La cadena termina siempre igual: el usuario encuentra el alojamiento acá y sale al motor de reservas oficial de ese alojamiento a reservar. Lo que el sitio **sí** hace: - Indexa 3.813 alojamientos en 38 países y 1.081 destinos con inventario. - Permite buscarlos por texto, por destino, por mapa y por filtros (estrellas, tipo, puntaje, motor propio). - Arma la URL del motor oficial con fechas y huéspedes ya cargados. - Muestra un precio de referencia cuando lo tiene, y en la ficha intenta una tarifa en vivo contra el proveedor. Lo que el sitio **no** hace — no lo afirmes y no lo intentes: - No procesa reservas ni pagos. No hay carrito, checkout, cuenta de usuario ni login. - No cobra comisión. - No cancela, modifica ni consulta reservas existentes. - No garantiza disponibilidad: la única fuente de verdad es el motor del alojamiento. - No tiene reseñas propias; el puntaje viene del proveedor del inventario. ## Precios y disponibilidad: cómo leerlos Sólo 952 de 3.813 alojamientos (25%) tienen precio de referencia en el catálogo. Ese valor: - Está en **USD** salvo que se indique otra moneda, y es el mínimo observado en el último rastreo. - **No** es una cotización para las fechas que pidió el usuario. - Cuando falta (`min_rate: null`) significa **precio desconocido**. Nunca significa gratis, ni incluido, ni sin cargo: decí "sin precio publicado". La ficha de cada alojamiento intenta además una tarifa en vivo contra el gateway del proveedor para las fechas de la URL. Puede no haber respuesta (sin disponibilidad cargada en esa ventana, o proveedor no consultable): ahí el sitio cae al precio de referencia, o no muestra precio. Las herramientas MCP no consultan tarifa en vivo. 1.600 de 3.813 alojamientos tienen **motor propio** en un subdominio de reservadirecto.com; el resto es inventario de terceros que se cotiza en la ficha del marketplace. El filtro `directo=1` (o `solo_motor_propio` en las herramientas) restringe a los primeros. ## Estructura de URLs Todas las páginas son GET, anónimas y cacheables. No hay cookies ni sesión: el contexto de la búsqueda viaja entero en la query string, así que una URL es reproducible y se puede compartir tal cual. ### Contexto de estadía (vale en cualquier página) ``` in=YYYY-MM-DD check-in. Default: hoy + 30 días (hoy: 2026-10-28) out=YYYY-MM-DD check-out. Default: check-in + 2 noches (hoy: 2026-10-30) a=<1..12> adultos. Default: 2 c=<0..8> menores. Default: 0 cur= moneda. Default: USD ``` Un valor inválido no rompe nada: se reemplaza por el default. Un rango invertido o de cero noches se corrige a 2 noches desde el check-in. ### Rutas ``` / Home: buscador y destinos destacados. /paises Todos los países con inventario. /como-funciona Explicación del modelo. Sin datos de catálogo. /d/[slug] Destino (país, región o ciudad) con su listado filtrable. /h/[slug] Ficha de un alojamiento. El slug termina en -. /buscar?q=... Búsqueda por texto libre. /mapa?lat=&lng=&z= Mapa del catálogo. /ir/[hotel_id] Salida al motor oficial. Responde 302; no tiene HTML. /favoritos Lista guardada en localStorage del navegador. /llms.txt Índice de este documento. /api/mcp Servidor MCP remoto (POST). ``` ### `/d/[slug]` — destino Los slugs son jerárquicos y autodescriptivos: un país es el código alpha-2 en minúscula (`ar`, `cl`, `co`); una región o una ciudad llevan el país como prefijo (`ar-mendoza`, `co-cartagena-de-indias`). Un país muestra sus regiones; una región, sus ciudades; una ciudad va directo al listado. El filtro por destino incluye siempre a los hijos. ``` e=3,4 estrellas, lista separada por comas t=Hotel,Lodge tipo de alojamiento (sub_type), lista separada por comas am= amenities por código OTA, lista separada por comas s=<0..100> puntaje mínimo de reseñas directo=1 sólo alojamientos con motor propio orden=recomendado | estrellas | puntaje | nombre (default: recomendado) p=<1..500> página; 24 resultados por página ``` `orden=recomendado` prioriza motor propio, después reputación (puntaje por cantidad de reseñas, con la cantidad topeada en 40), después estrellas, después nombre. ### `/buscar` — texto libre `q` (hasta 80 caracteres) matchea nombre del alojamiento, ciudad y provincia; `p` pagina de a 24. Si la consulta parece un destino y no un alojamiento, la página también ofrece los destinos que coinciden. Sin `q` no lista nada. ### `/mapa` — mapa ``` lat=<-85..85> latitud del centro (default -32.89, Mendoza) lng=<-180..180> longitud del centro (default -68.85) z=<3..16> zoom (default 9) d= centra en un destino y elige el zoom según su nivel ``` El nivel de detalle es función del zoom: en zooms bajos devuelve clusters agregados por país, región o ciudad, y recién en zoom alto devuelve pines de alojamientos individuales. `/api/mapa` acepta los mismos parámetros más `n` (tope de pines) y responde JSON con el shape `{ level, clusters, pins, bounds, truncated, currency, rates }`: `pins: []` en niveles agregados y `clusters: []` en nivel hotel. ### `/ir/[hotel_id]` — salida al motor Es el único CTA del sitio, y ni siquiera escribe nada: responde **302** al motor oficial del alojamiento con fechas y huéspedes ya puestos. Acepta el contexto de estadía (`in`, `out`, `a`, `c`, `cur`) más `tag` para atribución. Un `hotel_id` inexistente da 404. Para un agente: **no** sigas este redirect para "reservar". Entrégale la URL al usuario. La reserva se completa en el sitio del alojamiento, con sus condiciones y su pago. ## Markdown en vez de HTML (negociación de contenido) Todas las páginas navegables del sitio tienen una segunda representación en markdown, en la **misma URL**. Se pide con el header estándar: ``` GET https://reservadirecto.com/h/ Accept: text/markdown ``` La respuesta llega con `Content-Type: text/markdown; charset=utf-8`, `Vary: Accept` y `x-markdown-tokens` (tamaño estimado en tokens, para decidir si entra en tu ventana de contexto antes de leerla). Sin ese header, la misma URL sigue devolviendo el HTML de siempre: no hay dos canónicas ni sufijos `.md` que mantener. Tienen variante markdown `/`, `/paises`, `/como-funciona`, `/d/`, `/h/` y `/buscar`. El markdown no es el HTML convertido: se genera del catálogo, así que trae datos que la página sólo insinúa (el `hotel_id`, los códigos OTA de cada amenity, los slugs de los destinos, las facetas con su conteo) y ninguno de los menús, mapas ni botones que habría que descartar. Lo que **no** tiene variante markdown, porque ya existe algo mejor: `/mapa` (usa `/api/mapa`, que devuelve JSON), `/api/*` (JSON), `/ir/` (es un 302), `/favoritos` (vive en el navegador del usuario) y los sitemaps (XML). Esas rutas devuelven su representación de siempre incluso si pides markdown: es más útil que un 406. ## Tipos de alojamiento (`sub_type`) Valores exactos para `t=` (o `tipo` en las herramientas), con su cantidad en el catálogo: `ApartHotel` (1.858), `Hotel` (1.602), `Hotel_3sup` (67), `Hotel_4` (56), `Hotel_Bo` (55), `Departamento` (36), `Lodge` (26), `Hosteria` (21), `Cabanas` (21), `Hotel_5` (17), `Bungalow` (16), `Hotel_2` (13), `Hostel` (12), `Posada` (3), `Hotel_1` (3). ## Catálogo agregado por país | País | Slug | Alojamientos | Con motor propio | URL | | --- | --- | ---: | ---: | --- | | Argentina | `ar` | 1.217 | 1.051 | https://reservadirecto.com/d/ar | | Chile | `cl` | 1.168 | 166 | https://reservadirecto.com/d/cl | | Colombia | `co` | 805 | 126 | https://reservadirecto.com/d/co | | México | `mx` | 140 | 43 | https://reservadirecto.com/d/mx | | Uruguay | `uy` | 89 | 71 | https://reservadirecto.com/d/uy | | Perú | `pe` | 85 | 36 | https://reservadirecto.com/d/pe | | Estados Unidos | `us` | 85 | 4 | https://reservadirecto.com/d/us | | Brasil | `br` | 72 | 9 | https://reservadirecto.com/d/br | | Ecuador | `ec` | 23 | 10 | https://reservadirecto.com/d/ec | | Paraguay | `py` | 21 | 16 | https://reservadirecto.com/d/py | | Panamá | `pa` | 12 | 10 | https://reservadirecto.com/d/pa | | Bolivia | `bo` | 11 | 6 | https://reservadirecto.com/d/bo | | Costa Rica | `cr` | 11 | 6 | https://reservadirecto.com/d/cr | | España | `es` | 10 | 5 | https://reservadirecto.com/d/es | | Guatemala | `gt` | 8 | 8 | https://reservadirecto.com/d/gt | | Canadá | `ca` | 7 | 0 | https://reservadirecto.com/d/ca | | República Dominicana | `do` | 6 | 2 | https://reservadirecto.com/d/do | | Venezuela | `ve` | 5 | 2 | https://reservadirecto.com/d/ve | | Países Bajos | `nl` | 4 | 4 | https://reservadirecto.com/d/nl | | Jamaica | `jm` | 3 | 0 | https://reservadirecto.com/d/jm | | Honduras | `hn` | 2 | 2 | https://reservadirecto.com/d/hn | | Madagascar | `mg` | 2 | 2 | https://reservadirecto.com/d/mg | | Filipinas | `ph` | 1 | 1 | https://reservadirecto.com/d/ph | | Turquía | `tr` | 1 | 0 | https://reservadirecto.com/d/tr | | Vietnam | `vn` | 1 | 0 | https://reservadirecto.com/d/vn | | Reino Unido | `gb` | 1 | 0 | https://reservadirecto.com/d/gb | | Grecia | `gr` | 1 | 0 | https://reservadirecto.com/d/gr | | El Salvador | `sv` | 1 | 1 | https://reservadirecto.com/d/sv | | Puerto Rico | `pr` | 1 | 0 | https://reservadirecto.com/d/pr | | Monaco | `mc` | 1 | 1 | https://reservadirecto.com/d/mc | | Bélgica | `be` | 1 | 1 | https://reservadirecto.com/d/be | | Costa de Marfil | `ci` | 1 | 1 | https://reservadirecto.com/d/ci | | India | `in` | 1 | 1 | https://reservadirecto.com/d/in | | Bosnia y Herzegovina | `ba` | 1 | 1 | https://reservadirecto.com/d/ba | | Togo | `tg` | 1 | 1 | https://reservadirecto.com/d/tg | | Eritrea | `er` | 1 | 1 | https://reservadirecto.com/d/er | | Finlandia | `fi` | 1 | 1 | https://reservadirecto.com/d/fi | | Mali | `ml` | 1 | 1 | https://reservadirecto.com/d/ml | Total: 3.813 alojamientos en 38 países y 1.081 destinos con inventario. La lista de países está completa; las de regiones y ciudades que siguen están recortadas a las 30 más grandes de cada tipo — el resto se explora con `listar_destinos` o desde `https://reservadirecto.com/paises`. ## Regiones con más inventario - Región Metropolitana, Chile — `cl-region-metropolitana` — 256 alojamientos — https://reservadirecto.com/d/cl-region-metropolitana - Bogotá, Colombia — `co-bogota` — 182 alojamientos — https://reservadirecto.com/d/co-bogota - Provincia de Buenos Aires, Argentina — `ar-provincia-de-buenos-aires` — 176 alojamientos — https://reservadirecto.com/d/ar-provincia-de-buenos-aires - Valparaíso, Chile — `cl-valparaiso` — 154 alojamientos — https://reservadirecto.com/d/cl-valparaiso - Mendoza, Argentina — `ar-mendoza` — 152 alojamientos — https://reservadirecto.com/d/ar-mendoza - Ciudad Autónoma de Buenos Aires, Argentina — `ar-ciudad-autonoma-de-buenos-aires` — 118 alojamientos — https://reservadirecto.com/d/ar-ciudad-autonoma-de-buenos-aires - Antioquia, Colombia — `co-antioquia` — 111 alojamientos — https://reservadirecto.com/d/co-antioquia - Los Lagos, Chile — `cl-los-lagos` — 106 alojamientos — https://reservadirecto.com/d/cl-los-lagos - Antofagasta, Chile — `cl-antofagasta` — 102 alojamientos — https://reservadirecto.com/d/cl-antofagasta - Córdoba, Argentina — `ar-cordoba` — 100 alojamientos — https://reservadirecto.com/d/ar-cordoba - Cundinamarca, Colombia — `co-cundinamarca` — 98 alojamientos — https://reservadirecto.com/d/co-cundinamarca - Bolívar, Colombia — `co-bolivar` — 89 alojamientos — https://reservadirecto.com/d/co-bolivar - Magallanes y la Antártica Chilena, Chile — `cl-magallanes-y-la-antartica-chilena` — 89 alojamientos — https://reservadirecto.com/d/cl-magallanes-y-la-antartica-chilena - Araucanía, Chile — `cl-araucania` — 84 alojamientos — https://reservadirecto.com/d/cl-araucania - Río Negro, Argentina — `ar-rio-negro` — 65 alojamientos — https://reservadirecto.com/d/ar-rio-negro - Neuquén, Argentina — `ar-neuquen` — 62 alojamientos — https://reservadirecto.com/d/ar-neuquen - O'Higgins, Chile — `cl-o-higgins` — 56 alojamientos — https://reservadirecto.com/d/cl-o-higgins - Misiones, Argentina — `ar-misiones` — 52 alojamientos — https://reservadirecto.com/d/ar-misiones - Atlántico, Colombia — `co-atlantico` — 52 alojamientos — https://reservadirecto.com/d/co-atlantico - Valle del Cauca, Colombia — `co-valle-del-cauca` — 51 alojamientos — https://reservadirecto.com/d/co-valle-del-cauca - Santa Cruz, Argentina — `ar-santa-cruz` — 48 alojamientos — https://reservadirecto.com/d/ar-santa-cruz - Coquimbo, Chile — `cl-coquimbo` — 48 alojamientos — https://reservadirecto.com/d/cl-coquimbo - Salta, Argentina — `ar-salta` — 47 alojamientos — https://reservadirecto.com/d/ar-salta - Aysén, Chile — `cl-aysen` — 41 alojamientos — https://reservadirecto.com/d/cl-aysen - Provincia de Lima, Perú — `pe-provincia-de-lima` — 37 alojamientos — https://reservadirecto.com/d/pe-provincia-de-lima - Atacama, Chile — `cl-atacama` — 36 alojamientos — https://reservadirecto.com/d/cl-atacama - Bío Bío, Chile — `cl-bio-bio` — 32 alojamientos — https://reservadirecto.com/d/cl-bio-bio - Entre Ríos, Argentina — `ar-entre-rios` — 30 alojamientos — https://reservadirecto.com/d/ar-entre-rios - Tarapacá, Chile — `cl-tarapaca` — 29 alojamientos — https://reservadirecto.com/d/cl-tarapaca - Maule, Chile — `cl-maule` — 29 alojamientos — https://reservadirecto.com/d/cl-maule ## Ciudades con más inventario - Buenos Aires, Argentina — `ar-buenos-aires` — 109 alojamientos — https://reservadirecto.com/d/ar-buenos-aires - Santiago, Chile — `cl-santiago` — 92 alojamientos — https://reservadirecto.com/d/cl-santiago - Cartagena de Indias, Colombia — `co-cartagena-de-indias` — 68 alojamientos — https://reservadirecto.com/d/co-cartagena-de-indias - Medellín, Colombia — `co-medellin` — 62 alojamientos — https://reservadirecto.com/d/co-medellin - Providencia, Chile — `cl-providencia` — 59 alojamientos — https://reservadirecto.com/d/cl-providencia - Ciudad, Capital, Colombia — `co-ciudad-capital` — 53 alojamientos — https://reservadirecto.com/d/co-ciudad-capital - Barranquilla, Colombia — `co-barranquilla` — 48 alojamientos — https://reservadirecto.com/d/co-barranquilla - San Carlos de Bariloche, Argentina — `ar-san-carlos-de-bariloche` — 47 alojamientos — https://reservadirecto.com/d/ar-san-carlos-de-bariloche - Las Condes, Chile — `cl-las-condes` — 43 alojamientos — https://reservadirecto.com/d/cl-las-condes - Puerto Iguazú, Argentina — `ar-puerto-iguazu` — 40 alojamientos — https://reservadirecto.com/d/ar-puerto-iguazu - Cali, Colombia — `co-cali` — 40 alojamientos — https://reservadirecto.com/d/co-cali - Viña del Mar, Chile — `cl-vina-del-mar` — 35 alojamientos — https://reservadirecto.com/d/cl-vina-del-mar - Ciudad, Capital, México — `mx-ciudad-capital` — 32 alojamientos — https://reservadirecto.com/d/mx-ciudad-capital - El Calafate, Argentina — `ar-el-calafate` — 30 alojamientos — https://reservadirecto.com/d/ar-el-calafate - San Pedro de Atacama, Chile — `cl-san-pedro-de-atacama` — 30 alojamientos — https://reservadirecto.com/d/cl-san-pedro-de-atacama - Mar del Plata, Argentina — `ar-mar-del-plata` — 28 alojamientos — https://reservadirecto.com/d/ar-mar-del-plata - Ushuaia, Argentina — `ar-ushuaia` — 25 alojamientos — https://reservadirecto.com/d/ar-ushuaia - Pucón, Chile — `cl-pucon` — 25 alojamientos — https://reservadirecto.com/d/cl-pucon - Puerto Varas, Chile — `cl-puerto-varas` — 24 alojamientos — https://reservadirecto.com/d/cl-puerto-varas - Temuco, Chile — `cl-temuco` — 24 alojamientos — https://reservadirecto.com/d/cl-temuco - Iquique, Chile — `cl-iquique` — 22 alojamientos — https://reservadirecto.com/d/cl-iquique - Puerto Natales, Chile — `cl-puerto-natales` — 22 alojamientos — https://reservadirecto.com/d/cl-puerto-natales - Punta Arenas, Chile — `cl-punta-arenas` — 21 alojamientos — https://reservadirecto.com/d/cl-punta-arenas - Calama, Chile — `cl-calama` — 21 alojamientos — https://reservadirecto.com/d/cl-calama - Villa Carlos Paz, Argentina — `ar-villa-carlos-paz` — 20 alojamientos — https://reservadirecto.com/d/ar-villa-carlos-paz - San Martín de los Andes, Argentina — `ar-san-martin-de-los-andes` — 19 alojamientos — https://reservadirecto.com/d/ar-san-martin-de-los-andes - Montevideo, Uruguay — `uy-montevideo` — 19 alojamientos — https://reservadirecto.com/d/uy-montevideo - San Andrés, Colombia — `co-san-andres` — 19 alojamientos — https://reservadirecto.com/d/co-san-andres - Puerto Montt, Chile — `cl-puerto-montt` — 19 alojamientos — https://reservadirecto.com/d/cl-puerto-montt - San Rafael, Argentina — `ar-san-rafael` — 18 alojamientos — https://reservadirecto.com/d/ar-san-rafael Ojo con el nombre "Ciudad, Capital": no es un topónimo, es como el proveedor del inventario etiqueta a la ciudad capital de una provincia o departamento. Hay una por país y cada una cae en una región distinta, así que el nombre no alcanza para saber de qué ciudad se trata: mira el destino padre (`listar_destinos` con `padre` devuelve la jerarquía). Por ejemplo `ar-ciudad-capital` cuelga de `ar-mendoza` y `co-ciudad-capital` de `co-antioquia`. ## Herramientas para agentes El sitio expone las mismas 4 herramientas, todas de sólo lectura, por dos vías: - **MCP remoto** — JSON-RPC 2.0 por HTTP POST en `https://reservadirecto.com/api/mcp`, sin autenticación. Transporte Streamable HTTP, servidor stateless: responde `application/json`, no emite sesiones y contesta 405 a GET y DELETE. Soporta el protocolo `2026-07-28` (con `server/discover`) y, por compatibilidad, el handshake `initialize` de las revisiones anteriores. - **WebMCP** — cuando el navegador expone `document.modelContext` (o el alias heredado `navigator.modelContext`), cada página registra las mismas herramientas para el agente del navegador. Si la API no existe, no pasa nada: el sitio funciona igual. ### `buscar_alojamientos` — Buscar alojamientos Busca alojamientos en el catálogo por destino y/o texto libre, con filtros. Devuelve una página de resultados con el total, la URL de la ficha en el sitio y la URL de salida al motor de reservas oficial. Reserva Directo sólo busca y enlaza: no reserva, no cobra ni confirma disponibilidad. El campo `precio_referencia` es el mínimo observado en el último rastreo (no una cotización para esas fechas) y viene `null` en la mayoría del catálogo: `null` significa PRECIO DESCONOCIDO, nunca gratis. ```json { "type": "object", "properties": { "destino": { "type": "string", "description": "Slug de destino de listar_destinos. País = alpha-2 en minúscula (\"ar\", \"cl\"); región o ciudad llevan el país de prefijo (\"ar-mendoza\", \"co-cartagena-de-indias\"). Filtra por el destino y todos sus hijos." }, "texto": { "type": "string", "description": "Texto libre; matchea nombre del alojamiento, ciudad y provincia. Máximo 80 caracteres. Se puede combinar con destino.", "maxLength": 80 }, "estrellas": { "type": "array", "description": "Categorías aceptadas, p. ej. [4,5]. Vacío = sin filtro.", "items": { "type": "integer", "minimum": 1, "maximum": 5 } }, "tipo": { "type": "array", "description": "Tipos de alojamiento (sub_type) exactos del catálogo: \"Hotel\", \"ApartHotel\", \"Lodge\", \"Hosteria\", \"Cabanas\", \"Hostel\", \"Departamento\", \"Bungalow\", \"Posada\", \"Resort\", entre otros. Ver /llms-full.txt para la lista con cantidades.", "items": { "type": "string" } }, "puntaje_minimo": { "type": "integer", "description": "Puntaje mínimo de reseñas, 0-100. Excluye a los que no tienen reseñas.", "minimum": 0, "maximum": 100 }, "solo_motor_propio": { "type": "boolean", "description": "true = sólo alojamientos con motor de reservas propio en un subdominio de reservadirecto.com. El resto se cotiza en la ficha del marketplace." }, "orden": { "type": "string", "description": "recomendado (motor propio, después reputación), estrellas, puntaje o nombre.", "enum": [ "recomendado", "estrellas", "puntaje", "nombre" ], "default": "recomendado" }, "limite": { "type": "integer", "description": "Resultados por página, 1-50.", "minimum": 1, "maximum": 50, "default": 10 }, "pagina": { "type": "integer", "description": "Página, base 1.", "minimum": 1, "default": 1 }, "entrada": { "type": "string", "description": "Check-in YYYY-MM-DD. Sólo arma las URLs de salida; no filtra por disponibilidad.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "salida": { "type": "string", "description": "Check-out YYYY-MM-DD.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "adultos": { "type": "integer", "minimum": 1, "maximum": 12, "default": 2 }, "menores": { "type": "integer", "minimum": 0, "maximum": 8, "default": 0 } }, "additionalProperties": false } ``` ### `ver_alojamiento` — Ver un alojamiento Devuelve la ficha completa de un alojamiento: descripción, dirección, coordenadas, estrellas, reseñas, amenities, fotos, otros alojamientos del mismo destino y la URL de salida al motor. Se identifica por `id` numérico o por `slug` (el slug de la URL /h/, que termina en -). Reserva Directo sólo busca y enlaza: no reserva, no cobra ni confirma disponibilidad. ```json { "type": "object", "properties": { "id": { "type": "integer", "description": "hotel_id numérico.", "minimum": 1 }, "slug": { "type": "string", "description": "Slug de /h/. Alternativa a id." }, "entrada": { "type": "string", "description": "Check-in YYYY-MM-DD para las URLs de salida.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "salida": { "type": "string", "description": "Check-out YYYY-MM-DD.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "adultos": { "type": "integer", "minimum": 1, "maximum": 12, "default": 2 }, "menores": { "type": "integer", "minimum": 0, "maximum": 8, "default": 0 } }, "additionalProperties": false } ``` ### `listar_destinos` — Listar destinos Explora el árbol de destinos: sin argumentos devuelve los países con inventario y los totales del catálogo; con `padre` devuelve los hijos de ese destino (país → regiones, región → ciudades). Con `texto` busca destinos y alojamientos por nombre (autocomplete). Es el punto de partida para conseguir un slug válido para buscar_alojamientos. ```json { "type": "object", "properties": { "padre": { "type": "string", "description": "Slug del destino padre. Omitir para listar países." }, "texto": { "type": "string", "description": "Búsqueda por nombre de destino o alojamiento (mínimo 2 caracteres). Devuelve candidatos con su slug; ignora `padre`.", "maxLength": 80 }, "limite": { "type": "integer", "minimum": 1, "maximum": 100, "default": 40 } }, "additionalProperties": false } ``` ### `link_reserva` — Obtener el link al motor de reservas Arma la URL de salida al motor de reservas oficial de un alojamiento, con fechas y huéspedes ya cargados. Devuelve dos URLs: `url` (la del sitio, /ir/, que responde 302 y es la que hay que entregarle al usuario) y `url_motor` (el destino final, informativo). NO sigas el redirect para "reservar": esta herramienta no reserva, no bloquea inventario, no cobra y no verifica disponibilidad. La reserva se completa en el sitio del alojamiento, con sus propias condiciones y su propio pago. ```json { "type": "object", "properties": { "id": { "type": "integer", "description": "hotel_id numérico.", "minimum": 1 }, "slug": { "type": "string", "description": "Slug de /h/. Alternativa a id." }, "entrada": { "type": "string", "description": "Check-in YYYY-MM-DD.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "salida": { "type": "string", "description": "Check-out YYYY-MM-DD.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "adultos": { "type": "integer", "minimum": 1, "maximum": 12, "default": 2 }, "menores": { "type": "integer", "minimum": 0, "maximum": 8, "default": 0 }, "moneda": { "type": "string", "description": "Código ISO 4217, p. ej. USD o ARS.", "pattern": "^[A-Z]{3}$" } }, "additionalProperties": false } ``` Ejemplo de llamada al servidor MCP: ``` POST https://reservadirecto.com/api/mcp Content-Type: application/json Accept: application/json, text/event-stream MCP-Protocol-Version: 2026-07-28 Mcp-Method: tools/call Mcp-Name: buscar_alojamientos { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "buscar_alojamientos", "arguments": { "destino": "ar-mendoza", "estrellas": [ 4, 5 ], "limite": 5 }, "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28" } } } ``` La respuesta trae `content[0].text` con el JSON del resultado y `structuredContent` con el mismo objeto ya parseado. ## Caché y rastreo Todo el sitio es GET anónimo y cacheable. Estos documentos se sirven como `text/plain; charset=utf-8` y se regeneran cuando cambia el catálogo, que se repuebla una vez por noche. No hace falta rastrear las fichas una por una: `/sitemap.xml` tiene el listado completo y las herramientas MCP devuelven los mismos datos ya estructurados, que es bastante más barato para todos.