# CoraPilot > CoraPilot is a secure connector that gives an AI system (Claude, ChatGPT or any > MCP client) access to a user's WhatsApp — to search, analyse and send messages. > There is no model API key; the user signs in with OAuth to authorise access, and > nothing is ever sent without the user's instruction. ## Connect over MCP - MCP endpoint (Streamable HTTP, JSON-RPC 2.0): https://corapilot.com/mcp - Machine-readable descriptor: https://corapilot.com/.well-known/mcp.json - Auth: OAuth 2.1 (authorization_code + PKCE S256), with dynamic client registration. - Authorization server metadata: https://corapilot.com/.well-known/oauth-authorization-server - Protected resource metadata: https://corapilot.com/.well-known/oauth-protected-resource - A GET to https://corapilot.com/mcp returns 401 with a WWW-Authenticate header pointing at the protected-resource metadata, so standards-compliant MCP clients can self-configure. ## Setup (for a user's AI) 1. Create an account at https://corapilot.com/portal (a 7-day free trial is available). 2. Link WhatsApp on the WhatsApp tab by scanning the QR code. 3. Add https://corapilot.com/mcp as a custom connector in your AI client and sign in when prompted. ## Tools - `connection_status`: Check that this connector is linked and healthy: returns the account name, whether WhatsApp is connected, how many messages are stored, and the most recent message time. Call this first to confirm the connection before doing other work. - `list_recent_messages`: List recent WhatsApp messages (inbound and outbound) for this account, newest last. Optional 'query' does a fuzzy, case-insensitive match across message text, sender/group name and number. - `search_messages`: Fuzzy full-text search over stored WhatsApp messages (matches message text, sender/group name and number, case-insensitive partial match). Use this to find a chat or message by any keyword. - `list_chats`: List the user's WhatsApp chats and GROUPS live from WhatsApp (names/subjects included), even ones with no recent message stored. Optional 'query' fuzzy-filters by chat/group name. Use this to find a group like 'Flackwell Heath FC minors'. - `get_chat_messages`: Fetch the message history of a specific WhatsApp chat or GROUP directly from WhatsApp (includes older messages, not just ones stored since linking). Identify the chat by group/contact name, phone number, or JID. - `list_unread_messages`: List incoming WhatsApp messages not yet seen, and mark them as read. - `send_message`: Send a WhatsApp message from this account. This sends a real message to a real person — only use it when the user has explicitly asked you to send something, and confirm the recipient and wording first. ## Usage guidance - Finding chats is fuzzy and case-insensitive — no exact name needed (e.g. a group called "Flackwell Heath FC minors"). Prefer `search_messages` or `list_chats`. - Only call `send_message` when the user explicitly asks; confirm recipient and text. - Numbers are digits-only, international format, no "+". ## Docs - Setup guide: https://corapilot.com/blog/connect-claude-to-whatsapp - API reference (OpenAPI/Swagger): https://corapilot.com/docs