Choose the right channel tool
Start with
list_channels and use the returned channel.id for channel operations. Provider phone, page, Instagram account and WABA IDs are separate. The list is a read: it does not provision missing webchat. get_channel shows saved activation, automatic replies, token expiry/status and degraded codes/timestamps. These are saved signals, not a live provider probe. Raw provider error text and access tokens are omitted from machine diagnostics.
get_whatsapp_channel_health checks phone ownership, app subscription, binding, phone quality/verification and WABA status through existing bounded native readers. Unknown means evidence is unavailable. get_webchat_channel_setup returns the existing public URL, widget settings, snippet and observed installation state. A human must install the snippet on the website. Other providers expose their saved diagnostics; there is no universal live provider health endpoint. History-import readers inspect existing receipts without starting imports.
Add or reconnect a channel with a temporary link
- Read
get_channel_connection_optionsfor actual provider differences. IftemporaryLinksEnabledis false, native setup is required for that installation. - With
channels:connect:write, callcreate_channel_connection_linkusinginput.type(instagram,messengerorwhatsapp) and a stableidempotencyKey. A current admin-owned credential is required. Creation returnsconnectionUrl,attemptIdandexpiresAt. - Give the link to the intended business administrator. It expires in 15 minutes. They sign in with their own Visito admin account, then complete provider login/consent in the browser. MCP never asks for provider passwords or tokens. Messenger requires selection of eligible Pages; WhatsApp uses the existing Meta embedded signup and phone selection. Instagram uses the existing professional-account authorization flow.
- Read
get_channel_connection_attemptwith the savedattemptIdon user request, without unbounded polling.pending,authorizingandselectingneed human completion;processingis uncertain and must not trigger another provider callback.completedorpartialreturns actual savedchannelIds. - Read the resulting channels and applicable health/setup tools. Completion means a channel was saved, not that provider activation or guest delivery succeeded. WhatsApp coexistence can remain
pending_finalizationand disabled until finalization succeeds.
failureCode and nextAction explain recovery; errors may require reconciliation rather than a retry. Retention is 24 hours: a later 404 means the record is no longer available, not proof that no connection occurred.
Webchat has no provider OAuth and needs website installation. TikTok uses the separately gated native pilot; provider approval, app credentials, regional eligibility and business visibility are separate prerequisites. Temporary Meta links do not bypass app permissions, premium-channel entitlements, provider verification, resource ownership or these provider-specific human steps.
Manage an existing channel
set_channel_response_enabled keeps the channels:write permission and requires the current updatedAt as input.expectedUpdatedAt. A 409 requires a fresh read and proposal. This only changes automatic replies; it does not repair provider readiness.
channels:manage:write separately permits existing activation, property assignment, Instagram story policy, WhatsApp profile, requested disconnect, Instagram token refresh, coexistence finalization and WhatsApp reconciliation operations. Current business-admin ownership is rechecked. Configuration reuses native last-write semantics. Read after a timeout before repeating a mutation; it may already be saved. Use list_properties for property IDs, not external reservation provider IDs. Native property assignment accepts existing business properties and ignores foreign/nonexistent submitted IDs when at least one valid property remains.
Disconnect reuses native local channel/binding removal and recovery. Missing channel repeats are a no-op. It does not promise provider-wide grant revocation or deletion of message history. Webchat disconnect is unsupported. Token refresh returns queued/skipped, not refresh completion; inspect saved token state later. WhatsApp repair starts with dry_run; apply requires an explicitly requested repair and the existing rollout/ownership checks. A blocked ownership check must not be bypassed.
Machine access does not add provider OAuth scopes to old credentials. Grant new connection/management scopes explicitly in API keys or MCP consent when needed. No tool here sends a test guest message.
Resource selection can expire earlier at the native ten-minute session deadline. Per-resource failures[].reason distinguishes ownership conflicts, missing messaging permission, activation failure and persistence reconciliation; raw provider text is omitted.