Plain for AI agents

Agents read Plain at once. Changes and sends are held for a person's approval by default.

About Plain

Plain is a collaborative support platform for B2B support teams, offering a modern, AI-powered interface to consolidate support channels and assist customers efficiently.

What an agent can do in Plain

Every Plain action is classed by the platform as a read, a change or a send. Reads run at once. Changes and sends are held for a person by default.

Runs at once (reads)

Looks things up in Plain without asking first. 36 actions.

  • Fetch CompanyTool to fetch company details by ID. Use when you need the full profile of a company, including name, domain, contract value, owner info, and timestamps.
  • Fetch IssuesFetches external issue tracker links (Jira, Linear, GitHub, etc.) associated with a customer's threads. Returns a bounded, flattened snapshot of issue links across the customer's threads, including th
  • Get Customer By EmailFetch customer details by email address. Returns customer information if found, or null if no customer exists with that email.
  • Get Customer By IDTool to retrieve details of a specific customer by their unique ID. Use after obtaining the customer's ID to fetch their complete record.
  • Get CustomersTool to fetch a list of customers. Use when retrieving multiple customer records with pagination, filtering, or sorting.
  • Get Knowledge GapFetch one AI-detected knowledge gap and its linked task and signals.
  • Get Task by ID or RefFetch one task by either its Plain ID or human-readable T-123 ref.
  • Get Thread By IDFetches a thread by ID, including customer info, status, priority, labels, and assignments. Returns null if the thread is not found.
  • Get User By IDFetch workspace user/team member by ID. Returns detailed information about a workspace team member including their name, email, status, and avatar. Note: This fetches workspace users (team members), n
  • List AI FeedbackList feedback submitted on Plain AI features, optionally filtered by feature, sentiment, or time.
  • List Customer GroupsList one paginated page of customer groups with optional external-ID filtering.
  • List Knowledge GapsList AI-detected knowledge gaps with status filters and useful sort orders.
Show all 36
  • List TasksList workspace tasks with pagination, filtering, and sorting.
  • List ThreadsRetrieve up to 50 threads from one page, optionally filtered by status. Omit the cursor for the first page and pass the returned end cursor to fetch the next page.
  • Get AutoresponderFetch one native Plain autoresponder through the machine-user-safe list query.
  • Get Customer By External IDFetch a customer by the exact stable external ID from your own system.
  • Get Customer GroupFetch one customer group by its Plain ID. Plain's live API requires customerGroup:read for this query.
  • Get Email/Slack DiscussionFetch metadata for one EMAIL or SLACK side-conversation by ID. Live provider authorization requires threadDiscussion:read, although the current public operation page does not state that permission.
  • Get Label TypeFetch one label type by Plain ID or external ID.
  • Get SnippetFetch one snippet by ID, including a soft-deleted snippet.
  • Get TenantFetch one tenant by its Plain ID, including current custom field values.
  • Get Thread By ReferenceFetch a thread by ref or by its customer-scoped external ID.
  • List AutorespondersList native Plain autoresponders in priority order.
  • List Deleted ThreadsList deletion-audit records for threads.
  • List Email/Slack DiscussionsList only EMAIL and SLACK side-conversations with filters and pagination. Live provider authorization requires threadDiscussion:read, although the current public operation page does not state that per
  • List Generated RepliesList current suggested replies for a thread's most recent inbound message.
  • List Label TypesList active and/or archived label types.
  • List SnippetsList the workspace snippet library with cursor pagination.
  • List Tenant Field SchemasList tenant-field schemas before reading or writing custom values.
  • List TenantsList tenants with current filters and cursor pagination.
  • List Thread Field SchemasList the workspace's custom thread-field schemas.
  • List Threads By External IDList a page of threads with an external ID across all customers.
  • List Threads With Rich FiltersList threads with the provider's complete public filter and sort surface.
  • Search CustomersSearch customer profile fields or timeline text using explicit OR conditions.
  • Search TenantsSearch tenants by name, domain, or exact external ID.
  • Search ThreadsSearch thread titles, messages, and customer names or emails.

Held for approval by default (changes and sends)

Held for a person's approval by default. The approval is recorded and the action is sent once, never twice, with 10 seconds to undo. 71 actions.

  • Add Customer To GroupAdd a customer to up to 25 customer groups. Existing memberships are skipped, and the response contains only newly created memberships.
  • Add Members to TierAdd or move up to 25 tenants or companies into one tier.
  • Create Customer GroupCreates a new customer group in Plain for organizing and segmenting customers. Customer groups allow you to categorize customers (e.g., by pricing tier, feature access, or support level) and manage th
  • Create TaskCreate a task, optionally linked to one parent and one assignee.
  • Create ThreadCreate a thread after obtaining a valid customer identifier. Creating a thread can trigger a configured autoresponder, which sends an external reply to the customer; that outbound message cannot be re
  • Create TierCreate a support tier, optionally assigning tenant or company members.
  • Delete CustomerPermanently and irreversibly deletes a Plain customer by ID, including all associated threads, timeline entries, and other customer data. Deletion runs asynchronously. Confirm the destructive operatio
  • Delete TaskSoft-delete a task and remove its thread links.
  • Delete TierPermanently delete a tier and all of its memberships. The live API also requires serviceLevelAgreementBreachAction:delete, including when the tier does not exist. Plain's API-key UI grantability for t
  • Delete UserPermanently removes a Plain workspace user by ID. Their threads remain but become unassigned. Plain rejects deletion when the user is the workspace's only owner, so assign another owner first. Confirm
  • Remove Customer From GroupRemoves a customer from one or more customer groups in Plain. Use this action to revoke customer group memberships. The customer must be a member of the specified group(s) - attempting to remove a cus
  • Remove Members from TierRemove up to 25 tenants or companies from their current tiers.
Show all 71
  • Run GraphQL QueryExecute an arbitrary GraphQL document against Plain without a safety gate. Prefer a specific Plain action when one exists. Inspect the full document first: mutations can immediately and irreversibly c
  • Send MessageImmediately and irreversibly deliver a message through an existing thread. The thread determines the delivery channel and primary recipient or channel; this action does not let the caller review or ov
  • Update CompanyUpserts (creates or updates) a company in Plain. Provide companyId to update by ID or companyDomainName to upsert by domain. When both identifiers are omitted, domainName is also used as companyDomain
  • Update Company TierAssign one company to a tier or clear its tier membership.
  • Update TaskUpdate selected fields on an existing task.
  • Update Tenant TierAssign one tenant to a tier or clear its tier membership.
  • Update Thread TitleTool to update a thread's title. Use when renaming a thread after confirming its ID.
  • Update TierUpdate selected fields on an existing support tier.
  • Upsert CustomerTool to upsert (create or update) a customer. Use when syncing or ensuring a customer record exists before subsequent actions.
  • Add Customer To TenantsIdempotently add a customer to one or more tenants.
  • Add Generated ReplyAdd a suggested reply for teammate review without sending it to the customer.
  • Add Labels To ThreadAdd one or more labels to a thread by label-type ID.
  • Archive Label TypeArchive a label type while preserving labels already on threads.
  • Bulk Delete Thread FieldsSequentially delete thread fields, returning each non-atomic item result.
  • Bulk Set Thread FieldsCreate or replace multiple typed thread-field values.
  • Change Thread AssignmentIrreversibly assign, unassign, add, or remove thread assignees. For an AI-agent ASSIGN, LIVE lets the agent reply to customers, while SHADOW observes real threads without sending customer replies.
  • Create Attachment Download URLCreate a sensitive three-minute URL and return its virus-scan result. Download or process the file only when attachmentVirusScanResult is CLEAN. Treat INFECTED as unsafe, FAILED or PENDING as not clea
  • Create Attachment Upload FormCreate a sensitive, two-hour presigned upload capability; no file is uploaded. Do not log or share uploadFormUrl or uploadFormData. Next, POST multipart/form-data directly to uploadFormUrl with every
  • Create AutoresponderCreate an autoresponder that automatically sends outbound customer replies. Enabled autoresponders can send irreversible external messages when new threads match. Plain permits at most 25 autoresponde
  • Create Email/Slack DiscussionImmediately and irreversibly start an external EMAIL or SLACK discussion. EMAIL delivers the first message to every emailDetails.toAddresses recipient and optional ccAddresses recipient. SLACK posts i
  • Create Label TypeCreate a label type that can be applied to threads.
  • Create NoteCreate an internal note on an existing customer thread. Plain's live API currently rejects customer-level notes without threadId even though the current GraphQL SDL marks that input nullable.
  • Create SnippetCreate a reusable plain-text and optional Markdown reply snippet.
  • Create Thread Field SchemaCreate a custom thread-field schema.
  • Delete AutoresponderPermanently delete a native autoresponder.
  • Delete Customer GroupPermanently delete an empty customer group after confirmation.
  • Delete NoteSoft-delete an internal note.
  • Delete SnippetSoft-delete a snippet while preserving historical references.
  • Delete TenantDelete a tenant, unlink its customers, and remove its field values. Existing threads retain a reference to the tenant deletion record but are no longer routed through that tenant.
  • Delete Tenant Field ValueClear one tenant field value without deleting its schema.
  • Delete Tenant Field SchemaPermanently delete a tenant-field schema and all values stored against it.
  • Delete ThreadPermanently delete a thread and all associated data.
  • Delete Thread Field SchemaDelete a schema and all values stored against it.
  • Escalate Thread Or Select PathAdvance a thread's escalation or attach/detach its escalation path.
  • Import ThreadImport one historical thread without triggering SLAs or autoresponders.
  • Import Thread MessagesImport up to 25 historical messages and return one result per input message. Reusing a message externalId is idempotent and returns NOOP. The batch is non-atomic: successful messages remain committed
  • Mark Customer As SpamIdempotently hide a customer's threads as spam and exclude them from metrics.
  • Remove Customer From TenantsIdempotently remove a customer from one or more tenants.
  • Remove Labels From ThreadRemove one or more concrete labels from a thread.
  • Reorder AutorespondersReorder native autoresponders in one call.
  • Reorder Thread Field SchemasReorder one or more thread-field schemas.
  • Reply To EmailImmediately and irreversibly send an external reply to an inbound email. Plain inherits the primary recipients and email channel from the referenced inbound email. The request can add CC and BCC recip
  • Send Email/Slack Discussion MessageImmediately and irreversibly deliver a message in an existing discussion. The discussion ID determines the external recipients and original EMAIL or SLACK channel; they cannot be reviewed or overridde
  • Send New EmailImmediately and irreversibly send an external email to a customer. Plain uses the customer's email as the primary recipient. The request can add CC and BCC recipients, send from a verified alternate s
  • Set Customer TenantsReplace a customer's complete tenant membership set in one call.
  • Transition Thread StatusMove a thread to Todo, Snoozed, or Done.
  • Unarchive Label TypeRestore an archived label type for use on new threads.
  • Unmark Customer As SpamIdempotently clear a customer's spam flag and restore inbox visibility.
  • Update AutoresponderUpdate an autoresponder that automatically sends outbound customer replies. Enabling or changing a matching autoresponder can cause irreversible external messages. Plain permits at most 25 autorespond
  • Update Generated ReplyRecord teammate feedback on a generated reply.
  • Update Label TypeUpdate mutable label-type properties using field wrappers.
  • Update NoteReplace an internal note's content and optional attachment list.
  • Update SnippetUpdate selected snippet fields using Plain's field-level wrappers.
  • Update Thread AttributesChange one thread priority, customer, external ID, tenant, or tier attribute.
  • Update Thread Field SchemaUpdate mutable properties of a thread-field schema.
  • Upsert Customer GroupIdempotently create or update a customer group using machine-user-safe calls.
  • Upsert TenantCreate or update a tenant while synchronizing its stable external ID.
  • Upsert Tenant FieldSet one typed custom field value for a tenant.
  • Upsert Tenant Field SchemasCreate or update tenant-field schemas keyed by source and external field ID.

Changes wait in Needs you

Changes and sends in Plain are held for a person's approval by default. The approval is recorded, and the action is sent once, never twice, with 10 seconds to undo.

How approvals work

Plain questions

Can an agent change data in Plain on its own?

Not by default. Changes and sends in Plain are held for a person's approval. The approval is recorded, and the action is sent once, never twice, with 10 seconds to undo.

What can an agent read in Plain?

This connector lists 36 read actions. Reads run at once, without waiting for approval.

How does Plain connect?

It connects with API key. Connectors are built and maintained by third-party developers; availability is confirmed during scoping.

Bring Plain to your agents.