{"schema_version":"verify.compare.v1","generated_at":"2026-07-10T13:29:13.361840+00:00","count":1,"missing_servers":[],"results":[{"server_id":"manycontacts/whatsapp-mcp","display_name":"ManyContacts.com MCP for WhatsApp Business","profile_url":"https://verify.sentinelsignal.io/servers/manycontacts/whatsapp-mcp","compare_url":"https://verify.sentinelsignal.io/compare?server=manycontacts%2Fwhatsapp-mcp","trust_summary_url":"https://verify.sentinelsignal.io/v1/servers/manycontacts/whatsapp-mcp/trust-summary","claimed":false,"verified_publisher":false,"claim_status":"unclaimed","badge_url":"https://verify.sentinelsignal.io/badge/manycontacts/whatsapp-mcp.svg","report_url":"https://verify.sentinelsignal.io/v1/servers/manycontacts/whatsapp-mcp/report","policy_url":"https://verify.sentinelsignal.io/v1/servers/manycontacts/whatsapp-mcp/policy","evidence_url":"https://verify.sentinelsignal.io/api/v1/servers/manycontacts/whatsapp-mcp/evidence","commerce_signal":null,"payment_capable":null,"delegation_level":null,"risk_flags":[],"strengths":["report_available","policy_available","badge_available"],"limitations":["unclaimed_profile","publisher_not_verified"],"last_seen":null,"last_scored":"2026-07-10T07:21:04.155678+00:00","recommended_agent_action":"allow_with_policy_review","observed_attention":{"schema":"verify.observed_attention.v1","window_days":30,"level":"none","label":"No observed attention","summary":"No recent machine-readable trust or discovery activity observed for this server.","segments":{"useful_ai_user":{"level":"none","observed":false,"description":"AI-assisted user sessions such as ChatGPT/User or Claude/User."},"machine_trust_evaluator":{"level":"none","observed":false,"description":"Synthetic sessions inspecting multiple trust surfaces such as report, policy, ledger, badge, trust-summary, or compare."},"possible_agent_or_script":{"level":"none","observed":false,"description":"Structured direct sessions with rapid profile, compare, report, policy, badge, or trust-surface fan-out."},"isolated_machine_surface":{"level":"none","observed":false,"description":"Aged-out direct synthetic singleton sessions that touched a machine-readable trust surface without becoming a broader evaluator."},"ai_crawler":{"level":"none","observed":false,"description":"Known AI crawler activity such as ClaudeBot, GPTBot, or similar crawlers."},"search_crawler":{"level":"none","observed":false,"description":"Search and SEO crawler activity."},"browser_like_automation":{"level":"none","observed":false,"description":"Browser-like synthetic sessions with rapid structured endpoint activity."},"confirmed_human":{"level":"none","observed":false,"description":"Confirmed browser-session human activity."}},"surfaces_observed":{"server_profile":false,"compare":false,"compare_json":false,"compare_api":false,"report_json":false,"policy":false,"ledger":false,"badge_metadata":false,"badge_svg":false,"trust_summary":false,"mcp_tool":false},"claim_prompt":{"recommended":false,"reason":"No claim prompt is recommended from observed attention in the current window."},"notes":["Observed attention is based on segmented first-party telemetry.","Crawler and evaluator activity is not treated as confirmed human demand.","Public levels are bucketed to avoid exposing raw traffic counts."]},"owner_activation":{"claim_recommended":false,"reason":"no_observed_attention"}}],"servers":[{"namespace":"manycontacts","name":"whatsapp-mcp","title":"ManyContacts.com MCP for WhatsApp Business","description":"# ManyContacts MCP Server\n\nMCP (Model Context Protocol) server for [ManyContacts](https://manycontacts.com) — the WhatsApp Business CRM. Enables AI agents (Claude, Cursor, Windsurf, etc.) to manage contacts, send WhatsApp messages, run campaigns, configure AI auto-replies, and perform all CRM operations programmatically.\n\n## Quick Start\n\n### 1. Get your CLI token\n\n```bash\nnpm install -g @manycontacts/cli\n```\n\n**Already have an account?** Log in:\n\n```bash\nmc auth login --email user@example.com --password mypassword\nmc auth whoami   # verify it works\n```\n\n**New to ManyContacts?** Create an account and connect your WhatsApp channel:\n\n```bash\n# Register a new account\nmc auth register --email user@example.com --name \"My Company\"\n\n# Connect a WhatsApp Business channel (choose one method):\nmc channels connect whatsapp-api      # WhatsApp Cloud API (recommended)\nmc channels connect coexistence       # ManyContacts coexistence mode\nmc channels connect qr                # QR code pairing\n\n# Verify everything is set up\nmc auth whoami\nmc channels list\n```\n\n### 2. Configure in your MCP client\n\n#### Claude Desktop / Claude Code\n\nAdd to your MCP settings (`~/.claude/claude_desktop_config.json` or similar):\n\n```json\n{\n  \"mcpServers\": {\n    \"manycontacts\": {\n      \"command\": \"npx\",\n      \"args\": [\"@manycontacts/mcp\"],\n      \"env\": {\n        \"MC_CLI_TOKEN\": \"your-cli-token-here\"\n      }\n    }\n  }\n}\n```\n\n#### Cursor\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"manycontacts\": {\n      \"command\": \"npx\",\n      \"args\": [\"@manycontacts/mcp\"],\n      \"env\": {\n        \"MC_CLI_TOKEN\": \"your-cli-token-here\"\n      }\n    }\n  }\n}\n```\n\n> **Tip:** If you've already logged in via the CLI (`mc auth login`), the token is stored in `~/.manycontacts/config.json` and the MCP server will pick it up automatically — no `MC_CLI_TOKEN` env var needed.\n\n---\n\n## Available Tools (47 total)\n\n### Account & Context\n\n#### `manycontacts_context`\n\nGet a full overview of your ManyContacts account: connected WhatsApp Business channels, contact/user/tag counts, active AI agents, and enabled features. **Use this first** to understand the account state before performing other operations.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_org_get`\n\nGet WhatsApp Business organization/account information including name, timezone, and all configuration settings.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_org_update`\n\nUpdate organization-level settings such as timezone, auto-reply messages, auto-close behavior, and webhook configuration.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `timezone` | `string` | No | Timezone identifier (e.g. `Europe/Madrid`, `America/New_York`) |\n| `auto_reply_open` | `boolean` | No | Enable auto-reply when a new chat is opened |\n| `auto_reply_open_text` | `string` | No | Auto-reply message text when chat opens |\n| `auto_reply_close` | `boolean` | No | Enable auto-reply when a chat is closed |\n| `auto_reply_close_text` | `string` | No | Auto-reply message text when chat closes |\n| `auto_reply_close_minutes` | `number` | No | Minutes of inactivity before auto-close |\n| `auto_reply_away` | `boolean` | No | Enable away/out-of-hours auto-reply |\n| `auto_reply_away_text` | `string` | No | Away auto-reply message text |\n| `webhooks_forward` | `boolean` | No | Enable webhook forwarding to an external URL |\n| `webhooks_forward_url` | `string` | No | External URL to forward webhook events to |\n\n---\n\n#### `manycontacts_org_schedule_get`\n\nGet the business hours schedule. Returns the configured working hours for each day of the week, used to determine when the \"away\" auto-reply activates.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_org_apikey`\n\nGet the organization's REST API key for direct API integrations.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_channels_list`\n\nList all connected WhatsApp Business and Instagram channels. For WhatsApp channels, shows the phone number and connection status. For Instagram channels, shows the username.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n### Contacts\n\nAll contact operations use phone numbers as identifiers (with country code, no `+` prefix, e.g. `34600000000`).\n\n#### `manycontacts_contacts_list`\n\nList WhatsApp Business contacts with advanced filters. Returns paginated results with `has_more` indicator. Filters can be combined freely.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `page` | `number` | No | Page number (default: `1`) |\n| `limit` | `number` | No | Results per page, max `200` (default: `50`) |\n| `open` | `\"true\"` \\| `\"false\"` | No | Filter by conversation open/closed status |\n| `assigned_to` | `string` | No | Filter by assigned user ID |\n| `tags` | `string` | No | Comma-separated tag IDs — contacts must have **all** specified tags |\n| `team` | `string` | No | Filter by team ID |\n| `stages` | `string` | No | Comma-separated funnel stage IDs |\n| `date_from` | `string` | No | Filter contacts updated after this date (`YYYY-MM-DD`) |\n| `date_to` | `string` | No | Filter contacts updated before this date (`YYYY-MM-DD`) |\n| `unread` | `\"true\"` | No | Only contacts with unread messages |\n| `blacklist` | `\"true\"` | No | Only blacklisted contacts |\n| `scheduled` | `\"true\"` | No | Only contacts with pending scheduled messages |\n\n> **Note:** When using `date_from` and `date_to` together, the range cannot exceed 90 days.\n\n**Response:**\n```json\n{\n  \"ok\": true,\n  \"data\": [\n    {\n      \"name\": \"John Doe\",\n      \"number\": \"34600000000\",\n      \"open\": true,\n      \"last_user_id\": \"uuid-of-assigned-user\",\n      \"source\": \"whatsapp\",\n      \"notes\": \"VIP customer\",\n      \"customFields\": {},\n      \"createdAt\": \"2026-01-15T10:30:00Z\"\n    }\n  ],\n  \"pagination\": { \"page\": 1, \"limit\": 50, \"has_more\": true }\n}\n```\n\n---\n\n#### `manycontacts_contacts_get`\n\nGet detailed information about a specific contact including their tags, teams, funnel stages, and custom fields.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number with country code (e.g. `34600000000`) |\n\n---\n\n#### `manycontacts_contacts_create`\n\nCreate a new WhatsApp Business contact in the CRM. The phone number will be normalized automatically (leading `+` removed).\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number with country code (e.g. `34600000000`) |\n| `name` | `string` | No | Contact display name |\n| `notes` | `string` | No | Free-text notes for the contact |\n\n---\n\n#### `manycontacts_contacts_update`\n\nUpdate an existing contact's name, notes, or custom fields.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact to update |\n| `name` | `string` | No | New contact name |\n| `notes` | `string` | No | New contact notes |\n| `customFields` | `string` | No | Custom fields as a JSON string (e.g. `'{\"company\":\"Acme\"}'`) |\n\n---\n\n#### `manycontacts_contacts_delete`\n\nPermanently delete a contact from the CRM.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact to delete |\n\n---\n\n#### `manycontacts_contacts_assign`\n\nAssign a contact to a specific team member. The assigned user will see this contact in their personal inbox.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `userId` | `string` | **Yes** | User ID to assign the contact to (use `manycontacts_users_list` to get IDs) |\n\n---\n\n#### `manycontacts_contacts_unassign`\n\nRemove the current user assignment from a contact. The contact returns to the general unassigned inbox.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n\n---\n\n#### `manycontacts_contacts_close`\n\nClose a WhatsApp conversation. Closed conversations are archived and won't appear in the active inbox.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n\n---\n\n#### `manycontacts_contacts_open`\n\nReopen a previously closed WhatsApp conversation. The contact will appear again in the active inbox.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n\n---\n\n#### `manycontacts_contacts_tag_add`\n\nAdd a tag to a contact. Use `manycontacts_tags_list` to get available tag IDs.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `tagId` | `string` | **Yes** | Tag ID to add |\n\n---\n\n#### `manycontacts_contacts_tag_remove`\n\nRemove a tag from a contact.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `tagId` | `string` | **Yes** | Tag ID to remove |\n\n---\n\n#### `manycontacts_contacts_team_add`\n\nAdd a team to a contact. Use `manycontacts_teams_list` to get available team IDs.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `teamId` | `string` | **Yes** | Team ID to add |\n\n---\n\n#### `manycontacts_contacts_team_remove`\n\nRemove a team from a contact.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `teamId` | `string` | **Yes** | Team ID to remove |\n\n---\n\n#### `manycontacts_contacts_set_stage`\n\nMove a contact to a specific stage within a sales funnel/pipeline. Use `manycontacts_funnels_list` to get funnel and stage IDs.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `funnel_id` | `string` | **Yes** | Funnel ID |\n| `stage_id` | `string` | **Yes** | Target stage ID within the funnel |\n\n---\n\n#### `manycontacts_contacts_bulk`\n\nPerform bulk operations on multiple contacts at once. Supports closing, opening, assigning, tagging, and team assignment.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `action` | `\"close\"` \\| `\"open\"` \\| `\"assign\"` \\| `\"add_tag\"` \\| `\"add_team\"` | **Yes** | Bulk action to perform |\n| `phones` | `string` | **Yes** | Comma-separated phone numbers (e.g. `\"34600000000,34600000001\"`) |\n| `value` | `string` | No | Value required by the action: user ID for `assign`, tag ID for `add_tag`, team ID for `add_team`. Not needed for `close` or `open`. |\n\n---\n\n### Messaging\n\n#### `manycontacts_messages_list`\n\nList WhatsApp conversation messages for a contact. Returns messages in a conversation-friendly format with timestamps, status, and sender information.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `page` | `number` | No | Page number (default: `1`) |\n| `limit` | `number` | No | Messages per page (default: `50`) |\n\n---\n\n#### `manycontacts_messages_send_text`\n\nSend a WhatsApp text message to a contact. Only works within the 24-hour conversation window. Use `manycontacts_messages_send_template` to initiate conversations outside this window.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number to send the message to |\n| `body` | `string` | **Yes** | Message text content |\n\n---\n\n#### `manycontacts_messages_send_note`\n\nCreate an internal note on a contact's conversation. Notes are only visible to team members and are **not** sent to the WhatsApp contact.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number of the contact |\n| `body` | `string` | **Yes** | Internal note text |\n\n---\n\n#### `manycontacts_messages_send_template`\n\nSend a WhatsApp Business template message. Templates are required to initiate conversations outside the 24-hour window or for bulk outbound messaging. Templates must be pre-approved by Meta.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `phone` | `string` | **Yes** | Phone number to send the template to |\n| `templateId` | `string` | **Yes** | Template ID (use `manycontacts_templates_list` to get IDs) |\n| `variables` | `string` | No | Template variables as a JSON array string (e.g. `'[\"John\",\"20%\"]'`) |\n\n---\n\n### Templates\n\nWhatsApp Business templates are pre-approved message formats required for outbound messaging outside the 24-hour conversation window.\n\n#### `manycontacts_templates_list`\n\nList all WhatsApp Business message templates. Shows template name, code, status, components, and media flags.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `status` | `\"approved\"` \\| `\"pending\"` \\| `\"rejected\"` | No | Filter templates by approval status |\n\n---\n\n#### `manycontacts_templates_get`\n\nGet full details of a specific template including its components (header, body, footer, buttons), configuration, and media attachments.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | Template ID |\n\n---\n\n#### `manycontacts_templates_sync`\n\nSync WhatsApp Business templates from Meta Cloud API. Fetches the latest templates from the connected WhatsApp Business account. Useful after creating or modifying templates in the Meta Business Manager.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n### Campaigns\n\nCampaigns allow bulk sending of WhatsApp template messages to a list of phone numbers at a scheduled time.\n\n#### `manycontacts_campaigns_list`\n\nList all WhatsApp Business bulk messaging campaigns with statistics (sent, delivered, read, and failed counts), template names, and scheduled dates.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_campaigns_create`\n\nCreate a new WhatsApp Business bulk messaging campaign. The campaign will send a template message to the specified phone numbers at the scheduled time.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | `string` | **Yes** | Campaign name |\n| `templateId` | `string` | **Yes** | WhatsApp template ID to use (must be `approved`) |\n| `phones` | `string` | **Yes** | Comma-separated phone numbers (e.g. `\"34600000000,34600000001,34600000002\"`) |\n| `date` | `string` | **Yes** | Scheduled send date in ISO format (e.g. `\"2026-12-01T09:00:00\"`) |\n| `variables` | `string` | No | Template variables as a JSON array string (e.g. `'[\"John\",\"20%\"]'`) |\n\n---\n\n#### `manycontacts_campaigns_delete`\n\nDelete a WhatsApp Business campaign. Only pending (not yet sent) campaigns can be deleted.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | Campaign ID to delete |\n\n---\n\n### Tags\n\nTags are colored labels used to categorize and filter WhatsApp Business contacts (e.g. \"VIP\", \"Support\", \"Lead\").\n\n#### `manycontacts_tags_list`\n\nList all available tags with their names, colors, and IDs.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_tags_create`\n\nCreate a new tag for categorizing contacts.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | `string` | **Yes** | Tag name |\n| `color` | `string` | No | Tag color as hex code (e.g. `\"#ff0000\"`). Defaults to `#fab1a0` |\n\n---\n\n#### `manycontacts_tags_update`\n\nUpdate an existing tag's name or color.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | Tag ID to update |\n| `name` | `string` | No | New tag name |\n| `color` | `string` | No | New tag color as hex code |\n\n---\n\n#### `manycontacts_tags_delete`\n\nDelete a tag. The tag will be removed from all contacts that have it.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | Tag ID to delete |\n\n---\n\n### Teams\n\nTeams group users together for assignment routing and contact organization.\n\n#### `manycontacts_teams_list`\n\nList all teams in the organization.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_teams_create`\n\nCreate a new team.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | `string` | **Yes** | Team name |\n\n---\n\n#### `manycontacts_teams_add_member`\n\nAdd a user to a team.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `teamId` | `string` | **Yes** | Team ID |\n| `userId` | `string` | **Yes** | User ID to add to the team |\n\n---\n\n#### `manycontacts_teams_remove_member`\n\nRemove a user from a team.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `teamId` | `string` | **Yes** | Team ID |\n| `userId` | `string` | **Yes** | User ID to remove from the team |\n\n---\n\n#### `manycontacts_teams_delete`\n\nDelete a team. Team members are not deleted, only the team grouping.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | Team ID to delete |\n\n---\n\n### Sales Funnels / Pipelines\n\nFunnels allow you to track contacts through a multi-stage sales or support pipeline (e.g. \"New Lead\" -> \"Qualified\" -> \"Proposal\" -> \"Won\").\n\n#### `manycontacts_funnels_list`\n\nList all sales funnels/pipelines with their stages.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_funnels_create`\n\nCreate a new sales funnel/pipeline.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | `string` | **Yes** | Funnel name |\n\n---\n\n#### `manycontacts_funnels_add_stage`\n\nAdd a new stage to an existing funnel.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `funnelId` | `string` | **Yes** | Funnel ID |\n| `name` | `string` | **Yes** | Stage name (e.g. \"Qualified\", \"Proposal Sent\") |\n| `order` | `number` | **Yes** | Stage position in the pipeline (0-based) |\n\n---\n\n#### `manycontacts_funnels_update_stage`\n\nUpdate a stage's name within a funnel.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `funnelId` | `string` | **Yes** | Funnel ID |\n| `stageId` | `string` | **Yes** | Stage ID to update |\n| `name` | `string` | No | New stage name |\n\n---\n\n#### `manycontacts_funnels_contacts`\n\nList contacts currently in a specific funnel, optionally filtered by stage. Returns paginated results.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `funnelId` | `string` | **Yes** | Funnel ID |\n| `stage_id` | `string` | No | Filter by specific stage ID |\n| `page` | `number` | No | Page number |\n| `limit` | `number` | No | Results per page |\n\n---\n\n#### `manycontacts_funnels_delete`\n\nDelete a sales funnel/pipeline and all its stages. Contacts in the funnel are not deleted.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | Funnel ID to delete |\n\n---\n\n### Users / Team Members\n\nManage the team members who have access to the WhatsApp Business CRM.\n\n#### `manycontacts_users_list`\n\nList all team members/users in the organization with their roles and details.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_users_get`\n\nGet details of a specific team member.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | User ID |\n\n---\n\n#### `manycontacts_users_update`\n\nUpdate a team member's profile information.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | User ID to update |\n| `name` | `string` | No | New user display name |\n\n---\n\n#### `manycontacts_users_invite`\n\nInvite a new team member to the organization by email. They will receive an invitation email to join.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `email` | `string` | **Yes** | Email address to send the invitation to |\n\n---\n\n#### `manycontacts_users_delete`\n\nRemove a team member from the organization. Their assigned contacts will become unassigned.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | User ID to remove |\n\n---\n\n### AI Agents\n\nAI agents auto-respond to incoming WhatsApp messages using configurable instructions and scenarios. Only active agents are listed.\n\n#### `manycontacts_ai_agents_list`\n\nList all active AI auto-reply agents with their configuration.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| *(none)* | — | — | No parameters needed |\n\n---\n\n#### `manycontacts_ai_agents_get`\n\nGet full details of a specific AI agent including its scenarios (conversation flows), instruction blocks, and configuration.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | AI Agent ID (UUID) |\n\n---\n\n#### `manycontacts_ai_agents_update`\n\nUpdate an AI agent's configuration. You can enable/disable the agent or modify its instruction blocks.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | AI Agent ID (UUID) |\n| `active` | `boolean` | No | Enable (`true`) or disable (`false`) the agent |\n| `block_1` | `string` | No | Agent instructions — block 1 |\n| `block_2` | `string` | No | Agent instructions — block 2 |\n| `block_3` | `string` | No | Agent instructions — block 3 |\n\n---\n\n#### `manycontacts_ai_agents_feedback`\n\nGet feedback and conversation logs for an AI agent. Shows how the agent has been responding and user satisfaction data.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `id` | `string` | **Yes** | AI Agent ID (UUID) |\n\n---\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `MC_CLI_TOKEN` | Yes* | ManyContacts CLI authentication token. Get one via `mc auth login`. |\n| `MC_API_URL` | No | API base URL (default: `https://api.manycontacts.com`) |\n\n> *If you've logged in via the CLI, the token is stored locally at `~/.manycontacts/config.json` and the MCP server reads it automatically.\n\n## Authentication\n\nThe MCP server authenticates using CLI tokens. Each token is scoped to an organization and has configurable permissions.\n\n```bash\n# Login to get a token\nmc auth login --email user@example.com --password mypassword\n\n# The token is stored at ~/.manycontacts/config.json\n# Or set it explicitly via environment variable:\nexport MC_CLI_TOKEN=your-token-here\n```\n\n## Rate Limits\n\n- **Paying accounts:** 60 requests/minute\n- **Free/trial accounts:** 10 requests/minute\n\nWhen rate limited, the server returns a `429` error with a link to upgrade.\n\n## License\n\nMIT","homepage_url":"https://www.npmjs.com/package/@manycontacts/mcp","docs_url":null,"icon_url":"https://api.smithery.ai/servers/manycontacts/whatsapp-mcp/icon","support_url":null,"remote_url":null,"server_card_url":null,"latest_version":null,"current_status":"failing","current_score":45.62,"transport_type":null,"has_oauth":false,"has_dcr":false,"has_prompts":false,"tool_count":0,"current_validation_schema_version":"16d1d270090d6c8f","last_validated_at":"2026-07-10T07:21:04.155678+00:00","registry_source":"smithery_registry","registry_identifier":"smithery_registry:2536d18a-ac9b-467b-ac9c-c7c449377c4f","canonical_identifier":null,"current_score_components":{"auth_operability_score":0.0,"error_contract_score":0.0,"rate_limit_semantics_score":2.0,"schema_completeness_score":0.0,"backward_compatibility_score":4.0,"slo_health_score":3.0,"security_hygiene_score":1.5,"task_success_score":1.67,"trust_confidence_score":2.0,"abuse_noise_ratio_score":3.0,"prompt_contract_score":2.0,"resource_contract_score":2.0,"discovery_metadata_score":3.0,"registry_consistency_score":3.0,"installability_score":2.0,"session_semantics_score":0.0,"tool_surface_design_score":0.0,"result_shape_stability_score":0.0,"oauth_interop_score":0.0,"recovery_semantics_score":0.0,"maintenance_signal_score":3.75,"adoption_signal_score":2.0,"freshness_confidence_score":3.0,"transport_fidelity_score":0.0,"spec_recency_score":2.0,"session_resume_score":0.0,"step_up_auth_score":3.0,"transport_compliance_score":1.0,"utility_coverage_score":2.0,"advanced_capability_coverage_score":2.0,"connector_publishability_score":0.0,"tool_snapshot_churn_score":0.0,"connector_replay_score":3.0,"request_association_score":3.0,"interactive_flow_safety_score":3.0,"action_safety_score":3.0,"official_registry_presence_score":3.0,"provenance_divergence_score":4.0,"safety_transparency_score":4.0,"tool_capability_clarity_score":0.0,"destructive_operation_safety_score":3.0,"egress_ssrf_resilience_score":3.0,"execution_sandbox_safety_score":4.0,"data_exfiltration_resilience_score":3.0,"least_privilege_scope_score":2.0,"secret_handling_hygiene_score":3.0,"dependency_supply_chain_signal_score":0.5,"input_sanitization_safety_score":0.0,"tool_namespace_clarity_score":0.0},"capability_taxonomy":[],"machine_summary":{},"taxonomy_tags":[],"score_decomposition":[],"validation_diff":null,"tool_snapshot_diff":null,"connector_replay":{},"request_association":{},"production_readiness":{"code":"evaluation_only","label":"Evaluation only","reason":"Compact compare evidence is served while Verify protects web capacity."},"recommended_for":[],"history_summary":{},"validation_timeline":[],"evidence_confidence":{"score":50,"label":"warming","reason":"Deep compare evidence is deferred to the regular cache refresh path."},"incident_feed":[],"remediations":[],"client_remediation_modes":[],"client_profiles":[],"client_readiness_verdicts":[],"publishability_policy_profiles":[],"compatibility_fixtures":[],"install_snippets":{},"aliases":[],"raw_evidence":{},"active_alerts":[],"maintainer_analytics":{},"public_server_reputation":{},"maintainer_response_quality":{},"maintainer_annotations":[],"maintainer_rebuttals":[],"security_posture_summary":{},"tool_security_inventory":[],"transport_compliance":{},"utility_coverage":{},"write_action_governance":{},"provenance_divergence":{},"alias_consolidation":{},"alert_routing":{},"authenticated_validation":{},"hosted_runtime":{},"action_controls_diff":null,"benchmark_tasks":[],"latest_capability_counts":{},"point_loss_breakdown":[],"verdict_traces":{},"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_db676469b89ba765","generated_at":"2026-07-10T13:29:13.349881+00:00","source":"current_snapshot","server":"manycontacts/whatsapp-mcp","last_validated_at":"2026-07-10T07:21:04.155678+00:00","validation_age_hours":6.14,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-10T07:21:04.155678+00:00","age_hours":6.14,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":168.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":45.62,"raw_score":45.62,"confidence_score":50.0,"confidence_weighted_score":22.8,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"failing","current_score":45.62,"display_score":45.62,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Block for production","why":"failing live status + score below evaluation threshold","next_action":"revalidate, add safeguards, export policy","reason_count":2},"production_readiness_class":{"code":null,"label":null,"reason":null},"evidence_confidence":{"score":null,"label":null,"validation_age_hours":null,"live_check_count":null},"active_alerts":[]},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_db676469b89ba765","generated_at":"2026-07-10T13:29:13.349881+00:00","source":"current_snapshot","server":"manycontacts/whatsapp-mcp","last_validated_at":"2026-07-10T07:21:04.155678+00:00","validation_age_hours":6.14,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-10T07:21:04.155678+00:00","age_hours":6.14,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":168.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":45.62,"raw_score":45.62,"confidence_score":50.0,"confidence_weighted_score":22.8,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"failing","current_score":45.62,"display_score":45.62,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Block for production","why":"failing live status + score below evaluation threshold","next_action":"revalidate, add safeguards, export policy","reason_count":2},"production_readiness_class":{"code":null,"label":null,"reason":null},"evidence_confidence":{"score":null,"label":null,"validation_age_hours":null,"live_check_count":null},"active_alerts":[]},"agent_commerce":{},"latest_claim":null,"maintainer_profile_slug":null,"watch_summary":{},"observed_attention":{"schema":"verify.observed_attention.v1","window_days":30,"level":"none","label":"No observed attention","summary":"No recent machine-readable trust or discovery activity observed for this server.","segments":{"useful_ai_user":{"level":"none","observed":false,"description":"AI-assisted user sessions such as ChatGPT/User or Claude/User."},"machine_trust_evaluator":{"level":"none","observed":false,"description":"Synthetic sessions inspecting multiple trust surfaces such as report, policy, ledger, badge, trust-summary, or compare."},"possible_agent_or_script":{"level":"none","observed":false,"description":"Structured direct sessions with rapid profile, compare, report, policy, badge, or trust-surface fan-out."},"isolated_machine_surface":{"level":"none","observed":false,"description":"Aged-out direct synthetic singleton sessions that touched a machine-readable trust surface without becoming a broader evaluator."},"ai_crawler":{"level":"none","observed":false,"description":"Known AI crawler activity such as ClaudeBot, GPTBot, or similar crawlers."},"search_crawler":{"level":"none","observed":false,"description":"Search and SEO crawler activity."},"browser_like_automation":{"level":"none","observed":false,"description":"Browser-like synthetic sessions with rapid structured endpoint activity."},"confirmed_human":{"level":"none","observed":false,"description":"Confirmed browser-session human activity."}},"surfaces_observed":{"server_profile":false,"compare":false,"compare_json":false,"compare_api":false,"report_json":false,"policy":false,"ledger":false,"badge_metadata":false,"badge_svg":false,"trust_summary":false,"mcp_tool":false},"claim_prompt":{"recommended":false,"reason":"No claim prompt is recommended from observed attention in the current window."},"notes":["Observed attention is based on segmented first-party telemetry.","Crawler and evaluator activity is not treated as confirmed human demand.","Public levels are bucketed to avoid exposing raw traffic counts."]},"owner_activation":{"claim_recommended":false,"reason":"no_observed_attention"}}],"rows":[{"label":"Snapshot ID","values":["trustsnap_db676469b89ba765"]},{"label":"Status","values":["failing"]},{"label":"Score","values":[45.62]},{"label":"Production readiness class","values":["Evaluation only"]},{"label":"Production trust decision","values":["Block for production"]},{"label":"Observed Attention","values":["No observed attention"]},{"label":"Evidence confidence","values":[50]},{"label":"Freshness","values":["n/a"]},{"label":"Latency","values":["n/a"]},{"label":"Spec recency","values":[2.0]},{"label":"Session resume","values":[0.0]},{"label":"Step-up auth","values":[3.0]},{"label":"Transport compliance","values":[1.0]},{"label":"Utility coverage","values":[2.0]},{"label":"Publishability","values":[0.0]},{"label":"Connector replay","values":[3.0]},{"label":"Request association","values":[3.0]},{"label":"Action safety","values":[3.0]},{"label":"Registry presence","values":[3.0]},{"label":"Provenance divergence","values":[4.0]},{"label":"Client compatibility: ChatGPT","values":["unknown"]},{"label":"Client compatibility: Claude","values":["unknown"]},{"label":"Write-action publishing","values":["unknown"]},{"label":"Snapshot churn risk","values":["unknown"]},{"label":"Transport","values":[null]},{"label":"Auth","values":["Unauthenticated / none"]},{"label":"Tools","values":[0]},{"label":"Prompts","values":[0]},{"label":"Resources","values":[0]},{"label":"OAuth","values":[false]},{"label":"DCR","values":[false]},{"label":"Taxonomy","values":[""]},{"label":"Recommended for","values":["none"]},{"label":"Top alerts","values":["none"]}],"cache_note":"Compact compare fallback response; deep compare evidence is deferred to protect web capacity."}