Team
Shared credential for production and unattended runs.
Plain is a collaborative support platform for B2B support teams, offering a modern, AI-powered interface to consolidate support channels and assist customers efficiently.
Tools and triggers
Available tools and events after Plain is connected.
Tool to add a customer to one or more customer groups. Use when you have a customer and groups ready.
Creates 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 them more…
Tool to create a new thread. Use after obtaining valid customer identifier.
Tool to delete a customer from the system. Use when you need to remove a customer by their ID.
Tool to delete a user from the system. Use when you need to remove a user by their ID after confirming existence.
Tool 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.
Fetches external issue tracker links (Jira, Linear, GitHub, etc.) associated with a customer's threads. Returns a flattened list of all issue links across the customer's threads, including the thread context for each…
Tool to fetch a tier by its ID. Use when you have a tier ID and need its metadata before proceeding. Example: "Fetch tier with ID tier_123".
Fetch customer details by email address. Returns customer information if found, or null if no customer exists with that email.
Tool to retrieve details of a specific customer by their unique ID. Use after obtaining the customer's ID to fetch their complete record.
Tool to fetch a list of customers. Use when retrieving multiple customer records with pagination, filtering, or sorting.
Fetches comprehensive details of a specific thread by ID, including customer info, status, priority, labels, and assignments. Returns null if thread not found.
Fetch 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), not customers. Use…
Tool to list all customer groups. Use when you need to retrieve group metadata with optional pagination or filters.
Tool to retrieve a paginated list of threads. Use when you need to list threads with optional status filtering.
Tool to retrieve a list of tiers with pagination. Use when you need to browse available tiers after determining pagination cursors. Example: 'List tiers with first=25'.
Removes 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 customer from a group…
Execute any GraphQL query or mutation against Plain API. Use when no specific action exists or for complex operations like thread timelines, advanced filtering, and custom data retrieval. Supports queries, mutations…
Tool to send a new message within a thread. Use after identifying the thread and preparing message content.
Upserts (creates or updates) a company in Plain. Provide either companyId (for updating an existing company by ID) or companyDomainName (for upserting by domain). Use this to create new companies, update existing…
Tool to update a thread's title. Use when renaming a thread after confirming its ID.
Tool to upsert (create or update) a customer. Use when syncing or ensuring a customer record exists before subsequent actions.
Fires when a customer in Plain is created, updated or deleted. `event_type` says which it was, `created`, `updated` or `deleted`, in the same vocabulary the config filters on — so a single subscription to all three can…
Fires when a customer group is created, edited or deleted in Plain.
Fires when a customer is added to or removed from a customer group in Plain. Use it to re-segment a customer downstream the moment their grouping in Plain changes — move them onto a different plan's onboarding, change…
Fires when a new support thread is opened in Plain.
Fires when one of your own thread fields is set, changed or cleared on a Plain thread.
Fires when an inbound message arrives on a Plain thread. Covers email, in-app chat, Slack, Discord and Microsoft Teams, and each channel ships its own message shape, so read `channel` before reading `message`. For the…
Fires when your team sends a message out on a Plain thread. Covers email, in-app chat, Slack, Discord and Microsoft Teams, and each channel ships its own message shape, so read `channel` before reading `message`…
Fires when an internal note is added to a thread in Plain. Carries no `mentions`: Plain only reports them on its separate mention event, which is `PLAIN_THREAD_NOTE_MENTIONED`. Subscribing to both slugs delivers every…
Fires when an internal note mentions a machine user in Plain. The only event that carries `mentions`. The raw `<@mu_…>` markup is not guaranteed in either `note.text` or `note.markdown`, so this slug — not scanning the…
Fires when a thread's status, assignee, priority or labels change in Plain. Every event carries the thread's new state alongside its state immediately before the change, and names which of the four properties changed…
Fires when a thread's tenant is set, changed or cleared in Plain. Plain also sends this event when a thread's tenant is reapplied without changing, in which case both sides hold the same tenant or both are null.
Setup
Pick a scope, then confirm what can start a Protege and what it can do.
What can start a Protege from this app.
What a Protege can do after it starts.
Prefer team for production.
Shared credential for production and unattended runs.
Tied to one user—only when the workflow needs their account.
Team-scoped for supported chat surfaces.
Build with us
Request early access or book a live walkthrough with the team.