Marketing & SEO
Google Search Console
Request indexing, removals, users and index reports for your sites.
15 endpoints
Tag contacts, answer the inbox and send broadcasts by asking in plain words. Sign in to ManyChat once. Cotlet hosts the rest, around the clock.
13 tools Read and write
ManyChat has a REST API on the Pro plan and no official MCP server (checked 6 Nov 2026). The API reads and sets contacts, tags and custom fields, sends content and starts an automation for one contact. It has no call for the inbox or broadcasts. Cotlet adds 13 ManyChat tools that work in the ChatGPT and Claude apps, with no token or developer setup, hosted 24/7 and on one account with your other apps.
| What you need | ManyChat API | GitHub MCP servers | Cotlet |
|---|---|---|---|
| Read a contact profile | Yes | Yes | Yes |
| List and filter contacts | Find only, no full list | Find only, no full list | Yes |
| Tag contacts and set fields | Yes | Yes | Yes |
| Send a message to a contact | Content or an automation | Yes | Yes, after your OK |
| Read inbox conversations | No | No | Yes |
| List and send broadcasts | No | No | Yes, after your OK |
| Setup | Pro plan and a token | A token on your computer | Sign in once |
Checked 6 Nov 2026. Sources: ManyChat API reference (Page API and Profile API) · ManyChat Help: Pro plan · Zapier: ManyChat integrations · n8n: ManyChat integration
Use your own account in its Cloud Browser.
Add one address as an MCP server.
Your agent tags, replies and sends.
We never keep your ManyChat password, and no message or broadcast reaches a contact until you approve it. Who can see your session
Add one address to your AI agent, or call the same tools over REST from n8n, Make and scripts.
Enable ManyChat for agents. Sign up, log in to ManyChat in its Cloud Browser, then press Enable for agents.
Add the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.
Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.
One shared address, https://cotlet.dev/mcp/v1, carries ManyChat next to your other apps. If you enable ManyChat after connecting, refresh the connector so the new tools show up.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-manychat \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-manychat": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-manychat]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: manychat_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: manychat_write Filter by name, tag or status. Unsubscribed contacts keep their tags and fields but cannot be messaged.
Returns the contacts the Contacts tab shows for the filter you pass, newest first. status says whether the contact is subscribed or unsubscribed; ManyChat keeps tags and custom field values on unsubscribed contacts but cannot message them. Pass next_cursor back as cursor for the next page. contact_id is what the other tools take.
MCP callmanychat_read → list_contacts
REST endpointGET https://cotlet.dev/api/v1/manychat/contacts
| Name | Type | Description |
|---|---|---|
| search string | string | Text to match against the contact name. |
| tag string | string | Only contacts that carry this tag. |
| status enum | enum | subscribed or unsubscribed. Default: both. |
| cursor string | string | next_cursor from the previous page. |
{
"contacts": [
{
"contact_id": "c_48120377",
"name": "Maya Lopez",
"channel": "Instagram",
"tags": [
"lead",
"webinar"
],
"status": "subscribed",
"last_interaction": "2026-11-04T16:12:00Z"
},
{
"contact_id": "c_48120391",
"name": "Tom Becker",
"channel": "WhatsApp",
"tags": [
"customer"
],
"status": "subscribed",
"last_interaction": "2026-11-03T09:40:00Z"
}
],
"next_cursor": null
} Opens the contact profile in ManyChat and returns what it shows: the channels the contact is on, tags, custom field values (including answers saved from a Data Collection step) and the last interaction. Custom fields with no value are left out. Use it before tagging or messaging someone.
MCP callmanychat_read → get_contact
REST endpointGET https://cotlet.dev/api/v1/manychat/contacts/{contact_id}
| Name | Type | Description |
|---|---|---|
| contact_id string required | string | contact_id from list_contacts. |
{
"contact_id": "contact_8c41d2"
} {
"contact_id": "c_48120377",
"name": "Maya Lopez",
"channels": [
"Instagram"
],
"tags": [
"lead",
"webinar"
],
"custom_fields": {
"Budget": "500-1000",
"Business": "Pilates studio"
},
"status": "subscribed",
"last_interaction": "2026-11-04T16:12:00Z"
} Reading a thread sends nothing. A reply goes out as your account, so it asks first.
Lists threads from the Inbox, newest activity first, with the last message and its sender. label filters by one of your Inbox labels. Use conversation_id with get_conversation to read the whole thread.
MCP callmanychat_read → list_conversations
REST endpointGET https://cotlet.dev/api/v1/manychat/conversations
| Name | Type | Description |
|---|---|---|
| label string | string | Only threads with this Inbox label. |
| search string | string | Text to match against the contact name. |
| cursor string | string | next_cursor from the previous page. |
{
"conversations": [
{
"conversation_id": "v_90211",
"contact_id": "c_48120377",
"contact": "Maya Lopez",
"channel": "Instagram",
"label": "Pricing",
"last_message": "Do you have a plan for two studios?",
"last_sender": "contact",
"last_message_at": "2026-11-04T16:12:00Z"
}
],
"next_cursor": null
} Returns the messages of one thread in order, oldest first, each with its sender (contact, bot or a team member). It also returns the contact tags shown beside the chat. Reading does not send anything to the contact.
MCP callmanychat_read → get_conversation
REST endpointGET https://cotlet.dev/api/v1/manychat/conversations/{conversation_id}
| Name | Type | Description |
|---|---|---|
| conversation_id string required | string | conversation_id from list_conversations. |
{
"conversation_id": "conversation_8c41d2"
} {
"conversation_id": "v_90211",
"contact": "Maya Lopez",
"channel": "Instagram",
"tags": [
"lead",
"webinar"
],
"messages": [
{
"sender": "bot",
"text": "Hi Maya! Want the price list?",
"at": "2026-11-04T16:08:00Z"
},
{
"sender": "contact",
"text": "Do you have a plan for two studios?",
"at": "2026-11-04T16:12:00Z"
}
]
} Types the text into the conversation in the Inbox and sends it as your account, on the contact channel. It returns the sent message with its time. The reply goes to a real person and cannot be unsent. By default you confirm each call; you can switch that off for this tool.
MCP callmanychat_write → send_message
REST endpointPOST https://cotlet.dev/api/v1/manychat/conversations/{conversation_id}/messages
| Name | Type | Description |
|---|---|---|
| conversation_id string required | string | conversation_id from list_conversations. |
| text string required | string | Message text. |
{
"conversation_id": "conversation_8c41d2",
"text": "text"
} {
"conversation_id": "v_90211",
"sent": true,
"text": "Yes, the Studio plan covers two locations. Want me to send the details?",
"at": "2026-11-05T09:21:00Z"
} Automations are listed, never edited. A broadcast shows its audience size before it sends.
Returns each automation of the workspace with its name and status as the Automations tab shows it. Use the name as the automation parameter of send_broadcast. It lists automations; it never edits or turns one on or off.
MCP callmanychat_read → list_automations
REST endpointGET https://cotlet.dev/api/v1/manychat/automations
| Name | Type | Description |
|---|---|---|
| search string | string | Text to match against the automation name. |
{
"automations": [
{
"automation_id": "a_5521",
"name": "October offer",
"status": "live",
"changed_at": "2026-10-28T10:02:00Z"
},
{
"automation_id": "a_5498",
"name": "Welcome flow",
"status": "live",
"changed_at": "2026-09-14T13:30:00Z"
}
]
} Returns the broadcasts of the workspace, newest first, with their state (sent, scheduled or draft) and the numbers the Broadcasting tab shows for each. Drafts have no stats. Use it for reports; it changes nothing.
MCP callmanychat_read → list_broadcasts
REST endpointGET https://cotlet.dev/api/v1/manychat/broadcasts
| Name | Type | Description |
|---|---|---|
| state enum | enum | sent, scheduled or draft. Default: all. |
| since date | date | Only broadcasts sent or scheduled on or after this date. |
{
"broadcasts": [
{
"broadcast_id": "b_3307",
"name": "October offer",
"state": "sent",
"sent_at": "2026-10-29T08:00:00Z",
"stats": {
"sent": 1840,
"delivered": 1796,
"clicked": 212
}
},
{
"broadcast_id": "b_3312",
"name": "November reminder",
"state": "scheduled",
"sent_at": "2026-11-10T08:00:00Z",
"stats": null
}
]
} Opens Broadcasting, starts a broadcast from the automation, sets the Target Audience from the tag and custom field conditions you pass, and presses Send Now. Without conditions ManyChat sends to all available contacts, so the call returns the audience size before it sends and stops if send_now is false. The broadcast reaches many people and cannot be recalled. By default you confirm each call; you can switch that off for this tool.
MCP callmanychat_write → send_broadcast
REST endpointPOST https://cotlet.dev/api/v1/manychat/broadcasts
| Name | Type | Description |
|---|---|---|
| automation string required | string | Automation name from list_automations. |
| tag string | string | Only contacts that carry this tag. |
| custom_field string | string | Custom field name for a second condition. |
| custom_field_value string | string | Value the custom field must have. |
| send_now boolean | boolean | true presses Send Now. false only returns the audience size. Default: false. |
{
"automation": "October offer",
"tag": "customer",
"send_now": true
} {
"broadcast_id": "b_3315",
"automation": "October offer",
"audience": {
"tag": "customer",
"contacts": 412
},
"state": "sent",
"sent_at": "2026-11-05T09:30:00Z"
} Your logged-in ManyChat profile, encrypted, in the EU. Not the password.
The 13 ManyChat tools. Never the cookie.
Your workspace: contacts, inbox, broadcasts, tags.
Billing, plan, team roles, password and deleting.
Your agent gets a link. You sign in, we never type your password.
Disable for agents in one click, or reset the browser.
When ManyChat moves a button or renames a tab, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Add a tag | Remove it with one call |
| Remove a tag | Add it again with one call |
| Set a custom field | The old value comes back as previous, set it again |
| Send an inbox reply | No, the message is out |
| Send a broadcast | No, it cannot be recalled |
2 of 13 tools ask first: send_message and send_broadcast, the two that reach a contact. Tags and fields reach nobody, so they run at once. Switch the wait off per tool for a scheduled run.
{
"name": "send_broadcast",
"arguments": {
"automation": "October offer",
"tag": "customer",
"send_now": true
}
} curl -X POST https://cotlet.dev/api/v1/manychat/broadcasts \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"automation":"October offer","tag":"customer","send_now":true}' {
"broadcast_id": "b_3315",
"automation": "October offer",
"audience": {
"tag": "customer",
"contacts": 412
},
"state": "sent",
"sent_at": "2026-11-05T09:30:00Z"
} Scripts and cron jobs reach the same tools over REST with the same key and price. A failed call costs nothing. The tools table lists the REST path of each tool.
About $43 a monthfor a small business that tags leads and answers the inbox every day, 7,340 credits. Your ManyChat plan is billed by ManyChat as before.
| Job | Calls | Credits |
|---|---|---|
| Tag new leads and save their answers, daily | 10 × 30 | 3,000 |
| Read the inbox and reply to simple questions, daily | 8 × 30 | 2,400 |
| Broadcast report, weekly | 1 × 4 | 40 |
| Send a broadcast to a tag | 4 × 2 | 80 |
| Tag and field cleanup, weekly | 8 × 4 | 320 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 7,340 |
The month is our example, not a measured average: ManyChat publishes no typical account size. Dollars at the $29 pack rate. ManyChat's Pro plan, the one with API access, is $39 a month or $29 billed yearly (ManyChat Help, 29 Oct 2026).
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| WIZNEOAI/manychat-mcp | Open-source MCP server and CLI with a messaging-policy guard, AGPL-3.0, 1 star, last commit 28 Oct 2026. | Runs on your computer with your API token, which needs the Pro plan. |
| ronstar83/manychat-mcp | MCP server over stdio or HTTP, started with npx manychat-mcp-server, MIT, last commit 2 Sep 2026. | Needs MANYCHAT_API_TOKEN. Offers what the API offers. |
| AleemHaider/manychat-mcp | MCP server for subscribers, tags, custom fields, flows and sending, MIT, last commit 15 May 2026. | API token on your computer, no inbox or broadcast tools. |
| Pipedream and Activepieces | Hosted ManyChat MCP servers that work with Claude, ChatGPT and Cursor. | Built on the same public API, so no inbox or broadcast calls. |
| Zapier and n8n | A ManyChat app with instant triggers and tagging actions, and a community n8n node. | Fixed steps you set up in advance, not an agent reading your inbox. |
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the ManyChat tools.
Sign up at cotlet.dev, log in to ManyChat once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your ManyChat account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in ManyChat: tag new leads from their answers; answer open inbox conversations; send a broadcast to a tagged segment. You ask in plain words, and anything that reaches other people waits for your OK first.
Create a free account at https://cotlet.dev, open ManyChat under Integrations in the console and log in to ManyChat in its Cloud Browser. The trial starts with your first app, no card asked.
The Pro plan or higher. ManyChat's Pro plan page lists API access, and you generate the token under Settings > API. Cotlet signs in to the ManyChat web app instead of using that token.
No. The tools read and send; they do not build or edit automations. The official API also only lists automations (getFlows) and triggers one for a contact (sendFlow).
No. Cotlet works in your signed-in ManyChat workspace, so there is no token to generate and nothing to paste.
Only the door is different. Both expose the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Manychat, Inc.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy