How to integrate Plain MCP with Hermes

Connect Hermes to Plain MCP. Summarize unresolved plain support threads, find customers with overdue support replies, and more using natural language, with authentication handled for you.

Plain MCP logoPlain MCP
Dcr Oauth

Plain MCP is Plain's hosted support platform for threads, customers, tenants, and help-center content. It gives teams a secure, centralized way to manage customer support operations.

80 Tools

Introduction

Hermes is a 24/7 autonomous agent that lives on your computer or server — it remembers what it learns and evolves as your usage grows.

This guide explains the easiest and most robust way to connect your Plain account to Hermes. You can do this through either Composio Connect CLI or Composio Connect MCP. For personal use we recommend the CLI, but you won't go wrong with MCP either.

Also integrate Plain MCP with

What is Composio Connect?

Composio Connect is a consumer offering that lets anyone plug 1,500+ applications directly into their agent harness — including Hermes. It can:

  • Search and load tools from relevant toolkits on-demand, reducing context usage.
  • Chain multiple tools to accomplish complex workflows via a remote workbench, without excessive back-and-forth with the LLM.
  • Manage app authentication end-to-end with zero manual overhead.

Integrating Plain with Hermes

Using Composio Connect CLI

1. Install the Composio CLI

Run the install script directly, or paste https://composio.dev/hermes into your Hermes chat box to have it installed for you.

bash
curl -fsSL https://composio.dev/install | bash
Hermes authenticating with Composio

2. Authenticate

Once the CLI is installed, ask Hermes to authenticate with Composio.

3. Connect to Plain

Ask your agent to connect to Plain, or simply request any Plain-related task. Hermes will prompt you to authenticate and authorize access.

4. Done. You're all set with a new Plain connection.


Using Composio Connect MCP

1. Get your MCP URL and API Key

Go to dashboard.composio.dev and copy your Connect MCP URL and API key.

Copy MCP URL and API key from Composio dashboard

2. Open the Hermes config file

bash
nano ~/.hermes/config.yaml

3. Add the Composio Connect MCP server

bash
mcp_servers:
  composio:
    url: "https://connect.composio.dev/mcp"
    headers:
      x-consumer-api-key: "YOUR_COMPOSIO_API_KEY"
    connect_timeout: 60
    timeout: 180

Save with Ctrl + O, Enter, then exit with Ctrl + X.

4. Restart your Hermes agent

Once restarted, ask your agent to connect to Plain or request any Plain-related task. It will prompt you to authenticate and authorize access.

5. Done!

What is the Plain MCP server, and what's possible with it?

The Plain MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Plain account. It provides structured and secure access to Plain support threads, customers, broadcasts, help-center content, Sidekick sessions, and workspace details, so your agent can read and update support work, manage customer conversations, publish and inspect broadcasts, and retrieve help-center content on your behalf.

  • Support thread management: Have your agent create threads, assign them, change priority, add labels and internal notes, suggest replies, update custom fields, and link them to external records.
  • Customer conversation lookup: Let the agent list customers, fetch customer details, and review the threads connected to each customer.
  • Broadcast coordination: Direct your agent to create and manage broadcasts for Slack channels, organize reusable audiences, review send history and delivery results, or remove outdated broadcasts.
  • Help-center content access: Instruct your agent to find help centers, article groups, and articles, then retrieve specific articles by their ID or slug.
  • Workspace and Sidekick assistance: Have your agent check workspace and user details, read snippets and labels, and poll Sidekick sessions for their status, latest messages, or pending approvals.

Way Forward

With Plain connected, Hermes can now act on your behalf whenever it detects a relevant task or you ask it to.

From here, you can extend Hermes further:

  • Connect more apps: Calendar, Slack, Notion, Linear, and hundreds of others are available through the same Composio Connect setup. Each new integration compounds what Hermes can do for you.
  • Build workflows across tools: Once multiple apps are connected, Hermes can chain actions together — turn an email into a calendar invite, a Slack message into a Linear ticket, or a meeting note into a follow-up draft.
  • Let it learn your patterns: The more you use Hermes, the better it gets at anticipating how you'd handle recurring tasks. Give it feedback on drafts and decisions, and it will adapt.

If you run into trouble or want to share what you've built, join the community or check out the Docs for deeper configuration options.

TOOLS

Supported Tools

Every Plain MCP action and event your agent gets out of the box.

Addgeneratedreply

Add an AI-generated reply suggestion to a thread.

Addlabels

Add labels to a thread by label type IDs.

Archivelabeltype

Archive a label type to hide it from the active label list.

Assignthread

Assign a thread to a user or machine user.

Bulkupsertthreadfields

Bulk upsert (create or update) multiple thread field values in a single operation.

Changethreadpriority

Change the priority of a thread.

Createbroadcast

Create a new broadcast: a message authored once and posted to many Slack channels at once.

Createbroadcastaudience

Create a reusable broadcast audience: a named set of broadcast recipients, resolved to concrete Slack channels at send time rather than when saved.

Createlabeltype

Create a new label type for organizing threads.

Createnote

Create an internal note on a thread.

Createsnippet

Create a new snippet (reusable reply template) in the workspace.

Createthread

Create a new thread for a customer.

Createthreadfieldschema

Create a new thread field schema to capture structured data on threads.

Createthreadlink

Link a thread to an external entity (e.

Createworkspaceslackintegrationfromauth

Connect workspace Slack notifications using a Slack connection the workspace already has.

Deletebroadcast

Soft-delete a broadcast.

Deletebroadcastaudience

Soft-delete a broadcast audience.

Deletethreadfieldschema

Delete a thread field schema from the workspace.

Deletethreadlink

Remove a link between a thread and an external entity.

Getattachmentdownloadurl

Generate a short-lived download URL for an attachment on a thread.

Getbroadcastaudiencedetails

Fetch a single broadcast audience by its ID, or null if no audience with that ID exists.

Getbroadcastaudiences

Fetch a paginated list of the workspace's broadcast audiences, newest first.

Getbroadcastdetails

Fetch a single broadcast by its ID, including its authored content and who it is targeted at.

Getbroadcasts

Fetch a paginated list of the workspace's broadcasts, newest first.

Getbroadcastsenddeliveries

Fetch the individual recipients of one broadcast send — which channel got the message, which did not, and why.

Getbroadcastsends

Fetch the send history of one broadcast, newest first.

Getcustomerdetails

Fetch detailed information about a specific customer by their ID.

Getcustomers

Fetch a paginated list of customers from Plain.

Getcustomerthreads

Fetch first 10 threads for a specific customer.

Gethelpcenterarticle

Fetch detailed information for a specific help-center article by ID.

Gethelpcenterarticlebyslug

Fetch detailed information for a specific help-center article by slug.

Gethelpcenterarticlegroups

Fetch a paginated list of article groups for a specific help center.

Gethelpcenterarticles

Fetch a paginated list of articles for a specific help center.

Gethelpcenters

Fetch a paginated list of help centers.

Getlabels

Fetch a paginated list of label types from Plain.

Getmyassignedthreads

Fetch first 10 threads assigned to a specific user in Plain.

Getmyuser

Get the currently authenticated user's details.

Getmyworkspace

Get the currently authenticated user's workspace details.

Getsidekicksession

Poll a Sidekick session: read its status, its newest messages, and any approval it is blocked on.

Getsnippet

Fetch a single snippet by ID, including soft-deleted snippets (where `isDeleted` is true).

Getsnippets

Fetch a paginated list of snippets from the workspace.

Gettenantdetails

Fetch detailed information about a specific tenant by their ID.

Gettenants

Fetch a paginated list of tenants from Plain.

Getthreaddetails

Fetch complete details for a specific thread including first 50 timeline entries.

Getthreadfieldschemas

Fetch a paginated list of thread field schemas from Plain.

Getthreadknowledgesourcecitations

Fetch the knowledge sources cited by AI agent replies on a thread.

Getthreads

Fetch threads with flexible filtering options.

Getuserbyemail

Look up a Plain user by their email address.

Listsidekicksessions

List Sidekick sessions in the workspace, most recent activity first.

Markcustomerasspam

Flag a customer as spam.

Markthreadasdone

Mark a thread as done (resolved).

Markthreadastodo

Mark a thread as todo (reopen or set as active).

Mergethread

Merge one Plain thread into another (a `MERGED_INTO` native thread link).

Movelabeltype

Move a label type to a different position in the label hierarchy.

Removelabels

Remove labels from a thread by label IDs.

Reorderthreadfieldschemas

Reorder multiple thread field schemas in a single operation.

Replytothread

Reply to the last message in a thread.

Resolvesidekickapproval

Approve or deny a Sidekick tool-call approval request.

Searchbroadcasts

Search broadcasts by name.

Searchcustomers

Search for customers by name, email, short name, or external ID.

Searchtenants

Search for tenants by name or external ID.

Searchthreadlinkcandidates

Search a connected issue tracker for external entities that can be linked to a thread via `createThreadLink`.

Searchthreads

Search threads by text content in title, description, or messages.

Sendsidekickmessage

Send a follow-up message into an existing Sidekick session.

Sendtestbroadcast

Send a test copy of a broadcast to Slack channels you name, so you can see what recipients will get before the real audience does.

Snoozethread

Snooze a thread for a specified duration.

Startsidekicksession

Start a new Sidekick session and return the handle used by every other Sidekick tool.

Unarchivelabeltype

Unarchive a previously archived label type to make it available again.

Unassignthread

Unassign a thread, removing the current assignee.

Unmarkcustomerasspam

Clear the spam flag from a customer, restoring their threads to the inbox and metrics.

Updatebroadcast

Update one or more fields of an existing broadcast.

Updatebroadcastaudience

Update a broadcast audience's name, filters, or both.

Updatelabeltype

Update an existing label type's properties.

Updatethreadfieldschema

Update an existing thread field schema's properties.

Updatethreadtitle

Update the title (subject line) of an existing thread.

Upsertcustomer

Create or update a customer.

Upserthelpcenterarticle

Create or update a help-center article.

Upserttenant

Create or update a tenant.

Upserttenantfield

Create or update a tenant field.

Upsertthreadfield

Upsert (create or update) a thread field value on a thread.

FAQ

Frequently asked questions

With a standalone Plain MCP server, the agents and LLMs can only access a fixed set of Plain tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Plain and many other apps based on the task at hand, all through a single MCP endpoint.

Yes, you can. Hermes fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Plain tools.

Yes, absolutely. You can configure which Plain scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Plain data and credentials are handled as safely as possible.

Start with Plain MCP.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Plain MCP tool your agent needs.Free to start.

Start building