{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:46:46.106Z","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api","markdownUrl":"https://verifymcp.io/servers/com-wassenger-whatsapp/api.md","server":{"slug":"com-wassenger-whatsapp","name":"WhatsApp Business API by Wassenger","registryName":"com.wassenger/whatsapp","description":"Send and read WhatsApp messages, templates, chats and campaigns through the official Business API.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"api","type":"remote","identifier":"https://api.wassenger.com/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api","version":"1.0.0","transport":null,"scoredAt":"2026-11-05T02:09:49.164Z"},"score":{"total":67,"tier":"medium","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":67},{"date":"2026-11-04","total":66},{"date":"2026-11-03","total":66},{"date":"2026-11-02","total":65},{"date":"2026-11-01","total":65},{"date":"2026-10-31","total":64},{"date":"2026-10-30","total":64},{"date":"2026-10-29","total":64},{"date":"2026-10-28","total":63},{"date":"2026-10-27","total":63},{"date":"2026-10-26","total":33},{"date":"2026-10-25","total":33}]},"categories":[{"name":"Endpoint Security","score":57,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_whatsapp_template).","HTTPS is enforced; there's no plaintext access path.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_destructive","args":{"tool":"delete_whatsapp_template"}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":72,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 16614 tokens (~307/item across 54 items; 54 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"307","items":"54","tools":"54","tokens":"16614","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":30,"verdict":"partial","reasons":["Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"9"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":81,"verdict":"partial","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","1 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"send_whatsapp_message\" implies \"send\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 54 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"25","tool":"send_whatsapp_message","verb":"send","declared":"none","annotated":"1","destructive":"4"}},{"code":"toolsafety.manipulation_clean","args":{"units":"54","judged":"54"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"api","type":"remote","identifier":"https://api.wassenger.com/mcp","withdrawn":false,"score":67,"current":true,"url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api","markdownUrl":"https://verifymcp.io/servers/com-wassenger-whatsapp/api.md"}],"facts":[{"label":"Endpoint","value":"https://api.wassenger.com/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"send_whatsapp_message","title":null,"description":"Comprehensive WhatsApp message sending with action-based operations. Supports all message types including text, media, location, contact, poll, event messages, with scheduling, live delivery, expiration, agent messaging, and template support. All message sending operations unified in one tool.\n\nScheduling: pass exactly one of deliverAt, delay or delayTo on the text, media, template, agent or scheduled actions. Leaving all three out sends the message right away. On WhatsApp Cloud API (WABA) numbers a plain text, media or agent message still needs the customer to have written within the last 24 hours at delivery time, so a reminder that lands later than that must use the template action.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform for WhatsApp message sending"},{"name":"actions","type":"array","required":false,"description":"Actions to perform after message delivery (for agent action)"},{"name":"agent","type":null,"required":false,"description":"Agent ID (24 character hex string)"},{"name":"agentId","type":"string","required":false,"description":"Agent ID for agent messaging (required for agent action)"},{"name":"chat","type":"string","required":true,"description":"WhatsApp chat ID (e.g., 1234567890@c.us for phone numbers, 123456789000000000@g.us for groups, 123456789000000@newsletter for WhatsApp channels)"},{"name":"contacts","type":"array","required":false,"description":"Array of contacts to send, max 10 (required for contact action)"},{"name":"delay","type":"integer","required":false,"description":"Deliver the message after this many seconds (max 31536000, a year)"},{"name":"delayTo","type":"string","required":false,"description":"Deliver the message after a duration: 30m, 2h, 3d, 2w, 1M (max a year)"},{"name":"deliverAt","type":"string","required":false,"description":"Absolute ISO 8601 instant to deliver the message at, with a time zone (e.g. 2026-09-20T09:00:00+02:00). Must be in the future and less than a year away"},{"name":"device","type":"string","required":false,"description":"Target WhatsApp device ID (24 character hex string) used for message delivery. Only required if you have multiple WhatsApp numbers connected. Use MCP tool \"get_whatsapp_devices\" to retrieve a list of…"},{"name":"enqueue","type":"string","required":false,"description":"Message delivery mode (for live action)"},{"name":"event","type":"object","required":false,"description":"Event content (required for event action)"},{"name":"expiration","type":"string","required":false,"description":"Time-to-live duration e.g. \"1h\", \"30m\", \"2d\" (for expiring action)"},{"name":"idempotencyKey","type":"string","required":false,"description":"Your unique key for this message, 6 to 36 characters (a UUID works). Reuse the same key when retrying the same message: the API then answers 409 Conflict with the id of the message already created in…"},{"name":"location","type":"object","required":false,"description":"Location content (required for location action)"},{"name":"media","type":"object","required":false,"description":"Media content (required for media action)"},{"name":"message","type":"string","required":false,"description":"Text message content (required for text, scheduled, live, expiring, agent, template actions)"},{"name":"order","type":"boolean","required":false,"description":"Ensure strict message delivery order"},{"name":"poll","type":"object","required":false,"description":"Poll content (required for poll action)"},{"name":"previewUrl","type":"boolean","required":false,"description":"Enable URL preview in messages (for text, template actions)"},{"name":"reference","type":"string","required":false,"description":"Custom reference ID for message tracking"},{"name":"sendReadAck","type":"boolean","required":false,"description":"Send chat read acknowledgment after the message is delivered"},{"name":"template","type":"object","required":false,"description":"Template configuration (required for template action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":721},{"name":"manage_whatsapp_message_interactions","title":null,"description":"Manage WhatsApp message interactions including replies, forwards, reactions, and poll voting. Handle all message interaction operations with action-based approach for comprehensive message engagement functionality.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform for WhatsApp message interactions"},{"name":"agent","type":"string","required":false,"description":"Agent ID (24 character hex string)"},{"name":"chat","type":"string","required":true,"description":"WhatsApp chat ID (e.g., 1234567890@c.us for phone numbers, 123456789000000000@g.us for groups, 123456789000000@newsletter for WhatsApp channels)"},{"name":"device","type":"string","required":false,"description":"Target WhatsApp device ID (24 character hex string) used for message delivery. Only required if you have multiple WhatsApp numbers connected. Use MCP tool \"get_whatsapp_devices\" to retrieve a list of…"},{"name":"forward","type":"object","required":false,"description":"Forward message details (required for forward action)"},{"name":"idempotencyKey","type":"string","required":false,"description":"Your unique key for this message, 6 to 36 characters (a UUID works). Reuse the same key when retrying the same message: the API then answers 409 Conflict with the id of the message already created in…"},{"name":"message","type":"string","required":false,"description":"Reply message content (required for reply action)"},{"name":"quote","type":"string","required":false,"description":"Message ID to reply to (required for reply action)"},{"name":"reaction","type":"string","required":false,"description":"Emoji reaction to send, use \"-\" to remove reaction (required for reaction action)"},{"name":"reactionMessage","type":"string","required":false,"description":"Message ID to react to (required for reaction action)"},{"name":"reference","type":"string","required":false,"description":"Custom reference ID for message tracking"},{"name":"selectId","type":"string","required":false,"description":"ID of selected button/list option when replying to interactive messages (for reply action)"},{"name":"vote","type":"object","required":false,"description":"Vote details (required for vote action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":379},{"name":"verifyWhatsAppNumberExists","title":null,"description":"Checks if a given phone number is associated with an active WhatsApp account.","inputs":[{"name":"phoneNumber","type":"string","required":true,"description":"The phone number to verify in E.164 format"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":44},{"name":"validatePhoneNumbers","title":null,"description":"Validates the format of given phone numbers according to E.164 standard and checks their potential validity. Can validate up to 500 phone numbers at once.","inputs":[{"name":"phoneNumbers","type":"array","required":true,"description":"Array of phone numbers to validate in E.164 format (max 500)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":63},{"name":"get_whatsapp_chats","title":null,"description":"Comprehensive WhatsApp chat retrieval tool supporting all chat operations through a unified action-based interface. Perfect for accessing chat lists, searching conversations, filtering by various criteria, and managing chat data. Supports all WhatsApp chat retrieval operations with consistent formatting.\n\nAvailable actions:\n- recent: Most recent chats\n- unread: Chats with unread messages\n- by_status: Filter by chat status (pending, active, resolved, archived...)\n- assigned: Chats assigned to an agent or department, or to anyone\n- unassigned: Chats nobody is handling yet\n- by_contact_type: Filter by chat type (chat, group, community, channel)\n- by_id: One chat by its WhatsApp ID\n- search: Free text search over phone, name, contact, company, metadata and private notes\n- archived: Archived chats\n- by_date_range: Chats by last message, first message or last inbound message date\n\nEvery action accepts labels, labelsExclude, status and contactTypes as extra filters. To find leads that went quiet, use by_date_range with activityType \"lastInbound\" and a toDate: those are the chats where the customer has not written since then.","inputs":[{"name":"action","type":"string","required":false,"description":"Chat retrieval action to perform"},{"name":"activityType","type":"string","required":false,"description":"Which date the range applies to: last message of any side, first message ever, or last message received from the customer"},{"name":"agentId","type":"string","required":false,"description":"Filter by assigned agent ID (for assigned action)"},{"name":"chatId","type":"string","required":false,"description":"Specific chat ID (required for by_id action)"},{"name":"contactTypes","type":"array","required":false,"description":"Filter by chat type (required for by_contact_type action, optional elsewhere)"},{"name":"departmentId","type":"string","required":false,"description":"Filter by assigned department ID (for assigned action)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fields","type":"array","required":false,"description":"Explicit dot-path allowlist, e.g. ['id','name','contact.phone','unreadCount']. Overrides verbosity when set."},{"name":"fromDate","type":"string","required":false,"description":"Start date (for by_date_range and archived actions)"},{"name":"labels","type":"array","required":false,"description":"Only chats carrying at least one of these labels. Use [\"*\"] for any label. Cannot be combined with labelsExclude"},{"name":"labelsExclude","type":"array","required":false,"description":"Exclude chats carrying any of these labels. Use [\"*\"] to exclude every labelled chat"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"query","type":"string","required":false,"description":"Free text to search for (required for search action)"},{"name":"sort","type":"string","required":false,"description":"Result order. Defaults to the API order (most recent activity first)"},{"name":"status","type":"array","required":false,"description":"Filter by chat status (required for by_status action, optional elsewhere)"},{"name":"toDate","type":null,"required":false,"description":"End date (for by_date_range and archived actions)"},{"name":"verbosity","type":"string","required":false,"description":"Response detail level: summary = curated high-signal fields (default, token-lean); standard = broader set; full = complete chat objects (escape hatch)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":631},{"name":"analyze_whatsapp_chats","title":null,"description":"Reports and exports of the chats of a WhatsApp number.\n\nAvailable actions:\n- statistics: the team's figures for a period (7 days by default, up to 92): new, resolved and reopened chats, messages received and sent, internal notes, average time to the first reply, to each reply, to resolve and to handle a chat, what was in the inbox at the end of the period, the most used labels and a day-by-day breakdown. Add compareFromDate and compareToDate to compare with an earlier period and get the change in percent. Days are cut at midnight in the account timezone, so for whole days pass local midnights with their offset. Times are in seconds. There is no breakdown per agent or per hour.\n- export: Export chats in JSON, CSV or TXT, filtered by status and date, paging through as many chats as requested\n\nUse this tool for: weekly reports, response time reviews, backups, and feeding chat lists into another system.","inputs":[{"name":"action","type":"string","required":true,"description":"Chat analysis action to perform"},{"name":"compareFromDate","type":"string","required":false,"description":"Statistics only: start of an earlier period to compare with. Requires compareToDate"},{"name":"compareToDate","type":"string","required":false,"description":"Statistics only: end of the earlier period to compare with"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fields","type":"array","required":false,"description":"Explicit dot-path allowlist for the json format. Overrides verbosity when set."},{"name":"format","type":"string","required":false,"description":"Export format"},{"name":"fromDate","type":"string","required":false,"description":"Start of the period, e.g. 2026-09-11T00:00:00+02:00. Statistics: defaults to 7 days before toDate. Export: only chats whose last message is after this date"},{"name":"limit","type":"number","required":false,"description":"Maximum number of WhatsApp chats to export (max 1000, fetched in pages of 500)"},{"name":"status","type":"array","required":false,"description":"Export only: filter by chat status"},{"name":"toDate","type":"string","required":false,"description":"End of the period. Statistics: defaults to now. Export: only chats whose last message is before this date"},{"name":"verbosity","type":"string","required":false,"description":"Response detail level for the json format"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":458},{"name":"get_whatsapp_unread_chats","title":null,"description":"Retrieve WhatsApp chats with unread messages. Essential for managing pending conversations and customer support.\n\nSame as get_whatsapp_chats with action \"unread\".","inputs":[{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"labels","type":"array","required":false,"description":"Only chats carrying at least one of these labels. Use [\"*\"] for any label. Cannot be combined with labelsExclude"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"sort","type":"string","required":false,"description":"Result order. Defaults to the API order (most recent activity first)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":146},{"name":"get_whatsapp_chats_by_status","title":null,"description":"Search and filter WhatsApp chats by their platform status (active, pending, resolved, etc.). Useful for workflow management and chat organization.\n\nSame as get_whatsapp_chats with action \"by_status\".","inputs":[{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"sort","type":"string","required":false,"description":"Result order. Defaults to the API order (most recent activity first)"},{"name":"status","type":"array","required":false,"description":"Filter by chat status (required for by_status action, optional elsewhere)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":145},{"name":"get_whatsapp_assigned_chats","title":null,"description":"Retrieve WhatsApp chats assigned to specific agents or departments. Essential for agent workload management and performance tracking.\n\nSame as get_whatsapp_chats with action \"assigned\".","inputs":[{"name":"agentId","type":"string","required":false,"description":"Filter by assigned agent ID (for assigned action)"},{"name":"departmentId","type":"string","required":false,"description":"Filter by assigned department ID (for assigned action)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"sort","type":"string","required":false,"description":"Result order. Defaults to the API order (most recent activity first)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":151},{"name":"get_whatsapp_chats_by_contact_type","title":null,"description":"Filter WhatsApp chats by contact type (individual users, groups, communities, channels). Useful for analyzing different communication patterns.\n\nSame as get_whatsapp_chats with action \"by_contact_type\".","inputs":[{"name":"contactTypes","type":"array","required":false,"description":"Filter by chat type (required for by_contact_type action, optional elsewhere)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"sort","type":"string","required":false,"description":"Result order. Defaults to the API order (most recent activity first)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":146},{"name":"get_whatsapp_chat_by_id","title":null,"description":"Retrieve detailed information about a specific chat using its WhatsApp ID. Includes complete metadata, assignment info, and activity details.\n\nSame as get_whatsapp_chats with action \"by_id\".","inputs":[{"name":"chat","type":"string","required":true,"description":"WhatsApp chat ID (e.g., 1234567890@c.us for phone numbers, 123456789000000000@g.us for groups, 123456789000000@newsletter for WhatsApp channels)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fields","type":"array","required":false,"description":"Explicit dot-path allowlist, e.g. ['id','name','contact.phone','unreadCount']. Overrides verbosity when set."},{"name":"verbosity","type":"string","required":false,"description":"Response detail level: summary = curated high-signal fields (default, token-lean); standard = broader set; full = complete chat objects (escape hatch)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":190},{"name":"search_whatsapp_chats_by_name","title":null,"description":"Search for WhatsApp chats by contact name, group name, phone number, company, metadata or private notes. Perfect for quickly finding specific conversations.\n\nSame as get_whatsapp_chats with action \"search\".","inputs":[{"name":"contactTypes","type":"array","required":false,"description":"Filter by chat type (required for by_contact_type action, optional elsewhere)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"query","type":"string","required":false,"description":"Free text to search for (required for search action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":145},{"name":"get_whatsapp_archived_chats","title":null,"description":"Retrieve archived WhatsApp chats. Useful for accessing historical conversations and managing chat organization.\n\nSame as get_whatsapp_chats with action \"archived\".","inputs":[{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fromDate","type":"string","required":false,"description":"Start date (for by_date_range and archived actions)"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"sort","type":"string","required":false,"description":"Result order. Defaults to the API order (most recent activity first)"},{"name":"toDate","type":null,"required":false,"description":"End date (for by_date_range and archived actions)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":148},{"name":"get_whatsapp_chats_by_date_range","title":null,"description":"Retrieve WhatsApp chats that were active within a specific date range. Perfect for analyzing conversation patterns and generating reports.\n\nSame as get_whatsapp_chats with action \"by_date_range\".","inputs":[{"name":"activityType","type":"string","required":false,"description":"Which date the range applies to: last message of any side, first message ever, or last message received from the customer"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fromDate","type":"string","required":false,"description":"Start date (for by_date_range and archived actions)"},{"name":"limit","type":"number","required":false,"description":"Number of WhatsApp chats per call (max 100)"},{"name":"page","type":"number","required":false,"description":"Results page, starting at 0"},{"name":"sort","type":"string","required":false,"description":"Result order. Defaults to the API order (most recent activity first)"},{"name":"toDate","type":null,"required":false,"description":"End date (for by_date_range and archived actions)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":188},{"name":"get_whatsapp_chat_statistics","title":null,"description":"Figures of the team for a period: chat and message volumes, response and resolution times, and what was in the inbox at the end of the period, optionally compared with an earlier period.\n\nSame as analyze_whatsapp_chats with action \"statistics\".","inputs":[{"name":"compareFromDate","type":"string","required":false,"description":"Statistics only: start of an earlier period to compare with. Requires compareToDate"},{"name":"compareToDate","type":"string","required":false,"description":"Statistics only: end of the earlier period to compare with"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fromDate","type":"string","required":false,"description":"Start of the period, e.g. 2026-09-11T00:00:00+02:00. Defaults to 7 days before toDate"},{"name":"toDate","type":"string","required":false,"description":"End of the period. Defaults to now"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":184},{"name":"export_whatsapp_chats","title":null,"description":"Export WhatsApp chats list in various formats for backup, analysis, or reporting purposes.\n\nSame as analyze_whatsapp_chats with action \"export\".","inputs":[{"name":"compareFromDate","type":"string","required":false,"description":"Statistics only: start of an earlier period to compare with. Requires compareToDate"},{"name":"compareToDate","type":"string","required":false,"description":"Statistics only: end of the earlier period to compare with"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fields","type":"array","required":false,"description":"Explicit dot-path allowlist for the json format. Overrides verbosity when set."},{"name":"format","type":"string","required":false,"description":"Export format"},{"name":"fromDate","type":"string","required":false,"description":"Start of the period, e.g. 2026-09-11T00:00:00+02:00. Statistics: defaults to 7 days before toDate. Export: only chats whose last message is after this date"},{"name":"limit","type":"number","required":false,"description":"Maximum number of WhatsApp chats to export (max 1000, fetched in pages of 500)"},{"name":"status","type":"array","required":false,"description":"Export only: filter by chat status"},{"name":"toDate","type":"string","required":false,"description":"End of the period. Statistics: defaults to now. Export: only chats whose last message is before this date"},{"name":"verbosity","type":"string","required":false,"description":"Response detail level for the json format"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":276},{"name":"manage_whatsapp_chat","title":null,"description":"Change a WhatsApp chat in the team inbox without sending anything to the customer: hand it to a teammate or department, add or remove labels, resolve or reopen it, leave an internal note, or mark it read or unread. The customer sees none of it. Your team sees the change, and your account's chat webhooks are notified.\n\nAvailable actions:\n- assign: give the chat to agentId, agentEmail or departmentId (departments need a plan that includes them). A pending chat becomes active.\n- unassign: take the chat off its agent and department. It goes back to pending.\n- add_labels / remove_labels: the labels must already exist on the number, create them first with manage_whatsapp_labels. The chat keeps any label you do not mention.\n- resolve: close the conversation.\n- reopen: back to active if someone owns the chat, pending otherwise.\n- add_note: private note only your team can see (2 to 6000 characters). authorId writes it as that teammate.\n- mark_read / mark_unread: marking a resolved chat as unread reopens it.\n\nTo write to the customer, use send_whatsapp_message instead.","inputs":[{"name":"action","type":"string","required":true,"description":"What to change on the chat"},{"name":"agentEmail","type":"string","required":false,"description":"Teammate email to assign the chat to, instead of agentId (for assign)"},{"name":"agentId","type":"string","required":false,"description":"Teammate user ID to assign the chat to (for assign)"},{"name":"authorId","type":"string","required":false,"description":"Teammate user ID the note is written as. Defaults to the API key owner (for add_note)"},{"name":"chat","type":"string","required":true,"description":"The chat: a phone number in international format, or its WhatsApp chat ID as returned by get_whatsapp_chats"},{"name":"departmentId","type":"string","required":false,"description":"Department ID to assign the chat to (for assign). Look it up with manage_whatsapp_departments"},{"name":"device","type":"string","required":true,"description":"WhatsApp number (device) ID the chat belongs to"},{"name":"labels","type":"array","required":false,"description":"Label names (for add_labels and remove_labels)"},{"name":"note","type":"string","required":false,"description":"Internal note text, WhatsApp formatting allowed (for add_note)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":447},{"name":"get_whatsapp_chat_messages","title":null,"description":"Retrieve WhatsApp chat messages (both inbound and outbound) for a specific device. Backed by the device-scoped Chat Messages endpoint, which requires a Platform subscription on the target device.\n\nAvailable actions:\n- recent: Latest messages in a chat (newest first by default)\n- search: Text search across messages (within a chat or device-wide)\n- date_range: Messages in a specific time window\n- by_sender: Messages sent from a specific phone number or WID\n- by_type: Messages filtered by type (text, image, video, audio, document, location, contact, etc.)\n- by_id: Fetch a specific message by its WhatsApp message ID\n- thread: Get conversation context around a specific message (N before + target + N after)\n- media: Messages containing media files\n\nThe 'device' parameter accepts a device ID (24-hex), phone number in E.164 format, or device alias (e.g., \"Sales 2\") — pass exactly what the user named in their request. If the account has a single device, omit it and it will be auto-selected. If the account has multiple devices and the user didn't name one, the tool returns an error listing available devices — ask the user which one they mean.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform for WhatsApp message retrieval operations"},{"name":"chat","type":"string","required":false,"description":"WhatsApp chat ID. Required for all actions except by_id and search (which accepts device-wide search when chat is omitted)"},{"name":"contextAfter","type":"number","required":false,"description":"Messages after target message (thread action)"},{"name":"contextBefore","type":"number","required":false,"description":"Messages before target message (thread action)"},{"name":"device","type":"string","required":false,"description":"Target WhatsApp device — accepts device ID (24-hex), phone number in E.164 format, or device alias. Optional: if the account has a single device, it is auto-selected; otherwise specify which one."},{"name":"fields","type":"array","required":false,"description":"Explicit dot-path allowlist, e.g. ['id','date','flow','body']. Overrides verbosity when set."},{"name":"fromDate","type":"string","required":false,"description":"Lower bound of the date range (maps to REST `after`)"},{"name":"includeFileDetails","type":"boolean","required":false,"description":"Return full media file metadata (media action)"},{"name":"includeMedia","type":"boolean","required":false,"description":"Reserved for compatibility — media is always included when present"},{"name":"includeQuotes","type":"boolean","required":false,"description":"When true, request quoted message details from the API (off by default to keep responses lean)"},{"name":"includeReactions","type":"boolean","required":false,"description":"Reserved for compatibility — reactions are returned inline by the REST API when available"},{"name":"limit","type":"number","required":false,"description":"Maximum messages to retrieve per request (REST API caps at 50)"},{"name":"mediaTypes","type":"array","required":false,"description":"Filter by specific media types (media action)"},{"name":"messageId","type":"string","required":false,"description":"Specific message ID (required for by_id and thread actions)"},{"name":"messageTypes","type":"array","required":false,"description":"Types of messages to retrieve (required for by_type action)"},{"name":"query","type":"string","required":false,"description":"Text to search for (required for search action)"},{"name":"sender","type":"string","required":false,"description":"Phone number or WID of message sender (required for by_sender action)"},{"name":"sortOrder","type":"string","required":false,"description":"Sort order by date (default: desc)"},{"name":"toDate","type":null,"required":false,"description":"Upper bound of the date range (maps to REST `before`)"},{"name":"verbosity","type":"string","required":false,"description":"Response detail level: summary = curated high-signal fields (default, token-lean); standard = broader set; full = complete message objects (escape hatch)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":710},{"name":"analyze_whatsapp_chat_messages","title":null,"description":"WhatsApp chat message analysis tool. Supports delivery-status lookups and chat export. The 'device' parameter accepts a device ID (24-hex), phone number (E.164), or alias — auto-selected if the account has a single device; otherwise the tool errors with the list of available devices so you can ask the user.\n\nAvailable actions:\n- delivery_status: Check delivery and read receipts for specific outbound messages (≤30 days old)\n- export: Export chat messages in JSON, CSV, or TXT format","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform for WhatsApp message analysis operations"},{"name":"chat","type":"string","required":false,"description":"WhatsApp chat ID (required for export)"},{"name":"device","type":"string","required":false,"description":"Target WhatsApp device — accepts device ID (24-hex), phone number in E.164 format, or device alias. Optional: if the account has a single device, it is auto-selected; otherwise specify which one."},{"name":"format","type":"string","required":false,"description":"Export format"},{"name":"fromDate","type":"string","required":false,"description":"Export period start date"},{"name":"includeMedia","type":"boolean","required":false,"description":"Include media file information in export"},{"name":"includeMetadata","type":"boolean","required":false,"description":"Include full message metadata in export"},{"name":"maxMessages","type":"number","required":false,"description":"Maximum messages to export (paginated under the hood)"},{"name":"messageIds","type":"array","required":false,"description":"Message IDs to check status for (required for delivery_status, max 20)"},{"name":"toDate","type":null,"required":false,"description":"Export period end date"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":297},{"name":"get_whatsapp_devices","title":null,"description":"Comprehensive tool to retrieve WhatsApp devices with flexible filtering options. Supports all device query scenarios: get all devices, filter by status/session status, search by terms, get only active/online devices, etc.","inputs":[{"name":"activeOnly","type":"boolean","required":false,"description":"Only include active/operational devices (authorized, verified, operative)"},{"name":"exactMatch","type":"boolean","required":false,"description":"Whether to use exact match for search (only applies when search is provided)"},{"name":"includeMetrics","type":"boolean","required":false,"description":"Include device metrics (chat counts, contacts, etc.)"},{"name":"includeSessionDetails","type":"boolean","required":false,"description":"Include detailed session information"},{"name":"includeSessionLogs","type":"boolean","required":false,"description":"Include recent session logs"},{"name":"includeSettings","type":"boolean","required":false,"description":"Include device settings and configuration"},{"name":"limit","type":"number","required":false,"description":"Maximum number of devices to retrieve"},{"name":"minUptime","type":"number","required":false,"description":"Minimum session uptime in seconds (for online devices)"},{"name":"onlineOnly","type":"boolean","required":false,"description":"Only include devices that are currently online"},{"name":"page","type":"number","required":false,"description":"Page number for pagination (0-based)"},{"name":"search","type":"string","required":false,"description":"Search term: phone number, alias, or device ID"},{"name":"sessionStatus","type":"array","required":false,"description":"Filter by session connectivity statuses"},{"name":"status","type":"array","required":false,"description":"Filter by device operational statuses"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":254},{"name":"get_whatsapp_device_details","title":null,"description":"Retrieve comprehensive detailed information about a specific WhatsApp device using its ID. Returns complete device configuration, session status, metrics, and actionable insights. For WhatsApp Cloud API numbers it includes the health Meta reports: quality rating, messaging limit, payment problems, restrictions and the issues Meta lists with their fix. Use it to find out why messages are not going out.","inputs":[{"name":"deviceId","type":"string","required":true,"description":"WhatsApp device ID (24 character hexadecimal string)"},{"name":"includeMetrics","type":"boolean","required":false,"description":"Include device metrics and statistics"},{"name":"includeSessionLogs","type":"boolean","required":false,"description":"Include recent session logs"},{"name":"includeSettings","type":"boolean","required":false,"description":"Include device settings and configuration"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":139},{"name":"list_whatsapp_templates","title":null,"description":"Retrieve WhatsApp templates for a specific device (approved ones by default). Each template includes its components and the variables that must be filled in to send it. This is required for sending template-based messages.","inputs":[{"name":"device","type":"string","required":true,"description":"Target WhatsApp device ID (24 character hex string)"},{"name":"size","type":"number","required":false,"description":"Maximum number of templates to retrieve"},{"name":"status","type":"string","required":false,"description":"Filter templates by status (defaults to APPROVED)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":96},{"name":"create_whatsapp_template","title":null,"description":"Create a WhatsApp message template and submit it to WhatsApp for review (WhatsApp Business API numbers only). It works in steps. Call it with whatever the user has given so far: if anything is missing or breaks a WhatsApp rule, it returns needsInput with the exact questions to ask, and nothing is created. When everything is valid it returns a preview and a confirmToken, still without creating anything. Show the preview; only after the user approves, call it again with the same fields plus the confirmToken. Supports text, image, video, document and location headers, body variables ({{1}} or {{first_name}}) with sample values, a footer, quick reply, URL, phone number and copy code buttons, and authentication (one-time code) templates.","inputs":[{"name":"authentication","type":"object","required":false,"description":"Options for AUTHENTICATION templates only"},{"name":"body","type":"string","required":false,"description":"Message body, up to 1024 characters. Mark per-message values with {{1}}, {{2}} or named variables like {{first_name}}; never at the very start or end, and never next to each other. Not used for AUTHE…"},{"name":"bodyExamples","type":"object","required":false,"description":"One realistic sample value per body variable, keyed by the variable: {\"1\": \"Maria\"} or {\"first_name\": \"Maria\"}. Ask the user for them; never invent them."},{"name":"buttons","type":"array","required":false,"description":"Optional buttons: up to 10 in total, at most 2 URL, 1 PHONE_NUMBER and 1 COPY_CODE, with quick replies grouped together"},{"name":"category","type":"string","required":false,"description":"MARKETING (promotions and offers), UTILITY (order, account or appointment updates) or AUTHENTICATION (one-time codes)"},{"name":"confirmToken","type":"string","required":false,"description":"Token returned with the preview. Pass it only after the user approved that exact preview."},{"name":"device","type":"string","required":false,"description":"WhatsApp Business API device ID (24 hex characters) that will own the template. Use get_whatsapp_devices to find it."},{"name":"footer","type":"string","required":false,"description":"Optional footer, up to 60 characters, without variables"},{"name":"header","type":"object","required":false,"description":"Optional header shown above the body"},{"name":"language","type":"string","required":false,"description":"WhatsApp language code of the template text, e.g. en_US, es, pt_BR"},{"name":"name","type":"string","required":false,"description":"Template name: lowercase letters, numbers and underscores, e.g. order_ready"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":491},{"name":"delete_whatsapp_template","title":null,"description":"Delete one WhatsApp message template, in one language, from a WhatsApp Business API number. It works in two steps: called without a confirmToken it only reports which template would be deleted and returns a token, writing nothing; the deletion happens on a second call carrying that token, after the user approved it. It never deletes more than the template it reported, and it asks which language when the name exists in several.","inputs":[{"name":"confirmToken","type":"string","required":false,"description":"Token returned with the confirmation. Pass it only after the user approved deleting that exact template."},{"name":"device","type":"string","required":false,"description":"WhatsApp Business API device ID (24 hex characters) that owns the template"},{"name":"language","type":"string","required":false,"description":"Language code of the template to delete, e.g. es or en_US. Required when the name exists in several languages."},{"name":"name","type":"string","required":false,"description":"Name of the template to delete"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":186},{"name":"list_whatsapp_flows","title":null,"description":"List WhatsApp Flows available for a device (WABA). Returns flow id, name, status, categories and entry screen. Use this to find a flow to send.","inputs":[{"name":"device","type":"string","required":true,"description":"Target WhatsApp device ID (24 character hex string)"},{"name":"status","type":"string","required":false,"description":"Filter by flow status"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":74},{"name":"send_whatsapp_flow","title":null,"description":"Send a published WhatsApp Form (Meta WhatsApp Flow) to a chat as a native interactive message: one message instead of asking question after question. Only works within the 24h customer-service window; to start a conversation, send a template whose button opens the form. Pass a token to match the answers to your own record (it comes back in the message:flow:response webhook), and data to prefill the form.","inputs":[{"name":"body","type":"string","required":false,"description":"Message text shown above the button (max 1024 chars)"},{"name":"cta","type":"string","required":true,"description":"Text of the button that opens the form (max 30 chars)"},{"name":"data","type":"object","required":false,"description":"Values to prefill the form with, by field name"},{"name":"device","type":"string","required":true,"description":"Target WhatsApp device ID (24 character hex string)"},{"name":"flow_id","type":"string","required":true,"description":"The WhatsApp Flow ID to send (flowId from list_whatsapp_flows)"},{"name":"footer","type":"string","required":false,"description":"Footer text under the message (max 60 chars)"},{"name":"header","type":"string","required":false,"description":"Header text above the message (max 60 chars)"},{"name":"idempotencyKey","type":"string","required":false,"description":"Your unique key for this message, 6 to 36 characters (a UUID works). Reuse the same key when retrying the same message: the API then answers 409 Conflict with the id of the message already created in…"},{"name":"phone","type":"string","required":true,"description":"Recipient phone number in international format (E.164), e.g. +34600111222"},{"name":"screen","type":"string","required":false,"description":"Screen to open. If omitted, the form opens on its first screen."},{"name":"token","type":"string","required":false,"description":"Your reference for this send (an order or ticket id). It comes back with the answers."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":371},{"name":"list_whatsapp_flow_responses","title":null,"description":"List what customers answered in a WhatsApp Form (Meta WhatsApp Flow), newest first: who answered, each question's label and value, and when. Takes the form's id from list_whatsapp_flows (not its flowId). Only keys of the account owner or an admin can read answers.","inputs":[{"name":"campaign","type":"string","required":false,"description":"Only answers to this campaign"},{"name":"device","type":null,"required":false,"description":"Only answers received on this number"},{"name":"form_id","type":"string","required":true,"description":"The form id (\"id\" from list_whatsapp_flows, 24 hex characters)"},{"name":"from","type":"string","required":false,"description":"First day, YYYY-MM-DD (UTC)"},{"name":"page","type":"integer","required":false,"description":"Page, from 0"},{"name":"size","type":"integer","required":false,"description":"Answers per page (default 25, max 100)"},{"name":"to","type":"string","required":false,"description":"Last day, YYYY-MM-DD (UTC)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":181},{"name":"manage_whatsapp_team","title":null,"description":"Comprehensive WhatsApp team management tool supporting all team operations. Perfect for managing team member lifecycle, device access, and role assignments. Supports all WhatsApp team operations through a unified action-based interface.\n\nAvailable actions:\n- search: Search and list team members with filtering options\n- get: Get detailed information about a specific team member by ID\n- create: Create a new team member and grant them access to a WhatsApp device (requires device, email, displayName, password, role and color)\n- update: Update an existing team member's name, email, password, role or color\n- delete: Delete one or more team members from the account, choosing what happens to their assigned chats\n- grant_access: Grant an existing team member access to a WhatsApp device\n- revoke_access: Revoke a team member's access to a WhatsApp device, choosing what happens to their assigned chats\n\nNotes:\n- New team members are always created against a specific WhatsApp device and are granted access to it immediately.\n- grant_access and revoke_access operate on a single team member at a time.\n- delete, and revoke_access when chatAction is \"reassign\", require reassignTo.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp team members"},{"name":"chatAction","type":"string","required":false,"description":"What to do with the chats assigned to the removed team member"},{"name":"color","type":"string","required":false,"description":"Team member color (required for create, optional for update)"},{"name":"device","type":"string","required":false,"description":"WhatsApp device ID (required for create, grant_access and revoke_access actions; optional filter for search)"},{"name":"displayName","type":"string","required":false,"description":"Team member display name (required for create)"},{"name":"email","type":"string","required":false,"description":"Team member email address (required for create; may be used instead of userId to identify the member for delete and revoke_access)"},{"name":"exceptIds","type":"array","required":false,"description":"Exclude these team member IDs from search results"},{"name":"force","type":"boolean","required":false,"description":"Delete team members even when they still have access to active WhatsApp devices (for delete action)"},{"name":"ids","type":"array","required":false,"description":"Restrict search results to these team member IDs"},{"name":"invite","type":"boolean","required":false,"description":"Send an invitation email to the new team member (for create action)"},{"name":"loginAfter","type":null,"required":false,"description":"Only team members whose last login is after this ISO 8601 date and time"},{"name":"loginBefore","type":"string","required":false,"description":"Only team members whose last login is before this ISO 8601 date and time"},{"name":"onlineAfter","type":null,"required":false,"description":"Only team members last seen online after this ISO 8601 date and time"},{"name":"onlineBefore","type":null,"required":false,"description":"Only team members last seen online before this ISO 8601 date and time"},{"name":"page","type":"integer","required":false,"description":"Results page number"},{"name":"password","type":"string","required":false,"description":"Team member password (required for create, optional for update)"},{"name":"query","type":"string","required":false,"description":"Free text search over team member name and email (for search action)"},{"name":"reassignTo","type":null,"required":false,"description":"Team member ID to reassign chats to (required when chatAction is \"reassign\")"},{"name":"remove","type":"boolean","required":false,"description":"Also delete the team member from the account, not just from this device (for revoke_access action)"},{"name":"role","type":"string","required":false,"description":"Filter by team member role for search, or the role to assign for create and update"},{"name":"size","type":"integer","required":false,"description":"Maximum number of results per page"},{"name":"status","type":"string","required":false,"description":"Filter by team member status (for search action)"},{"name":"userId","type":"string","required":false,"description":"Team member ID (required for get, update, grant_access and revoke_access actions)"},{"name":"userIds","type":"array","required":false,"description":"Array of team member IDs to delete (required for the delete action, max 10)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":742},{"name":"search_whatsapp_outbound_files","title":null,"description":"Search and list uploaded WhatsApp files with advanced filtering. Returns outbound files that have been uploaded to the platform for sending as media messages. Supports extensive filtering by filename, file type, size, creation date, tags, and more.","inputs":[{"name":"after","type":"string","required":false,"description":"Filter files created after this date (ISO 8601 format)"},{"name":"before","type":"string","required":false,"description":"Filter files created before this date (ISO 8601 format)"},{"name":"ext","type":"array","required":false,"description":"Filter by file extensions (e.g., [\"jpg\", \"pdf\", \"mp4\"])"},{"name":"filename","type":"string","required":false,"description":"Filter by exact filename"},{"name":"format","type":"array","required":false,"description":"Filter by file format types"},{"name":"kind","type":"array","required":false,"description":"Filter by file kinds (e.g., [\"image\", \"video\", \"document\"])"},{"name":"maxSize","type":"integer","required":false,"description":"Maximum file size in bytes"},{"name":"mime","type":"array","required":false,"description":"Filter by MIME types (e.g., [\"image/jpeg\", \"video/mp4\"])"},{"name":"minSize","type":"integer","required":false,"description":"Minimum file size in bytes"},{"name":"origin","type":"string","required":false,"description":"Filter by upload origin: upload (local file) or remote (URL)"},{"name":"page","type":"integer","required":false,"description":"Page number for pagination (0-based)"},{"name":"permission","type":"string","required":false,"description":"Filter by access permission level"},{"name":"search","type":"string","required":false,"description":"Search files by filename, tags, or reference ID"},{"name":"size","type":"integer","required":false,"description":"Number of files to return per page"},{"name":"status","type":"array","required":false,"description":"Filter by file status"},{"name":"tags","type":"array","required":false,"description":"Filter by file tags"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":315},{"name":"upload_whatsapp_file_from_url","title":null,"description":"Upload a file from a remote URL to the WhatsApp platform for use in media messages. The file will be downloaded from the provided URL and stored securely. Returns the uploaded file details including ID for use in message sending.","inputs":[{"name":"expiration","type":"string","required":false,"description":"File expiration time-to-live"},{"name":"filename","type":"string","required":false,"description":"Custom filename for the uploaded file"},{"name":"format","type":"string","required":false,"description":"File presentation format (gif for videos as GIF, ptt for audio as voice note)"},{"name":"permission","type":"string","required":false,"description":"File access permission level"},{"name":"reference","type":"string","required":false,"description":"Optional reference identifier for file tracking"},{"name":"tags","type":"array","required":false,"description":"Optional tags for file categorization"},{"name":"url","type":"string","required":true,"description":"Public URL from which to download file contents"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":157},{"name":"get_whatsapp_file_details","title":null,"description":"Get detailed information about a specific uploaded WhatsApp file by ID. Returns complete file metadata including size, type, format, status, expiration, tags, and download URLs.","inputs":[{"name":"fileId","type":"string","required":true,"description":"File ID (24 character hexadecimal string)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":60},{"name":"update_whatsapp_file_metadata","title":null,"description":"Update metadata and properties of an uploaded WhatsApp file. You can modify filename, tags, expiration time, access permissions, format, and reference ID to better organize and manage your files.","inputs":[{"name":"expiration","type":"string","required":false,"description":"New expiration time-to-live"},{"name":"fileId","type":"string","required":true,"description":"File ID (24 character hexadecimal string)"},{"name":"filename","type":"string","required":false,"description":"New filename for the file"},{"name":"format","type":"string","required":false,"description":"New file presentation format"},{"name":"message","type":"string","required":false,"description":"Default caption text for media messages (images/videos only)"},{"name":"permission","type":"string","required":false,"description":"New access permission level"},{"name":"reference","type":"string","required":false,"description":"New reference identifier"},{"name":"tags","type":"array","required":false,"description":"New tags for the file"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":148},{"name":"delete_whatsapp_file","title":null,"description":"Delete an uploaded WhatsApp file permanently. This action cannot be undone and will remove the file from storage. The file will no longer be available for sending in messages.","inputs":[{"name":"fileId","type":"string","required":true,"description":"File ID (24 character hexadecimal string)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":58},{"name":"download_whatsapp_file","title":null,"description":"Download the content of an uploaded WhatsApp file. Returns the file content in the specified format: URL only (default) or base64 encoded content.","inputs":[{"name":"fileId","type":"string","required":true,"description":"File ID (24 character hexadecimal string)"},{"name":"outputFormat","type":"string","required":false,"description":"Download format: url (download URL only) or base64 (encoded file content)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"name":"search_whatsapp_chat_files","title":null,"description":"Search and list received files from WhatsApp chats (inbound files). These are media files that were sent to your WhatsApp number by other users. Supports filtering by chat, file type, date range, and more.","inputs":[{"name":"after","type":"string","required":false,"description":"Filter files received after this date (ISO 8601 format)"},{"name":"before","type":"string","required":false,"description":"Filter files received before this date (ISO 8601 format)"},{"name":"chat","type":"array","required":false,"description":"Filter by specific chat IDs"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"flow","type":"string","required":false,"description":"Filter by message flow direction"},{"name":"page","type":"integer","required":false,"description":"Page number for pagination (0-based)"},{"name":"search","type":"string","required":false,"description":"Search files by filename or content"},{"name":"size","type":"integer","required":false,"description":"Number of files to return per page"},{"name":"sort","type":"string","required":false,"description":"Sort order for results"},{"name":"type","type":"array","required":false,"description":"Filter by file media types"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":201},{"name":"get_whatsapp_chat_file_details","title":null,"description":"Get detailed information about a specific received file from a WhatsApp chat by ID. Returns complete file metadata including sender information, chat context, media details, and download URLs.","inputs":[{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fileId","type":"string","required":true,"description":"File ID (24 character hexadecimal string)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":81},{"name":"download_whatsapp_chat_file","title":null,"description":"Download the content of a received file from a WhatsApp chat. Returns the file content in the specified format: URL only (default) or base64 encoded content.","inputs":[{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fileId","type":"string","required":true,"description":"File ID (24 character hexadecimal string)"},{"name":"outputFormat","type":"string","required":false,"description":"Download format: url (download URL only) or base64 (encoded file content)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":103},{"name":"manage_whatsapp_groups","title":null,"description":"Universal WhatsApp group management tool that handles all group operations through action-based parameters. Supports search, create, update, join, leave, and invite management operations. Perfect for comprehensive WhatsApp group administration.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp groups"},{"name":"code","type":"string","required":false,"description":"Group invitation code (for join action)"},{"name":"description","type":"string","required":false,"description":"Group description (for create/update actions)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"ephemeral","type":"string","required":false,"description":"Ephemeral messages duration (for create/update actions)"},{"name":"groupId","type":"string","required":false,"description":"WhatsApp group ID (required for get, update, leave, get_invite, revoke_invite actions)"},{"name":"include","type":"array","required":false,"description":"Include additional data in response"},{"name":"kind","type":"array","required":false,"description":"Filter groups by type (for search action)"},{"name":"name","type":"string","required":false,"description":"Group name (required for create action)"},{"name":"page","type":"number","required":false,"description":"Results page number (for search action)"},{"name":"participants","type":"array","required":false,"description":"Group participants (required for create action)"},{"name":"permissions","type":"object","required":false,"description":"Group permissions and settings (for create/update actions)"},{"name":"remove","type":"boolean","required":false,"description":"Remove group from chat list after leaving (for leave action)"},{"name":"search","type":"string","required":false,"description":"Search groups by name or description (for search action)"},{"name":"size","type":"number","required":false,"description":"Results page size (for search action)"},{"name":"sort","type":"string","required":false,"description":"Sort field and order (for search action)"},{"name":"status","type":"array","required":false,"description":"Filter groups by status (for search action)"},{"name":"url","type":"string","required":false,"description":"Group invitation URL (for join action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":335},{"name":"manage_whatsapp_group_participants","title":null,"description":"Universal WhatsApp group participants management tool that handles all participant operations through action-based parameters. Supports add, remove, promote, demote, and approval management operations. Essential for WhatsApp group moderation.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on group participants"},{"name":"all","type":"boolean","required":false,"description":"Apply action to all participants/pending members (for remove, approve, reject actions)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"groupId","type":"string","required":true,"description":"WhatsApp group ID"},{"name":"participants","type":"array","required":false,"description":"Participants to add with admin status (for add action)"},{"name":"phones","type":"array","required":false,"description":"Phone numbers of participants (for remove, promote, demote, approve, reject actions)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":160},{"name":"manage_whatsapp_channels","title":null,"description":"Comprehensive WhatsApp channel management tool supporting all channel operations. Perfect for managing channel lifecycle, membership, and content. Supports all WhatsApp channel operations through a unified action-based interface.\n\nAvailable actions:\n- list: List and retrieve channels with filtering options\n- get: Get detailed information about a specific channel\n- create: Create new channels with optional profile images\n- update: Update existing channel information (name, description)\n- search: Search for public channels by category and keywords\n- join: Join/follow channels via invite code or URL\n- leave: Leave/unfollow channels\n- delete: Delete channels (alias for leave)\n- update_image: Update channel profile images","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp channels"},{"name":"category","type":"string","required":false,"description":"Category of channels to search for (for search action)"},{"name":"channelId","type":"string","required":false,"description":"WhatsApp channel ID (required for get, update, leave, delete, update_image actions)"},{"name":"countries","type":"array","required":false,"description":"Country codes to filter channels by (e.g., [\"US\", \"GB\"])"},{"name":"description","type":"string","required":false,"description":"Channel description (up to 2048 characters)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"imageData","type":"string","required":false,"description":"Base64-encoded image data (JPG or PNG, max 1MB)"},{"name":"imageSource","type":"string","required":false,"description":"Source type for channel image"},{"name":"imageUrl","type":"string","required":false,"description":"URL of image to use as channel profile picture (JPG or PNG, max 1MB)"},{"name":"include","type":"array","required":false,"description":"Include related entities in response"},{"name":"inviteCode","type":"string","required":false,"description":"Channel invitation code (required if joinMethod is \"code\")"},{"name":"inviteUrl","type":"string","required":false,"description":"Channel invitation URL (required if joinMethod is \"url\")"},{"name":"joinMethod","type":"string","required":false,"description":"Method to join the channel (for join action)"},{"name":"limit","type":"number","required":false,"description":"Number of results to retrieve (max 250)"},{"name":"name","type":"string","required":false,"description":"Channel name (required for create, optional for update)"},{"name":"page","type":"number","required":false,"description":"Page number for pagination (0-based)"},{"name":"permission","type":"string","required":false,"description":"Filter channels by permission type (for list action)"},{"name":"searchQuery","type":"string","required":false,"description":"Text to search for in channel names and descriptions (for search action)"},{"name":"sort","type":"string","required":false,"description":"Sort field and order (e.g., \"-createdAt\", \"name\")"},{"name":"sortField","type":"string","required":false,"description":"Field to sort search results by"},{"name":"sortOrder","type":"string","required":false,"description":"Sort order for search results"},{"name":"uploadImage","type":"boolean","required":false,"description":"Whether to upload a profile image (for create action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":541},{"name":"manage_whatsapp_channel_messages","title":null,"description":"Comprehensive WhatsApp channel message management tool for retrieving and managing channel content. Perfect for monitoring channel activity and accessing channel message history.\n\nAvailable actions:\n- get: Get recent messages from a specific channel with filtering options","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp channel messages"},{"name":"channelId","type":"string","required":true,"description":"WhatsApp channel ID to get messages from"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"fromDate","type":"string","required":false,"description":"Get messages from this date onwards"},{"name":"includeDeleted","type":"boolean","required":false,"description":"Include deleted messages in results"},{"name":"includeMedia","type":"boolean","required":false,"description":"Include media message details"},{"name":"limit","type":"number","required":false,"description":"Number of recent messages to retrieve (max 100)"},{"name":"messageTypes","type":"array","required":false,"description":"Filter by specific message types"},{"name":"page","type":"number","required":false,"description":"Page number for pagination (0-based)"},{"name":"sortOrder","type":"string","required":false,"description":"Sort order by timestamp"},{"name":"toDate","type":null,"required":false,"description":"Get messages up to this date"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":211},{"name":"manage_whatsapp_labels","title":null,"description":"Comprehensive WhatsApp label management tool supporting all label operations. Perfect for organizing conversations with color-coded categories and managing chat organization systems. Supports both WhatsApp Business and platform-specific labels.\n\nAvailable actions:\n- list: Retrieve all available labels with filtering and metadata\n- create: Create new labels with custom colors and descriptions\n- update: Update existing label colors and descriptions\n- delete: Remove labels and cleanup associated chats","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp labels"},{"name":"activeOnly","type":"boolean","required":false,"description":"Only return active labels (for list action)"},{"name":"color","type":"string","required":false,"description":"Label color from predefined palette (required for create, optional for update)"},{"name":"confirmDeletion","type":"boolean","required":false,"description":"Confirm label deletion and removal from all chats/contacts (required for delete action)"},{"name":"description","type":"string","required":false,"description":"Label description (optional for create, required for update)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"filterByScope","type":"string","required":false,"description":"Filter labels by scope for list action"},{"name":"includeMetadata","type":"boolean","required":false,"description":"Include additional label metadata like scope and active status"},{"name":"name","type":"string","required":false,"description":"Label name (required for create, update, delete actions)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":253},{"name":"manage_whatsapp_contacts","title":null,"description":"Comprehensive WhatsApp contacts management with action-based operations. Supports listing, searching, creating, updating, deleting contacts, bulk operations, and metadata management. All contact operations including CRUD, filtering, pagination, and metadata handling in one unified tool.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp contacts"},{"name":"address","type":"string","required":false,"description":"Contact address (for create, update actions)"},{"name":"after","type":"string","required":false,"description":"Filter contacts created after this date (for list action)"},{"name":"altPhone","type":null,"required":false,"description":"Alternative phone number (for create, update actions)"},{"name":"assign","type":null,"required":false,"description":"Assign contact to specific agent (for create action)"},{"name":"before","type":null,"required":false,"description":"Filter contacts created before this date (for list action)"},{"name":"birthday","type":"string","required":false,"description":"Contact birthday in YYYY-MM-DD format (for create, update actions)"},{"name":"city","type":"string","required":false,"description":"Contact city (for create, update actions)"},{"name":"companyCode","type":"string","required":false,"description":"Company code (for create, update actions)"},{"name":"companyCountry","type":"string","required":false,"description":"Company country 2-letter ISO code (for create, update actions)"},{"name":"companyEmail","type":"string","required":false,"description":"Company email (for create, update actions)"},{"name":"companyName","type":"string","required":false,"description":"Company name (for create, update actions)"},{"name":"companyPhone","type":null,"required":false,"description":"Company phone number (for create, update actions)"},{"name":"companyRole","type":"string","required":false,"description":"Contact role in company (for create, update actions)"},{"name":"companyTaxId","type":"string","required":false,"description":"Company tax ID (for create, update actions)"},{"name":"companyWebsite","type":"string","required":false,"description":"Company website (for create, update actions)"},{"name":"contactWid","type":"string","required":false,"description":"WhatsApp contact ID (required for get, update, delete, update_metadata, upsert_metadata actions)"},{"name":"contacts","type":"array","required":false,"description":"Array of contacts to create (max 1000, for bulk_create action)"},{"name":"country","type":"string","required":false,"description":"Contact country 2-letter ISO code (for create, update actions)"},{"name":"crm","type":"string","required":false,"description":"CRM system name (for create, update actions)"},{"name":"crmRef","type":"string","required":false,"description":"CRM reference ID or URL (for create, update actions)"},{"name":"currency","type":"string","required":false,"description":"Contact currency 3-letter ISO code (for create, update actions)"},{"name":"description","type":"string","required":false,"description":"Contact description (for create, update actions)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"email","type":"string","required":false,"description":"Contact email address (for create, update actions)"},{"name":"fields","type":"array","required":false,"description":"Explicit dot-path allowlist, e.g. ['wid','phone','info.email']. Overrides verbosity when set."},{"name":"gender","type":"string","required":false,"description":"Contact gender (for create, update actions)"},{"name":"include","type":"array","required":false,"description":"Include related entities in response"},{"name":"kind","type":"string","required":false,"description":"Contact category (for create, update actions)"},{"name":"limit","type":"number","required":false,"description":"Number of contacts to retrieve (max 200, for list action)"},{"name":"metadata","type":"array","required":false,"description":"Contact metadata key-value pairs (for create, update, update_metadata, upsert_metadata actions)"},{"name":"metadataKey","type":"array","required":false,"description":"Filter contacts with specific metadata keys (for list action)"},{"name":"metadataValue","type":"array","required":false,"description":"Filter contacts with specific metadata values (for list action)"},{"name":"name","type":"string","required":false,"description":"Contact first name (for create, update actions)"},{"name":"notes","type":"string","required":false,"description":"Private notes about the contact (for create, update actions)"},{"name":"owner","type":"array","required":false,"description":"Filter contacts assigned to specific agents (for list action)"},{"name":"page","type":"number","required":false,"description":"Page number for pagination (0-based, for list action)"},{"name":"phone","type":null,"required":false,"description":"Phone number for create action, or array of phone numbers for list filtering"},{"name":"postalCode","type":"string","required":false,"description":"Contact postal code (for create, update actions)"},{"name":"removeFields","type":"array","required":false,"description":"Fields to remove/clear from contact (for update action)"},{"name":"search","type":"string","required":false,"description":"Search contacts by name, surname, phone, email, company, address, or notes (for list action)"},{"name":"sort","type":"string","required":false,"description":"Sort field and order (e.g., \"-createdAt\", \"name\", for list action)"},{"name":"status","type":"array","required":false,"description":"Filter contacts by status (for list action)"},{"name":"surname","type":"string","required":false,"description":"Contact surname/last name (for create, update actions)"},{"name":"timezone","type":"string","required":false,"description":"Contact timezone (for create, update actions)"},{"name":"title","type":"string","required":false,"description":"Contact title (Mr., Mrs., Dr., etc., for create, update actions)"},{"name":"type","type":"array","required":false,"description":"Filter contacts by type (for list action)"},{"name":"updatedAfter","type":null,"required":false,"description":"Filter contacts updated after this date (for list action)"},{"name":"updatedBefore","type":null,"required":false,"description":"Filter contacts updated before this date (for list action)"},{"name":"upsert","type":"boolean","required":false,"description":"Update the contact if it already exists instead of failing with 409 (for create and bulk_create actions)"},{"name":"verbosity","type":"string","required":false,"description":"Response detail level for list/get: summary = curated high-signal fields (default, token-lean); standard = broader set; full = complete contact objects (escape hatch)."},{"name":"wid","type":"array","required":false,"description":"Filter contacts by WhatsApp IDs (for list action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":1026},{"name":"manage_whatsapp_contact_actions","title":null,"description":"Manage WhatsApp contact blocking and unblocking operations. Handle contact blocking status with action-based operations to control message reception from specific contacts. Contacts are identified by phone number in E.164 format, not by WhatsApp ID.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp contact blocking/unblocking"},{"name":"contacts","type":"array","required":true,"description":"Array of contact phone numbers in E.164 format to block or unblock (max 50)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":117},{"name":"manage_whatsapp_status","title":null,"description":"Comprehensive WhatsApp status management tool supporting all status operations. Perfect for managing status lifecycle, publishing immediate or scheduled content, and retrieving status history. Supports all WhatsApp status operations through a unified action-based interface.\n\nAvailable actions:\n- get: Search and retrieve status history with comprehensive filtering\n- publish: Publish immediate status updates with text, images, or videos\n- schedule: Schedule status updates for future publishing with advanced timing","inputs":[{"name":"ack","type":"array","required":false,"description":"Filter by delivery status (for get action)"},{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp status"},{"name":"chat","type":"string","required":false,"description":"Filter status by specific chat WhatsApp ID (for get action)"},{"name":"color","type":"string","required":false,"description":"Background color for text status (for publish/schedule actions)"},{"name":"delay","type":"number","required":false,"description":"Delay in seconds (for schedule action with scheduleType: delay)"},{"name":"delayTo","type":"string","required":false,"description":"Time notation delay (for schedule action with scheduleType: delayTo)"},{"name":"device","type":"string","required":false,"description":"WhatsApp device ID (24-character hex string)"},{"name":"flow","type":"string","required":false,"description":"Filter by message direction (for get action)"},{"name":"font","type":"string","required":false,"description":"Font style for text status (for publish/schedule actions)"},{"name":"fromDate","type":"string","required":false,"description":"Get status published from this date onwards (for get action)"},{"name":"idempotencyKey","type":"string","required":false,"description":"Unique key to prevent duplicate status publishing (for publish action)"},{"name":"limit","type":"number","required":false,"description":"Maximum number of status entries to retrieve (for get action)"},{"name":"media","type":"object","required":false,"description":"Media content (image/video) for status update (for publish/schedule actions)"},{"name":"message","type":"string","required":false,"description":"Text content for status update (required for text status in publish/schedule actions)"},{"name":"mine","type":"boolean","required":false,"description":"Return only status published by your own WhatsApp number (for get action)"},{"name":"order","type":"boolean","required":false,"description":"Enforce strict publication order for scheduled status (for publish action)"},{"name":"page","type":"number","required":false,"description":"Page number for pagination (for get action)"},{"name":"phone","type":"string","required":false,"description":"Filter status from specific phone number or WhatsApp ID (for get action)"},{"name":"publishDate","type":null,"required":false,"description":"Specific publish date and time (for schedule action with scheduleType: date)"},{"name":"reference","type":"string","required":false,"description":"Filter by custom reference field or set reference for publish/schedule"},{"name":"schedule","type":"object","required":false,"description":"Schedule options for delayed publishing (for publish action)"},{"name":"scheduleType","type":"string","required":false,"description":"Type of scheduling method (required for schedule action)"},{"name":"scheduled","type":"boolean","required":false,"description":"Return only scheduled status to be published in the future (for get action)"},{"name":"search","type":"string","required":false,"description":"Search status by text content, contact name, or media filename (for get action)"},{"name":"sortOrder","type":"string","required":false,"description":"Sort order by creation date (for get action)"},{"name":"strictOrder","type":"boolean","required":false,"description":"Enforce strict publication order (for schedule action)"},{"name":"timezone","type":"string","required":false,"description":"Timezone for date scheduling (for schedule action)"},{"name":"toDate","type":null,"required":false,"description":"Get status published up to this date (for get action)"},{"name":"type","type":"array","required":false,"description":"Filter by status content types (for get action)"},{"name":"wid","type":"array","required":false,"description":"Filter by specific WhatsApp message IDs (for get action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":644},{"name":"manage_whatsapp_departments","title":null,"description":"Comprehensive WhatsApp department management tool supporting all department operations. Perfect for organizing team structure, managing agent assignments, and customizing department appearance. Supports all WhatsApp department operations through a unified action-based interface.\n\nAvailable actions:\n- list: List and retrieve all departments with complete information\n- create: Create new departments with agents, colors, and icons\n- update: Update existing department information and agent assignments\n- delete: Delete departments (removes department but preserves agent assignments)","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp departments"},{"name":"agents","type":"array","required":false,"description":"Array of agent IDs to include in the department (required for create, optional for update)"},{"name":"color","type":"string","required":false,"description":"Department color for visual identification"},{"name":"departmentId","type":"string","required":false,"description":"Department ID (required for update, delete actions)"},{"name":"description","type":"string","required":false,"description":"Department description (max 300 characters)"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"icon","type":"string","required":false,"description":"Department icon identifier"},{"name":"name","type":"string","required":false,"description":"Department name (required for create, optional for update)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":232},{"name":"manage_whatsapp_campaigns","title":null,"description":"Universal WhatsApp campaign management tool that handles all campaign operations through action-based parameters. Supports search, create, update, start, stop, and delete operations for WhatsApp bulk messaging campaigns. Perfect for comprehensive WhatsApp marketing automation.\n\nWhat a campaign sends depends on the number. Its connector, reported by get_whatsapp_devices and health_check, says which kind it is: cloud for WhatsApp Cloud API, web for a number linked by QR.\n- WhatsApp Cloud API (WABA) numbers: a pre-approved template is required, and it only reaches phone numbers, never groups. Pass template { name, language } and give each recipient the values its variables need. Read the template first with list_whatsapp_templates: every variable it reports has a location (header, body or buttons) and, for buttons, a buttonIndex starting at 0. Send each value with its component, and for a button variable use button_url_N or button_copy_code_N with that index.\n- Numbers linked by QR: a message, optionally with a file. Personalize it with placeholders: {{ name }} is the recipient's name, {{ phone }} their number, and each key in a recipient's variables fills {{ key }}. For example message \"Hi {{ name }}, your order {{ order }} has shipped\" with variables [{ key: \"order\", value: \"A-1043\" }]. Write keys and placeholders in lowercase. A placeholder a recipient has no value for disappears from their message; {{ order | on its way }} prints the text after the bar instead.\n\nTo send it: create with activate true, which needs settings.date and at least one recipient, or create first and then start, which asks for the same two. If activation fails during create, the campaign is deleted and you have to create it again.\n\nRecipients: pass them on create, up to 2000 per request. To add or remove them afterwards use manage_whatsapp_campaign_contacts. The total a campaign can hold depends on the plan, from 100 on trial to 2000.\n\nWhat it will cost: before launching a template campaign,…","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp campaigns"},{"name":"activate","type":"boolean","required":false,"description":"Start the campaign right after creating it. Needs settings.date and at least one recipient; without them the campaign is created and left as a draft"},{"name":"after","type":"string","required":false,"description":"Filter campaigns created after this date (for search action)"},{"name":"before","type":"string","required":false,"description":"Filter campaigns created before this date (for search action)"},{"name":"campaignId","type":"string","required":false,"description":"WhatsApp campaign ID (required for get, update, start, stop, delete actions)"},{"name":"confirmPaymentIssue","type":"boolean","required":false,"description":"Only after telling the user that Meta reports a payment problem on the number, or that it needs reconnecting: true to activate or start the campaign anyway, because they say it is already fixed or re…"},{"name":"contacts","type":"array","required":false,"description":"Campaign recipients, for the create action only. Max 2000 per request, and the total a campaign can hold depends on the plan (100 on trial, 500 to 2000 otherwise). To add or remove recipients later u…"},{"name":"costs","type":"array","required":false,"description":"For estimate_cost: one line per country of the recipients, with the template category and the number of messages. Up to 100 lines"},{"name":"device","type":"string","required":false,"description":"WhatsApp device ID (required for create action)"},{"name":"file","type":"string","required":false,"description":"Uploaded file ID. On a template campaign this is the header media, and only for a template whose header is an image, video or document: on a template without a media header the API sends a header the…"},{"name":"group","type":"array","required":false,"description":"Filter campaigns by group IDs (for search action)"},{"name":"message","type":"string","required":false,"description":"Campaign message, for numbers linked by QR. On a WhatsApp Cloud API number use template instead. Personalize it with {{ name }}, {{ phone }} and {{ key }} for each key in the recipients' variables"},{"name":"name","type":"string","required":false,"description":"Campaign name (required for create action)"},{"name":"owner","type":"array","required":false,"description":"Filter by owner user IDs (for search action)"},{"name":"page","type":"number","required":false,"description":"Results page number (for search action)"},{"name":"phone","type":"array","required":false,"description":"Filter campaigns by recipient phone numbers (for search action)"},{"name":"settings","type":"object","required":false,"description":"Campaign delivery settings (for create/update actions)"},{"name":"size","type":"number","required":false,"description":"Results page size (for search action, max 100)"},{"name":"status","type":"array","required":false,"description":"Filter campaigns by status (for search action)"},{"name":"template","type":"object","required":false,"description":"Pre-approved template to send. Required on WhatsApp Cloud API numbers, and not accepted on numbers linked by QR"},{"name":"unsubscribe","type":"object","required":false,"description":"Unsubscribe settings (for create/update actions)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":1173},{"name":"manage_whatsapp_campaign_contacts","title":null,"description":"Universal WhatsApp campaign contacts management tool that handles all campaign recipient operations through action-based parameters. Supports add, remove, and search operations for campaign recipients: phone numbers and groups. Essential for WhatsApp campaign recipient management.\n\nadd keeps the recipients already on the campaign. On a campaign that sends a template (WhatsApp Cloud API numbers), give every variable its component exactly as on manage_whatsapp_campaigns create: body, header, header_location, button_url_N or button_copy_code_N, with N the buttonIndex that list_whatsapp_templates reports. Such a campaign only reaches phone numbers, not groups. On a campaign from a number linked by QR, each variable key fills the {{ key }} placeholder of the campaign message.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on campaign contacts"},{"name":"campaignId","type":"string","required":true,"description":"WhatsApp campaign ID"},{"name":"channels","type":"array","required":false,"description":"Channel IDs to remove (for remove action)"},{"name":"contacts","type":"array","required":false,"description":"Contacts to add to campaign (for add action)"},{"name":"groups","type":"array","required":false,"description":"Group IDs to remove (for remove action)"},{"name":"kind","type":"array","required":false,"description":"Filter by contact type (for search action)"},{"name":"page","type":"number","required":false,"description":"Results page number (for search action)"},{"name":"phones","type":"array","required":false,"description":"Phone numbers to remove (for remove action)"},{"name":"search","type":"string","required":false,"description":"Search contacts by phone number, name, or group ID (for search action)"},{"name":"size","type":"number","required":false,"description":"Results page size (for search action)"},{"name":"status","type":"array","required":false,"description":"Filter by delivery status (for search action)"},{"name":"target","type":"array","required":false,"description":"Filter by contact target: phone number or group WhatsApp ID (for search action)"},{"name":"wids","type":"array","required":false,"description":"WhatsApp message IDs to remove (for remove action)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":362},{"name":"manage_whatsapp_pipelines","title":null,"description":"Comprehensive sales pipeline management tool for the WhatsApp sales funnel (CRM). A pipeline is a sales board: an ordered list of stages that deals move through, optionally fed by specific WhatsApp numbers. Use it to set up sales boards, inspect their configuration and read their headline numbers.\n\nAvailable actions:\n- list: Retrieve all sales pipelines of the account, optionally only those fed by one device\n- get: Retrieve a single pipeline with its full stage configuration\n- create: Create a new pipeline with stages, entry rules and behaviour settings\n- update: Update pipeline properties, stages, lost reasons or settings\n- delete: Remove a pipeline (refused with 409 while it still holds open deals)\n- summary: Per-stage deal counts and open amount totals for the board, plus won and lost totals for the last 30 days\n\nStage ordering matters: a pipeline requires at least one open, one won and one lost stage, and the won and lost stages must come AFTER all the open ones, because a deal advances to the next open stage by position. When no stages are supplied on create, a sensible default ladder is seeded.\n\nNote: the sales funnel is available on the Platform Professional subscription and above. Write operations answer 403 on a plan without it, while reads stay available so an account that downgrades keeps access to its funnel data.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp sales pipelines"},{"name":"color","type":"string","required":false,"description":"Pipeline color name used for quick identification"},{"name":"confirmDeletion","type":"boolean","required":false,"description":"Confirm pipeline deletion (required for delete action)"},{"name":"currency","type":null,"required":false,"description":"ISO 4217 currency code for deal amounts. Defaults to the account currency; on update, pass null to clear it back to that default"},{"name":"description","type":"string","required":false,"description":"Pipeline description"},{"name":"device","type":null,"required":false,"description":"WhatsApp device ID: only return pipelines fed by this device (for list action)"},{"name":"devices","type":"array","required":false,"description":"WhatsApp device IDs that feed this pipeline. An empty array means all the account devices"},{"name":"entry","type":"object","required":false,"description":"Entry rule configuration: how chats enter this pipeline"},{"name":"icon","type":"string","required":false,"description":"Pipeline icon identifier. Defaults to funnel-dollar"},{"name":"lostReasons","type":"array","required":false,"description":"Preset lost reasons offered when a deal is lost"},{"name":"name","type":"string","required":false,"description":"Pipeline name (required for create action)"},{"name":"pipelineId","type":"string","required":false,"description":"Pipeline ID (required for get, update, delete and summary actions)"},{"name":"settings","type":"object","required":false,"description":"Pipeline behaviour settings"},{"name":"stages","type":"array","required":false,"description":"Pipeline stages, in order. At least one open, one won and one lost stage are required, and the won and lost stages must come after all the open ones"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":548},{"name":"manage_whatsapp_deals","title":null,"description":"Comprehensive WhatsApp sales funnel deal management tool. A deal is one sales opportunity tied to a WhatsApp contact, sitting in one stage of one pipeline. Supports listing, retrieving, creating, updating, archiving, moving between stages, linking to chats, and fetching event history.\n\nAvailable actions:\n- list: Retrieve deals with rich filtering (pipeline, stage, status, agent, contact, device, stalled, chatStatus, unread, updatedAfter/Before, pagination)\n- get: Retrieve a single deal by ID\n- create: Create a new deal (requires pipeline, device, contactWid)\n- update: Update deal fields (title, amount, currency, agent, department) - stage moves are NOT here, use move_stage\n- archive: Archive a deal (frees the contact's open-deal slot, preserves as sales history)\n- move_stage: Move a deal to another stage (requires previousStage for atomic compare-and-swap)\n- link_chat: Link a deal to a WhatsApp conversation by contactWid\n- events: Fetch deal event history (limit, skip)\n\nImportant notes:\n1. move_stage requires previousStage - the stage the client last saw. The server performs an atomic compare-and-swap and answers 409 when it no longer matches. Always read the deal first (action: 'get') and pass its current stage value.\n2. Only ONE open deal may exist per contact per pipeline. The API answers 409 otherwise, and the check spans the @c.us/@lid identity equivalence.\n3. Restricted agents (plain agent role) only ever see their own deals, regardless of filters.\n4. Write operations (create, update, archive, move_stage, link_chat) require the Professional plan or above. Read operations (list, get, events) are not plan-gated.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on deals"},{"name":"agent","type":null,"required":false,"description":"Assigned agent user ID. Filter value on list; on update, pass null to unassign"},{"name":"amount","type":null,"required":false,"description":"Deal amount. On update, pass null to clear it"},{"name":"card","type":"object","required":false,"description":"Display-only card seed"},{"name":"chatStatus","type":"string","required":false,"description":"State of the deal's WhatsApp conversation (requires pipeline, only for open deals)"},{"name":"chatWid","type":null,"required":false,"description":"WhatsApp ID of the chat the deal was created from"},{"name":"confirmDeletion","type":"boolean","required":false,"description":"Confirm deal archiving (required for archive action)"},{"name":"contact","type":"string","required":false,"description":"Deals for one contact (spans @c.us/@lid identity equivalence)"},{"name":"contactWid","type":null,"required":false,"description":"WhatsApp ID of the contact (required for create and link_chat)"},{"name":"currency","type":null,"required":false,"description":"ISO 4217 currency code. Defaults to the pipeline currency; on update, pass null to clear it"},{"name":"dealId","type":"string","required":false,"description":"Deal ID (required for get, update, archive, move_stage, link_chat, events)"},{"name":"department","type":null,"required":false,"description":"Department ID. On update, pass null to clear it"},{"name":"device","type":null,"required":false,"description":"WhatsApp device ID. A single ID when creating a deal; one or more IDs when filtering a list"},{"name":"limit","type":"integer","required":false,"description":"Number of events to return (default 50)"},{"name":"lostReason","type":"string","required":false,"description":"Reason for losing the deal (only meaningful when moving to a lost stage)"},{"name":"page","type":"integer","required":false,"description":"Page number (1-based)"},{"name":"pipeline","type":null,"required":false,"description":"Filter by pipeline ID"},{"name":"previousStage","type":null,"required":false,"description":"The stage the client last saw (required for move_stage). Must be the current stage value from a prior get. Server answers 409 if stale."},{"name":"size","type":"integer","required":false,"description":"Page size (default 50)"},{"name":"skip","type":"integer","required":false,"description":"Number of events to skip"},{"name":"stage","type":"string","required":false,"description":"Stage ID within the pipeline"},{"name":"stalled","type":"string","required":false,"description":"Deals stuck in their stage (requires pipeline)"},{"name":"status","type":"string","required":false,"description":"Deal status filter (defaults to open)"},{"name":"title","type":"string","required":false,"description":"Deal title (defaults to contact name)"},{"name":"unassigned","type":"boolean","required":false,"description":"Only deals with no agent (cannot be combined with agent)"},{"name":"unread","type":"boolean","required":false,"description":"Only deals whose conversation has unread messages"},{"name":"updatedAfter","type":"string","required":false,"description":"ISO 8601 date-time, e.g. 2026-08-01T00:00:00.000Z (half-open range [after, before))"},{"name":"updatedBefore","type":"string","required":false,"description":"ISO 8601 date-time, e.g. 2026-08-01T00:00:00.000Z (half-open range [after, before))"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":923},{"name":"manage_whatsapp_deal_notes","title":null,"description":"Comprehensive WhatsApp deal note management tool supporting all note operations. A note is what somebody wrote on a sales deal; a note that carries a due date IS a task. Perfect for managing sales notes, tracking tasks, and attaching files to deals. Supports both standalone notes and comments nested under deal history events.\n\nAvailable actions:\n- list: Retrieve all notes for a deal with filtering and metadata\n- create: Create a new note (optionally as a task with due date, or as a comment on a deal event)\n- update: Update note text, due date, completion status, or file attachments\n- delete: Remove a note (requires confirmation)\n\nNote: The Sales Funnel API is available on the Platform Professional subscription and above. Write endpoints return HTTP 403 when the account's plan does not include it; read endpoints are deliberately NOT plan-gated. Restricted agents (plain agent role) only ever receive their own deals, regardless of filters.","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on deal notes"},{"name":"confirmDeletion","type":"boolean","required":false,"description":"Confirmation flag required for delete action"},{"name":"dealId","type":"string","required":false,"description":"Deal ID (required for all actions)"},{"name":"done","type":"boolean","required":false,"description":"Completes the task (true) or reopens it (false). Update only."},{"name":"dueAt","type":null,"required":false,"description":"ISO 8601 date-time string. A note that has one IS a task. On update, passing null turns the task back into a plain note."},{"name":"event","type":"string","required":false,"description":"Id of one of the deal's own history events. Create only, set at birth and never moved. Makes the note a comment nested under that event."},{"name":"files","type":"array","required":false,"description":"Ids of previously uploaded files to attach. Upload them first with the file-upload tools (POST /files). On BOTH create and update this means the COMPLETE list the note carries afterwards, never a del…"},{"name":"limit","type":"integer","required":false,"description":"Maximum number of notes to return (1-200, default 50). List only."},{"name":"noteId","type":null,"required":false,"description":"Note ID (required for update and delete)"},{"name":"skip","type":"integer","required":false,"description":"Number of notes to skip (>= 0). List only."},{"name":"text","type":"string","required":false,"description":"Note body (required for create, optional for update)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":506},{"name":"manage_whatsapp_queue","title":null,"description":"Comprehensive WhatsApp queue management tool supporting all queue operations. Perfect for monitoring queue health, controlling message delivery flow, and performing bulk message operations. Supports all WhatsApp queue operations through a unified action-based interface.\n\nAvailable actions:\n- get_status: Get comprehensive queue statistics and status information\n- update_status: Update queue processing status (pause/active/reject/freeze) with optional force delivery\n- delete_messages: Delete queued messages with flexible filtering options. A call with no messageIds, phoneNumbers, groupIds or dateRange would delete every queued and scheduled message, so it is refused unless confirmEmptyQueue is true","inputs":[{"name":"action","type":"string","required":true,"description":"Action to perform on WhatsApp queue"},{"name":"confirmEmptyQueue","type":"boolean","required":false,"description":"Set to true only to delete every queued and scheduled message of the number (scheduled ones are kept if filters.skipScheduled is true). delete_messages refuses a call without messageIds, phoneNumbers…"},{"name":"device","type":"string","required":true,"description":"WhatsApp device ID connected to Wassenger (24 character hexadecimal string)"},{"name":"filters","type":"object","required":false,"description":"Filtering options for selective message deletion (for delete_messages action)"},{"name":"force","type":"boolean","required":false,"description":"Force delivery of all queued messages with no delay for 30 minutes (only works with \"active\" or \"reject\" status)"},{"name":"status","type":"string","required":false,"description":"Queue processing status (required for update_status action)"},{"name":"waitForCompletion","type":"boolean","required":false,"description":"Wait until all messages are deleted (may take up to 90 seconds for large queues)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":317},{"name":"ping","title":null,"description":"Basic ping test to check MCP server connectivity and response time. Returns server status and timestamp.","inputs":[{"name":"message","type":"string","required":false,"description":"Optional message to include in the ping response"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":40},{"name":"health_check","title":null,"description":"Comprehensive health check of the MCP server and connected WhatsApp devices.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":21}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T02:09:49.000Z","track":"remote","endpoint":"https://api.wassenger.com/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=api.wassenger.com","issuer":"CN=WR3,O=Google Trust Services,C=US","notBefore":"2026-09-23T20:59:57Z","notAfter":"2026-12-22T21:53:50Z","keyType":"RSA","keyBits":2048,"isCa":false},{"subject":"CN=WR3,O=Google Trust Services,C=US","issuer":"CN=GTS Root R1,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"RSA","keyBits":2048,"isCa":true},{"subject":"CN=GTS Root R1,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2020-06-19T00:00:42Z","notAfter":"2028-01-28T00:00:42Z","keyType":"RSA","keyBits":4096,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"api.wassenger.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"wassenger.com.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-25","recent":[{"id":"chg_01a1a978-3281-74de-8511-e82d999b9ccb","kind":"score.total_changed","summary":"Trust score (66 → 67)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a1a978-3281-74de-8511-e82d999b9ccb"},{"id":"chg_01a19f2c-1fc5-7832-87c0-2b0a312b4a1e","kind":"score.total_changed","summary":"Trust score (65 → 66)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a19f2c-1fc5-7832-87c0-2b0a312b4a1e"},{"id":"chg_01a194df-8982-721e-8ecc-9fd3a15e2a51","kind":"score.total_changed","summary":"Trust score (64 → 65)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a194df-8982-721e-8ecc-9fd3a15e2a51"},{"id":"chg_01a1856b-8893-7264-a3fd-efa6178e45f2","kind":"param.added_optional","summary":"“manage_whatsapp_message_interactions” added an optional parameter “idempotencyKey”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a1856b-8893-7264-a3fd-efa6178e45f2"},{"id":"chg_01a1856b-8893-7c07-a580-31dfd043f443","kind":"tool.description_changed","summary":"Tool “manage_whatsapp_queue” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a1856b-8893-7c07-a580-31dfd043f443"},{"id":"chg_01a1856b-8894-7747-9c74-80bc359978c7","kind":"param.added_optional","summary":"“manage_whatsapp_queue” added an optional parameter “confirmEmptyQueue”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a1856b-8894-7747-9c74-80bc359978c7"},{"id":"chg_01a1856b-8894-7d47-9b80-fae950083a79","kind":"param.added_optional","summary":"“send_whatsapp_flow” added an optional parameter “idempotencyKey”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a1856b-8894-7d47-9b80-fae950083a79"},{"id":"chg_01a1856b-8895-7703-a9ce-ffd520b8c211","kind":"param.added_optional","summary":"“send_whatsapp_message” added an optional parameter “idempotencyKey”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a1856b-8895-7703-a9ce-ffd520b8c211"},{"id":"chg_01a1856b-8895-7cde-bf79-89fe870f4ae5","kind":"score.total_changed","summary":"Trust score (63 → 64)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a1856b-8895-7cde-bf79-89fe870f4ae5"},{"id":"chg_01a18045-0e0b-7ce2-88bc-38bebec54b08","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a18045-0e0b-7ce2-88bc-38bebec54b08"},{"id":"chg_01a17b1f-6620-72a5-b7a1-21c91e59546d","kind":"check.reason","summary":"Authorization (Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_whatsapp_template).)","materiality":"critical","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6620-72a5-b7a1-21c91e59546d"},{"id":"chg_01a17b1f-6621-7711-b646-b249f4b713de","kind":"check.reverified","summary":"Transport (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6621-7711-b646-b249f4b713de"},{"id":"chg_01a17b1f-6622-70dd-b670-ed5bd21ff79a","kind":"check.reverified","summary":"Injection markers (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6622-70dd-b670-ed5bd21ff79a"},{"id":"chg_01a17b1f-6622-7665-9cef-124f2e964aa2","kind":"check.appeared","summary":"First check of Judged manipulation (pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6622-7665-9cef-124f2e964aa2"},{"id":"chg_01a17b1f-6623-7e94-b407-c24ac9545e16","kind":"check.reverified","summary":"MCP protocol (unverified → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6623-7e94-b407-c24ac9545e16"},{"id":"chg_01a17b1f-6624-768c-8d7d-1d001daa7d10","kind":"check.reverified","summary":"Schema quality (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6624-768c-8d7d-1d001daa7d10"},{"id":"chg_01a17b1f-6624-7d82-919f-ec91b89bfca0","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6624-7d82-919f-ec91b89bfca0"},{"id":"chg_01a17b1f-6628-7415-9d6d-780db4476176","kind":"check.appeared","summary":"First check of Schema quality (fail)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-6628-7415-9d6d-780db4476176"},{"id":"chg_01a17b1f-662b-7e4e-892b-861807ffdfdd","kind":"check.appeared","summary":"First check of Destructive annotations (25)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-662b-7e4e-892b-861807ffdfdd"},{"id":"chg_01a17b1f-662d-7bed-be13-3ce334777d18","kind":"check.appeared","summary":"First check of Schema quality (fail)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-wassenger-whatsapp/api#chg-chg_01a17b1f-662d-7bed-be13-3ce334777d18"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/com-wassenger-whatsapp/api/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-wassenger-whatsapp/api","markdown":"https://verifymcp.io/servers/com-wassenger-whatsapp/api.md","changelogJson":"https://verifymcp.io/servers/com-wassenger-whatsapp/api/changelog.json","changelogRss":"https://verifymcp.io/servers/com-wassenger-whatsapp/api.xml","external":[{"label":"Remote endpoint","href":"https://api.wassenger.com/mcp"},{"label":"Authorisation metadata","href":"https://api.wassenger.com/.well-known/oauth-protected-resource/mcp"},{"label":"Repository","href":"https://github.com/wassengerhq/whatsapp-mcp"},{"label":"Website","href":"https://wassenger.com/integrations/claude"}]}}