> ## Documentation Index
> Fetch the complete documentation index at: https://docs.visitoai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Canales mediante API y MCP

> Descubre canales, revisa su estado, gestiona conexiones y completa la autorización del proveedor en el navegador.

Esta superficie está implementada localmente y requiere publicar versiones compatibles de API, navegador y catálogo MCP. Los enlaces temporales están desactivados por defecto hasta completar los requisitos de publicación. Ver una herramienta no significa tener su permiso.

## Elige la herramienta correcta

| Endpoint REST | Permiso requerido | Herramienta MCP |
| - | - | - |
| `GET /channels` | `channels:read` | `list_channels` |
| `PATCH /channels/{channelId}/respond-enabled` | `channels:write` | `set_channel_response_enabled` |
| `GET /channels/connection-options` | `channels:read` | `get_channel_connection_options` |
| `POST /channels/connection-attempts` | `channels:connect:write` | `create_channel_connection_link` |
| `GET /channels/connection-attempts/{attemptId}` | `channels:read` | `get_channel_connection_attempt` |
| `GET /channels/{channelId}` | `channels:read` | `get_channel` |
| `PATCH /channels/{channelId}` | `channels:manage:write` | `update_channel_configuration` |
| `DELETE /channels/{channelId}` | `channels:manage:write` | `disconnect_channel` |
| `GET /channels/{channelId}/whatsapp/health` | `channels:read` | `get_whatsapp_channel_health` |
| `GET /channels/{channelId}/webchat` | `channels:read` | `get_webchat_channel_setup` |
| `GET /channels/{channelId}/whatsapp/profile` | `channels:read` | `get_whatsapp_channel_profile` |
| `PATCH /channels/{channelId}/whatsapp/profile` | `channels:manage:write` | `update_whatsapp_channel_profile` |
| `GET /channels/{channelId}/whatsapp/manager-link` | `channels:read` | `get_whatsapp_channel_manager_link` |
| `POST /channels/{channelId}/refresh-token` | `channels:manage:write` | `refresh_instagram_channel_token` |
| `POST /channels/{channelId}/whatsapp/coexistence/recheck` | `channels:manage:write` | `recheck_whatsapp_channel_activation` |
| `POST /channels/{channelId}/whatsapp/reconcile` | `channels:manage:write` | `reconcile_whatsapp_channel` |
| `GET /channels/{channelId}/instagram/history-import` | `channels:read` | `get_instagram_channel_history_import` |
| `GET /channels/{channelId}/messenger/history-import` | `channels:read` | `get_messenger_channel_history_import` |

Empieza con `list_channels` y usa el `channel.id` devuelto. Los identificadores de teléfono, página, cuenta de Instagram y WABA son distintos. La lectura no crea webchat. `get_channel` muestra activación, respuestas automáticas, caducidad/estado del token y códigos/fechas de degradación guardados; no es una comprobación actual del proveedor. Los diagnósticos de máquina omiten tokens y texto bruto de errores del proveedor.

`get_whatsapp_channel_health` revisa propiedad del teléfono, suscripción de la app, asociación del negocio, calidad/verificación y WABA con los lectores nativos existentes y acotados. Unknown significa evidencia no disponible. `get_webchat_channel_setup` devuelve URL pública, configuración, snippet y señales de instalación. Una persona debe instalar el snippet. Otros proveedores ofrecen diagnósticos guardados; no existe una comprobación universal en vivo. Los lectores de importación de historial no inician importaciones.

## Agrega o reconecta mediante un enlace temporal

1. Lee `get_channel_connection_options` para conocer las diferencias del proveedor. Si `temporaryLinksEnabled` es false, usa la configuración nativa disponible en esa instalación.
2. Con `channels:connect:write`, llama a `create_channel_connection_link` con `input.type` (`instagram`, `messenger` o `whatsapp`) y un `idempotencyKey` estable. La credencial debe pertenecer a un administrador vigente. Recibes `connectionUrl`, `attemptId` y `expiresAt`.
3. Comparte el enlace con el administrador del negocio previsto. Vence en 15 minutos. La persona inicia sesión en Visito con su propia cuenta de administrador y completa el acceso/autorización del proveedor en el navegador. MCP no solicita contraseñas ni tokens. Messenger requiere elegir páginas elegibles; WhatsApp usa Meta Embedded Signup y selección de teléfonos; Instagram usa la autorización de cuenta profesional existente.
4. Lee `get_channel_connection_attempt` con `attemptId` cuando se solicite, sin sondeo ilimitado. `pending`, `authorizing` y `selecting` requieren intervención humana. `processing` es incierto y no autoriza repetir el callback. `completed` y `partial` incluyen los `channelIds` guardados.
5. Revisa esos canales y sus herramientas de estado/instalación. Completar la conexión no demuestra activación del proveedor ni entrega a huéspedes. La coexistencia de WhatsApp puede quedar en `pending_finalization` y desactivada hasta finalizar.

Reintenta una creación incierta con exactamente el mismo tipo y clave durante 24 horas. Cambiar el tipo produce conflicto. No se admiten tenant, URL del proveedor ni destino de callback arbitrarios. El intento vincula negocio, proveedor, administrador que lo inicia y caducidad; callback y selección son de un solo uso. Otra cuenta no puede finalizar un intento iniciado. Perder permisos bloquea la finalización. Las autorizaciones existentes no se amplían automáticamente.

Reconectar el mismo recurso usa el upsert nativo. Seleccionar otro recurso puede agregar un canal; el enlace no garantiza reemplazar un ID concreto. Si el resultado es parcial, fallido, vencido o incierto, revisa intento y canales antes de crear otro enlace. `failureCode` y `nextAction` indican la recuperación; puede requerirse conciliación en lugar de reintento. La retención es de 24 horas: un 404 posterior no demuestra que no se haya conectado un canal.

Webchat no usa OAuth y requiere instalar el snippet. TikTok usa el piloto nativo con controles separados de aprobación, credenciales, elegibilidad regional y visibilidad por negocio. Los enlaces Meta mantienen permisos de la app, derechos del plan, verificación del proveedor y propiedad de recursos. No automatizan los pasos humanos del proveedor.

## Gestiona un canal existente

`set_channel_response_enabled` mantiene `channels:write` y exige el `updatedAt` actual como `input.expectedUpdatedAt`. Ante 409, vuelve a leer y prepara otra propuesta. Cambia respuestas automáticas, sin reparar al proveedor.

`channels:manage:write` permite por separado activación, propiedades, política de historias de Instagram, perfil WhatsApp, desconexión solicitada, actualización de token de Instagram, finalización de coexistencia y conciliación de WhatsApp. Se verifica al administrador vigente. La configuración conserva la semántica nativa de última escritura. Tras un timeout, lee antes de repetir: la mutación puede haberse guardado. Descubre propiedades con `list_properties`; no son IDs de proveedores de reservas. La asignación nativa ignora propiedades ajenas/inexistentes si queda al menos una propiedad válida.

Desconectar elimina canal/asociación locales con la recuperación nativa; repetir un canal inexistente no hace cambios. No promete revocar toda la autorización del proveedor ni borrar historial. Webchat no admite desconexión. La actualización de token devuelve queued/skipped; revisa el estado guardado después. Empieza la conciliación WhatsApp con `dry_run`; `apply` requiere reparación solicitada y los controles existentes de publicación/propiedad. No evadas un bloqueo de propiedad.

Otorga los permisos nuevos expresamente en API keys o consentimiento MCP. Las credenciales antiguas no reciben permisos de OAuth adicionales. Estas herramientas no envían mensajes de prueba a huéspedes.

La selección de recursos puede vencer antes, al llegar al límite de diez minutos de la sesión nativa. `failures[].reason` distingue conflictos de propiedad, falta de permiso de mensajería, fallas de activación y conciliación de persistencia; se omite texto bruto del proveedor.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.