MyChat · Documentation
Connect WhatsApp to your AI assistant
MyChat connects your WhatsApp accounts to Claude, ChatGPT and compatible remote MCP clients. Your assistant can retrieve conversations, prepare replies, send requested messages and manage campaigns.
1. Connect your assistant and WhatsApp
- Create a MyChat account, or sign in to an existing one.
- In Claude, open Settings → Connectors and add a custom connector. Enter
https://mychat.is/mcp. If MyChat is listed in your client’s directory, its connection button uses the same server. - Complete the MyChat OAuth sign-in and approve the connection. Dynamic Client Registration is supported; users do not need a static client ID, client secret or provider token. Availability of custom connectors depends on your client and workspace settings.
- Complete onboarding and activate a trial or subscription. The plan costs $49 USD/month. The 3-day trial requires a payment method and automatically renews unless cancelled. AI-client subscriptions are separate.
- Open WhatsApp connections in MyChat. Preparing a connection can take a minute. Open the QR page on a computer or another device, then scan it from WhatsApp → Settings → Linked devices → Link a device on your phone. The QR changes every 20 seconds; scan the live page, not a screenshot.
- Return to your assistant. With one active connection, it is selected by default. OAuth authorization can finish before WhatsApp linking; tools report incomplete linking and provide a connection URL.
The same MCP URL works for all accounts. Other compatible clients use their remote MCP/OAuth connection flow. An account contact number entered during onboarding does not link WhatsApp.
2. Access and connected services
The MCP server calls MyChat’s production API using the signed-in user’s authorization. MyChat uses a third-party provider for WhatsApp connectivity. Provider credentials stay on the server and are not returned to the assistant.
Authorized tools can read account status, connection details, contacts, imported conversations, attachments and campaign results. Write tools can save drafts, import files, send requested messages, change sending timezone, manage campaigns and disconnect WhatsApp. MyChat does not generate AI images, audio or video, or transfer financial assets through MCP.
Tool results can become part of the conversation with your selected AI provider. MyChat does not request your entire assistant conversation history. File import retrieves only a download URL supplied for the requested task; client support for file inputs varies. CSV audiences require a phone column containing international numbers; name is optional. Images and documents are supported for outgoing attachments.
Revoke an assistant’s access in AI agents. Disconnecting a WhatsApp connection is a separate confirmed action and stops that connection’s access. Read the Privacy Policy and Terms of Service.
3. Example requests
- “Summarize my recent conversation with Alex and highlight unanswered questions.”
- “Draft a reply to Maya explaining that delivery is expected on Friday.”
- “Send Maya: Your order is on its way. See you Friday!”
- “Prepare a campaign for these contacts, Monday–Friday, 10:00–18:00, next week, in Asia/Almaty.”
- “Show the delivery and read-status report for my latest campaign.”
Names must resolve to an unambiguous contact or chat. A new individual recipient can be specified with a full international number and country code, even without a saved contact.
4. Drafts, sends and final confirmation
A draft request does not send anything. An explicit request to send one message authorizes that individual send; the prepared action has an immutable ID and version. Groups are read-only.
A request to launch a campaign begins preparation. Before launch, the current message, attachment, audience, sender, schedule, timezone and quota must be previewed. Launch requires a new, separate user reply approving that preview. Old conversation context or the original launch request is not final confirmation.
The server checks ownership, subscription access, version, preview ID and the 10-minute preview expiry. The assistant obtains the separate human reply; a boolean parameter alone does not prove that a human confirmed. Editing invalidates approval. Resuming after a pause requires a new preview and separate approval. An approved future schedule does not expire when the original preview does.
Repeated execution of the same prepared send does not create another send. Unknown provider outcomes are not retried automatically. Campaign errors must be resolved within the campaign; splitting recipients into individual sends is not an alternative to its approval or schedule. Cancellation stops remaining MyChat work; messages already accepted by the provider may still arrive.
5. Limits and history
- 1 active WhatsApp connection and 200 outgoing messages per account day, shared across individual sends and campaigns.
- Campaigns support up to 2000 recipients, one message and at most one image or document. A recipient is processed once per campaign.
- Schedules use an IANA timezone, inclusive start/end dates, selected weekdays and one daily window. Campaign sends are spaced by 10 seconds per connection. Schedules describe submission time, not guaranteed delivery time.
- History imports run in the background and may be incomplete. Search and summaries cover saved history, not a guaranteed full phone archive. Reading does not automatically mark chats as read.
- Files are limited to 100 MB. Images and PDF can be previewed; audio and video are download-only. No audio transcription is provided.
- Messages and attachments are retained for up to 90 days. WhatsApp data access stops when subscription access ends; remaining WhatsApp data is scheduled for deletion after 30 days unless access is restored.
Manage or cancel your subscription in Billing. A cancellation of future renewal does not itself end an already-paid period. Delivery and read receipts depend on the provider and recipient; a missing read receipt does not prove a message is unread.
6. MCP tool reference
Read tools retrieve data. Write tools can change saved state or affect an external service, including when they only prepare a draft.
get_account · Read
Read account and subscription status.
list_connections · Read
Lists owned connections with names, numbers, authorization states and capabilities. Requests scoped to one connection require an explicit connectionId when multiple connections exist.
get_whatsapp_connection · Read
Returns connection status and a web connection link for the selected connection. Excludes QR content and provider credentials.
prepare_disconnect · Write
Creates a disconnection preview for the selected connection. Does not disconnect or delete the instance.
disconnect_whatsapp · Write
Disconnects the linked WhatsApp device and deletes its provider instance after explicit user approval of the matching preview. Requires the prepared action ID, version and consent.
list_chats · Read
Returns saved chats for the selected connection. Imported history may be incomplete. Groups support reading only.
list_contacts · Read
Returns saved contacts and their provider identifiers for the selected connection. LID identifiers are opaque and are not phone numbers.
get_chat_messages · Read
Returns saved conversation messages and available history coverage. Reading does not mark the chat as read in WhatsApp.
search_messages · Read
Searches saved messages by text, sender, chat and date range. Results cover imported history and include available coverage information.
prepare_message · Write
Creates an immutable message draft with a version and recipient, without sending. Accepts exactly one recipient: an international phone number with country code or a personal chatId. A saved contact or previous conversation is not required.
send_message · Write
Sends a prepared individual message requested by the user, identified by its unchanged ID and version. Repeated execution returns the previous result without another send. Unknown provider outcomes are not retried automatically. Draft-only requests do not authorize sending.
import_attachment · Write
Import a user-provided image or document into private storage. Does not send it.
get_attachment · Read
Get a short-lived private preview/download link for an owned attachment.
get_sending_quota · Read
Returns remaining shared account sending quota, its reset time and whether the account timezone has been confirmed. The daily limit includes individual messages and campaigns.
set_sending_timezone · Write
Updates the account timezone to the supplied IANA identifier. Used for a timezone explicitly selected by the user. Existing usage and reservations remain counted; the current quota reset and approved campaign timezones are preserved.
prepare_campaign · Write
Creates a durable campaign draft, which may be incomplete, for up to 2000 personal recipients. Stores the supplied message, audience, sender and timing. Does not send messages or approve a launch.
update_campaign · Write
Creates a new immutable campaign version and pauses remaining sends. Invalidates earlier launch approval. Already processed recipients retain their original version and are not resent.
preview_campaign · Write
Creates a launch preview containing the sender, exact message, attachment, audience, dates, daily window, timezone and quota. The preview expires after 10 minutes and requires a new, separate user confirmation before launch. Creating a preview does not authorize sending.
start_campaign · Write
Starts or schedules the current campaign version after a new, separate user confirmation of its displayed preview. Requires the campaign ID, version, unexpired previewId and confirmed=true. An earlier request to prepare or launch is not final approval. Approved schedules remain valid after preview expiry.
pause_campaign · Write
Pauses remaining campaign sends at the user’s request. Messages already submitted to the provider may still arrive. Resumption requires a fresh preview and separate user approval.
resume_campaign · Write
Resumes a paused campaign after a new preview and new, separate user confirmation, including when content is unchanged. Requires its current version, unexpired previewId and confirmed=true. Only unattempted recipients remain eligible.
get_campaign · Read
Returns a campaign, immutable version history, aggregate counts and a page of recipient statuses. Pagination uses offset and the returned nextOffset.
get_campaign_report · Read
Returns aggregate delivery/read counts and paginated recipient statuses without campaign version history. Pagination uses offset and the returned nextOffset. Missing read receipts do not establish that a message was unread.
list_campaigns · Read
List recent campaigns.
cancel_campaign · Write
Cancels remaining MyChat campaign sends at the user’s request. Messages already submitted to the provider may still arrive.
7. Troubleshooting
- HTTP 401 before sign-in: this is expected. Use the client’s OAuth connection flow; the raw MCP URL is not a regular web page.
- Connection required: finish QR linking in MyChat. With several numbers, select a connection explicitly.
- QR expired or an additional check is required: use the live QR page. Complete any extra verification requested by WhatsApp; screenshots and expired shared links will not work.
- Incomplete results: check import progress and requested dates. Some historical messages may not be available from the provider.
- Preview expired or version changed: generate a fresh preview and approve its current contents before launch or resume.
- Quota exhausted: inspect the reported reset time or schedule inside permitted future windows. Changing timezone does not reset usage.
- Unknown send result: inspect the action or campaign status before taking further action; preparing a replacement may duplicate a delivered message.
- Tools missing after an update: refresh the connector’s tools in your client, or reconnect through OAuth.
Support: support@mychat.is. Include the error code and connection or campaign ID when relevant. Do not send passwords, access tokens, QR links or private conversation contents.