create_ticket no crea tickets arbitrarios vinculados solo a una compra.
Descubrir e inspeccionar
Usalist_tickets con includeCommerce=true y, opcionalmente, source=commerce, purchaseId, estado y responsable. Los conteos respetan el mismo alcance y modo. Los listados y streams heredados o predeterminados excluyen Comercio sin opt-in explícito.
Las filas contienen referencias sin leer la compra por cada elemento. Consulta get_ticket para commerce.contextStatus y, cuando se permita, commerce.review:
contextStatus:available,permission_deniedounavailable. La evidencia requierecommerce:sales:read, además de visibilidad del ticket.- Identidad: tenant, compra,
stripeMode, motivo y ciclo; la conversación es opcional. - Hechos actuales: pago, entrega, reembolso, reserva, importe en unidades menores, moneda, IDs de reservas del proveedor, conciliación y último comando cuando existan.
- Vigencia y concurrencia:
asOf, revisión del estado de Comercio ysourceVersionopaco. - Comandos permitidos:
permittedActions(fulfill,reconcile) y, por separado,humanActions(refund,retry_reservation,payout).
bookingConfirmed exige un estado exitoso del proveedor y los identificadores guardados requeridos. Pagar o registrar una conciliación externa no lo establece en true. historical identifica evidencia histórica; los registros financieros son inmutables.
Dos dominios de concurrencia
No sustituyas el token de Comercio por la revisión del ticket. Inspecciona evidencia reciente antes de decidir un comando.
Actualizar entrega
PATCH /commerce/sales/{saleId}/fulfillment requiere commerce:sales:read y commerce:sales:fulfillment:write. El cuerpo contiene sourceVersion y fulfillmentStatus (fulfilled o unfulfilled). Úsalo solo cuando esté permitido para la compra.
Herramienta MCP update_commerce_sale_fulfillment:
sourceVersion exacto devuelto. La entrega registra el estado admitido de la compra; no fabrica confirmaciones de reserva, pagos ni mensajes.
Registrar una conciliación verificada
POST /commerce/sales/{saleId}/reconciliation requiere commerce:sales:read y commerce:sales:reconciliation:write.
Herramienta MCP
reconcile_commerce_sale:
Finalización y recuperación
Resolver y Cancelar genéricamente rechazan trabajo de Comercio. Los resultados válidos son entrega rutinaria completada, reembolso total confirmado, evidencia de reserva exitosa o conciliación verificada de la incidencia actual. Lo pendiente, parcial, fallido o incierto permanece abierto. El sistema puede cancelar obligaciones obsoletas con un motivo auditado. Lee el estado devuelto de Comercio y el ticket exacto tras el cambio. La sincronización es asíncrona: un comando exitoso no prueba que la proyección del ticket haya avanzado. Usa recuperación por eventos y verificación acotada; no añadas polling continuo. Ante token obsoleto (409), inspecciona evidencia actual y reconsidera. Ante comando incierto, revisalastCommand, conciliación, hechos y ciclo antes de repetir la intención idéntica con la misma clave. Otro payload es otra intención y requiere otra clave. No cambies claves para sortear incertidumbre.
Los cambios actualizan el motivo del ticket abierto conservando responsable y texto editado. Una incidencia nueva que requiere acción después del cierre crea otro ciclo vinculado y conserva el terminal. Los metadatos de saldo o transferencia por sí solos no crean una incidencia. Los eventos duplicados o fuera de orden no sustituyen resultados más recientes.
Autorización y eventos
Descubrimiento, conteos, referencias, comandos y entregas quedan aislados por espacio de trabajo y modo test/live. Las autorizaciones existentes no ganan scopes. Asignar, iniciar y anotar conservan permisos de ticket; los cambios humanos de Comercio conservan su requisito de administrador. Suscríbete aticket.created / ticket.updated con includeCommerce=true. Los eventos de compras sin conversación omiten sus IDs. Deduplica eventId, compara revisión y consulta estado actual antes de actuar. La entrega verifica modo, opt-in y autorización. Consulta webhooks y la matriz completa.