Discord MCP server Let your AI agent run your Discord community.

Your agent reads your mentions and DMs, summarizes busy channels and posts the weekly recap. It works in your own Discord account, inside the Claude or ChatGPT app. Nothing to install or host.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Discord
Discord logo Discord Cloud Browser

14 tools Read and write

Inbox to recap

What can your AI agent do in Discord? Your mentions, channels and members.

  • Summarize your mentions

  • Digest a busy channel

  • Find an old answer

  • Reply to open questions

  • Welcome new members

  • Catch up on your DMs

Bot API, docs MCP

Does Discord have an MCP server or an API? An API for bots, an MCP server for its docs.

Discord has an official API for bots and apps. Its official MCP server at docs.discord.com/mcp only searches the developer docs (checked 6 Nov 2026). Cotlet runs 14 Discord tools hosted, over MCP for agents and REST for scripts. There is no bot token to create and no server manager to ask.

  • Discord's docs MCP server answers one tool, search_documentation_discord. No tool reads a channel or posts a message.
  • The bot API reads message text only with the Message Content intent, which Discord approves per app. A bot cannot read your DMs or your Inbox.
  • Zapier has a Discord app with polling triggers such as New Message Posted to Channel and New Mention, and actions such as Send Direct Message. On the Free plan Zapier checks every 15 minutes.
Discord's bot API, a community MCP server and Cotlet compared
What you need Discord bot APICommunity MCP serverCotlet
Read and post in channels A bot added by a manager Same, you run it Yes, where your account can
Read your DMs and Inbox mentions No No, bot token Yes
Assign roles and time out members Bot with the permission Bot with the permission Yes, with your own role
Works in the Claude and ChatGPT apps No, you build it Runs on your computer Yes, one address
Runs 24/7 without your computer If you host the bot If you host it Yes, hosted
One account for many apps No No Yes

Checked 6 Nov 2026. Sources: Discord Developer Docs: API reference · Discord docs MCP server · Discord Developer Docs: Message Content intent · Zapier: Discord integrations

Set up once

How does Cotlet connect Discord to your AI agent? One account, two ways to connect.

  1. 1Sign in to Discord

    Use your own account in its Cotlet Cloud Browser.

  2. 2Choose MCP or REST

    Connect your agent or create a Cotlet API key.

  3. 3Ask in plain words

    Your agent reads and posts for you.

We never keep your Discord password, and nothing is posted, sent or changed until you approve it. Who can see your session

Any MCP client

Connect Discord to your AI agent

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

  1. 1

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

  2. 2

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

  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, also carries Discord next to your other apps. If you enable Discord 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-discord \
  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-discord": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-discord]
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: discord_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: discord_write
Scripts and HTTP

How to use the Discord REST API

Create your Cotlet API key

Sign in to your Discord account in its Cotlet Cloud Browser and enable the app for agents. Moderation tools need the matching role in the server.

Create a Cotlet API key with access to Discord and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.

Make your first Discord API request

cURL: list_messages

curl "https://cotlet.dev/api/v1/discord/messages?channel=1058204419337711800&since=2026-11-01&limit=50" \
  -H "Authorization: Bearer $COTLET_API_KEY"

Read messages and continue the list

A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs and credit details.

Illustrative response excerpt

{
  "status": "success",
  "app": "discord",
  "tool": "list_messages",
  "result": {
    "messages": [
      {
        "message_id": "1190466022837014528",
        "author": "tom.becker",
        "text": "Does anyone have a template for a pricing page?",
        "thread_replies": 0,
        "replied": false
      }
    ],
    "next_cursor": "1190466022837014528"
  }
}

Read result.messages and pass result.next_cursor unchanged as cursor until it comes back empty. Messages are newest first, 50 a page by default. Keep the channel and since the same while paging.

Discord workflows for agents and automations

Discord workflows you configure
ToolConnect throughExample workflow
n8nHTTP RequestCall list_mentions each morning and write the items that need an answer to a sheet.
Python or Node.jsREST APIPage through list_messages for #help and flag messages where replied is false.
Make or ZapierHTTP request stepCall list_members with joined_since and add new members to your community CRM.

Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and comparisons.

Cotlet reads Discord; your workflow steps write to your chosen destination. These HTTP workflows do not need a native Cotlet connector or a prebuilt template.

The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.

7 read, 7 write

All Discord MCP tools and API endpoints

Servers, channels and messages5

Messages come newest first, 50 a page by default. Search runs in one server or one DM at a time.

  • list_servers Discord servers you are a member of, with your roles and unread state. read

    Returns the servers in your server list, in the order Discord shows them. Each entry has the server name, the id to pass as server to the other tools and the name of your highest role. unread is true when the server has unread messages in unmuted channels. It does not list servers you have not joined.

    MCP calldiscord_read → list_servers

    REST endpointGET https://cotlet.dev/api/v1/discord/servers

    Parameters

    No parameters.

    Example response

    {
      "servers": [
        {
          "server_id": "1058204419337711702",
          "name": "Landing Page Lab",
          "highest_role": "Moderator",
          "unread": true
        },
        {
          "server_id": "1041930587712340066",
          "name": "Indie Makers",
          "highest_role": "Member",
          "unread": false
        }
      ]
    }
  • list_channels Text channels, threads and forum channels of a server that you can see. read

    Lists the channels of one server in the order of the sidebar, grouped by category. Only channels your account can see are returned. type is text, forum or thread. Use channel_id as channel in list_messages and send_message. Private channels you cannot open are not shown.

    MCP calldiscord_read → list_channels

    REST endpointGET https://cotlet.dev/api/v1/discord/channels

    Parameters

    Parameters: list_channels
    NameTypeDescription
    server string required string Server id from list_servers.
    type enum enum all, text, forum or thread. Default: all.

    Example input

    {
      "server": "server"
    }

    Example response

    {
      "channels": [
        {
          "channel_id": "1058204419337711800",
          "name": "general",
          "category": "Community",
          "type": "text"
        },
        {
          "channel_id": "1058204419337711811",
          "name": "help",
          "category": "Community",
          "type": "forum"
        },
        {
          "channel_id": "1058204419337711822",
          "name": "weekly-recap",
          "category": "Community",
          "type": "text"
        }
      ]
    }
  • list_messages Recent messages of a channel, thread or DM, newest first, with author, text and reactions. read

    Returns messages of one channel you can open, newest first, a page at a time; pass next_cursor back as cursor for older ones. Each message has its id, the author, the text, the time, the number of replies in its thread and the reactions. replied is true when a later message in the channel is a reply to it. Messages you cannot see in the app are not returned.

    MCP calldiscord_read → list_messages

    REST endpointGET https://cotlet.dev/api/v1/discord/messages

    Parameters

    Parameters: list_messages
    NameTypeDescription
    channel string required string Channel, thread or DM id from list_channels or list_direct_conversations.
    since date date Only messages sent on or after this date.
    limit integer integer Messages per page. Default: 50.
    cursor string string Next page cursor from the previous call.

    Example input

    {
      "channel": "channel"
    }

    Example response

    {
      "messages": [
        {
          "message_id": "1190466022837014528",
          "author": "tom.becker",
          "text": "Does anyone have a template for a pricing page?",
          "sent_at": "2026-11-04T16:12:00.000000Z",
          "thread_replies": 0,
          "replied": false,
          "reactions": [
            {
              "emoji": "👀",
              "count": 2
            }
          ]
        },
        {
          "message_id": "1190431876100952064",
          "author": "maria.silva",
          "text": "Shipped my first landing page today.",
          "sent_at": "2026-11-04T10:41:00.000000Z",
          "thread_replies": 3,
          "replied": true,
          "reactions": [
            {
              "emoji": "🎉",
              "count": 5
            }
          ]
        }
      ],
      "next_cursor": "1190431876100952064"
    }
  • search_messages Search a server or DM with the same filters as the Discord search bar. read

    Runs the search box of Discord for one server or one DM. query is the text to find. from, in, mentions and has work like the from:, in:, mentions: and has: shortcuts of the search bar. Results show the channel, the author and the message text. Discord searches the server or DM you name, not all your servers at once.

    MCP calldiscord_read → search_messages

    REST endpointGET https://cotlet.dev/api/v1/discord/messages/search

    Parameters

    Parameters: search_messages
    NameTypeDescription
    server string string Server id to search. Use this or dm.
    dm string string DM conversation id to search. Use this or server.
    query string required string Text to find.
    from string string Only messages by this username.
    in string string Only messages in this channel name.
    mentions string string Only messages that mention this username.
    has enum enum link, embed, image, video or sound.

    Example input

    {
      "query": "query"
    }

    Example response

    {
      "results": [
        {
          "message_id": "1189022840016593920",
          "channel": "general",
          "author": "tom.becker",
          "text": "My pricing page converts better with three plans than two.",
          "sent_at": "2026-10-29T09:03:00.000000Z"
        }
      ]
    }
  • list_members Members of a server with roles and join date, newest first. read

    Lists the members of one server that your account can see in the member list, newest joiners first, a page at a time. Each member has the username, the display name, the roles and joined_at. member_id goes to assign_role and timeout_member. Large servers show only part of the member list to members without moderator permissions.

    MCP calldiscord_read → list_members

    REST endpointGET https://cotlet.dev/api/v1/discord/members

    Parameters

    Parameters: list_members
    NameTypeDescription
    server string required string Server id from list_servers.
    joined_since date date Only members who joined on or after this date.
    role string string Only members with this role name.
    cursor string string Next page cursor from the previous call.

    Example input

    {
      "server": "server"
    }

    Example response

    {
      "members": [
        {
          "member_id": "1161738420995301376",
          "username": "ana.lopez",
          "display_name": "Ana Lopez",
          "roles": [
            "Member"
          ],
          "joined_at": "2026-11-04T18:21:00.000000Z"
        }
      ],
      "next_cursor": "1161738420995301376"
    }

Mentions and direct messages3

Reading mentions and DMs does not clear them from your Inbox or mark a conversation as read.

  • list_mentions The Mentions tab of your Inbox: messages that mention you, across your servers and DMs. read

    Returns the items of the Mentions tab in your Discord Inbox, newest first. Each item has the server, the channel, the author and the message. include_everyone and include_roles switch on the @everyone and @role mentions, as the filter button of the tab does. Reading does not remove items from the Inbox.

    MCP calldiscord_read → list_mentions

    REST endpointGET https://cotlet.dev/api/v1/discord/mentions

    Parameters

    Parameters: list_mentions
    NameTypeDescription
    include_everyone boolean boolean Include @everyone mentions. Default: false.
    include_roles boolean boolean Include @role mentions. Default: false.
    since date date Only mentions on or after this date.

    Example response

    {
      "mentions": [
        {
          "message_id": "1190466022837014528",
          "server": "Landing Page Lab",
          "channel": "help",
          "author": "tom.becker",
          "text": "@maya can you look at my pricing page?",
          "sent_at": "2026-11-04T16:12:00.000000Z"
        }
      ]
    }
  • list_direct_conversations Your direct messages and group DMs, most recent first, with the last message. read

    Lists the conversations in your Direct Messages list, the most recent first. Each has the people in it, the id to use as channel in list_messages or dm in search_messages, and the last message. unread is true when you have not read it. Reading does not mark a conversation as read.

    MCP calldiscord_read → list_direct_conversations

    REST endpointGET https://cotlet.dev/api/v1/discord/direct-conversations

    Parameters

    Parameters: list_direct_conversations
    NameTypeDescription
    unread_only boolean boolean Only conversations with unread messages. Default: false.

    Example response

    {
      "conversations": [
        {
          "dm_id": "1171290365844979712",
          "with": [
            "ana.lopez"
          ],
          "last_message": "Thanks, I will send the draft tomorrow.",
          "unread": true
        }
      ]
    }
  • send_direct_message Send a direct message to a person from your account. writeasks first

    Sends a DM from your account to one user, in the existing conversation or in a new one. The person is notified. Discord can refuse a DM when the person has turned off messages from server members, and the call then fails with the reason. By default you confirm each call; you can switch that off for this tool.

    MCP calldiscord_write → send_direct_message

    REST endpointPOST https://cotlet.dev/api/v1/discord/direct-messages

    Parameters

    Parameters: send_direct_message
    NameTypeDescription
    user string string Username of the person. Use this or dm.
    dm string string Existing DM conversation id. Use this or user.
    content string required string Message text.

    Example input

    {
      "content": "content"
    }

    Example response

    {
      "message_id": "1190620017733128192",
      "status": "sent",
      "to": "ana.lopez",
      "sent_at": "2026-11-05T07:10:00.000000Z"
    }

Post and react4

Everything here appears under your name and waits for your OK by default.

  • send_message Post a message in a channel or thread as you. writeasks first

    Posts text in one channel or thread that your account can write in. The message appears under your name and everyone in the channel sees it. It returns the message id and link. It fails if your role cannot post in that channel. By default you confirm each call; you can switch that off for this tool.

    MCP calldiscord_write → send_message

    REST endpointPOST https://cotlet.dev/api/v1/discord/messages

    Parameters

    Parameters: send_message
    NameTypeDescription
    channel string required string Channel or thread id from list_channels.
    content string required string Message text. Discord markdown works.

    Example input

    {
      "channel": "1058204419337711822",
      "content": "Weekly recap: 3 landing pages shipped, pricing page template pinned in #help."
    }

    Example response

    {
      "message_id": "1190602918442721280",
      "status": "sent",
      "channel": "weekly-recap",
      "url": "https://discord.com/channels/1058204419337711702/1058204419337711822/1190602918442721280",
      "sent_at": "2026-11-05T07:00:00.000000Z"
    }
  • reply_to_message Reply to one message in a channel, thread or DM as you. writeasks first

    Posts a reply that points at one message, so Discord shows the quote above it. The author of the message is notified. It works in channels, threads and DMs you can write in. It returns the id and link of the reply. By default you confirm each call; you can switch that off for this tool.

    MCP calldiscord_write → reply_to_message

    REST endpointPOST https://cotlet.dev/api/v1/discord/messages/{message_id}/replies

    Parameters

    Parameters: reply_to_message
    NameTypeDescription
    channel string required string Channel, thread or DM id.
    message_id string required string Id of the message to reply to.
    content string required string Reply text.

    Example input

    {
      "channel": "channel",
      "message_id": "message_8c41d2",
      "content": "content"
    }

    Example response

    {
      "message_id": "1190611204497309696",
      "status": "sent",
      "reply_to": "1190466022837014528",
      "sent_at": "2026-11-05T07:05:00.000000Z"
    }
  • add_reaction React to a message with an emoji as you. writeasks first

    Adds your reaction to one message. Everyone who sees the message sees the reaction and the author may be notified. Adding the same emoji twice changes nothing. By default you confirm each call; you can switch that off for this tool.

    MCP calldiscord_write → add_reaction

    REST endpointPOST https://cotlet.dev/api/v1/discord/messages/{message_id}/reactions

    Parameters

    Parameters: add_reaction
    NameTypeDescription
    channel string required string Channel, thread or DM id.
    message_id string required string Id of the message.
    emoji string required string A standard emoji such as 🎉.

    Example input

    {
      "channel": "channel",
      "message_id": "message_8c41d2",
      "emoji": "emoji"
    }

    Example response

    {
      "message_id": "1190431876100952064",
      "emoji": "🎉",
      "status": "added"
    }
  • pin_message Pin a message in a channel. Needs the Pin Messages permission in that channel. writeasks first

    Pins one message so it shows in the pinned messages of the channel, where every member can see it. Discord posts a notice in the channel that you pinned it. It fails if your role cannot pin messages there. By default you confirm each call; you can switch that off for this tool.

    MCP calldiscord_write → pin_message

    REST endpointPOST https://cotlet.dev/api/v1/discord/messages/{message_id}/pin

    Parameters

    Parameters: pin_message
    NameTypeDescription
    channel string required string Channel or thread id.
    message_id string required string Id of the message to pin.

    Example input

    {
      "channel": "channel",
      "message_id": "message_8c41d2"
    }

    Example response

    {
      "message_id": "1190602918442721280",
      "channel": "weekly-recap",
      "status": "pinned"
    }

Moderation2

Needs Manage Roles or Time Out Members. A call your role does not allow fails with the reason.

  • assign_role Give a member a role in a server. Needs the Manage Roles permission. writeasks first

    Adds one role to one member, the same as picking the role in the member list. The member sees the role and what it unlocks, and the role may open channels for them. It fails if your account lacks Manage Roles or the role sits above your highest role. By default you confirm each call; you can switch that off for this tool.

    MCP calldiscord_write → assign_role

    REST endpointPOST https://cotlet.dev/api/v1/discord/members/{member_id}/role/assign

    Parameters

    Parameters: assign_role
    NameTypeDescription
    server string required string Server id from list_servers.
    member_id string required string Member id from list_members.
    role string required string Role name, as in Server Settings > Roles.

    Example input

    {
      "server": "server",
      "member_id": "member_8c41d2",
      "role": "role"
    }

    Example response

    {
      "member_id": "1161738420995301376",
      "role": "Member",
      "status": "assigned"
    }
  • timeout_member Put a member on time out in a server. Needs the Time Out Members permission. writeasks first

    Puts one member on time out for the number of minutes you give. A timed-out member can still see and read channels but cannot post. The member is affected at once and sees it. It fails if your account lacks the permission or the member has an equal or higher role. By default you confirm each call; you can switch that off for this tool.

    MCP calldiscord_write → timeout_member

    REST endpointPOST https://cotlet.dev/api/v1/discord/members/{member_id}/timeout

    Parameters

    Parameters: timeout_member
    NameTypeDescription
    server string required string Server id from list_servers.
    member_id string required string Member id from list_members.
    minutes integer required integer Length of the time out in minutes.
    reason string string Reason for the moderation log.

    Example input

    {
      "server": "server",
      "member_id": "member_8c41d2",
      "minutes": 1
    }

    Example response

    {
      "member_id": "1161738420995301376",
      "status": "timed_out",
      "minutes": 60
    }
Encrypted, revocable

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

  • What we store

    Your logged-in Discord profile, encrypted with AES-256-GCM, in Finland. Not the password.

  • What your agent gets

    The 14 Discord tools. Never the login cookie.

  • What the session sees

    Your servers, channels, DMs and Inbox.

  • What no tool touches

    Password, two-factor, billing and Nitro.

  • If Discord asks to verify

    Your agent gives you the browser link and you finish it there.

  • How to cut access

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

Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.

Tested every 12 h

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

between tests of the Cotlet tools
12 h
between checks of the site, console and API
3 min
for a call to a Discord tool paused for repair
$0

When Discord moves a button or renames a field, the fix happens on our side and your prompts keep working. status.cotlet.dev shows the live status.

7 tools ask first

Approvals, undo and mistakes Nothing is posted until you say so.

  1. 01 Reads the context Channels and recent messages, so the post fits the thread.
  2. 02 Drafts the message Your agent writes it with the channel id from list_channels.
  3. 03 Waits for your OK The post shows up in your Cotlet console first.
  4. 04 Reports the link Message id, channel, link and send time.
Which Discord actions can be undone
ActionUndo
Send or reply to a messageDelete the message in Discord. Members may have read it already
Send a DMDelete the message in the conversation
Add a reactionRemove your reaction in Discord
Pin a messageUnpin it in Discord
Assign a roleRemove the role in Server Settings, Roles
Time out a memberEnd the time out on the member in Discord

7 of 14 tools ask first: every one that posts, reacts, pins, messages someone or changes a member. The 7 read tools run at once. Switch the wait off per tool for a scheduled run.

No Cotlet tool deletes a message, a channel or a member. Deleting stays in Discord, in your hands.

MCP call
{
  "name": "send_message",
  "arguments": {
    "channel": "1058204419337711822",
    "content": "Weekly recap: 3 landing pages shipped, pricing page template pinned in #help."
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/discord/messages \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"1058204419337711822","content":"Weekly recap: 3 landing pages shipped, pricing page template pinned in #help."}'
Tool output
{
  "message_id": "1190602918442721280",
  "status": "sent",
  "channel": "weekly-recap",
  "url": "https://discord.com/channels/1058204419337711702/1058204419337711822/1190602918442721280",
  "sent_at": "2026-11-05T07:00:00.000000Z"
}

Scripts and cron jobs reach the same tools over REST at /api/v1/discord, 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 Discord MCP server cost?

About $28 a monthfor a server manager's daily routine, 4,820 credits. Discord itself is free to use.

A month of Discord jobs for one community manager, in credits
JobCallsCredits
Daily mentions summary3 × 30900
Weekly channel digest5 × 4200
Answer open questions, 3 days a week6 × 12720
Welcome new members, daily5 × 301,500
Cloud Browser, 30 days1,500
Total4,820
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Works on a free Discord account

The month is our example for a server of about 500 members, not a measured average: Discord publishes no typical server size (checked 6 Nov 2026). Nitro costs $2.99 or $9.99 a month on discord.com/nitro and is not needed. Dollars at the $29 pack rate.

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

Discord MCP server on GitHub, Zapier or hosted: which to use Most use a bot token.

Other Discord MCP servers and tools, checked 6 Nov 2026
OptionWhat it doesWhere it stops
SaseQ/discord-mcpJava MCP server for the Discord API in Docker. 591 stars, MIT, last commit 23 Oct 2026.You run it with a bot token and add the bot to each server.
cappyeo/discord-mcpOpen-source server with 209 typed tools for your own bot. 189 stars, Apache-2.0, last commit 2 Nov 2026.Bot based and self-run.
barryyip0625/mcp-discordMCP server for AI assistants on Discord. 110 stars, MIT, last commit 5 Nov 2026.Bot token and your own hosting.
v-3/discordmcpEarly Discord MCP server for Claude. 242 stars, no license listed.Last commit 21 Jan 2025.
Anthropic Discord pluginClaude Code channel plugin: reply, react and edit messages from a Discord bot.Claude Code only, and it needs a bot invited to a server with the Message Content intent on.
ZapierPolling triggers such as New Message Posted to Channel and New Mention, actions such as Send Direct Message.Checks every 15 minutes on the Free plan.

The GitHub servers are good if you want to run a bot of your own and can host it. Zapier fits fixed if-this-then-that steps. Cotlet is the hosted option that works in your own account, inside the Claude and ChatGPT apps, with one sign-in for all your apps.

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 Discord tools.

Discord API and MCP: questions

How do I connect Discord to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Discord 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 Discord account through Cotlet, in their phone apps too.

What can ChatGPT do in Discord?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Discord: summarize my Discord mentions; weekly digest of a busy channel; answer unanswered questions. You ask in plain words, and anything that reaches other people waits for your OK first.

Can I use the Discord API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

How do I get access?

Create a free account at https://cotlet.dev, open Discord under Integrations in the console and log in to Discord in its Cloud Browser. The trial starts with your first app, no card asked.

Do I need to be an admin or add a bot to my server?

No bot and no admin rights are needed to read and post where your account already can. Your role still counts: assign_role needs Manage Roles, timeout_member needs Time Out Members, and a call your role does not allow fails with the reason. Discord's own bot API instead needs a bot added by a server manager.

Can the agent read my DMs and Inbox mentions?

Yes. list_direct_conversations shows your DMs, list_messages reads one, and list_mentions returns the Mentions tab of your Inbox. Discord's bot API cannot read either, because a bot has no access to your account. Reading does not clear your Inbox.

Do I need Discord Nitro?

No. Cotlet works in a free Discord account. Nitro Basic is $2.99 and Nitro $9.99 a month on discord.com/nitro (6 Nov 2026) and adds perks such as larger uploads.

Is the MCP server different from the REST API?

Only the door is different. Both expose the same 14 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with Discord?

No. Cotlet is independent and not affiliated with Discord Inc.

Give your agent access to Discord.

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