How to integrate Plain MCP with Atomic Agent

Connect Atomic Agent to Plain MCP. Add a customer to the enterprise group, fetch company details for acme corp, and more using natural language, with authentication handled for you.

Plain logoPlain
Api Key

Plain is a collaborative support platform for B2B teams, focused on consolidating conversations and boosting efficiency with AI. Enjoy streamlined, modern workflows to assist customers across channels from one place.

119 Tools11 Triggers

Introduction

Atomic Agent is an open-source AI agent that runs on your machine and supports local models through llama.cpp. Connect it to 1,500+ apps through Composio, including Plain.

This guide uses Atomic Agent's built-in Composio integration. You need Atomic Agent v0.5.6 or later, your own Composio API key, and a Plain account. See the Atomic Agent documentation for installation instructions.

Also integrate Plain with

How Atomic Agent connects to Plain

Atomic Agent connects to Composio's Tool Router over Streamable HTTP MCP. It discovers the tools needed for your request, and Composio handles account authentication.

Execution and account-connection tools follow Atomic Agent's configured approval policy. Review any approval prompt before allowing an action on your connected account.

Connect Plain to Atomic Agent

  1. Sign up or sign in to the Composio dashboard. Copy your API key.
  2. In Atomic Agent, open the Integrations tab and select Composio. Select API key, press e, paste the key, and press Enter. The tools become available immediately, without a restart.
  3. Ask Atomic Agent to do something in Plain. It searches Composio for the right tool.
  4. On first use, open the sign-in link returned in the chat. Connect your Plain account, then return to Atomic Agent to continue.

Headless setup

Add the following line to ~/.atomic-agent/.env, replacing YOUR_COMPOSIO_API_KEY with your key. Start Atomic Agent after saving the file.

bash
COMPOSIO_API_KEY=YOUR_COMPOSIO_API_KEY

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 your B2B support workspace, so your agent can perform actions like managing customers, creating support threads, fetching company details, handling issues, and organizing customer groups on your behalf.

  • Customer management and onboarding: Automatically create new customer records, fetch customer information by email or ID, and add customers to specific support groups for better organization.
  • Support thread creation: Let your agent create new support threads tied to customers, making it easy to kick off or escalate conversations without manual intervention.
  • Issue tracking and retrieval: Fetch all external issue links associated with a customer, helping your team stay on top of ongoing problems and resolutions.
  • Company and tier information access: Retrieve detailed company profiles and tier metadata, including contract value, owner details, and more, to personalize support interactions.
  • User and customer cleanup: Safely delete customers or users from the system when offboarding or data hygiene is needed, all through agent-driven actions.

Use Plain from Atomic Agent

With your account connected, ask Atomic Agent to work with Plain in natural language. You can connect more apps through the same Composio integration as you need them.

Visit the Atomic Agent website or inspect the Atomic Agent source code.

Troubleshooting

Why is my API key rejected?

Copy the key directly from the Composio dashboard. Atomic Agent requires ASCII characters because it sends the key in an HTTP header. Remove any extra characters introduced when copying.

Why are Composio tools unavailable after saving a key?

Check that you use Atomic Agent v0.5.6 or later and that Composio is enabled in your configuration. A "composio": { "enabled": false } setting disables the integration while keeping the saved key on disk.

Does Composio have a free plan?

The Hobby plan includes 100,000 tool calls per month. Composio-managed OAuth apps have a lower included allowance. See Composio pricing for the current limits that apply to your connection.

TOOLS & TRIGGERS

Supported Tools and Triggers

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

Add Customer To Group

Add a customer to up to 25 customer groups.

Add Customer To Tenants

Idempotently add a customer to one or more tenants.

Add Generated Reply

Add a suggested reply for teammate review without sending it to the customer.

Add Labels To Thread

Add one or more labels to a thread by label-type ID.

Add Members to Tier

Add or move up to 25 tenants or companies into one tier.

Archive Label Type

Archive a label type while preserving labels already on threads.

Bulk Delete Thread Fields

Sequentially delete thread fields, returning each non-atomic item result.

Bulk Set Thread Fields

Create or replace multiple typed thread-field values.

Change Thread Assignment

Irreversibly assign, unassign, add, or remove thread assignees.

Create Attachment Download URL

Create a sensitive three-minute URL and return its virus-scan result.

Create Attachment Upload Form

Create a sensitive, two-hour presigned upload capability; no file is uploaded.

Create Autoresponder

Create an autoresponder that automatically sends outbound customer replies.

Create Customer Group

Creates a new customer group in Plain for organizing and segmenting customers.

Create Email/Slack Discussion

Immediately and irreversibly start an external EMAIL or SLACK discussion.

Create Customer Or Thread Event

Create a custom customer-wide or single-thread timeline event.

Create Label Type

Create a label type that can be applied to threads.

Create Note

Create an internal note on an existing customer thread.

Create Tier SLA

Create one legacy tier SLA; next-response requires a first-response SLA on the tier.

Create SLA Policy

Create a named SLA policy with zero or more unique target types.

Create Snippet

Create a reusable plain-text and optional Markdown reply snippet.

Create Task

Create a task, optionally linked to one parent and one assignee.

Create Thread

Create a thread after obtaining a valid customer identifier.

Create Thread Field Schema

Create a custom thread-field schema.

Create Tier

Create a support tier, optionally assigning tenant or company members.

Delete Autoresponder

Permanently delete a native autoresponder.

Delete Customer

Permanently and irreversibly deletes a Plain customer by ID, including all associated threads, timeline entries, and other customer data.

Delete Customer Group

Permanently delete an empty customer group after confirmation.

Delete Note

Soft-delete an internal note.

Delete Tier SLA

Delete a legacy SLA from a tier.

Delete SLA Policy

Delete an SLA policy, its targets, and their trackers.

Delete Snippet

Soft-delete a snippet while preserving historical references.

Delete Task

Soft-delete a task and remove its thread links.

Delete Tenant

Delete a tenant, unlink its customers, and remove its field values.

Delete Tenant Field Value

Clear one tenant field value without deleting its schema.

Delete Tenant Field Schema

Permanently delete a tenant-field schema and all values stored against it.

Delete Thread

Permanently delete a thread and all associated data.

Delete Thread Field Schema

Delete a schema and all values stored against it.

Delete Tier

Permanently delete a tier and all of its memberships.

Delete User

Permanently removes a Plain workspace user by ID.

Escalate Thread Or Select Path

Advance a thread's escalation or attach/detach its escalation path.

Fetch Company

Tool to fetch company details by ID.

Fetch Issues

Fetches external issue tracker links (Jira, Linear, GitHub, etc.

Fetch Tier

Fetch a tier by ID.

Get Autoresponder

Fetch one native Plain autoresponder through the machine-user-safe list query.

Get Customer By Email

Fetch customer details by email address.

Get Customer By External ID

Fetch a customer by the exact stable external ID from your own system.

Get Customer By ID

Tool to retrieve details of a specific customer by their unique ID.

Get Customer Group

Fetch one customer group by its Plain ID.

Get Customers

Tool to fetch a list of customers.

Get Email/Slack Discussion

Fetch metadata for one EMAIL or SLACK side-conversation by ID.

Get Knowledge Gap

Fetch one AI-detected knowledge gap and its linked task and signals.

Get Label Type

Fetch one label type by Plain ID or external ID.

Get SLA Policy

Fetch one SLA policy by its Plain ID.

Get Snippet

Fetch one snippet by ID, including a soft-deleted snippet.

Get Task by ID or Ref

Fetch one task by either its Plain ID or human-readable T-123 ref.

Get Tenant

Fetch one tenant by its Plain ID, including current custom field values.

Get Thread By ID

Fetches a thread by ID, including customer info, status, priority, labels, and assignments.

Get Thread By Reference

Fetch a thread by ref or by its customer-scoped external ID.

Get User By ID

Fetch workspace user/team member by ID.

Import Thread

Import one historical thread without triggering SLAs or autoresponders.

Import Thread Messages

Import up to 25 historical messages and return one result per input message.

List AI Feedback

List feedback submitted on Plain AI features, optionally filtered by feature, sentiment, or time.

List Autoresponders

List native Plain autoresponders in priority order.

List Customer Groups

List one paginated page of customer groups with optional external-ID filtering.

List Deleted Threads

List deletion-audit records for threads.

List Email/Slack Discussions

List only EMAIL and SLACK side-conversations with filters and pagination.

List Generated Replies

List current suggested replies for a thread's most recent inbound message.

List Knowledge Gaps

List AI-detected knowledge gaps with status filters and useful sort orders.

List Label Types

List active and/or archived label types.

List SLA Policies

List named SLA policies, optionally filtering by name or target type.

List Snippets

List the workspace snippet library with cursor pagination.

List Tasks

List workspace tasks with pagination, filtering, and sorting.

List Tenant Field Schemas

List tenant-field schemas before reading or writing custom values.

List Tenants

List tenants with current filters and cursor pagination.

List Thread Field Schemas

List the workspace's custom thread-field schemas.

List Threads By External ID

List a page of threads with an external ID across all customers.

List Threads With Rich Filters

List threads with the provider's complete public filter and sort surface.

List Tiers

List tiers with cursor pagination.

Mark Customer As Spam

Idempotently hide a customer's threads as spam and exclude them from metrics.

List Threads

Retrieve up to 50 threads from one page, optionally filtered by status.

Remove Customer From Group

Removes a customer from one or more customer groups in Plain.

Remove Customer From Tenants

Idempotently remove a customer from one or more tenants.

Remove Labels From Thread

Remove one or more concrete labels from a thread.

Remove Members from Tier

Remove up to 25 tenants or companies from their current tiers.

Reorder Autoresponders

Reorder native autoresponders in one call.

Reorder Thread Field Schemas

Reorder one or more thread-field schemas.

Reply To Email

Immediately and irreversibly send an external reply to an inbound email.

Run GraphQL Query

Execute an arbitrary GraphQL document against Plain without a safety gate.

Search Customers

Search customer profile fields or timeline text using explicit OR conditions.

Search Tenants

Search tenants by name, domain, or exact external ID.

Search Threads

Search thread titles, messages, and customer names or emails.

Send Email/Slack Discussion Message

Immediately and irreversibly deliver a message in an existing discussion.

Send Message

Immediately and irreversibly deliver a message through an existing thread.

Send New Email

Immediately and irreversibly send an external email to a customer.

Set Customer Tenants

Replace a customer's complete tenant membership set in one call.

Transition Thread Status

Move a thread to Todo, Snoozed, or Done.

Unarchive Label Type

Restore an archived label type for use on new threads.

Unmark Customer As Spam

Idempotently clear a customer's spam flag and restore inbox visibility.

Update Autoresponder

Update an autoresponder that automatically sends outbound customer replies.

Update Company

Upserts (creates or updates) a company in Plain.

Update Company Tier

Assign one company to a tier or clear its tier membership.

Update Generated Reply

Record teammate feedback on a generated reply.

Update Label Type

Update mutable label-type properties using field wrappers.

Update Note

Replace an internal note's content and optional attachment list.

Update Tier SLA

Update a legacy tier SLA without changing its SLA type.

Update SLA Policy

Replace an SLA policy's targets; omitted target types and their trackers are deleted.

Update Snippet

Update selected snippet fields using Plain's field-level wrappers.

Update Task

Update selected fields on an existing task.

Update Tenant Tier

Assign one tenant to a tier or clear its tier membership.

Update Thread Title

Tool to update a thread's title.

Update Thread Attributes

Change one thread priority, customer, external ID, tenant, or tier attribute.

Update Thread Field Schema

Update mutable properties of a thread-field schema.

Apply or Clear Thread SLA Policy

Apply an SLA policy, or clear it so the thread falls back to its tier's SLAs.

Update Tier

Update selected fields on an existing support tier.

Upsert Customer

Tool to upsert (create or update) a customer.

Upsert Customer Group

Idempotently create or update a customer group using machine-user-safe calls.

Upsert Tenant

Create or update a tenant while synchronizing its stable external ID.

Upsert Tenant Field

Set one typed custom field value for a tenant.

Upsert Tenant Field Schemas

Create or update tenant-field schemas keyed by source and external field ID.

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. Atomic Agent 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.It takes 30 seconds.

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

Start building