> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Mattermost

> Connect Mattermost to your Atako agents — 10 read and 4 write actions.

Let your agents work in your Mattermost workspace: read teams, channels, posts and users, search messages, post and reply in threads, send direct messages, create channels and add reactions.

## Connection

* **Authentication**: API key (Mattermost personal access token).
* **Required settings**:
  * **Mattermost server domain** — The domain of your Mattermost server, without https\:// nor path (e.g. chat.example.com or yourteam.cloud.mattermost.com). Mattermost must be served over HTTPS at the root of this domain.

<Note>
  Personal access tokens must first be enabled by a System Admin in System Console → Integrations → Integration Management ("Enable Personal Access Tokens"). By default only System Admins may create one: for another account, go to System Console → User Management → Users, open the account's dropdown → Manage Roles, select "Allow this account to generate personal access tokens" and Save. Then, signed in as that account: Profile → Security → Personal Access Tokens → Create Token, enter a description, Save, and copy the access token (it is shown only once). The agents act with this user's permissions and only see the teams and channels it belongs to: a dedicated non-admin account is recommended.

  See [Mattermost's documentation](https://developers.mattermost.com/integrate/reference/personal-access-token/).
</Note>

## Read actions (10)

| Action | Description |
| - | - |
| `get_channel` | Get a channel by id (name, display name, type O public / P private / D direct / G group, purpose, header). |
| `get_channel_by_name` | Find a channel of a team by its name, the handle shown in the channel URL (e.g. town-square), not its display name. include\_deleted: optional boolean to also find archived channels. |
| `get_me` | Get the Mattermost user behind the token (id, username, names, locale). Its id is the user\_id that create\_direct\_channel and add\_reaction require. |
| `get_post` | Get a single post by id (message, channel\_id, user\_id, root\_id of its thread, create\_at in Unix milliseconds). |
| `get_user_by_username` | Get a user by username (without the leading @). Returns its id, needed to open a direct message. |
| `list_channel_posts` | List posts of a channel, newest first, as \{ order: \[post ids], posts: \{ id: post } }. page (from 0) and per\_page (1-200, default 60) paginate; before / after: a post id to page around it; since: Unix time in milliseconds, returns posts modified after it and cannot be combined with page, per\_page, before or after. |
| `list_my_channels` | List the channels the token user is a member of in a team (team\_id from list\_my\_teams). include\_deleted: optional boolean to include archived channels. |
| `list_my_teams` | List the teams the token user belongs to (id, name, display\_name, type, description). A team id is needed to list, find or create channels and to search posts. Team invite codes are removed. |
| `search_posts` | Search posts in a team (read-only query sent as a POST body), results as \{ order, posts }. terms: string (required) — words to find, "from:username" and "in:channel-name" narrow it; is\_or\_search: boolean (required) — true matches any word, false all words; time\_zone\_offset: optional integer, seconds from UTC for on:/before:/after: dates; include\_deleted\_channels: optional boolean for archived channels; page / per\_page: optional integers (only honored by servers using Elasticsearch/OpenSearch). |
| `search_users` | Search users by username, full name, nickname or email (read-only query sent as a POST body). term: string (required); team\_id / in\_channel\_id: optional ids to restrict the search; allow\_inactive: optional boolean; limit: optional integer 1-100 (default 100). |

## Write actions (4)

| Action | Description |
| - | - |
| `add_reaction` | Add an emoji reaction to a post. Arguments: user\_id: the token user's own id string (from get\_me — Mattermost refuses any other user); post\_id: post id string; emoji\_name: string, the emoji name without colons (e.g. "thumbsup", "white\_check\_mark"). |
| `create_channel` | Create a channel in a team. Arguments: team\_id: team id string (from list\_my\_teams); name: string, the URL handle, 2-64 lowercase letters, digits, "-" or "\_", starting and ending with a letter or digit; display\_name: string shown in the UI (1-64 characters); type: "O" (public) or "P" (private); purpose: optional plain-text string (max 250); header: optional Markdown string (max 1024). The token user needs the create\_public\_channel or create\_private\_channel permission. |
| `create_direct_channel` | Open (or get, if it already exists) the direct message channel between the token user and another user, then post in it with create\_post. Arguments: user\_ids: array of exactly 2 user id strings — the token user's own id (from get\_me) and the other user's id (from get\_user\_by\_username or search\_users). Returns the channel; its id is the channel\_id for create\_post. |
| `create_post` | Post a message in a channel, or reply in a thread. Arguments: channel\_id: channel id string (from list\_my\_channels, get\_channel\_by\_name or create\_direct\_channel); message: Markdown string (1-16383 characters); root\_id: optional post id string of the thread's first post to reply in that thread (for a reply, use the root\_id of the post you answer if it has one, else its id). The token user needs the create\_post permission in the channel. |

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](/integrations/permissions) for the grant model and [Security](/integrations/security) for how credentials are protected.

***

*Last reviewed against the provider API: September 2026.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.