In Plain, an agent is represented as a machine user. This is the same primitive used for any automation or integration, but it’s the right home for an agent because it gives your agent a name, an avatar, and an audit trail that’s distinct from any human teammate. Machine users can be assigned threads, can reply to customers, can be @-mentioned, and show up in the timeline as the author of any message they send. When a customer sees a reply from your agent, they see the machine user’s public name and avatar.Documentation Index
Fetch the complete documentation index at: https://www.plain.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Create a machine user
Add the machine user
Go to Settings → Machine Users and click + Add Machine User.Two fields matter:
- Name: only visible to your team. Use this to describe what the agent does, e.g. “Support Agent” or “Tier 1 Triage Bot”.
- Public name: visible to customers when the agent sends a message, e.g. “Plainey” or “Acme Support”.
Create an API key
From the machine user’s page, click + Add API Key and pick the permissions your agent needs.Common permissions for an agent that reads threads and replies to customers:
thread:read: read threads and timelinesthread:reply: send replies viareplyToThreadgeneratedReply:create: add suggested replies for a teammate to reviewthread:assignandthread:unassign: for handoffs between the agent and humanscustomer:read: look up customer context before replying
Use the API key
Why use a machine user
Machine users give you a number of benefits:- A clear author for every message. Customers and teammates can tell at a glance which messages came from the agent.
- Independent permissions. You can scope the agent’s API key narrowly without touching what your team can do.
- Easy rotation. You can issue and revoke API keys for the machine user without disrupting access as machine users can have more than one API key.
- Per-agent assignment. Threads can be assigned to a machine user directly. See routing.

