MCP Server

Ourway – Camino de Santiago

travel.ourway/camino-de-santiago
Travel & Hospitality Public & reachable MCP 2025-11-25

What this MCP does

Plans, quotes, adjusts, and supports booking Camino de Santiago itineraries, accommodations, stages, and pilgrim extras.

adjust_camino_package
Adjust the package (cheaper, upgrade, more central, breakfast)
Propose per-night hotel swaps on a quoted Camino de Santiago package to reach a goal: cheaper, higher category, closer to the town centre or with breakfast. `objetivo`: bajar_precio | subir_categoria | mas_centrico | con_desayuno; optional `noche_num` to limit to one night. Use it when the client asks to LOWER THE PRICE, UPGRADE, sleep MORE CENTRAL or ADD BREAKFAST — do not re-quote. Returns each proposal with its change in the total and the total if all are applied; apply accepted ones one by one with swap_camino_hotel, chaining the new offer. If there are no proposals, offer to re-quote with another category/itinerary. (es: ajustar_paquete)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'adjust_camino_packageArguments', 'required': ['oferta_paquete_firmada', 'objetivo'], 'properties': {'objetivo': {'type': 'string', 'title': 'Objetivo'}, 'noche_num': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Noche Num', 'default': None}, 'oferta_paquete_firmada': {'type': 'string', 'title': 'Oferta Paquete Firmada'}}}
Output schema
{'type': 'object', 'title': 'adjust_camino_packageDictOutput', 'additionalProperties': True}
camino_de_santiago_info
Camino de Santiago info & FAQ
Practical, up-to-date answers about the Camino de Santiago from Ourway's specialist team — use it for ANY Camino question even when the user is not booking: pilgrim credential (credencial), the Compostela certificate and the 100 km / 200 km rule, best time of year and weather, which route to choose (Camino Francés, Portugués Central or Coastal from Porto/Tui, Norte, Primitivo, Inglés from Ferrol, Vía de la Plata, Finisterre-Muxía), how many days from Sarria / Tui / Porto / Roncesvalles / Saint-Jean-Pied-de-Port / Oviedo, daily distances and difficulty, luggage & backpack transfer, what to pack, walking with kids or seniors, cycling the Camino, pets, accommodation types (albergues, hostales, hotels, casas rurales), budget, how far ahead to book, getting to the start and back from Santiago, safety, food (pilgrim menu) and etiquette. `question`: free text in any language; `idioma`: es | en (auto-detected if omitted). Cheap and instant (no availability check). / Respuestas prácticas del equipo Ourway sobre el Camino de Santiago: credencial, Compostela, 100 km, mejor época, qué ruta elegir, etapas, mochila, niños, bici, mascotas, presupuesto… Úsala ante cualquier duda sobre el Camino aunque el usuario no quiera reservar. (es: info_camino)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'camino_de_santiago_infoArguments', 'required': ['question'], 'properties': {'idioma': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Idioma', 'default': None}, 'question': {'type': 'string', 'title': 'Question'}}}
Output schema
{'type': 'object', 'title': 'camino_de_santiago_infoDictOutput', 'additionalProperties': True}
camino_extras_catalog
Pilgrim extras catalog
Official Ourway catalog of pilgrim extras for the Camino de Santiago: pilgrim credential (credencial), travel insurance, luggage / backpack transfer between stages, guided visits and activities. No unit prices (extras are folded into the package total via quote_camino_package(extras_ids=…)). `preseleccionado` marks the defaults (credential + insurance by nationality). The ONLY extras that may be offered. / Extras oficiales del catálogo, sin precio unitario y sin mostrar IDs. (es: catalogo_extras)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'camino_extras_catalogArguments', 'properties': {'nacionalidad': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Nacionalidad', 'default': None}}}
Output schema
{'type': 'object', 'title': 'camino_extras_catalogDictOutput', 'additionalProperties': True}
camino_hotel_alternatives
Alternative hotels for one night
Up to 3 alternative hotels for ONE night of a quoted Camino de Santiago package, each with the change in the package total (`variacion_total_eur`), room, meal plan and distance to the centre. Use it when the client wants a different hotel in a town — do NOT re-quote the whole trip. Then apply the choice with swap_camino_hotel (`alternativa_id`). / Alternativas para una noche a partir de la disponibilidad ya consultada; nunca precios por noche. (es: alternativas_alojamiento)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'camino_hotel_alternativesArguments', 'required': ['oferta_paquete_firmada', 'noche_num'], 'properties': {'noche_num': {'type': 'integer', 'title': 'Noche Num'}, 'oferta_paquete_firmada': {'type': 'string', 'title': 'Oferta Paquete Firmada'}}}
Output schema
{'type': 'object', 'title': 'camino_hotel_alternativesDictOutput', 'additionalProperties': True}
camino_proposal_status
Booking proposal status
Check the status of a Camino de Santiago booking proposal created through this channel (code PET-123): active / confirmed / expired, plus its link and deadline. Use it when the customer comes back asking about "my proposal", "my booking" or gives a PET code. / Estado de una propuesta creada por este canal. (es: estado_propuesta)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'camino_proposal_statusArguments', 'required': ['codigo'], 'properties': {'codigo': {'type': 'string', 'title': 'Codigo'}}}
Output schema
{'type': 'object', 'title': 'camino_proposal_statusDictOutput', 'additionalProperties': True}
camino_route_towns
Towns along a Camino route
Towns along a Camino de Santiago route in trail order (Sarria, Portomarín, O Cebreiro, Tui, Porto, Roncesvalles, Ferrol…), with id, name, cumulative km and GPS coordinates. Use it to pick the starting town (`poblacion_inicio_id` for plan_camino_itinerary), to check where the 100 km Compostela threshold falls, and to validate overnight stops. / Poblaciones de un camino en orden de trazado con km acumulados y coordenadas. Las etapas reservables las construye plan_camino_itinerary. (es: poblaciones_ruta)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'camino_route_townsArguments', 'required': ['camino_slug'], 'properties': {'camino_slug': {'type': 'string', 'title': 'Camino Slug'}}}
Output schema
{'type': 'object', 'title': 'camino_route_townsDictOutput', 'additionalProperties': True}
camino_trip_intake_form
Tailor-made Camino intake form
Intake form contract for a tailor-made Camino de Santiago trip: the fields to collect conversationally from the customer BEFORE quoting anything (rooms with children's ages, nationality/residence, start date and nights, walking or cycling, route and starting town, daily pace, accommodation category, meal plan, luggage transfer, pets, budget per person, comments). Call it at the start of any planning request. / Espejo del formulario 'Camino a medida' de ourway.travel. No llames a quote_camino_package sin `presupuesto` ni a create_camino_booking_proposal sin los datos de contacto. (es: iniciar_peticion_medida)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'camino_trip_intake_formArguments', 'properties': {}}
Output schema
{'type': 'object', 'title': 'camino_trip_intake_formDictOutput', 'additionalProperties': True}
create_camino_booking_proposal
Create Ourway booking proposal
Create the Ourway booking request for a quoted Camino de Santiago package and return the customer's personal proposal link (valid 7 days) where they review the trip day by day, confirm and pay securely. ONLY call it after the customer explicitly approves the itinerary and the package total and gives real contact details (full name, email, phone, nationality). Accepts no prices: only the signed offer from quote_camino_package / swap_camino_hotel. / Crea la petición en Ourway y devuelve el enlace de la propuesta (única llamada a la acción). (es: crear_propuesta)
Open world
Input schema
{'type': 'object', '$defs': {'DatosCliente': {'type': 'object', 'title': 'DatosCliente', 'required': ['nombre_completo', 'email', 'telefono', 'nacionalidad'], 'properties': {'email': {'type': 'string', 'title': 'Email', 'description': 'Email real del cliente (recibirá la propuesta)'}, 'telefono': {'type': 'string', 'title': 'Telefono', 'description': 'Teléfono con prefijo internacional'}, 'nacionalidad': {'type': 'string', 'title': 'Nacionalidad', 'description': 'Nacionalidad del cliente (determina el seguro)'}, 'nombre_completo': {'type': 'string', 'title': 'Nombre Completo', 'minLength': 5, 'description': 'Nombre y apellidos del cliente'}}}, 'FormularioMedida': {'type': 'object', 'title': 'FormularioMedida', 'required': ['rooms', 'budget'], 'properties': {'board': {'enum': ['RO', 'BB', 'HB', 'FB'], 'type': 'string', 'title': 'Board', 'default': 'BB'}, 'rooms': {'type': 'array', 'items': {'$ref': '#/$defs/HabitacionFormulario'}, 'title': 'Rooms', 'description': 'Distribución por habitación'}, 'budget': {'enum': ['sin_preferencia', 'lt_500', '500_1000', '1000_1500', 'gt_1500'], 'type': 'string', 'title': 'Budget'}, 'luggage': {'enum': ['si', 'no', 'no_seguro'], 'type': 'string', 'title': 'Luggage', 'default': 'no_seguro'}, 'itinerary': {'enum': ['experto', 'propio'], 'type': 'string', 'title': 'Itinerary', 'default': 'experto'}, 'travel_type': {'enum': ['a_pie', 'en_bicicleta'], 'type': 'string', 'title': 'Travel Type', 'default': 'a_pie'}, 'lodging_mode': {'enum': ['rooms', 'shared'], 'type': 'string', 'title': 'Lodging Mode', 'default': 'rooms'}, 'observations': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Observations', 'default': None}, 'accommodation': {'enum': ['recomendado', 'hoteles_encanto', 'casas_rurales', 'albergues'], 'type': 'string', 'title': 'Accommodation', 'default': 'recomendado'}, 'contact_preference': {'anyOf': [{'enum': ['whatsapp', 'telefono', 'email'], 'type': 'string'}, {'type': 'null'}], 'title': 'Contact Preference', 'default': None}}, 'description': "Espejo del bloque MEDIDA del formulario 'Camino a medida' de la web\n(api/procesar_solicitud_medida.php). Se serializa tal cual en\npeticiones_adicionales para que el CRS y su cotizador lo lean igual."}, 'HabitacionFormulario': {'type': 'object', 'title': 'HabitacionFormulario', 'required': ['adults'], 'properties': {'adults': {'type': 'integer', 'title': 'Adults', 'maximum': 6, 'minimum': 1}, 'child_ages': {'type': 'array', 'items': {'type': 'integer'}, 'title': 'Child Ages'}}}}, 'title': 'create_camino_booking_proposalArguments', 'required': ['cliente', 'idioma_codigo', 'camino_slug', 'oferta_paquete_firmada', 'formulario'], 'properties': {'cliente': {'$ref': '#/$defs/DatosCliente'}, 'formulario': {'$ref': '#/$defs/FormularioMedida'}, 'camino_slug': {'type': 'string', 'title': 'Camino Slug'}, 'idioma_codigo': {'type': 'string', 'title': 'Idioma Codigo'}, 'poblacion_inicio_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Poblacion Inicio Id', 'default': None}, 'oferta_paquete_firmada': {'type': 'string', 'title': 'Oferta Paquete Firmada'}, 'poblacion_inicio_nombre': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Poblacion Inicio Nombre', 'default': None}}}
Output schema
{'type': 'object', 'title': 'create_camino_booking_proposalDictOutput', 'additionalProperties': True}
list_camino_routes
Camino de Santiago routes
List the Camino de Santiago routes Ourway sells and can book: Camino Francés (French Way), Camino Portugués (Central & Coastal), Camino del Norte, Camino Primitivo, Camino Inglés, Vía de la Plata / Sanabrés, Finisterre-Muxía and more, with slug, name and total km. Start here for any Camino de Santiago trip question ("which Camino should I walk?", "routes from Porto / Sarria / Tui"). `tipo`: a_pie (walking) | en_bicicleta (cycling) | a_caballo. / Lista los Caminos de Santiago que Ourway comercializa: solo estos son reservables. El itinerario reservable lo construye plan_camino_itinerary. (es: listar_caminos)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'list_camino_routesArguments', 'properties': {'tipo': {'type': 'string', 'title': 'Tipo', 'default': 'a_pie'}}}
Output schema
{'type': 'object', 'title': 'list_camino_routesDictOutput', 'additionalProperties': True}
plan_camino_itinerary
Plan a Camino itinerary (stages + map)
Build a day-by-day Camino de Santiago itinerary (walking stages, km per day, overnight towns, dates, route map image) following the camino's OFFICIAL stages adapted to the pilgrim's daily pace. Use it for any Camino itinerary, stage plan or "how many days from Sarria/Tui/Porto/Roncesvalles" question: it is the itinerary Ourway books. `ritmo`: tranquilo (18-22 km/day) | medio (22-28) | experimentado (28-35); use `km_max_etapa` instead for an explicit km cap or cycling (~2x). `fecha_inicio` (YYYY-MM-DD, first night) is optional: without it dates come back "to be confirmed" — call it anyway. Only pass `num_noches` when the client fixes the number of nights. Returns `mapa_url`: a real PNG map of the route with numbered overnight stops — show it in the chat right after the stage table (`![Mapa](mapa_url)`). / Fuente del itinerario reservable: úsala para proponer o revisar etapas, aunque el cliente aún no tenga fecha. Presenta el itinerario y pide confirmación ANTES de cotizar. (es: proponer_itinerario)
Read only Idempotent
Input schema
{'type': 'object', 'title': 'plan_camino_itineraryArguments', 'required': ['camino_slug', 'poblacion_inicio_id'], 'properties': {'ritmo': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ritmo', 'default': None}, 'num_noches': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Num Noches', 'default': None}, 'camino_slug': {'type': 'string', 'title': 'Camino Slug'}, 'fecha_inicio': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fecha Inicio', 'default': None}, 'km_max_etapa': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Km Max Etapa', 'default': None}, 'poblacion_inicio_id': {'type': 'integer', 'title': 'Poblacion Inicio Id'}, 'poblacion_destino_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Poblacion Destino Id', 'default': None}}}
Output schema
{'type': 'object', 'title': 'plan_camino_itineraryDictOutput', 'additionalProperties': True}
quote_camino_package
Quote a Camino package (official Ourway price)
Quote a complete Camino de Santiago trip as ONE all-in package price (hotels night by night with LIVE availability + pilgrim extras) — the source of the official Ourway package price. Use it whenever the user asks how much a Camino costs, wants a quote, or approves an itinerary from plan_camino_itinerary. It auto-selects the best accommodation for each night (Ourway quality filters: verified meal plan, close to the centre, guest rating) and returns a single `total_paquete_eur`. NEVER returns per-hotel, per-night or per-extra prices. `presupuesto` is REQUIRED (per person, whole trip, EUR): sin_preferencia | lt_500 | 500_1000 | 1000_1500 | gt_1500. `meal_plan`: RO | BB | HB | FB. `categoria_alojamiento`: recomendado | hoteles_encanto | casas_rurales | albergues. `extras_ids` from camino_extras_catalog (default: pilgrim credential + insurance; luggage transfer if incluir_mochila=true, one bag per traveller, priced by Ourway per real stage; pass the route's `camino_slug` from plan_camino_itinerary). ALWAYS pass `nacionalidad` (or `residente_espana`): it sets the insurance. `mascotas=true` when travelling with a pet. If a category has no availability one night the best alternative category is chosen (see `avisos`). Keep `oferta_paquete_firmada` verbatim for create_camino_booking_proposal. Usually 20-45 s (live checks hotel by hotel): tell the user it takes a moment. If your client times out, call it again with the SAME parameters: the result is cached and comes back instantly. / Fuente del precio oficial Ourway: un solo importe total del paquete, nunca precios parciales. Sin presupuesto no se cotiza. Si tu cliente corta por timeout, repite la llamada con los mismos parámetros: el resultado está en caché. (es: cotizar_paquete)
Read only Open world
Input schema
{'type': 'object', '$defs': {'EtapaPaquete': {'type': 'object', 'title': 'EtapaPaquete', 'required': ['noche_num', 'poblacion_id', 'fecha_entrada', 'fecha_salida'], 'properties': {'noche_num': {'type': 'integer', 'title': 'Noche Num', 'minimum': 1}, 'fecha_salida': {'type': 'string', 'title': 'Fecha Salida', 'description': 'YYYY-MM-DD (normalmente el día siguiente)'}, 'poblacion_id': {'type': 'integer', 'title': 'Poblacion Id', 'description': 'ID de la población de pernocta (de camino_route_towns / plan_camino_itinerary)'}, 'fecha_entrada': {'type': 'string', 'title': 'Fecha Entrada', 'description': 'YYYY-MM-DD'}}}, 'HabitacionOcupacion': {'type': 'object', 'title': 'HabitacionOcupacion', 'required': ['adults'], 'properties': {'adults': {'type': 'integer', 'title': 'Adults', 'maximum': 6, 'minimum': 1, 'description': 'Adultos en esta habitación'}, 'children_ages': {'type': 'array', 'items': {'type': 'integer'}, 'title': 'Children Ages', 'description': 'Edades de los niños en esta habitación, ej [5, 8]'}}, 'description': 'Ocupación de UNA habitación.'}}, 'title': 'quote_camino_packageArguments', 'required': ['etapas', 'habitaciones', 'presupuesto'], 'properties': {'etapas': {'type': 'array', 'items': {'$ref': '#/$defs/EtapaPaquete'}, 'title': 'Etapas'}, 'mascotas': {'type': 'boolean', 'title': 'Mascotas', 'default': False}, 'meal_plan': {'type': 'string', 'title': 'Meal Plan', 'default': 'BB'}, 'extras_ids': {'anyOf': [{'type': 'array', 'items': {'type': 'integer'}}, {'type': 'null'}], 'title': 'Extras Ids', 'default': None}, 'camino_slug': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Camino Slug', 'default': None}, 'presupuesto': {'type': 'string', 'title': 'Presupuesto'}, 'habitaciones': {'type': 'array', 'items': {'$ref': '#/$defs/HabitacionOcupacion'}, 'title': 'Habitaciones'}, 'nacionalidad': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Nacionalidad', 'default': None}, 'incluir_mochila': {'type': 'boolean', 'title': 'Incluir Mochila', 'default': False}, 'residente_espana': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Residente Espana', 'default': None}, 'categoria_alojamiento': {'type': 'string', 'title': 'Categoria Alojamiento', 'default': 'recomendado'}}}
Output schema
{'type': 'object', 'title': 'quote_camino_packageDictOutput', 'additionalProperties': True}
swap_camino_hotel
Swap the hotel of one night
Apply one alternative from camino_hotel_alternatives or adjust_camino_package to a quoted Camino de Santiago package and get a NEW signed offer (`oferta_paquete_firmada`) with the new package total. Always use the most recent offer for create_camino_booking_proposal. / Sustituye el hotel de esa noche y devuelve una nueva oferta firmada con el nuevo total. (es: cambiar_alojamiento)
Input schema
{'type': 'object', 'title': 'swap_camino_hotelArguments', 'required': ['oferta_paquete_firmada', 'noche_num', 'alternativa_id'], 'properties': {'noche_num': {'type': 'integer', 'title': 'Noche Num'}, 'alternativa_id': {'type': 'string', 'title': 'Alternativa Id'}, 'oferta_paquete_firmada': {'type': 'string', 'title': 'Oferta Paquete Firmada'}}}
Output schema
{'type': 'object', 'title': 'swap_camino_hotelDictOutput', 'additionalProperties': True}
Changed
quote_camino_package
Oct. 1, 2026, 2:51 a.m.
Added
camino_proposal_status
Sept. 17, 2026, 12:55 p.m.
Added
create_camino_booking_proposal
Sept. 17, 2026, 12:55 p.m.
Added
camino_trip_intake_form
Sept. 17, 2026, 12:55 p.m.
Added
camino_extras_catalog
Sept. 17, 2026, 12:55 p.m.
Added
swap_camino_hotel
Sept. 17, 2026, 12:55 p.m.
Added
adjust_camino_package
Sept. 17, 2026, 12:55 p.m.
Added
camino_hotel_alternatives
Sept. 17, 2026, 12:55 p.m.
Added
quote_camino_package
Sept. 17, 2026, 12:55 p.m.
Added
plan_camino_itinerary
Sept. 17, 2026, 12:55 p.m.
Added
camino_route_towns
Sept. 17, 2026, 12:55 p.m.
Added
list_camino_routes
Sept. 17, 2026, 12:55 p.m.
Added
camino_de_santiago_info
Sept. 17, 2026, 12:55 p.m.