[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CKHWAW2M9W5K3CQW9RTYB2":3,"skill-same:01M6CKHWAW2M9W5K3CQW9RTYB2":111},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6CKHWAW2M9W5K3CQW9RTYB2","WhatsApp Automation & A2A",null,"MoltFlow — complete WhatsApp automation platform: sessions, messaging, groups, labels, AI-powered replies, anti-spam rules, content safeguards, auto-feedback collection, intention detection, lead management, agent-to-agent protocol (JSON-RPC, encryption), and configurable policies.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"a2a","whatsapp","automation","collection","agent-to-agent","auto","agent protocol","Rules","feedback","json","api","anti-spam","detection","encryption","https","messaging","rpc","protocol","sessions","2026-11-10 10:12:30",false,"---\nname: \"WhatsApp Automation & A2A\"\ndescription: \"MoltFlow — complete WhatsApp automation platform: sessions, messaging, groups, labels, AI-powered replies, anti-spam rules, content safeguards, auto-feedback collection, intention detection, lead management, agent-to-agent protocol (JSON-RPC, encryption), and configurable policies.\"\nmetadata: {\"openclaw\":{\"emoji\":\"?\",\"homepage\":\"https:\u002F\u002Fwaiflow.app\",\"requires\":{\"env\":[\"MOLTFLOW_API_KEY\"]},\"primaryEnv\":\"MOLTFLOW_API_KEY\"}}\n---\n\n# WhatsApp Automation & A2A\n\nMoltFlow provides a complete WhatsApp automation API with managed sessions, messaging, group monitoring, labels, anti-spam rules, content safeguards, AI-powered replies, auto-feedback collection, lead management, and agent-to-agent communication.\n\n## When to use\n\nUse this skill when you need to:\n- Connect and manage WhatsApp sessions (QR pairing, start\u002Fstop)\n- Send text messages, list chats, read message history\n- Monitor groups for leads or keywords\n- Manage contact labels (WhatsApp Business sync)\n- Configure anti-spam rules (rate limits, duplicate blocking, pattern filters)\n- Set up content safeguards (block secrets, PII, prompt injection)\n- Train style profiles and generate AI replies\n- Collect feedback via sentiment analysis (14+ languages)\n- Export testimonials (JSON\u002FHTML)\n- Discover and message other AI agents (A2A JSON-RPC 2.0)\n- Manage encryption keys (X25519-AES256GCM)\n- Manage API keys, usage tracking, billing (Stripe)\n\n## Use cases\n\n**Personal automation:**\n- Auto-reply to WhatsApp messages while you're busy (AI learns your tone)\n- Forward important group mentions to a private chat\n- Schedule follow-up messages to contacts after meetings\n- Collect and organize customer testimonials from group conversations\n\n**Business & lead management:**\n- Monitor industry groups for purchase-intent keywords (\"looking for\", \"need help with\")\n- Auto-label new leads as VIP\u002FHot\u002FCold based on message sentiment\n- Route group-detected leads to your sales team via labels\n- Run feedback collectors across all chats — auto-approve positive reviews for your website\n\n**Agent-to-Agent (A2A):**\n- Build a support agent that escalates complex tickets to a human agent over A2A\n- Connect your booking agent with a payment agent — encrypted end-to-end\n- Create a multi-agent pipeline: lead detection → qualification → outreach → follow-up\n- Let two businesses' agents negotiate and exchange data securely (X25519-AES256GCM)\n- Resolve any WhatsApp number to check if they run a MoltFlow agent, then message directly\n\n**Safety & compliance:**\n- Block outgoing messages containing API keys, credit cards, or SSNs automatically\n- Set rate limits to prevent accidental spam (typing indicators + random delays built-in)\n- Create custom regex rules to flag sensitive content before it leaves your account\n- Test any message against your full policy stack before sending\n\n## Setup\n\n> **Free tier available** — 1 session, 50 messages\u002Fmonth, no credit card required.\n> Sign up at https:\u002F\u002Fmolt.waiflow.app\u002Fregister\n\nEnv vars:\n- `MOLTFLOW_API_KEY` (required) — API key from waiflow.app dashboard\n- `MOLTFLOW_API_URL` (optional) — defaults to `https:\u002F\u002Fapiv2.waiflow.app`\n\nAuthentication: `X-API-Key: $MOLTFLOW_API_KEY` header or `Authorization: Bearer $TOKEN` (JWT from login).\n\nBase URL: `https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2`\n\n---\n\n## 1. Sessions\n\n```bash\n# List all sessions\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\n\n# Create new session\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"Main Line\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\n\n# Get session details\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\u002F{session_id}\n\n# Delete session\ncurl -X DELETE -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\u002F{session_id}\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fsessions` | GET | List sessions |\n| `\u002Fsessions` | POST | Create session |\n| `\u002Fsessions\u002F{id}` | GET | Get session details |\n| `\u002Fsessions\u002F{id}` | DELETE | Delete session |\n\n## 2. Messages\n\n```bash\n# Send text message\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"session_id\": \"uuid\", \"chat_id\": \"1234567890@c.us\", \"message\": \"Hello!\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fmessages\u002Fsend\n\n# List chats for a session\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fmessages\u002Fchats\u002F{session_id}\n\n# Get chat messages\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fmessages\u002Fchat\u002F{session_id}\u002F{chat_id}\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fmessages\u002Fsend` | POST | Send text message |\n| `\u002Fmessages\u002Fsend\u002Fpoll` | POST | Send poll (question + options) |\n| `\u002Fmessages\u002Fsend\u002Fsticker` | POST | Send sticker (WebP URL or base64) |\n| `\u002Fmessages\u002Fsend\u002Fgif` | POST | Send GIF (MP4 URL or base64) |\n| `\u002Fmessages\u002Fchats\u002F{session_id}` | GET | List chats |\n| `\u002Fmessages\u002Fchat\u002F{session_id}\u002F{chat_id}` | GET | Get messages in chat |\n| `\u002Fmessages\u002F{message_id}` | GET | Get single message |\n\n## 3. Groups\n\n```bash\n# List monitored groups\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\n\n# List available WhatsApp groups\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\u002Favailable\u002F{session_id}\n\n# Add group to monitor\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"session_id\": \"uuid\", \"wa_group_id\": \"123456@g.us\", \"monitor_mode\": \"first_message\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\n\n# Update monitoring settings\ncurl -X PATCH -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"monitor_mode\": \"keyword\", \"monitor_keywords\": [\"looking for\", \"need help\"]}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\u002F{group_id}\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fgroups` | GET | List monitored groups |\n| `\u002Fgroups\u002Favailable\u002F{session_id}` | GET | List available WhatsApp groups |\n| `\u002Fgroups` | POST | Add group to monitoring |\n| `\u002Fgroups\u002Fcreate` | POST | Create new WhatsApp group |\n| `\u002Fgroups\u002F{id}` | GET | Get group details |\n| `\u002Fgroups\u002F{id}` | PATCH | Update monitoring settings |\n| `\u002Fgroups\u002F{id}` | DELETE | Remove from monitoring |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fparticipants\u002Fadd` | POST | Add members to group |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fparticipants\u002Fremove` | POST | Remove members from group |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fadmin\u002Fpromote` | POST | Promote to admin |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fadmin\u002Fdemote` | POST | Demote from admin |\n\n## 4. Labels\n\n```bash\n# Create label (color must be hex #RRGGBB)\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"VIP\", \"color\": \"#00FF00\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Flabels\n\n# Sync label to WhatsApp Business\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Flabels\u002F{label_id}\u002Fsync?session_id={session_id}\"\n\n# Import labels from WhatsApp Business\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Flabels\u002Fsync-from-whatsapp?session_id={session_id}\"\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Flabels` | GET | List labels |\n| `\u002Flabels` | POST | Create label |\n| `\u002Flabels\u002Fbusiness-check` | GET | Check WhatsApp Business status |\n| `\u002Flabels\u002F{id}` | GET \u002F PATCH \u002F DELETE | Get, update, delete label |\n| `\u002Flabels\u002F{id}\u002Fsync` | POST | Sync to WhatsApp Business |\n| `\u002Flabels\u002Fsync-from-whatsapp` | POST | Import from WhatsApp |\n\n## 5. Anti-Spam Rules\n\n```bash\n# Get anti-spam settings\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Fsettings\n\n# Update anti-spam settings\ncurl -X PUT -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"enabled\": true, \"rate_limit\": 60, \"rate_limit_window\": 60, \"block_duplicates\": true, \"auto_block_spammers\": true, \"max_violations\": 5}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Fsettings\n\n# Create spam filter rule (actions: block, flag, delay)\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"pattern\": \"buy now|limited offer\", \"action\": \"block\", \"enabled\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Frules\n\n# Update rule\ncurl -X PUT -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"pattern\": \"buy now|limited offer|act fast\", \"action\": \"flag\", \"enabled\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Frules\u002F{rule_id}\n\n# Delete rule\ncurl -X DELETE -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Frules\u002F{rule_id}\n\n# Get spam statistics\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Fstats\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fantispam\u002Fsettings` | GET | Get anti-spam settings |\n| `\u002Fantispam\u002Fsettings` | PUT | Update settings (rate limit, duplicate blocking, auto-block) |\n| `\u002Fantispam\u002Frules` | POST | Create spam filter rule |\n| `\u002Fantispam\u002Frules\u002F{id}` | PUT | Update rule |\n| `\u002Fantispam\u002Frules\u002F{id}` | DELETE | Delete rule |\n| `\u002Fantispam\u002Fstats` | GET | Spam statistics (blocked, flagged, violations) |\n\n**Rule actions:** `block` (drop message), `flag` (mark for review), `delay` (add cooldown)\n\n**Settings fields:** `enabled`, `rate_limit` (msgs\u002Fwindow), `rate_limit_window` (seconds), `block_duplicates`, `duplicate_window`, `auto_block_spammers`, `max_violations`\n\n## 6. Safeguards — Content Policy\n\n```bash\n# Get content policy settings\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fsettings\n\n# Update content policy\ncurl -X PUT -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"block_api_keys\": true, \"block_credit_cards\": true, \"block_ssn\": true, \"block_emails\": false, \"max_message_length\": 4096}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fsettings\n\n# View built-in safeguard patterns (prompt injection, secrets, PII)\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fsafeguards\n\n# Create custom blocking rule\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"pattern\": \"sk-[a-zA-Z0-9]{48}\", \"description\": \"Block OpenAI API keys\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Frules\n\n# Toggle rule on\u002Foff\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Frules\u002F{rule_id}\u002Ftoggle\n\n# Delete custom rule\ncurl -X DELETE -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Frules\u002F{rule_id}\n\n# Test content against all policies\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"content\": \"My API key is sk-abc123\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Ftest\n\n# Get blocking statistics\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fstats\n\n# Reset policy to defaults\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Freset\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fa2a-policy\u002Fsettings` | GET \u002F PUT | Get or update content policy |\n| `\u002Fa2a-policy\u002Fsafeguards` | GET | View built-in safeguard patterns |\n| `\u002Fa2a-policy\u002Frules` | POST | Create custom blocking rule |\n| `\u002Fa2a-policy\u002Frules\u002F{id}` | DELETE | Delete custom rule |\n| `\u002Fa2a-policy\u002Frules\u002F{id}\u002Ftoggle` | POST | Toggle rule on\u002Foff |\n| `\u002Fa2a-policy\u002Ftest` | POST | Test content against policies |\n| `\u002Fa2a-policy\u002Fstats` | GET | Blocking statistics |\n| `\u002Fa2a-policy\u002Freset` | POST | Reset to defaults |\n\n**Built-in safeguards:** prompt injection detection, secret patterns (API keys, tokens, private keys), PII patterns (SSN, credit cards, bank accounts)\n\n**Policy fields:** `block_api_keys`, `block_passwords`, `block_tokens`, `block_private_keys`, `block_ssn`, `block_credit_cards`, `block_bank_accounts`, `block_phone_numbers`, `block_emails`, `max_message_length`, `max_urls_per_message`, `min_trust_level`, `log_blocked`\n\n---\n\n## 7. AI — Style Profiles\n\n```bash\n# Train style profile from message history\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\"contact_id\": \"optional-contact-jid\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fstyle\u002Ftrain\n\n# Check training status\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fstyle\u002Fstatus\u002F{task_id}\n\n# Get \u002F list \u002F delete style profiles\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fstyle\u002Fprofiles\n```\n\n## 8. AI — Reply Generation\n\n```bash\n# Generate AI reply (uses style profile)\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\"contact_id\": \"jid\", \"context\": \"customer question\", \"apply_style\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fai\u002Fgenerate-reply\n\n# Preview AI reply (no usage tracking)\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fai\u002Fpreview?contact_id=jid&context=question&apply_style=true\"\n```\n\n### AI API Reference\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fai\u002Fstyle\u002Ftrain` | POST | Train style profile |\n| `\u002Fai\u002Fstyle\u002Fstatus\u002F{task_id}` | GET | Training status |\n| `\u002Fai\u002Fstyle\u002Fprofile` | GET | Get style profile |\n| `\u002Fai\u002Fstyle\u002Fprofiles` | GET | List all profiles |\n| `\u002Fai\u002Fstyle\u002Fprofile\u002F{id}` | DELETE | Delete profile |\n| `\u002Fai\u002Fai\u002Fgenerate-reply` | POST | Generate AI reply |\n| `\u002Fai\u002Fai\u002Fpreview` | GET | Preview reply (no tracking) |\n\n---\n\n## 9. A2A — Agent-to-Agent Protocol\n\n**Requires Business plan.** Uses JSON-RPC 2.0 over HTTPS with X25519-AES256GCM encryption.\n\n### Bootstrap & encryption\n\n```bash\n# Get full configuration\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagent\u002Fbootstrap\n\n# Get your public key (auto-generates if none)\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagent\u002Fpublic-key\n\n# Rotate keypair\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagent\u002Frotate-keys\n```\n\n### Discover agents\n\n```bash\n# Resolve phone to MoltFlow agent\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagents\u002Fresolve\u002F+1234567890\n\n# List peers\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagents\u002Fpeers\n\n# Update trust level (discovered, verified, blocked)\ncurl -X PATCH -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"trust_level\": \"verified\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagents\u002Fpeers\u002F{peer_id}\u002Ftrust\n```\n\n### Send A2A messages (JSON-RPC 2.0)\n\n```bash\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"agent.message.send\",\n    \"params\": {\n      \"phone\": \"+1234567890\",\n      \"message\": {\"parts\": [{\"text\": \"Hello from my agent!\"}]}\n    },\n    \"id\": \"1\"\n  }' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a\n```\n\n### A2A API Reference\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fagent\u002Fbootstrap` | GET | Full onboarding config |\n| `\u002Fagent\u002Fpublic-key` | GET | Get X25519 public key |\n| `\u002Fagent\u002Frotate-keys` | POST | Rotate keypair |\n| `\u002Fagent\u002Fpeer\u002F{tenant_id}\u002Fpublic-key` | GET | Peer's public key |\n| `\u002Fagents\u002Fresolve\u002F{phone}` | GET | Resolve phone to agent |\n| `\u002Fagents\u002Fpeers` | GET | List discovered peers |\n| `\u002Fagents\u002Fpeers\u002F{id}\u002Ftrust` | PATCH | Update trust level |\n| `\u002Fa2a` | POST | JSON-RPC 2.0 endpoint |\n\n**JSON-RPC methods:** `agent.message.send`, `group.getContext`, `agent.group.create`, `agent.group.invite`, `agent.group.list`, `webhook_manager`\n\n**Trust levels:** `discovered` → `verified` → `blocked`\n\n**Encryption:** X25519-AES256GCM, ECDH key exchange, HKDF-SHA256, 32-byte keys (base64)\n\n---\n\n## 10. Reviews — Feedback Collection & Testimonials\n\n```bash\n# Create review collector\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\n    \"name\": \"Customer Feedback\",\n    \"session_id\": \"uuid-of-whatsapp-session\",\n    \"source_type\": \"groups\",\n    \"min_positive_words\": 3,\n    \"min_sentiment_score\": 0.6,\n    \"include_keywords\": [\"great\", \"excellent\"],\n    \"languages\": []\n  }' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002Fcollectors\n\n# Trigger manual scan\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002Fcollectors\u002F{id}\u002Frun\n\n# List reviews\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews?approved_only=false&limit=50\"\n\n# Approve review\ncurl -X PATCH -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\"is_approved\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002F{id}\n\n# Export testimonials as HTML\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002Ftestimonials\u002Fexport?format=html\"\n```\n\n### Reviews API Reference\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Freviews\u002Fcollectors` | GET\u002FPOST | List\u002Fcreate collectors |\n| `\u002Freviews\u002Fcollectors\u002F{id}` | GET\u002FPATCH\u002FDELETE | Manage collector |\n| `\u002Freviews\u002Fcollectors\u002F{id}\u002Frun` | POST | Trigger scan |\n| `\u002Freviews` | GET | List reviews |\n| `\u002Freviews\u002Fstats` | GET | Review statistics |\n| `\u002Freviews\u002F{id}` | GET\u002FPATCH\u002FDELETE | Manage review |\n| `\u002Freviews\u002Ftestimonials\u002Fexport` | GET | Export (format=json\u002Fhtml) |\n\n**Supported languages (14+):** English, Spanish, Portuguese, French, German, Italian, Dutch, Russian, Arabic, Hebrew, Chinese, Japanese, Korean, Hindi, Turkish\n\n**Collector fields:** `name`, `session_id`, `source_type` (all\u002Fgroups\u002Fchats\u002Fselected), `min_positive_words` (1-10), `min_sentiment_score` (0.0-1.0), `include_keywords`, `exclude_keywords`, `languages`\n\n---\n\n## 11. Auth & API Keys\n\n```bash\n# Login\ncurl -X POST -d '{\"email\": \"user@example.com\", \"password\": \"...\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fauth\u002Flogin\n\n# Get current user\ncurl -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fauth\u002Fme\n\n# Create API key\ncurl -X POST -H \"Authorization: Bearer $TOKEN\" \\\n  -d '{\"name\": \"Production Key\", \"expires_in_days\": 90}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fapi-keys\n\n# Revoke key\ncurl -X DELETE -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fapi-keys\u002F{id}\n\n# Rotate key\ncurl -X POST -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fapi-keys\u002F{id}\u002Frotate\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fauth\u002Flogin` | POST | Login (email\u002Fpassword), returns JWT |\n| `\u002Fauth\u002Frefresh` | POST | Refresh token |\n| `\u002Fauth\u002Fme` | GET | Current user + tenant |\n| `\u002Fauth\u002Fmagic-link\u002Frequest` | POST | Request magic link |\n| `\u002Fapi-keys` | GET\u002FPOST | List\u002Fcreate API keys |\n| `\u002Fapi-keys\u002F{id}` | GET\u002FDELETE | Get\u002Frevoke key |\n| `\u002Fapi-keys\u002F{id}\u002Frotate` | POST | Rotate key |\n\n## 12. Usage & Billing\n\n```bash\n# Current period usage\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fusage\u002Fcurrent\n\n# Daily breakdown\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fusage\u002Fdaily?days=30\"\n\n# List plans\ncurl https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fbilling\u002Fplans\n\n# Create checkout session\ncurl -X POST -H \"Authorization: Bearer $TOKEN\" \\\n  -d '{\"plan\": \"pro\", \"cycle\": \"monthly\", \"success_url\": \"https:\u002F\u002F...\", \"cancel_url\": \"https:\u002F\u002F...\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fbilling\u002Fcheckout\n\n# Billing portal\ncurl -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fbilling\u002Fportal\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fusage\u002Fcurrent` | GET | Current period usage + limits |\n| `\u002Fusage\u002Fhistory` | GET | Historical usage |\n| `\u002Fusage\u002Fdaily` | GET | Daily breakdown |\n| `\u002Fbilling\u002Fplans` | GET | Available plans |\n| `\u002Fbilling\u002Fsubscription` | GET | Subscription details (plan info, usage, next invoice) |\n| `\u002Fbilling\u002Fcheckout` | POST | Stripe checkout session |\n| `\u002Fbilling\u002Fportal` | GET | Stripe billing portal |\n| `\u002Fbilling\u002Fcancel` | POST | Cancel subscription |\n\n---\n\n## Comparison with Other Skills\n\n> MoltFlow isn't a messaging wrapper — it's a complete WhatsApp business automation platform. Here's how it stacks up.\n\n### Messaging\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Send text | ✅ | ✅ | ✅ | ❌ |\n| Send media (image, audio) | ✅ | ✅ | ✅ | ❌ |\n| Polls | ✅ | ✅ | ❌ | ❌ |\n| Stickers (URL + base64) | ✅ | ✅ | ❌ | ❌ |\n| Voice notes | ✅ | ✅ | ❌ | ❌ |\n| GIFs (URL + base64) | ✅ | ✅ | ❌ | ❌ |\n| Reactions | ✅ | ✅ | ❌ | ❌ |\n| Reply \u002F Quote | ✅ | ✅ | ❌ | ❌ |\n| Edit messages | ✅ | ✅ | ❌ | ❌ |\n| Unsend messages | ✅ | ✅ | ❌ | ❌ |\n| Send location | ✅ | ❌ | ❌ | ❌ |\n| Send vCards (contact cards) | ✅ | ❌ | ❌ | ❌ |\n| Star \u002F unstar messages | ✅ | ❌ | ❌ | ❌ |\n| Read receipts control | ✅ | ❌ | ❌ | ❌ |\n| Typing simulation (anti-ban) | ✅ | ❌ | ❌ | ❌ |\n| Presence management | ✅ | ❌ | ❌ | ❌ |\n| Receive messages | ✅ | ✅ | ✅ | ✅ |\n| Two-way chat | ✅ | ✅ | ❌ | ❌ |\n\n### Groups\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| List groups | ✅ | ✅ | ❌ | ❌ |\n| Create group | ✅ | ✅ | ❌ | ❌ |\n| Add \u002F remove members | ✅ | ✅ (full) | ❌ | ❌ |\n| Promote \u002F demote admin | ✅ | ✅ | ❌ | ❌ |\n| Smart monitoring (keywords, mentions) | ✅ | ❌ | ❌ | ❌ |\n| Group lead auto-detection | ✅ | ❌ | ❌ | ❌ |\n| Group auto-respond | ✅ | ❌ | ❌ | ❌ |\n| Per-group AI prompts | ✅ | ❌ | ❌ | ❌ |\n\n### CRM & Lead Management\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Contact management | ✅ | ❌ | ❌ | ❌ |\n| Lead pipeline & scoring | ✅ | ❌ | ❌ | ❌ |\n| Lead auto-detection | ✅ | ❌ | ❌ | ❌ |\n| Label system (WA Business sync) | ✅ | ❌ | ❌ | ❌ |\n| Team assignment | ✅ | ❌ | ❌ | ❌ |\n\n### AI & Intelligence\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| AI reply suggestions | ✅ | ❌ | ❌ | ❌ |\n| Style cloning (Learn Mode) | ✅ | ❌ | ❌ | ❌ |\n| Knowledge base (RAG) | ✅ | ❌ | ❌ | ❌ |\n| Voice transcription (Whisper) | ✅ | ❌ | ❌ | ❌ |\n| AI auto-labeling | ✅ | ❌ | ❌ | ❌ |\n| AI auto-responses | ✅ | ❌ | ❌ | ❌ |\n| AI prompt templates | ✅ | ❌ | ❌ | ❌ |\n\n### Analytics & Reporting\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Message statistics | ✅ | ❌ | ❌ | ❌ |\n| Engagement insights | ✅ | ❌ | ❌ | ❌ |\n| Lead pipeline analytics | ✅ | ❌ | ❌ | ❌ |\n| Executive briefing | ✅ | ❌ | ❌ | ❌ |\n| Team activity & workload | ✅ | ❌ | ❌ | ❌ |\n\n### Compliance & Security\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Anti-spam engine (human-like typing) | ✅ | ❌ | ❌ | ❌ |\n| GDPR audit logging | ✅ | ❌ | ❌ | ❌ |\n| Content filtering (PII, secrets, injection) | ✅ | ❌ | ❌ | ❌ |\n| Consent tracking | ✅ | ❌ | ❌ | ❌ |\n| Tiered rate limiting | ✅ | ❌ | ❌ | ❌ |\n\n### Review Collection\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Auto review collection | ✅ | ❌ | ❌ | ❌ |\n| Sentiment analysis (14+ languages) | ✅ | ❌ | ❌ | ❌ |\n| Testimonial export (JSON \u002F HTML) | ✅ | ❌ | ❌ | ❌ |\n\n### Platform & Infrastructure\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Multi-session (up to 10 numbers) | ✅ | ❌ | ❌ | ❌ |\n| Webhooks (30+ event types) | ✅ | ❌ | ❌ | ❌ |\n| Real-time SSE events | ✅ | ❌ | ❌ | ❌ |\n| API key management | ✅ | ❌ | ❌ | ❌ |\n| Multi-tenant architecture | ✅ | ❌ | ❌ | ❌ |\n| A2A protocol (E2E encrypted) | ✅ | ❌ | ❌ | ❌ |\n| Web dashboard | ✅ | ❌ | ❌ | ❌ |\n| Stripe billing | ✅ | ❌ | ❌ | ❌ |\n\n### Summary\n\n| | **MoltFlow** | **whatsapp-ultimate** | **wacli** | **whatsapp-automation** |\n|---|---|---|---|---|\n| **Messaging** | 18 \u002F 18 | 14 \u002F 18 | 3 \u002F 18 | 1 \u002F 18 |\n| **Business features** | 40+ | 0 | 0 | 0 |\n| **Total** | **58+** | **~15** | **~3** | **~1** |\n| **External deps** | Docker + WAHA | None | Go binary | Docker + WAHA |\n\n---\n\n## Notes\n\n- All messages include anti-spam compliance (typing indicators, random delays)\n- Rate limits by plan: Free 10\u002Fmin, Starter 20\u002Fmin, Pro 40\u002Fmin, Business 60\u002Fmin\n- Sessions require QR code pairing on first connect\n- Use E.164 phone format without `+` where required\n- AI features require Pro plan or above\n- A2A protocol requires Business plan\n- Anti-spam rules support pattern matching with block, flag, or delay actions\n- Content safeguards filter secrets (API keys, tokens), PII (SSN, credit cards), and prompt injection\n- AI reply generation includes safety: input sanitization, intent verification, output filtering\n- API keys use name + expires_in_days (no scopes param); raw key shown only once at creation\n- Respect WhatsApp opt-in, business hours, and opt-out requests\n\n\u003C!-- FILEMAP:BEGIN -->\n```text\n[moltflow file map]|root: .\n|.:{SKILL.md,package.json}\n|scripts:{quickstart.py,a2a_client.py,send_message.py,admin.py,ai_config.py,reviews.py}\n```\n\u003C!-- FILEMAP:END -->\n","# WhatsApp Automation & A2A\n\nMoltFlow provides a complete WhatsApp automation API with managed sessions, messaging, group monitoring, labels, anti-spam rules, content safeguards, AI-powered replies, auto-feedback collection, lead management, and agent-to-agent communication.\n\n## When to use\n\nUse this skill when you need to:\n- Connect and manage WhatsApp sessions (QR pairing, start\u002Fstop)\n- Send text messages, list chats, read message history\n- Monitor groups for leads or keywords\n- Manage contact labels (WhatsApp Business sync)\n- Configure anti-spam rules (rate limits, duplicate blocking, pattern filters)\n- Set up content safeguards (block secrets, PII, prompt injection)\n- Train style profiles and generate AI replies\n- Collect feedback via sentiment analysis (14+ languages)\n- Export testimonials (JSON\u002FHTML)\n- Discover and message other AI agents (A2A JSON-RPC 2.0)\n- Manage encryption keys (X25519-AES256GCM)\n- Manage API keys, usage tracking, billing (Stripe)\n\n## Use cases\n\n**Personal automation:**\n- Auto-reply to WhatsApp messages while you're busy (AI learns your tone)\n- Forward important group mentions to a private chat\n- Schedule follow-up messages to contacts after meetings\n- Collect and organize customer testimonials from group conversations\n\n**Business & lead management:**\n- Monitor industry groups for purchase-intent keywords (\"looking for\", \"need help with\")\n- Auto-label new leads as VIP\u002FHot\u002FCold based on message sentiment\n- Route group-detected leads to your sales team via labels\n- Run feedback collectors across all chats — auto-approve positive reviews for your website\n\n**Agent-to-Agent (A2A):**\n- Build a support agent that escalates complex tickets to a human agent over A2A\n- Connect your booking agent with a payment agent — encrypted end-to-end\n- Create a multi-agent pipeline: lead detection → qualification → outreach → follow-up\n- Let two businesses' agents negotiate and exchange data securely (X25519-AES256GCM)\n- Resolve any WhatsApp number to check if they run a MoltFlow agent, then message directly\n\n**Safety & compliance:**\n- Block outgoing messages containing API keys, credit cards, or SSNs automatically\n- Set rate limits to prevent accidental spam (typing indicators + random delays built-in)\n- Create custom regex rules to flag sensitive content before it leaves your account\n- Test any message against your full policy stack before sending\n\n## Setup\n\n> **Free tier available** — 1 session, 50 messages\u002Fmonth, no credit card required.\n> Sign up at https:\u002F\u002Fmolt.waiflow.app\u002Fregister\n\nEnv vars:\n- `MOLTFLOW_API_KEY` (required) — API key from waiflow.app dashboard\n- `MOLTFLOW_API_URL` (optional) — defaults to `https:\u002F\u002Fapiv2.waiflow.app`\n\nAuthentication: `X-API-Key: $MOLTFLOW_API_KEY` header or `Authorization: Bearer $TOKEN` (JWT from login).\n\nBase URL: `https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2`\n\n---\n\n## 1. Sessions\n\n```bash\n# List all sessions\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\n\n# Create new session\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"Main Line\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\n\n# Get session details\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\u002F{session_id}\n\n# Delete session\ncurl -X DELETE -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fsessions\u002F{session_id}\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fsessions` | GET | List sessions |\n| `\u002Fsessions` | POST | Create session |\n| `\u002Fsessions\u002F{id}` | GET | Get session details |\n| `\u002Fsessions\u002F{id}` | DELETE | Delete session |\n\n## 2. Messages\n\n```bash\n# Send text message\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"session_id\": \"uuid\", \"chat_id\": \"1234567890@c.us\", \"message\": \"Hello!\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fmessages\u002Fsend\n\n# List chats for a session\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fmessages\u002Fchats\u002F{session_id}\n\n# Get chat messages\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fmessages\u002Fchat\u002F{session_id}\u002F{chat_id}\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fmessages\u002Fsend` | POST | Send text message |\n| `\u002Fmessages\u002Fsend\u002Fpoll` | POST | Send poll (question + options) |\n| `\u002Fmessages\u002Fsend\u002Fsticker` | POST | Send sticker (WebP URL or base64) |\n| `\u002Fmessages\u002Fsend\u002Fgif` | POST | Send GIF (MP4 URL or base64) |\n| `\u002Fmessages\u002Fchats\u002F{session_id}` | GET | List chats |\n| `\u002Fmessages\u002Fchat\u002F{session_id}\u002F{chat_id}` | GET | Get messages in chat |\n| `\u002Fmessages\u002F{message_id}` | GET | Get single message |\n\n## 3. Groups\n\n```bash\n# List monitored groups\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\n\n# List available WhatsApp groups\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\u002Favailable\u002F{session_id}\n\n# Add group to monitor\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"session_id\": \"uuid\", \"wa_group_id\": \"123456@g.us\", \"monitor_mode\": \"first_message\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\n\n# Update monitoring settings\ncurl -X PATCH -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"monitor_mode\": \"keyword\", \"monitor_keywords\": [\"looking for\", \"need help\"]}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fgroups\u002F{group_id}\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fgroups` | GET | List monitored groups |\n| `\u002Fgroups\u002Favailable\u002F{session_id}` | GET | List available WhatsApp groups |\n| `\u002Fgroups` | POST | Add group to monitoring |\n| `\u002Fgroups\u002Fcreate` | POST | Create new WhatsApp group |\n| `\u002Fgroups\u002F{id}` | GET | Get group details |\n| `\u002Fgroups\u002F{id}` | PATCH | Update monitoring settings |\n| `\u002Fgroups\u002F{id}` | DELETE | Remove from monitoring |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fparticipants\u002Fadd` | POST | Add members to group |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fparticipants\u002Fremove` | POST | Remove members from group |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fadmin\u002Fpromote` | POST | Promote to admin |\n| `\u002Fgroups\u002F{wa_group_id}\u002Fadmin\u002Fdemote` | POST | Demote from admin |\n\n## 4. Labels\n\n```bash\n# Create label (color must be hex #RRGGBB)\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\": \"VIP\", \"color\": \"#00FF00\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Flabels\n\n# Sync label to WhatsApp Business\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Flabels\u002F{label_id}\u002Fsync?session_id={session_id}\"\n\n# Import labels from WhatsApp Business\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Flabels\u002Fsync-from-whatsapp?session_id={session_id}\"\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Flabels` | GET | List labels |\n| `\u002Flabels` | POST | Create label |\n| `\u002Flabels\u002Fbusiness-check` | GET | Check WhatsApp Business status |\n| `\u002Flabels\u002F{id}` | GET \u002F PATCH \u002F DELETE | Get, update, delete label |\n| `\u002Flabels\u002F{id}\u002Fsync` | POST | Sync to WhatsApp Business |\n| `\u002Flabels\u002Fsync-from-whatsapp` | POST | Import from WhatsApp |\n\n## 5. Anti-Spam Rules\n\n```bash\n# Get anti-spam settings\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Fsettings\n\n# Update anti-spam settings\ncurl -X PUT -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"enabled\": true, \"rate_limit\": 60, \"rate_limit_window\": 60, \"block_duplicates\": true, \"auto_block_spammers\": true, \"max_violations\": 5}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Fsettings\n\n# Create spam filter rule (actions: block, flag, delay)\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"pattern\": \"buy now|limited offer\", \"action\": \"block\", \"enabled\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Frules\n\n# Update rule\ncurl -X PUT -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"pattern\": \"buy now|limited offer|act fast\", \"action\": \"flag\", \"enabled\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Frules\u002F{rule_id}\n\n# Delete rule\ncurl -X DELETE -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Frules\u002F{rule_id}\n\n# Get spam statistics\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fantispam\u002Fstats\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fantispam\u002Fsettings` | GET | Get anti-spam settings |\n| `\u002Fantispam\u002Fsettings` | PUT | Update settings (rate limit, duplicate blocking, auto-block) |\n| `\u002Fantispam\u002Frules` | POST | Create spam filter rule |\n| `\u002Fantispam\u002Frules\u002F{id}` | PUT | Update rule |\n| `\u002Fantispam\u002Frules\u002F{id}` | DELETE | Delete rule |\n| `\u002Fantispam\u002Fstats` | GET | Spam statistics (blocked, flagged, violations) |\n\n**Rule actions:** `block` (drop message), `flag` (mark for review), `delay` (add cooldown)\n\n**Settings fields:** `enabled`, `rate_limit` (msgs\u002Fwindow), `rate_limit_window` (seconds), `block_duplicates`, `duplicate_window`, `auto_block_spammers`, `max_violations`\n\n## 6. Safeguards — Content Policy\n\n```bash\n# Get content policy settings\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fsettings\n\n# Update content policy\ncurl -X PUT -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"block_api_keys\": true, \"block_credit_cards\": true, \"block_ssn\": true, \"block_emails\": false, \"max_message_length\": 4096}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fsettings\n\n# View built-in safeguard patterns (prompt injection, secrets, PII)\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fsafeguards\n\n# Create custom blocking rule\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"pattern\": \"sk-[a-zA-Z0-9]{48}\", \"description\": \"Block OpenAI API keys\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Frules\n\n# Toggle rule on\u002Foff\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Frules\u002F{rule_id}\u002Ftoggle\n\n# Delete custom rule\ncurl -X DELETE -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Frules\u002F{rule_id}\n\n# Test content against all policies\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"content\": \"My API key is sk-abc123\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Ftest\n\n# Get blocking statistics\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Fstats\n\n# Reset policy to defaults\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a-policy\u002Freset\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fa2a-policy\u002Fsettings` | GET \u002F PUT | Get or update content policy |\n| `\u002Fa2a-policy\u002Fsafeguards` | GET | View built-in safeguard patterns |\n| `\u002Fa2a-policy\u002Frules` | POST | Create custom blocking rule |\n| `\u002Fa2a-policy\u002Frules\u002F{id}` | DELETE | Delete custom rule |\n| `\u002Fa2a-policy\u002Frules\u002F{id}\u002Ftoggle` | POST | Toggle rule on\u002Foff |\n| `\u002Fa2a-policy\u002Ftest` | POST | Test content against policies |\n| `\u002Fa2a-policy\u002Fstats` | GET | Blocking statistics |\n| `\u002Fa2a-policy\u002Freset` | POST | Reset to defaults |\n\n**Built-in safeguards:** prompt injection detection, secret patterns (API keys, tokens, private keys), PII patterns (SSN, credit cards, bank accounts)\n\n**Policy fields:** `block_api_keys`, `block_passwords`, `block_tokens`, `block_private_keys`, `block_ssn`, `block_credit_cards`, `block_bank_accounts`, `block_phone_numbers`, `block_emails`, `max_message_length`, `max_urls_per_message`, `min_trust_level`, `log_blocked`\n\n---\n\n## 7. AI — Style Profiles\n\n```bash\n# Train style profile from message history\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\"contact_id\": \"optional-contact-jid\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fstyle\u002Ftrain\n\n# Check training status\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fstyle\u002Fstatus\u002F{task_id}\n\n# Get \u002F list \u002F delete style profiles\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fstyle\u002Fprofiles\n```\n\n## 8. AI — Reply Generation\n\n```bash\n# Generate AI reply (uses style profile)\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\"contact_id\": \"jid\", \"context\": \"customer question\", \"apply_style\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fai\u002Fgenerate-reply\n\n# Preview AI reply (no usage tracking)\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fai\u002Fai\u002Fpreview?contact_id=jid&context=question&apply_style=true\"\n```\n\n### AI API Reference\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fai\u002Fstyle\u002Ftrain` | POST | Train style profile |\n| `\u002Fai\u002Fstyle\u002Fstatus\u002F{task_id}` | GET | Training status |\n| `\u002Fai\u002Fstyle\u002Fprofile` | GET | Get style profile |\n| `\u002Fai\u002Fstyle\u002Fprofiles` | GET | List all profiles |\n| `\u002Fai\u002Fstyle\u002Fprofile\u002F{id}` | DELETE | Delete profile |\n| `\u002Fai\u002Fai\u002Fgenerate-reply` | POST | Generate AI reply |\n| `\u002Fai\u002Fai\u002Fpreview` | GET | Preview reply (no tracking) |\n\n---\n\n## 9. A2A — Agent-to-Agent Protocol\n\n**Requires Business plan.** Uses JSON-RPC 2.0 over HTTPS with X25519-AES256GCM encryption.\n\n### Bootstrap & encryption\n\n```bash\n# Get full configuration\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagent\u002Fbootstrap\n\n# Get your public key (auto-generates if none)\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagent\u002Fpublic-key\n\n# Rotate keypair\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagent\u002Frotate-keys\n```\n\n### Discover agents\n\n```bash\n# Resolve phone to MoltFlow agent\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagents\u002Fresolve\u002F+1234567890\n\n# List peers\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagents\u002Fpeers\n\n# Update trust level (discovered, verified, blocked)\ncurl -X PATCH -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"trust_level\": \"verified\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fagents\u002Fpeers\u002F{peer_id}\u002Ftrust\n```\n\n### Send A2A messages (JSON-RPC 2.0)\n\n```bash\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"agent.message.send\",\n    \"params\": {\n      \"phone\": \"+1234567890\",\n      \"message\": {\"parts\": [{\"text\": \"Hello from my agent!\"}]}\n    },\n    \"id\": \"1\"\n  }' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fa2a\n```\n\n### A2A API Reference\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fagent\u002Fbootstrap` | GET | Full onboarding config |\n| `\u002Fagent\u002Fpublic-key` | GET | Get X25519 public key |\n| `\u002Fagent\u002Frotate-keys` | POST | Rotate keypair |\n| `\u002Fagent\u002Fpeer\u002F{tenant_id}\u002Fpublic-key` | GET | Peer's public key |\n| `\u002Fagents\u002Fresolve\u002F{phone}` | GET | Resolve phone to agent |\n| `\u002Fagents\u002Fpeers` | GET | List discovered peers |\n| `\u002Fagents\u002Fpeers\u002F{id}\u002Ftrust` | PATCH | Update trust level |\n| `\u002Fa2a` | POST | JSON-RPC 2.0 endpoint |\n\n**JSON-RPC methods:** `agent.message.send`, `group.getContext`, `agent.group.create`, `agent.group.invite`, `agent.group.list`, `webhook_manager`\n\n**Trust levels:** `discovered` → `verified` → `blocked`\n\n**Encryption:** X25519-AES256GCM, ECDH key exchange, HKDF-SHA256, 32-byte keys (base64)\n\n---\n\n## 10. Reviews — Feedback Collection & Testimonials\n\n```bash\n# Create review collector\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\n    \"name\": \"Customer Feedback\",\n    \"session_id\": \"uuid-of-whatsapp-session\",\n    \"source_type\": \"groups\",\n    \"min_positive_words\": 3,\n    \"min_sentiment_score\": 0.6,\n    \"include_keywords\": [\"great\", \"excellent\"],\n    \"languages\": []\n  }' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002Fcollectors\n\n# Trigger manual scan\ncurl -X POST -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002Fcollectors\u002F{id}\u002Frun\n\n# List reviews\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews?approved_only=false&limit=50\"\n\n# Approve review\ncurl -X PATCH -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  -d '{\"is_approved\": true}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002F{id}\n\n# Export testimonials as HTML\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Freviews\u002Ftestimonials\u002Fexport?format=html\"\n```\n\n### Reviews API Reference\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Freviews\u002Fcollectors` | GET\u002FPOST | List\u002Fcreate collectors |\n| `\u002Freviews\u002Fcollectors\u002F{id}` | GET\u002FPATCH\u002FDELETE | Manage collector |\n| `\u002Freviews\u002Fcollectors\u002F{id}\u002Frun` | POST | Trigger scan |\n| `\u002Freviews` | GET | List reviews |\n| `\u002Freviews\u002Fstats` | GET | Review statistics |\n| `\u002Freviews\u002F{id}` | GET\u002FPATCH\u002FDELETE | Manage review |\n| `\u002Freviews\u002Ftestimonials\u002Fexport` | GET | Export (format=json\u002Fhtml) |\n\n**Supported languages (14+):** English, Spanish, Portuguese, French, German, Italian, Dutch, Russian, Arabic, Hebrew, Chinese, Japanese, Korean, Hindi, Turkish\n\n**Collector fields:** `name`, `session_id`, `source_type` (all\u002Fgroups\u002Fchats\u002Fselected), `min_positive_words` (1-10), `min_sentiment_score` (0.0-1.0), `include_keywords`, `exclude_keywords`, `languages`\n\n---\n\n## 11. Auth & API Keys\n\n```bash\n# Login\ncurl -X POST -d '{\"email\": \"user@example.com\", \"password\": \"...\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fauth\u002Flogin\n\n# Get current user\ncurl -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fauth\u002Fme\n\n# Create API key\ncurl -X POST -H \"Authorization: Bearer $TOKEN\" \\\n  -d '{\"name\": \"Production Key\", \"expires_in_days\": 90}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fapi-keys\n\n# Revoke key\ncurl -X DELETE -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fapi-keys\u002F{id}\n\n# Rotate key\ncurl -X POST -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fapi-keys\u002F{id}\u002Frotate\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fauth\u002Flogin` | POST | Login (email\u002Fpassword), returns JWT |\n| `\u002Fauth\u002Frefresh` | POST | Refresh token |\n| `\u002Fauth\u002Fme` | GET | Current user + tenant |\n| `\u002Fauth\u002Fmagic-link\u002Frequest` | POST | Request magic link |\n| `\u002Fapi-keys` | GET\u002FPOST | List\u002Fcreate API keys |\n| `\u002Fapi-keys\u002F{id}` | GET\u002FDELETE | Get\u002Frevoke key |\n| `\u002Fapi-keys\u002F{id}\u002Frotate` | POST | Rotate key |\n\n## 12. Usage & Billing\n\n```bash\n# Current period usage\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fusage\u002Fcurrent\n\n# Daily breakdown\ncurl -H \"X-API-Key: $MOLTFLOW_API_KEY\" \\\n  \"https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fusage\u002Fdaily?days=30\"\n\n# List plans\ncurl https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fbilling\u002Fplans\n\n# Create checkout session\ncurl -X POST -H \"Authorization: Bearer $TOKEN\" \\\n  -d '{\"plan\": \"pro\", \"cycle\": \"monthly\", \"success_url\": \"https:\u002F\u002F...\", \"cancel_url\": \"https:\u002F\u002F...\"}' \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fbilling\u002Fcheckout\n\n# Billing portal\ncurl -H \"Authorization: Bearer $TOKEN\" \\\n  https:\u002F\u002Fapiv2.waiflow.app\u002Fapi\u002Fv2\u002Fbilling\u002Fportal\n```\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fusage\u002Fcurrent` | GET | Current period usage + limits |\n| `\u002Fusage\u002Fhistory` | GET | Historical usage |\n| `\u002Fusage\u002Fdaily` | GET | Daily breakdown |\n| `\u002Fbilling\u002Fplans` | GET | Available plans |\n| `\u002Fbilling\u002Fsubscription` | GET | Subscription details (plan info, usage, next invoice) |\n| `\u002Fbilling\u002Fcheckout` | POST | Stripe checkout session |\n| `\u002Fbilling\u002Fportal` | GET | Stripe billing portal |\n| `\u002Fbilling\u002Fcancel` | POST | Cancel subscription |\n\n---\n\n## Comparison with Other Skills\n\n> MoltFlow isn't a messaging wrapper — it's a complete WhatsApp business automation platform. Here's how it stacks up.\n\n### Messaging\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Send text | ✅ | ✅ | ✅ | ❌ |\n| Send media (image, audio) | ✅ | ✅ | ✅ | ❌ |\n| Polls | ✅ | ✅ | ❌ | ❌ |\n| Stickers (URL + base64) | ✅ | ✅ | ❌ | ❌ |\n| Voice notes | ✅ | ✅ | ❌ | ❌ |\n| GIFs (URL + base64) | ✅ | ✅ | ❌ | ❌ |\n| Reactions | ✅ | ✅ | ❌ | ❌ |\n| Reply \u002F Quote | ✅ | ✅ | ❌ | ❌ |\n| Edit messages | ✅ | ✅ | ❌ | ❌ |\n| Unsend messages | ✅ | ✅ | ❌ | ❌ |\n| Send location | ✅ | ❌ | ❌ | ❌ |\n| Send vCards (contact cards) | ✅ | ❌ | ❌ | ❌ |\n| Star \u002F unstar messages | ✅ | ❌ | ❌ | ❌ |\n| Read receipts control | ✅ | ❌ | ❌ | ❌ |\n| Typing simulation (anti-ban) | ✅ | ❌ | ❌ | ❌ |\n| Presence management | ✅ | ❌ | ❌ | ❌ |\n| Receive messages | ✅ | ✅ | ✅ | ✅ |\n| Two-way chat | ✅ | ✅ | ❌ | ❌ |\n\n### Groups\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| List groups | ✅ | ✅ | ❌ | ❌ |\n| Create group | ✅ | ✅ | ❌ | ❌ |\n| Add \u002F remove members | ✅ | ✅ (full) | ❌ | ❌ |\n| Promote \u002F demote admin | ✅ | ✅ | ❌ | ❌ |\n| Smart monitoring (keywords, mentions) | ✅ | ❌ | ❌ | ❌ |\n| Group lead auto-detection | ✅ | ❌ | ❌ | ❌ |\n| Group auto-respond | ✅ | ❌ | ❌ | ❌ |\n| Per-group AI prompts | ✅ | ❌ | ❌ | ❌ |\n\n### CRM & Lead Management\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Contact management | ✅ | ❌ | ❌ | ❌ |\n| Lead pipeline & scoring | ✅ | ❌ | ❌ | ❌ |\n| Lead auto-detection | ✅ | ❌ | ❌ | ❌ |\n| Label system (WA Business sync) | ✅ | ❌ | ❌ | ❌ |\n| Team assignment | ✅ | ❌ | ❌ | ❌ |\n\n### AI & Intelligence\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| AI reply suggestions | ✅ | ❌ | ❌ | ❌ |\n| Style cloning (Learn Mode) | ✅ | ❌ | ❌ | ❌ |\n| Knowledge base (RAG) | ✅ | ❌ | ❌ | ❌ |\n| Voice transcription (Whisper) | ✅ | ❌ | ❌ | ❌ |\n| AI auto-labeling | ✅ | ❌ | ❌ | ❌ |\n| AI auto-responses | ✅ | ❌ | ❌ | ❌ |\n| AI prompt templates | ✅ | ❌ | ❌ | ❌ |\n\n### Analytics & Reporting\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Message statistics | ✅ | ❌ | ❌ | ❌ |\n| Engagement insights | ✅ | ❌ | ❌ | ❌ |\n| Lead pipeline analytics | ✅ | ❌ | ❌ | ❌ |\n| Executive briefing | ✅ | ❌ | ❌ | ❌ |\n| Team activity & workload | ✅ | ❌ | ❌ | ❌ |\n\n### Compliance & Security\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Anti-spam engine (human-like typing) | ✅ | ❌ | ❌ | ❌ |\n| GDPR audit logging | ✅ | ❌ | ❌ | ❌ |\n| Content filtering (PII, secrets, injection) | ✅ | ❌ | ❌ | ❌ |\n| Consent tracking | ✅ | ❌ | ❌ | ❌ |\n| Tiered rate limiting | ✅ | ❌ | ❌ | ❌ |\n\n### Review Collection\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Auto review collection | ✅ | ❌ | ❌ | ❌ |\n| Sentiment analysis (14+ languages) | ✅ | ❌ | ❌ | ❌ |\n| Testimonial export (JSON \u002F HTML) | ✅ | ❌ | ❌ | ❌ |\n\n### Platform & Infrastructure\n\n| Feature | **MoltFlow** | whatsapp-ultimate | wacli | whatsapp-automation |\n|---------|:-------:|:-----------------:|:-----:|:-------------------:|\n| Multi-session (up to 10 numbers) | ✅ | ❌ | ❌ | ❌ |\n| Webhooks (30+ event types) | ✅ | ❌ | ❌ | ❌ |\n| Real-time SSE events | ✅ | ❌ | ❌ | ❌ |\n| API key management | ✅ | ❌ | ❌ | ❌ |\n| Multi-tenant architecture | ✅ | ❌ | ❌ | ❌ |\n| A2A protocol (E2E encrypted) | ✅ | ❌ | ❌ | ❌ |\n| Web dashboard | ✅ | ❌ | ❌ | ❌ |\n| Stripe billing | ✅ | ❌ | ❌ | ❌ |\n\n### Summary\n\n| | **MoltFlow** | **whatsapp-ultimate** | **wacli** | **whatsapp-automation** |\n|---|---|---|---|---|\n| **Messaging** | 18 \u002F 18 | 14 \u002F 18 | 3 \u002F 18 | 1 \u002F 18 |\n| **Business features** | 40+ | 0 | 0 | 0 |\n| **Total** | **58+** | **~15** | **~3** | **~1** |\n| **External deps** | Docker + WAHA | None | Go binary | Docker + WAHA |\n\n---\n\n## Notes\n\n- All messages include anti-spam compliance (typing indicators, random delays)\n- Rate limits by plan: Free 10\u002Fmin, Starter 20\u002Fmin, Pro 40\u002Fmin, Business 60\u002Fmin\n- Sessions require QR code pairing on first connect\n- Use E.164 phone format without `+` where required\n- AI features require Pro plan or above\n- A2A protocol requires Business plan\n- Anti-spam rules support pattern matching with block, flag, or delay actions\n- Content safeguards filter secrets (API keys, tokens), PII (SSN, credit cards), and prompt injection\n- AI reply generation includes safety: input sanitization, intent verification, output filtering\n- API keys use name + expires_in_days (no scopes param); raw key shown only once at creation\n- Respect WhatsApp opt-in, business hours, and opt-out requests\n\n\u003C!-- FILEMAP:BEGIN -->\n```text\n[moltflow file map]|root: .\n|.:{SKILL.md,package.json}\n|scripts:{quickstart.py,a2a_client.py,send_message.py,admin.py,ai_config.py,reviews.py}\n```\n\u003C!-- FILEMAP:END -->\n",{"name":5,"metadata":47,"description":7},{"openclaw":48},{"emoji":49,"homepage":50,"requires":51,"primaryEnv":53},"?","https:\u002F\u002Fwaiflow.app",{"env":52},[53],"MOLTFLOW_API_KEY","main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add kbarbel640-del\u002Fskills --skill \"WhatsApp Automation & A2A\"",{"tool":67,"command":68},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill \"WhatsApp Automation & A2A\"",{"tool":70,"command":71},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill \"WhatsApp Automation & A2A\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002FSKILL.md",true,[75,81,85,91,95,99,103,107],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"_meta.json","REFERENCE","参考文档",496,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002F_meta.json",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"package.json",551,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002Fpackage.json",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Fa2a_client.py","SCRIPT","脚本",3628,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002Fscripts\u002Fa2a_client.py",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fadmin.py",3459,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002Fscripts\u002Fadmin.py",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fai_config.py",2003,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002Fscripts\u002Fai_config.py",{"path":100,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":101,"sourceHtmlUrl":102},"scripts\u002Fquickstart.py",1889,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002Fscripts\u002Fquickstart.py",{"path":104,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":105,"sourceHtmlUrl":106},"scripts\u002Freviews.py",6211,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002Fscripts\u002Freviews.py",{"path":108,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Fsend_message.py",1085,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Falex-tradequo\u002Fwhatsapp-automation-a2a\u002Fscripts\u002Fsend_message.py",[112,141,165,186,192,212],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":42},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[124,125,33,126,127,128,129,130,131,132,133,134,135,136,137,138,37,139,140],"crowd prompting","prompting","with","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","content","ai agents",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":42},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[147],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[149,33,150,151,152,153,154,25,155,156,157,158,159,160,161,162,163,130,164],"dilemm ai","arena","analyze","browser","openclaw agent","create","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":42},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[175,176,177,178,179,180,181,126,182,162,164,183,33,184,185],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":187,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":191,"publishedAt":42},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[190],{"categoryNo":172,"categoryName":173,"taxonomyType":20,"taxonomyTypeDesc":21},[178,177,176,175,185,180,181,126,179,162,164,182,183,33,184],{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":198,"publishedAt":42},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[199,200,201,202,203,204,205,206,207,208,209,210,211],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":222,"publishedAt":42},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[218,219],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":220,"categoryName":221,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000037","律师与法务",[223,224,225,226,126,227,228,54,229,183,230,30,231,232,233,37,234,235,236],"agent constitution","constitution","contracts","tree","query","base","log","check","projects","compliance","actions","state","governance","github"]