Give an agent the keys to ManyChat.
It already knows the rules.
Open source MCP server and CLI. Your agent reads leads, qualifies, replies and follows up. Every send is checked before it leaves.
- AGPL-3.0
- SELF-HOST FREE
What your agent can do
Lead operations, not API calls.
Your agent works the account the way an operator would.
Find a lead by email, phone or name
Read their context tags, custom fields, last interaction
Qualify and tag write the segment back to ManyChat
Update fields one at a time, or up to 20 in bulk
Trigger a flow hand off to automation you already built
Reply and follow up only after the messaging window checks out
Recover a cold lead tag them and wait for a fresh window — no promo DM after 24 hours
Hand off to a human tag and stop sending, instead of guessing
- Messenger
- TikTok
- Telegram
- SMS
Install
Pick your agent.
Copy the prompt. Your agent wires the MCP server, then asks for your ManyChat key and writes it to the right file — never back into the chat.
Claude Code
Connect the ManyChat MCP server to Claude Code so I can operate my ManyChat account from this agent.
Source: https://github.com/WIZNEOAI/Manychat-MCP
npm package: mcp-manychat
Landing: https://mc-mcp.wizneo.org
llms.txt: https://mc-mcp.wizneo.org/llms.txt
Open-source CLI + MCP runtime. The agent finds leads, tags, updates fields, triggers flows, and sends — with Meta messaging-policy checks before every send.
Do this:
1. Install/configure the MCP server for Claude Code using the local stdio transport:
npx -y mcp-manychat mcp serve --transport stdio
2. Put that config in `.mcp.json` in this repo, or the user-level Claude MCP list.
3. I will give you the ManyChat API key when you ask. Generate it in ManyChat: Settings → API → Generate your API Key (Pro account). It is shown once.
Tools I expect after connect: find_subscriber_by_email, find_subscriber_by_phone, find_subscriber_by_name, get_subscriber, add_tag_to_subscriber, set_custom_field, set_custom_fields_bulk (max 20 fields), send_flow, send_text_message, send_content, validate_message. There is no recover_lead tool — cold recovery is tag + wait for a fresh 24h window, then send_flow or send_text_message.
Credential rules:
- Ask me for the ManyChat API key only when you are about to write the config.
- Write the key into the env field of that config (or ~/.hermes/.env for Hermes). Never print the key. Never paste it back into this chat. Never write it into a markdown file, README, issue, or git commit.
- After saving, tell me the file path you wrote and confirm tools loaded. validate_message must be in the tool list.
- This runtime is unofficial and AGPL-3.0. Not affiliated with ManyChat, Inc.
Preferred command (the key goes in the -e flag, not in the chat log you show me):
claude mcp add manychat -e MANYCHAT_API_KEY=THE_KEY -- npx -y mcp-manychat mcp serve --transport stdio
Equivalent .mcp.json:
{
"mcpServers": {
"manychat": {
"command": "npx",
"args": ["-y","mcp-manychat","mcp","serve","--transport","stdio"],
"env": { "MANYCHAT_API_KEY": "THE_KEY" }
}
}
}
Then run /mcp and confirm the server is connected.Safety
What it will not do.
Meta decides when you are allowed to message someone. This MCP checks the 24-hour clock, promo tags, and opt-in before a send leaves — so the agent sees the block, not a restricted page.
01
It will not message someone too late
On Instagram and Messenger, Meta closes ordinary replies after 24 hours of silence. The agent reads that clock before it writes — every time — not after the send fails.
02
It will not push a promo without a reason
Promotional messages need a valid message tag or an opt-in on file. Without one the send is refused up front. WhatsApp outside the window needs an approved template, not a tag.
03
It will not guess when it is unsure
Borderline cases stop. The lead gets tagged for a person. An hour of silence is cheaper than a restricted account.
What that looks like
Agent wants to send a promotion
- Channel: Instagram
- Last reply from this lead: 31 hours ago
- Tag on the message: none
Blocked before sending
Outside the 24 hour window and no opt-in on file.
For builders: this is the validate_message tool, and every send path calls it first.