list_threads
List Threads
List support threads with optional filtering by status, customer, or tenant. Returns thread details with pagination support.
Ask your agent in plain language. Each of these maps to a real tool on the server.
list_threads
List support threads with optional filtering by status, customer, or tenant. Returns thread details with pagination support.
manage_customer_tenants
Add or remove a customer from tenants. Customers can belong to multiple tenants. Provide tenant identifiers to add or remove.
list_label_types
List all available label types in the workspace. Label types define the categories you can apply to threads (e.g., "Bug", "Feature Request"). Use the returned IDs when adding labels to threads.
update_customer_company
Change a customer's associated company. By default, Plain auto-derives the company from the customer's email domain. Use this tool to manually override it by specifying a company ID, domain, or set to null to remove the association.
upsert_customer
Create or update a customer in Plain. Uses an upsert pattern — if a customer matching the identifier exists, it will be updated; otherwise a new customer is created. Specify separate fields for creation vs. update via **onCreate** and **onUpdate**.
list_customer_groups
List all customer groups in the workspace. Customer groups are used for organizing customers by segment, pricing tier, or other criteria.
create_thread
Create a new support thread for a customer. Threads represent customer conversations and are created with an initial message composed of UI components (text, spacers, link buttons). You can optionally assign a tenant, labels, and priority.
update_thread_status
Change a thread's status to Todo, Done, or Snoozed. When snoozing, specify a duration in seconds after which the thread returns to Todo.
list_customers
List customers in your Plain workspace with optional pagination. Returns customers along with their company and metadata.
get_customer
Look up a single customer by ID, email, or external ID. Returns detailed customer information including company and metadata.
get_thread
Retrieve a single support thread by ID. Returns full thread details including status, priority, labels, assignee, and associated customer/tenant information.
reply_to_thread
Send a reply to an existing thread. Text, spacer, and link components are converted to text and Markdown for the thread's channel. Optionally impersonate a customer when replying.
delete_customer
Permanently delete a customer from Plain. This action cannot be undone.
manage_thread_labels
Add or remove labels on a thread. Use the **addLabelTypeIds** field to add labels and **removeLabelIds** to remove them. You can do both in a single call. Use the list_label_types tool to discover available label types.
upsert_tenant
Create or update a tenant. Tenants let you organize customers to match your product's structure (e.g., teams, organizations). Uses an upsert pattern — matched by identifier, created if not found, updated otherwise.
create_timeline_event
Create a custom event on a customer's timeline or on a specific thread. Timeline events appear in the thread view and can display rich content (text, links, spacers). Use **externalId** for idempotency.
send_email
Send a new email to a customer. This creates a new thread with an outbound email. You can also specify Cc and Bcc recipients.
manage_customer_groups
Add or remove a customer from customer groups. Customer groups are used for segmentation and access control. Use the list_customer_groups tool to discover available groups.
change_thread_priority
Change the priority level of a support thread. Priority levels: 0 = urgent, 1 = high, 2 = normal, 3 = low.
assign_thread
Assign or unassign a support thread. Provide a userId to assign, or set unassign to true to remove the current assignment.
create_note
Create an internal note visible only to your team. Target a customer or an individual thread belonging to that customer.
list_thread_timeline
Read a thread’s messages, internal notes, custom events, and other timeline entries with cursor pagination. Message content is returned for email, chat, Slack, Microsoft Teams, and Discord; other entry types retain their type name.
list_users
List workspace team members and their IDs for assign_thread. Optionally return only assignable users.
list_companies
List companies and their IDs and domains for update_customer_company.
get_current_user
Identify the machine user and workspace associated with the API key.
get_tenant
Get a tenant by its ID from list_tenants, including its external ID, URL, tier, and timestamps.
list_tenants
List tenants and their IDs, external IDs, and tiers for customer membership and thread operations.
Every client uses the same Magic MCP URL, and so does any other MCP client. Add it once and sign in with SSO.
{"mcpServers": {"metorial": {"url": "<your-magic-mcp-url>"}}}
claude mcp add --transport http metorial <your-magic-mcp-url>
codex mcp add metorial --url <your-magic-mcp-url>codex mcp login metorial
One governed layer for every app your agents reach, not a separate connector per tool.
Manage customer support customers, threads, conversations, internal notes, labels, companies, tenants, and customer groups. Discover workspace and resource IDs, read thread history across supported channels, send email, reply to threads, and manage assignment, priority, and status.
Common questions about connecting Plain to AI agents with Metorial.