Asistentes de IA en Wildpass

Esta demo se puede contratar entera desde un asistente de IA, sin rellenar ningún formulario.

Para cualquier persona

Qué puede hacer un asistente aquí

  • Calcular el precio de tu viaje y enseñarte los dos planes, Wild y Wild+.
  • Ayudarte a elegir: si vas a hacer trekking, buceo o esquí, solo Wild+ lo cubre.
  • Guardar tus datos y los de cada viajero: nombre y fecha de nacimiento (nunca DNI, pasaporte ni tarjeta).
  • Enseñarte el resumen completo, con el total, antes de pagar.
  • Pagar (es un pago de prueba) solo cuando tú le digas que sí.
  • Consultar tu póliza más tarde, con su número y tu email.

Tu asistente nunca paga sin tu confirmación explícita y nunca toca tu tarjeta: cuando dices «sí», el pago de prueba se completa en nuestro servidor.

Un ejemplo

  1. Tú: Búscame un seguro de viaje para 2 personas de 35 y 38 años, de España a Tailandia, del 10 al 24 de diciembre.
  2. Asistente: Aquí tienes los dos planes con su precio. Wild+ incluye deportes de aventura y cancelación. ¿Cuál prefieres?
  3. Tú: Wild+, que vamos a bucear.
  4. Asistente: Necesito el nombre y la fecha de nacimiento de cada viajero, y un email para enviarte la póliza.
  5. Tú: Ana López, 3 de mayo de 1991; Luis Martín, 20 de enero de 1988; ana@example.com.
  6. Asistente: Este es el resumen: viaje, plan, viajeros, coberturas, exclusiones y el total. ¿Aceptas las condiciones y confirmas el pago?
  7. Tú: Sí, confirmo.
  8. Asistente: Hecho: aquí tienes el número de póliza y el enlace al PDF. También te la hemos enviado por email.

Texto de ejemplo para copiar

Prueba a pedirle esto:
Búscame un seguro de viaje para 2 personas de 35 y 38 años, de España a Tailandia, del 10 al 24 de diciembre, y enséñame el resumen antes de pagar.

Funciona con asistentes y navegadores compatibles con WebMCP, un estándar nuevo que se está incorporando a Chrome.

Qué pasa después

La póliza se emite en cuanto confirmas: tu asistente te da el número y el enlace al PDF, y te llega por email en un par de minutos (si no la ves, mira en Spam). Es una demo: no se cobra nada y la póliza no tiene validez.

Para desarrolladores

Los agentes no deben introducir datos de tarjeta. Usa las herramientas WebMCP: tras la confirmación explícita del usuario, confirm_payment completa el pago de prueba en el servidor.

Qué es WebMCP

WebMCP es un estándar web nuevo (en preparación en el W3C y en pruebas en Chrome) que permite a una página ofrecer «herramientas» a los asistentes de IA del navegador: en vez de leer la pantalla y pulsar botones, el asistente llama a funciones con datos claros. La página principal de Wildpass registra sus herramientas al cargarse, y cada una usa las mismas reglas del servidor que la web.

Las 6 herramientas, en orden

  1. get_quote Calcula el precio de los dos planes para un viaje: destino, fechas y edades.
  2. select_plan Empieza un pedido con el plan que ha elegido la persona.
  3. set_traveler_details Guarda quién contrata (nombre y email) y el nombre y la fecha de nacimiento de cada viajero; nada más.
  4. review_order Devuelve el resumen completo y el total, que el asistente debe enseñarte antes de pagar.
  5. confirm_payment Paga (pago de prueba con Stripe, el asistente nunca ve datos de tarjeta) y emite la póliza, solo si se cumplen todas estas reglas:
  6. get_policy Consulta una póliza con su número y el email de quien la contrató.

Las herramientas están disponibles en la página principal.

El flujo

get_quote → select_plan → set_traveler_details → review_order → el usuario ve el resumen y dice que sí → confirm_payment · get_policy

Cada paso usa lo que devuelve el anterior: quote_id → order_id → review_token. review_order congela el resumen que ve el usuario; si cambian los datos o se vuelve a revisar, el review_token anterior deja de valer.

Reglas de seguridad de confirm_payment

El pago se rechaza si falta cualquiera de estas condiciones:

  • review_token: el código del último resumen revisado. Caduca si cambian los datos o se vuelve a revisar.
  • accept_terms: has aceptado las condiciones del seguro.
  • confirmed_total_eur: el total coincide al céntimo con el del resumen.
  • user_confirmed: has dicho que sí, expresamente, a pagar.

Compatibilidad con navegadores

La página principal registra las herramientas en document.modelContext (WebMCP, en pruebas en Chrome). Si el navegador solo tiene navigator.modelContext (la API anterior), las registra ahí y los dos nombres apuntan al mismo objeto. Si no tiene ninguno, carga el polyfill MCP-B (@mcp-b/global). Las herramientas aparecen un momento después de cargar la página.

En tu navegador: Comprobando…

Errores

Ninguna herramienta lanza excepciones: cada respuesta es { ok: true, … } o { ok: false, error_code, message, how_to_fix }, y how_to_fix dice qué hacer. Los más habituales:

  • INVALID_INPUT Falta un campo, sobra uno o un tipo no es correcto.
  • DESTINATION_NOT_COVERED Destino con recomendación oficial de no viajar: propón otro.
  • QUOTE_EXPIRED El presupuesto ha caducado: pide otro con get_quote.
  • AGE_MISMATCH Una fecha de nacimiento no da la edad del presupuesto el día de la ida.
  • INVALID_REVIEW_TOKEN No es el review_token del último review_order.
  • TERMS_NOT_ACCEPTED accept_terms no es true: el usuario no ha aceptado las condiciones.
  • USER_CONFIRMATION_REQUIRED user_confirmed no es true: falta el «sí» del usuario.
  • TOTAL_MISMATCH confirmed_total_eur no es exactamente el total revisado.
  • ALREADY_PAID El pedido ya está pagado: consulta la póliza con get_policy.
  • PAYMENT_PROVIDER_UNAVAILABLE Stripe no responde: no se emite la póliza; reinténtalo más tarde.

Ejemplos para copiar

Pedir precio desde la consola del navegador, en la página principal
const mc = document.modelContext ?? navigator.modelContext;
const quote = await mc.executeTool('get_quote', {
  origin_country: 'ES', destination_country: 'TH',
  departure_date: '2026-12-13', return_date: '2026-12-27',
  traveler_ages: [35, 38],
});
console.log(quote.plans.map(p => [p.plan_name, p.total_price_eur]));
Una respuesta de error
{
  "ok": false,
  "error_code": "TOTAL_MISMATCH",
  "message": "El total confirmado no coincide con el total revisado (170,16 €).",
  "how_to_fix": "Envía confirmed_total_eur como número, exactamente igual al total_eur que devolvió review_order y que el usuario ha aceptado."
}
confirm_payment, solo después del «sí» del usuario
await mc.executeTool('confirm_payment', {
  order_id: order.order_id,
  review_token: review.review_token,
  accept_terms: true,       // the user accepted the terms
  user_confirmed: true,     // the user said yes to this total
  confirmed_total_eur: review.total_eur,
});

← Volver