ManyChat MCP server Let your AI agent run your ManyChat bot.

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.

  • Free 7-day trial, no card
  • No API token to generate
  • Not affiliated with ManyChat
ManyChat logo ManyChat Cloud Browser

13 tools Read and write

Leads to broadcasts

What can your AI agent do in ManyChat? Contacts, inbox and broadcasts.

  • Tag new leads from their answers

  • Save answers in custom fields

  • Read open inbox conversations

  • Reply to simple questions

  • Send a broadcast to a tagged segment

  • Report on last week's broadcasts

API on Pro, no MCP

Does ManyChat have an MCP server or an API? An API on Pro, no official MCP server.

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.

  • The API has two specs, a Page API and a Profile API, marked beta. You make a token under Settings > API.
  • The Pro plan is $39 a month, or $29 billed yearly, with 2,500 active contacts and a 14-day free trial.
  • Zapier has a ManyChat app with instant triggers and actions such as tagging a user. n8n has a community node.
ManyChat API, GitHub MCP servers and Cotlet compared
What you need ManyChat APIGitHub MCP serversCotlet
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

Set up once

How does Cotlet connect to ManyChat? Sign in once, then ask.

  1. 1Sign in to ManyChat

    Use your own account in its Cloud Browser.

  2. 2Connect your AI agent

    Add one address as an MCP server.

  3. 3Ask in plain words

    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

Any MCP client

How to connect ManyChat to your AI agent

Add one address to your AI agent, or call the same tools over REST from n8n, Make and scripts.

  1. 1

    Enable ManyChat for agents. Sign up, log in to ManyChat in its Cloud Browser, then press Enable for agents.

  2. 2

    Add the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.

  3. 3

    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.

Claude
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"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-manychat": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-manychat]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: manychat_read
Make, Zapier
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
8 read, 5 write

All 13 ManyChat MCP tools

Contacts2

Filter by name, tag or status. Unsubscribed contacts keep their tags and fields but cannot be messaged.

  • list_contacts Contacts from the Contacts tab with name, channel, tags and subscription status, filtered by search text or tag. read

    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

    Parameters

    Parameters: list_contacts
    NameTypeDescription
    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.

    Example response

    {
      "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
    }
  • get_contact One contact profile: channels, tags, custom field values and the last interaction. read

    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}

    Parameters

    Parameters: get_contact
    NameTypeDescription
    contact_id string required string contact_id from list_contacts.

    Example input

    {
      "contact_id": "contact_8c41d2"
    }

    Example response

    {
      "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"
    }

Inbox3

Reading a thread sends nothing. A reply goes out as your account, so it asks first.

  • list_conversations Conversations in the ManyChat Inbox with contact, channel, label and last message, newest first. read

    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

    Parameters

    Parameters: list_conversations
    NameTypeDescription
    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.

    Example response

    {
      "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
    }
  • get_conversation Message history of one Inbox conversation with the contact profile details ManyChat shows beside it. read

    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}

    Parameters

    Parameters: get_conversation
    NameTypeDescription
    conversation_id string required string conversation_id from list_conversations.

    Example input

    {
      "conversation_id": "conversation_8c41d2"
    }

    Example response

    {
      "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"
        }
      ]
    }
  • send_message Reply to a contact in an Inbox conversation. writeasks first

    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

    Parameters

    Parameters: send_message
    NameTypeDescription
    conversation_id string required string conversation_id from list_conversations.
    text string required string Message text.

    Example input

    {
      "conversation_id": "conversation_8c41d2",
      "text": "text"
    }

    Example response

    {
      "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 and broadcasts3

Automations are listed, never edited. A broadcast shows its audience size before it sends.

  • list_automations Automations from the Automations tab with name, status and last change. read

    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

    Parameters

    Parameters: list_automations
    NameTypeDescription
    search string string Text to match against the automation name.

    Example response

    {
      "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"
        }
      ]
    }
  • list_broadcasts Broadcasts from the Broadcasting tab with name, state, send time and the stats the tab shows. read

    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

    Parameters

    Parameters: list_broadcasts
    NameTypeDescription
    state enum enum sent, scheduled or draft. Default: all.
    since date date Only broadcasts sent or scheduled on or after this date.

    Example response

    {
      "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
        }
      ]
    }
  • send_broadcast Send an automation as a broadcast to all contacts or to a tag or custom field segment. writeasks first

    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

    Parameters

    Parameters: send_broadcast
    NameTypeDescription
    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.

    Example input

    {
      "automation": "October offer",
      "tag": "customer",
      "send_now": true
    }

    Example response

    {
      "broadcast_id": "b_3315",
      "automation": "October offer",
      "audience": {
        "tag": "customer",
        "contacts": 412
      },
      "state": "sent",
      "sent_at": "2026-11-05T09:30:00Z"
    }

Tags and custom fields5

Store phone numbers in text fields, because ManyChat number fields drop the plus sign.

  • list_tags Tags of the workspace with the number of contacts that carry each. read

    Returns every tag with its contact count, sorted by name. Use it to find the exact tag name before filtering contacts or adding a tag.

    MCP callmanychat_read → list_tags

    REST endpointGET https://cotlet.dev/api/v1/manychat/tags

    Parameters

    No parameters.

    Example response

    {
      "tags": [
        {
          "name": "customer",
          "contacts": 412
        },
        {
          "name": "lead",
          "contacts": 238
        },
        {
          "name": "webinar",
          "contacts": 97
        }
      ]
    }
  • list_custom_fields Custom fields from Settings > Fields with name and type. read

    Returns the custom fields created in Settings > Fields with their type. Store phone numbers in text fields, because ManyChat number fields drop the plus sign. Use the name as the field parameter of set_custom_field.

    MCP callmanychat_read → list_custom_fields

    REST endpointGET https://cotlet.dev/api/v1/manychat/custom-fields

    Parameters

    No parameters.

    Example response

    {
      "fields": [
        {
          "name": "Budget",
          "type": "text"
        },
        {
          "name": "Business",
          "type": "text"
        },
        {
          "name": "Phone",
          "type": "text"
        }
      ]
    }
  • add_tag_to_contact Add a tag to one contact in the Contacts tab. write

    Adds the tag to the contact profile and returns the contact tags after the change. A tag that does not exist yet is created. The tag itself sends nothing to the contact and remove_tag_from_contact undoes it in one call, so it runs without a confirmation.

    MCP callmanychat_write → add_tag_to_contact

    REST endpointPOST https://cotlet.dev/api/v1/manychat/contacts/{contact_id}/tag-to-contacts

    Parameters

    Parameters: add_tag_to_contact
    NameTypeDescription
    contact_id string required string contact_id from list_contacts.
    tag string required string Tag name, e.g. lead.

    Example input

    {
      "contact_id": "contact_8c41d2",
      "tag": "tag"
    }

    Example response

    {
      "contact_id": "c_48120377",
      "tags": [
        "lead",
        "webinar",
        "qualified"
      ]
    }
  • remove_tag_from_contact Remove a tag from one contact. write

    Removes the tag from the contact profile and returns the contact tags after the change. The contact keeps every other tag and field. Adding the tag again undoes it in one call, so it runs without a confirmation.

    MCP callmanychat_write → remove_tag_from_contact

    REST endpointDELETE https://cotlet.dev/api/v1/manychat/contacts/{contact_id}/tag-from-contacts

    Parameters

    Parameters: remove_tag_from_contact
    NameTypeDescription
    contact_id string required string contact_id from list_contacts.
    tag string required string Tag name to remove.

    Example input

    {
      "contact_id": "contact_8c41d2",
      "tag": "tag"
    }

    Example response

    {
      "contact_id": "c_48120391",
      "tags": [
        "customer"
      ]
    }
  • set_custom_field Set the value of a custom field on one contact. write

    Writes the value into the field on the contact profile and returns the saved value. The field must exist in Settings > Fields. The old value is returned as previous, so one more call puts it back. It sends nothing to the contact, so it runs without a confirmation.

    MCP callmanychat_write → set_custom_field

    REST endpointPUT https://cotlet.dev/api/v1/manychat/contacts/{contact_id}/custom-field

    Parameters

    Parameters: set_custom_field
    NameTypeDescription
    contact_id string required string contact_id from list_contacts.
    field string required string Field name from list_custom_fields.
    value string required string New value.

    Example input

    {
      "contact_id": "contact_8c41d2",
      "field": "field",
      "value": "value"
    }

    Example response

    {
      "contact_id": "c_48120377",
      "field": "Budget",
      "value": "500-1000",
      "previous": null
    }
Encrypted, revocable

Who can see my ManyChat session, and how do I revoke it?

  • What we store

    Your logged-in ManyChat profile, encrypted, in the EU. Not the password.

  • What your agent gets

    The 13 ManyChat tools. Never the cookie.

  • What the session sees

    Your workspace: contacts, inbox, broadcasts, tags.

  • What no tool touches

    Billing, plan, team roles, password and deleting.

  • If ManyChat asks you to sign in

    Your agent gets a link. You sign in, we never type your password.

  • How to cut access

    Disable for agents in one click, or reset the browser.

Tested every 12 h

What happens when ManyChat changes? We repair the tool; your prompts stay the same.

between tests of the ManyChat tools
12 h
for a call to a ManyChat tool paused for repair
$0

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.

2 tools ask first

Approvals, undo and mistakes Contacts hear nothing until you say so.

  1. 01 Finds the audience Tag and field conditions give the contact count.
  2. 02 Shows you the size The call stops at the audience size until send_now is true.
  3. 03 Waits for your OK The broadcast shows up in your Cotlet console first.
  4. 04 Reports the result Broadcast ID, audience, state and send time.
Which ManyChat actions can be undone
ActionUndo
Add a tagRemove it with one call
Remove a tagAdd it again with one call
Set a custom fieldThe old value comes back as previous, set it again
Send an inbox replyNo, the message is out
Send a broadcastNo, 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.

MCP call
{
  "name": "send_broadcast",
  "arguments": {
    "automation": "October offer",
    "tag": "customer",
    "send_now": true
  }
}
REST
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}'
Tool output
{
  "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.

Pay per call

How much does the ManyChat MCP server cost?

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.

A month of ManyChat jobs for one workspace, in credits
JobCallsCredits
Tag new leads and save their answers, daily10 × 303,000
Read the inbox and reply to simple questions, daily8 × 302,400
Broadcast report, weekly1 × 440
Send a broadcast to a tag4 × 280
Tag and field cleanup, weekly8 × 4320
Cloud Browser, 30 days1,500
Total7,340
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • No subscription, credit packs

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).

Cotlet credit packs: price, credits and calls at 10 credits each
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.

Other options

ManyChat MCP server on GitHub, Zapier or hosted: which to use Community servers wrap the API.

Other ManyChat MCP servers and connectors, checked 6 Nov 2026
OptionWhat it doesWhere it stops
WIZNEOAI/manychat-mcpOpen-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-mcpMCP 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-mcpMCP 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 ActivepiecesHosted ManyChat MCP servers that work with Claude, ChatGPT and Cursor.Built on the same public API, so no inbox or broadcast calls.
Zapier and n8nA 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.
EU company, since 2019

Who runs Cotlet A company you can look up.

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.

ManyChat MCP server: questions

How do I connect ManyChat to ChatGPT or Claude?

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.

What can ChatGPT do in ManyChat?

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.

How do I get access?

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.

Which ManyChat plan do I need for the official API?

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.

Can Cotlet build or edit ManyChat automations?

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).

Do I need a ManyChat API token?

No. Cotlet works in your signed-in ManyChat workspace, so there is no token to generate and nothing to paste.

Is the MCP server different from the REST API?

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.

Is Cotlet affiliated with ManyChat?

No. Cotlet is independent and not affiliated with Manychat, Inc.

Give your agent access to ManyChat.

Free 7-day trial with 2,000 credits, no card needed.