Datos de la tienda para el bot
El bot de la IA en el chat puede responder no solo con la base de conocimiento, sino también con datos en vivo de la tienda: dónde está un pedido, cuál es su número de seguimiento, si un producto está disponible, cuánto cuesta el envío y cómo devolver una compra. Y, si usted lo permite, puede cancelar un pedido sin pagar o enviar a la tienda una solicitud de devolución o de cambio de envío. Para ello, la tienda se conecta al bot mediante el protocolo MCP (Model Context Protocol): el bot llama a las herramientas de la tienda y la tienda responde con datos.
La tienda se puede conectar en cualquier plan, pero el bot, como toda la IA del chat, funciona en un plan de pago: las respuestas con datos de la tienda se pagan como las respuestas normales de la IA, con el saldo del proyecto; consulte Pago.
Conexión
Lo más sencillo es usar nuestro plugin para la tienda. El plugin pone en marcha el servidor y lo conecta al proyecto al guardar los ajustes:
| Plataforma | Dónde activarlo |
|---|---|
| WooCommerce | WooCommerce → Settings → OneTrace.ru → AI chat bot: store MCP |
| Magento 2 | Stores → Configuration → OneTrace.ru → AI chat bot: store MCP → Connect to the chat bot |
| 1C-Bitrix | Ajustes del módulo → pestaña del sitio → bloque AI chat bot: store MCP → Connect to the chat bot |
La clave secreta del plugin necesita el permiso «Conexión del servidor MCP de la tienda al bot de IA» (chats.manage). Los permisos de una clave no se pueden cambiar después de crearla: si la clave del plugin no lo tiene, cree en Claves de API una clave nueva con los mismos permisos más este e indíquela en los ajustes del plugin. Los sitios de un mismo proyecto se conectan una sola vez.
Una tienda propia en PHP o Laravel se conecta con el servidor listo de la biblioteca PHP y del paquete de Laravel: al desarrollador solo le queda escribir los manejadores de las herramientas. Cualquier otro servidor que cumpla el contrato MCP de la tienda se conecta manualmente: en Chats → Ajustes del chat → Bot → Tienda (MCP), indique la dirección https://…, la clave de acceso que emitió la tienda y un nombre. El contrato, con la descripción de las herramientas, los errores y la confirmación del cliente, está en la sección Para desarrolladores.

En la sección Tienda (MCP) se ve si el servidor funciona y qué herramientas ha permitido la tienda al bot. El interruptor desactiva el servidor temporalmente, y el botón de actualizar lo vuelve a comprobar y relee las herramientas (la plataforma también lo hace por sí misma una vez al día).
Qué puede hacer el bot
Lo que el bot tiene permitido lo decide la tienda, en los ajustes del plugin. De forma predeterminada, solo está activada la lectura:
| Herramienta | Qué hace el bot |
|---|---|
| Pedidos del cliente, Pedido | encuentra los pedidos del cliente e informa sobre un pedido: artículos, importe, pago, método de envío y dirección |
| Seguimiento | indica el servicio de mensajería y el número de seguimiento, y da el enlace de seguimiento |
| Disponibilidad y precios | busca un producto por nombre o referencia y dice si está disponible y en qué variantes |
| Envío | enumera los métodos de envío con su precio y el importe mínimo para el envío gratuito |
| Condiciones de devolución | resume las condiciones de devolución de la tienda |
Las acciones están desactivadas hasta que la tienda las permita:
| Acción | Qué ocurre |
|---|---|
| Cancelación del pedido | el bot cancela un pedido que no se ha pagado ni enviado |
| Solicitud de devolución | la solicitud llega a la tienda como comentario del pedido y como correo electrónico al personal |
| Cambio de envío | la solicitud de nueva dirección, fecha u hora llega a la tienda de la misma manera |
Las descripciones de las herramientas para el modelo las define la plataforma, no la tienda, y el bot trata las respuestas de la tienda como datos, no como instrucciones. Si la respuesta del bot contiene precios, plazos o promesas que no figuran en los datos de la tienda, la comprobación de la respuesta no la deja llegar al cliente.
Confirmación del cliente
Los pedidos y las acciones con ellos solo están disponibles para un cliente confirmado: el bot no mostrará un pedido ajeno ni confirmará siquiera que existe. El cliente se puede confirmar de dos maneras:
- Inicio de sesión en el sitio. Si el cliente ha iniciado sesión en su cuenta de la tienda, el plugin pasa al widget del chat un token firmado y el bot sabe de inmediato quién escribe.
- Código. En los mensajeros y con los invitados, el bot pide el correo electrónico registrado en la tienda, la tienda envía a esa dirección un código de 6 dígitos y el cliente lo escribe en el chat. El código es válido durante 10 minutos, y no se envían más de 5 códigos por hora a una misma dirección.
La confirmación es válida durante 24 horas. El operador la ve en la ventana de la conversación: «cliente confirmado: inició sesión en el sitio» o «cliente confirmado con un código». El token del cliente se guarda cifrado en la conversación; ni el modelo ni los operadores lo ven.
Acciones en la tienda
El bot realiza una acción solo después de que el cliente dé su consentimiento expreso:
- El bot describe lo que va a hacer, con el número de pedido y los artículos, y pide confirmación.
- El cliente acepta en el chat, por ejemplo «sí, cancélelo».
- Un modelo de valoración independiente comprueba que el cliente aceptó exactamente esa acción. Una pregunta, una duda u otra petición no es consentimiento.
- La tienda realiza la acción; una nueva llamada a la misma acción no la repite.
En la conversación aparece la línea «El bot realizó en la tienda: …» con el resultado, y en el registro de auditoría del proyecto, la entrada «Acción del bot en la tienda». El borrador del operador usa los datos de la tienda solo para lectura: las acciones las realiza el propio operador, en la tienda.

Para desarrolladores
Un servidor propio se puede conectar si cumple la versión 1 del contrato MCP de la tienda. Para PHP y Laravel el contrato ya está implementado: la clase StoreMcp\Server de la biblioteca PHP y la ruta POST /onetrace/mcp del paquete de Laravel; solo queda escribir los manejadores de las herramientas.
Transporte. MCP Streamable HTTP, versión del protocolo 2025-06-18: una sola dirección, solicitudes POST con JSON-RPC 2.0; la respuesta es JSON o un flujo text/event-stream con una sola respuesta. La dirección debe ser https:// en una IP pública, sin redirecciones. La respuesta no debe tardar más de 10 segundos ni superar los 256 KB. La plataforma llama a initialize, notifications/initialized, tools/list y tools/call; el encabezado Mcp-Session-Id se admite, pero no es obligatorio.
Acceso. Cada solicitud lleva Authorization: Bearer <clave>; la clave la crea la tienda y debe tener al menos 32 caracteres aleatorios. Una solicitud sin clave o con una clave ajena recibe la respuesta 401.
Marca del contrato. En la respuesta a initialize, el servidor declara capabilities.experimental["onetrace/store"] = { "version": 1 }; sin ella, el servidor no se conecta.
Herramientas. Los nombres son exactamente los de la tabla, y tools/list devuelve solo las que el propietario ha permitido. Cada una tiene la anotación readOnlyHint: true (lectura) o destructiveHint: true (acción) y _meta["onetrace/auth"]: customer, se requiere un cliente confirmado; none, no se requiere. El resultado es structuredContent y el mismo JSON como texto en content[0].text. Los importes tienen la forma { "amount": 1250.5, "currency": "RUB" }, y las fechas, ISO 8601.
| Herramienta | Acceso | Entrada | Resultado |
|---|---|---|---|
store_start_verification |
none | contact, order |
sent, channel, destination |
store_verify |
none | contact, code |
customer_token, expires_at |
store_get_customer |
customer | — | id, email, phone, first_name |
store_find_orders |
customer | status, limit (hasta 20) |
orders: order, created_at, status, status_label, total, items_count |
store_get_order |
customer | order |
el pedido con items, total, payment, shipping, can_cancel, can_return |
store_get_tracking |
customer | order |
carrier, tracking_number, tracking_url, status, events |
store_check_availability |
none | query, sku o product_id |
products (hasta 10) con in_stock, quantity, variants |
store_get_delivery_options |
none | country, city, postcode, total |
methods: name, price, free_from, min_days, max_days |
store_get_return_policy |
none | — | days, conditions, text, url |
store_cancel_order |
customer | order, reason |
order, status, message |
store_create_return |
customer | order, items, reason |
return_id, status, instructions |
store_change_delivery |
customer | order, address, date, time_window |
order, message |
El estado del pedido es uno de pending, processing, on_hold, shipped, delivered, completed, cancelled, refunded, failed. El pedido de otro cliente recibe la respuesta not_found, como si no existiera.
Cliente. El token customer_token lo emite y lo comprueba la tienda, con una validez máxima de 24 horas. La tienda envía el código de confirmación por sí misma y responde igual tanto si el cliente existe como si no; el código tiene 6 dígitos, es válido durante 10 minutos, admite hasta 5 intentos y se envían hasta 5 códigos por hora a cada dirección. Para un cliente que ha iniciado sesión, la página pasa el token al rastreador: cdp.chatCustomer('…').
Contexto de la llamada: en params._meta, onetrace/customer_token, onetrace/language (idioma de la conversación), onetrace/conversation y, en las acciones, además onetrace/confirmed: true y onetrace/idempotency_key. El servidor rechaza una acción sin onetrace/confirmed; una repetición con la misma clave de idempotencia devuelve el mismo resultado sin repetir la acción.
Errores: isError: true y structuredContent: { "error": "<código>", "message": "<texto para el cliente>" }:
| Código | Cuándo |
|---|---|
auth_required |
se requiere un cliente confirmado |
invalid_code |
código incorrecto o caducado |
not_found |
no existe ese pedido o producto |
not_allowed |
la acción no está disponible en este estado o el propietario la ha desactivado |
invalid_input |
argumentos no válidos |
rate_limited |
demasiadas solicitudes o códigos |
unavailable |
fallo temporal de la tienda |
Conexión desde el plugin. El plugin registra su servidor con una clave secreta que tiene el permiso chats.manage: PUT /api/v1/chat/store-mcp con url, key, name, platform conecta o actualiza el servidor, y DELETE /api/v1/chat/store-mcp con url lo desconecta.