원클릭으로
Use when reading WhatsApp messages, searching conversations, sending messages, listing chats, or interacting with WhatsApp workspaces
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when reading WhatsApp messages, searching conversations, sending messages, listing chats, or interacting with WhatsApp workspaces
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | |
| description | Use when reading WhatsApp messages, searching conversations, sending messages, listing chats, or interacting with WhatsApp workspaces |
| mcp | {"whatsapp":{"command":"secrets","args":["WHATSAPP_MCP_URL","WHATSAPP_MCP_SECRET","--","npx","-y","@sjawhar/whatsapp-mcp","--connect"],"env":{"SOPS_AGE_KEY":"${SOPS_AGE_KEY}"}}} |
Interact with WhatsApp via the whatsapp-mcp server. Use skill_mcp(mcp_name="whatsapp", ...) to invoke tools.
The WhatsApp MCP runs as a persistent HTTP server. It's configured in your environment:
WHATSAPP_MCP_URL — URL of the WhatsApp MCP server (e.g., http://ghost-wispr.tailb86685.ts.net:3456/mcp)WHATSAPP_MCP_SECRET — Bearer token for authenticationFor first-time setup of the daemon, see the deployment docs.
For local development or testing, you can run the server directly in stdio mode:
npx --yes @sjawhar/whatsapp-mcp
First run requires QR code pairing — run the command in a terminal, scan with WhatsApp > Linked Devices.
| Tool | Purpose |
|---|---|
list_chats | List chats sorted by last activity |
get_chat | Get chat details with recent messages |
list_messages | Get messages from a chat (most recent first) |
search_messages | Substring search across messages |
search_contacts | Find contacts by name or phone number |
get_message_context | Get messages surrounding a specific message |
get_my_profile | Get authenticated user's phone number and JID |
update_contact | Set display name for a contact |
sync_contacts | Import phone contacts from VCF file or string |
send_message | Send text message (requires confirmed: true) |
send_file | Send file (requires confirmed: true, path restricted to uploads dir) |
delete_message | Delete a message (requires confirmed: true) |
delete_chat | Delete entire chat (requires confirmed: true) |
download_media | Download media from a message to local disk |
transcribe_voice_note | Transcribe voice note via Whisper API |
resolve_contacts | Resolve unknown LID contacts to phone numbers + sync names |
Destructive tools (send_message, send_file, delete_message, delete_chat) require a two-step confirmation:
confirmed: false (default) → returns previewconfirmed: true → executes the actionskill_mcp(mcp_name="whatsapp", tool_name="list_chats", arguments='{"limit": 10}')
skill_mcp(mcp_name="whatsapp", tool_name="search_messages", arguments='{"query": "meeting tomorrow"}')
skill_mcp(mcp_name="whatsapp", tool_name="send_message", arguments='{"jid": "1234567890@s.whatsapp.net", "text": "Hello!", "confirmed": false}')
skill_mcp(mcp_name="whatsapp", tool_name="download_media", arguments='{"jid": "1234567890@s.whatsapp.net", "messageId": "ABC123"}')
1234567890@s.whatsapp.net (phone number without +)120363XXX@g.ussearch_contacts to find JIDs by nameIf contacts show as phone numbers instead of names, sync them from Google Contacts:
google-workspace skillgws contacts exportsync_contacts via the vcf_content parameter:
skill_mcp(mcp_name="whatsapp", tool_name="sync_contacts", arguments='{"vcf_content": "<vcard data>"}')
exactMatches, fuzzyMatches, and totalUpdatedsend_file only allows files within the configured uploads directorydownload_media sanitizes filenames to prevent path traversalWHISPER_API_URL and WHISPER_API_KEY env varsThis uses the unofficial WhatsApp Web API (Baileys). WhatsApp may ban accounts using unofficial clients. Use a dedicated number you can afford to lose.
Use when the user wants to turn research papers into a podcast episode (or "make a podcast" / "paper podcast" / "audio digest" / "research digest"). Works for any field. Takes a user-supplied paper source (arXiv query, arXiv IDs, or a PDF list), confirms the lineup with the user, extracts a faithful ground-truth JSON, grounds each paper against related work, writes a long-form two-host script, and renders an MP3 with Gemini 3.1 Flash TTS.
Use when reading, searching, or updating Airtable records — applicant/hiring data or any Airtable base. Triggers on airtable.com URLs, base IDs (app...), table IDs (tbl...), or requests to list, query, filter, or update Airtable records.
Use when performing ANY version control operation, starting a work session, checking repo state, or orienting to a codebase. This user uses jj instead of git — NEVER use git commands. Triggers on: commit, push, pull, branch, checkout, rebase, merge, diff, log, status, stash, reset, cherry-pick, bookmark, workspace, conflict resolution, 'what's the repo state', 'are other agents working here', 'what branches exist', 'starting work', 'orient me'.
Use when reading Slack messages, searching conversations, sending messages, listing channels, or interacting with Slack workspaces
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Use when searching flights, hotels, or rental cars; comparing fares across flexible dates; discovering cheap destinations from a fixed origin; or hunting hidden-city ticketing deals. Trigger on multi-city itineraries, fare calendars, "where can I fly cheaply", price-sensitive trip planning, or any time the user wants a sanity-check against Google Flights pricing — Skiplagged surfaces hidden-city deals other engines deliberately hide.