Can an AI agent use Mattermost?

As of 6 Oct 2026, an AI agent gets into Mattermost on its own and does 62% of the core work.

Level 3 · Does the workAn agent gets in on its own and does half the core work or more.
  • Find: Some docs for agents: An OpenAPI and an MCP server.
  • Access: Sign-up in a browser.
  • Use: 62% of the work.
  • Pay: Needs a person to buy: A sales call.
  • Leave: Nothing to cancel: Can't delete its account.

To reach L4 · Runs on its own: do 80% of the core work (now 62%).

What the levels mean

Driven 6 Oct 20261 drive so farRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverGet in on their own.
  • Signed agentsNot checked: its robots.txt asks crawlers to stay off the sign-up page.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Mattermost.

On its own

  • Send messages, replies, files and links in chat channels automatically
  • Create and organize channels
  • Search messages and files
2 more
  • Invite guests and set up automated webhooks
  • Turn on two-factor login and customize branding, all without a person

What it can't, and why

  • Sign up for the service without using a web browserthere is no sign-up option outside the website forms
  • Use the built-in AI chatbotit needs an AI service key the trial doesn't provide
  • Buy a paid subscription on its ownthe only path shown is 'Contact Sales'
1 more
  • Delete the trial workspace or accountno delete control or API was found, and the docs name none
On its own, in a browser

Can an AI agent sign up for Mattermost on its own?

Yes, in a browser, without a human. Customer Portal sign-up form (name, email, organization, password), no CAPTCHA; Cloud workspace created in the portal UI (My Workspace > create a new workspace), ready in about 4 minutes, 30-day Cloud Enterprise trial, no card. No documented sign-up API.

Official server · no call worked

Does Mattermost have an MCP server, and can an agent connect to it?

Yes. Mattermost has an official MCP server.

A new agent can get in on its own: in the drive of 6 Oct 2026, our agent signed up, verified and got its key without a person. Through the MCP server, 0 of our agent's 1 attempt worked.

What the drive found

APIOpenAPIMCP · officialCLISDK–llms.txtWebhooks–Sandbox
On its own, over the API

How does an AI agent get a Mattermost API key?

In the drive of 6 Oct 2026, our agent got its Mattermost API key over the API, without a browser or a person. POST /api/v4/users/login with email+password gave a session token; POST /users/{id}/tokens created a personal access token

Blocked

Can an AI agent delete its Mattermost account?

Not on its own: blocked. Data, guests and channel deleted via the API (permanent delete after enabling the API-deletion settings); no documented API or UI control to delete the Cloud workspace or the Customer Portal account, apparently only by support request (not filed)

Needs a person to buy

Can an AI agent pay for Mattermost?

A person has to buy: a sales call.

Ways to pay found: Contact sales.

No card needed to start.

What would let agents pay on their own
  1. Accept x402 or MPP on your API. Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card.Step-by-step guide
  2. List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).Step-by-step guide

No 402/x402/MPP/UCP, not in mpp.dev or the x402 Bazaar. Pricing: Contact Sales / Get Pricing / Request Quote; workspace Subscription page: 'Contact Sales to continue after the trial ends'. Documented cloud API has no purchase endpoint.

From the drive of 6 Oct 2026.

For the team behind Mattermost.

Where agents stop in Mattermost today, and the fixes that get them further, highest impact first.

Wall at pay

The fixes, highest impact first

  1. Offer a headless Cloud sign-up and workspace APIStep-by-step guide
  2. Add self-serve workspace and account deletion
  3. Make the MCP endpoint reachable and discoverable
3 more fixes
  1. Let agents buy Cloud Professional self-serve Step-by-step guide
  2. Reject changes to environment-locked settings
  3. Publish llms.txt, Markdown docs and a bundled OpenAPI Step-by-step guide
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L3 · Does the work badge

Behind the level.

The part scores and the measures behind them.

Part scores and the measures

Part scores

Agent-ready setup

  • llms.txt: not found
  • OpenAPI: found
  • MCP server: found
  • CLI: found

Not measured in this drive: Holds up, Docs match (part of an Audit).

The measures

  1. Work done62
  2. Reliability100
  3. Crash test–

For agents and builders.

The drive as data, every checkpoint and all 55 attempts.

How an agent connects · 5 tips
  • After sign-up, POST /api/v4/users/login then POST /users/{id}/tokens; the personal access token covers the whole v4 API
  • Check GET /config/environment before trusting a 200 from /config/patch on Cloud
  • POST /groups takes a flat body: name, display_name, source 'custom', allow_reference true, user_ids
  • Permanent deletes need EnableAPIUserDeletion / EnableAPIChannelDeletion first
  • Workspace creation takes about 4 minutes; poll the workspace URL /api/v4/system/ping
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessdocs.mattermost.com/api: 549 endpoints generated from the OpenAPI fragments (openapi 3.0.0); auth docs cover login and personal access tokens
  2. Sign upIn a browserCustomer Portal sign-up form (name, email, organization, password), no CAPTCHA; Cloud workspace created in the portal UI (My Workspace > create a new workspace), ready in about 4 minutes, 30-day Cloud Enterprise trial, no card. No documented sign-up API.
  3. VerifyIn a browser6-digit email code arrived within a minute; read headless from the inbox, typed into the portal page
  4. KeyHeadlessPOST /api/v4/users/login with email+password gave a session token; POST /users/{id}/tokens created a personal access token
  5. First callHeadlessGET /api/v4/users/me with the token: 200
  6. First actionHeadlessPOST /api/v4/channels created a private channel, read back by name
  7. PayBlockedNo 402/x402/MPP/UCP, not in mpp.dev or the x402 Bazaar. Pricing: Contact Sales / Get Pricing / Request Quote; workspace Subscription page: 'Contact Sales to continue after the trial ends'. Documented cloud API has no purchase endpoint.
  8. CancelNot neededNothing to cancel: our agent started no paid plan.
  9. DeleteBlockedData, guests and channel deleted via the API (permanent delete after enabling the API-deletion settings); no documented API or UI control to delete the Cloud workspace or the Customer Portal account, apparently only by support request (not filed)
The attempt log · 55 attempts
Attempt log
CapabilityRouteResultEvidence
llms.txt / agent cards: probe /llms.txt (mattermost.com, docs., developers.), /.well-known/ai-catalog.json, agent-card.json, agent.json, mcp/server-card.jsonnonefailed ✓all 404 text/html
robots/aipref: robots.txt on mattermost.com, docs., developers.nonedone ✓mattermost.com: 'User-agent: * Allow: /'; docs: Allow /; developers: Disallow utm paths only. No Content-Usage or Content-signal lines
markdown negotiation: GET docs.mattermost.com with Accept: text/markdown; .md URLsnonefailed ✓content-type text/html, no Vary: Accept (server AmazonS3); /api.md and /api/introduction.md 404
OpenAPI: find OpenAPI specnonedone ✓docs.mattermost.com/api: '549 Endpoints', generated from mattermost/mattermost/api/v4/source (56 YAML fragments); introduction.yaml declares 'openapi: 3.0.0'
MCP server: find MCP servernonedone ✓agents-admin-guide: 'Enable Mattermost MCP Server (HTTP)'; endpoint https://your-mattermost-server/plugins/mattermost-ai/mcp-server/mcp; 'Authentication: OAuth 2.0 ... manual and automatic client registration'
pay discovery: /.well-known/ucp, oauth-protected-resource, oauth-authorization-server, /auth.md, /SKILL.md on mattermost.com; x402./mpp./agents. subdomainsnonefailed ✓well-knowns and md files 404 text/html; x402/mpp/agents subdomains do not resolve (curl 6)
find docs: find API reference and auth docsapidone ✓docs.mattermost.com/api: '549 Endpoints', auth page 'Log in flows, personal access tokens, session tokens, MFA, SSO'
sign up: create a Mattermost account with our agentbrowserdone ✓customers.mattermost.com/signup form (first/last name, email, organization, password, privacy checkbox) -> /verify-email; no CAPTCHA seen. Marketing form at mattermost.com/sign-up ('Start your 1-hour trial') needs Country/Region from a fixed list, company size, use case, deploy timeline - not used
verify email: enter emailed 6-digit codebrowserdone ✓mail 'Verification Code - •••• - Mattermost Customer Portal' from no-reply@mattermost.com arrived within ~1 min; code typed in browser -> /console/subscriptions 'No Licenses'
first API call: POST /api/v4/users/login with email+passwordapidone ✓HTTP 200, Token header returned, user roles 'system_user system_admin', x-version-id 11.11.1
get API credentials: create a personal access token via POST /users/{id}/tokens with the session tokenapidone ✓HTTP 200 token id za6ozkswx3dgiyp3a5x798p9na; GET /users/me with the PAT -> 200 an inbox; GET /users/{id}/tokens lists it
Create a public or private channel: create private channel agentdrives-testapidone ✓POST /channels 201 id 9dxzocarwbb6fnqa5gdgh1uqto type P; GET /teams/{team}/channels/name/agentdrives-test 200 same id
first real action: create a private channel via APIapidone ✓POST /api/v4/channels -> 201 id 9dxzocarwbb6fnqa5gdgh1uqto, read back by name
Send a message in a channel or DM: post a message in our private channelapidone ✓POST /posts 200 id gy45zbnnrbd3tnryimuq79wtza; GET /channels/{id}/posts order contains it
Reply in a thread: reply to the post with root_idapidone ✓POST /posts root_id -> 201 id wmfi8m8aabgn9g7mfuj5q66deo; GET /posts/{id}/thread 200 includes it
Share a file or link in a conversation: upload a text file and post it with a linkapidone ✓POST /files 201 id xk1z1d3ac7nqfxqognd1rk61jc; GET /files/{id}/info 200 name agentdrives.txt; POST /posts with file_ids 201 id zsc7o9iaiib83cs1w5rwg6k6sa
React to a message with emoji: add thumbsup reactionapidone ✓POST /reactions 200; GET /posts/{id}/reactions 200 shows thumbsup
Pin a message to a channel: pin the root postapidone ✓POST /posts/{id}/pin 200; GET /channels/{id}/pinned 200 contains post
Set a message priority: post with metadata.priority=importantapidone ✓POST /posts 201 id 6oeooxqrhbnctxcswwdhrb6poo; GET /posts/{id} metadata.priority.priority='important'
Search messages and files: search posts for 'AgentDrives' and files for 'agentdrives'apidone ✓POST /teams/{id}/posts/search 200 returns post gy45zbnnrbd3tnryimuq79wtza; POST /teams/{id}/files/search with JSON -> 200 order ['xk1z1d3ac7nqfxqognd1rk61jc']; first try with multipart form -> 400 'api.post.search_files.invalid_body.app_error: Unable to parse the request body.'
Tag topics with hashtags: post with #agentdrives then search the hashtagapidone ✓POST /teams/{id}/posts/search terms '#agentdrives' 200 returns gy45zbnnrbd3tnryimuq79wtza; post.hashtags set
Organize channels into custom categories: create custom sidebar category 'AgentDrives' holding our channelapidone ✓POST /users/{uid}/teams/{tid}/channels/categories 200 id hz4fdqhedjyxtbhmaqqwt4roeh; GET categories shows it with channel 9dxzocarwbb6fnqa5gdgh1uqto
Automate posts via incoming/outgoing webhooks and slash commands: create incoming webhook via API and post through itapidone ✓POST /hooks/incoming 201 id [redacted]; POST /hooks/{id} -> 200; GET /channels/{id}/posts shows 'posted via incoming webhook'
Call Mattermost over the REST API v4: authenticated call with PATapidone ✓GET /api/v4/users/me with PAT -> 200 JSON; dozens of further v4 calls in this drive
MCP server/discover: POST server/discover (2026-07-28 headers) to [redacted]/plugins/mattermost-ai/mcp-server/mcp, without and with PATmcpfailed ✓no auth: HTTP 401, empty body, no WWW-Authenticate header; with PAT: HTTP 404 '404 page not found' (HTTP MCP endpoint off by default). /.well-known/oauth-protected-resource returns 200 text/html (SPA, not PRM). /.well-known/oauth-authorization-server JSON: grant_types authorization_code+refresh_token, S256, no registration_endpoint, no client_id_metadata_document_supported, no device endpoint
Chat with an interactive AI bot in a channel or DM: use Mattermost Agents on the trial workspaceapiblocked ✓GET /api/v4/bots lists only 'playbooks' and 'calls'; System Console > Plugins > Agents (mattermost-ai v2.6.1): 'No AI services added yet. To get started with Agents, add an AI service'
Connect a bring-your-own or multi-LLM backend: use Mattermost Agents on the trial workspaceapiblocked ✓GET /api/v4/bots lists only 'playbooks' and 'calls'; System Console > Plugins > Agents (mattermost-ai v2.6.1): 'No AI services added yet. To get started with Agents, add an AI service'
Summarize a thread or channel with AI: use Mattermost Agents on the trial workspaceapiblocked ✓GET /api/v4/bots lists only 'playbooks' and 'calls'; System Console > Plugins > Agents (mattermost-ai v2.6.1): 'No AI services added yet. To get started with Agents, add an AI service'
Generate a real-time channel briefing from calls/chat: use Mattermost Agents on the trial workspaceapiblocked ✓GET /api/v4/bots lists only 'playbooks' and 'calls'; System Console > Plugins > Agents (mattermost-ai v2.6.1): 'No AI services added yet. To get started with Agents, add an AI service'
Run a group call with screen share: start a call in our channel from the web UIbrowserpartial ✓clicked 'Start call' in channel header: UI shows 'Call started', 'Leave'; GET /channels/{id}/posts shows a custom_calls post (start_at set, no end_at). The call client then reported 'Unable to find a valid audio input device.'
Start a 1:1 audio call with screen share: 1:1 call with screen sharebrowserfailed ✓same Calls client as call can be started, but audio needs an input device ('Unable to find a valid audio input device.') and screen share is a media capture; no API surface in the map
Invite a guest into a specific channel: invite our second inbox as guest to our private channel and accept the inviteapidone ✓POST /teams/{id}/invite-guests/email 200 {status: OK}; invite mail arrived at our own second inbox; POST /users?t=•••• 201 roles system_guest; GET /users/{id} roles system_guest; GET /channels/{id}/members/{guest} 200
Create a custom user group for mentions: create custom group with our user and mention itapidone ✓first POST /groups with a nested {group:{...},user_ids} body -> 400 app.group.crud_permission 'Unable to perform operation for that source type.'; flat body per docs -> 201 id z3pd1k45fbds3mr954sowgwd9y; GET /groups/{id} 200 name agentdrivesgroup; GET members 200; post '@agentdrivesgroup ...' 201
Broadcast a system-wide announcement banner: enable a banner via config patchapifailed ✓PUT /config/patch {AnnouncementSettings:{EnableBanner:true,BannerText:...}} -> 200; GET /config shows BannerText saved but EnableBanner still false; GET /config/client EnableBanner 'false'
Customize branding, theme, and emojis: set site name via config patchapidone ✓PUT /config/patch TeamSettings.SiteName -> 200; GET /config/client SiteName='AgentDrives Test'
Switch app interface language: set user locale to Germanapidone ✓PUT /users/{id}/patch locale=de -> 200; GET /users/me locale 'de'
Broadcast a system-wide announcement banner: retry: PUT /config with EnableBanner=true; check /config/environmentapifailed ✓PUT /config -> 200 but EnableBanner still false; GET /config/environment lists AnnouncementSettings.EnableBanner: true (set by environment, so locked on this Cloud workspace)
Enable multifactor authentication for an account: enable MFA server-wide, generate TOTP secret, activate with a computed codeapidone ✓first POST /users/{id}/mfa/generate -> 501 'Multi-factor authentication has been disabled on this server.'; PUT /config/patch EnableMultifactorAuthentication=true 200; generate 200 secret; PUT /users/{id}/mfa {activate:true, code:••••} 200 OK; GET /users/me mfa_active true
Install a plugin to extend functionality: install GitHub plugin from the marketplace and enable itapidone ✓POST /plugins/marketplace {id:github} 201; POST /plugins/github/enable 200; GET /plugins/webapp lists 'github'; GET /plugins/statuses state 2 (running)
Connect DevOps tools (Jira, GitHub, GitLab, Zoom): connect GitHub to the channelapiblocked ✓GitHub plugin installed and running; connecting it needs a GitHub OAuth app and a GitHub account to link, which the drive does not have
Define custom profile attributes for users: create a text attribute and set our valueapidone ✓first POST /custom_profile_attributes/fields name 'AgentDrives role' -> 422 'Invalid CPA field name ... must match ^[A-Za-z_][A-Za-z0-9_]*$'; retry 'agentdrives_role' -> 201 id mqim9du6ifghbymm3xpyj9ogfc; PATCH values 200; GET /users/{id}/custom_profile_attributes 200 -> 'test driver'
Log in via single sign-on (SAML/OIDC/OAuth2): Log in via single sign-on (SAML/OIDC/OAuth2)apiblockednot attempted end to end: SSO needs an identity provider (SAML/OIDC app) that the drive does not have
Sync users and groups from AD/LDAP: Sync users and groups from AD/LDAPapiblockedPOST /ldap/sync -> 200 {status: OK} but GET /jobs/type/ldap_sync returns []; no AD/LDAP server to sync from
Restrict channel access with attribute-based access control (ABAC): Restrict channel access with attribute-based access control (ABAC)apifailedPOST /access_control_policies/cel/check with a CEL expression on our new attribute -> 500 app.pap.check_expression.app_error 'Could not check expression.'
Lock down a channel to admin-only membership changes: Lock down a channel to admin-only membership changesapiblockedgroup_constrained channels need LDAP/SAML-synced groups; the workspace has none
Deploy in a high-availability cluster: Deploy in a high-availability clusternoneskippedCloud workspace: GET /config/environment shows ClusterSettings set by environment (managed by Mattermost); HA is a self-hosted deployment concern
Enable Elasticsearch-backed enterprise search beyond 3M posts: Enable Elasticsearch-backed enterprise search beyond 3M postsapifailedPOST /elasticsearch/test -> 403 HTML page with meta refresh to customers.mattermost.com/cloud/inaccessible
Monitor system performance via Grafana/Prometheus metrics: Monitor system performance via Grafana/Prometheus metricsapifailedGET https://<workspace>/metrics -> 200 text/html (web app shell, not Prometheus); MetricsSettings set by environment on Cloud
Deploy to Kubernetes via the Mattermost operator: Deploy to Kubernetes via the Mattermost operatornoneskippedself-hosted deployment; no Kubernetes or Docker in the drive sandbox
Grant instant guest access via a magic link: enable guest magic link, invite our third inbox with guest_magic_link=true, log in passwordlessapidone ✓PUT /config/patch GuestAccountsSettings.EnableGuestMagicLink=true 200; POST /teams/{id}/invite-guests/email?guest_magic_link=true 200; mail link -> /landing#/login/one_time_link?t=••••; POST /users/login {magic_link_token: ••••} 200 user an inbox roles system_guest; GET /channels/{id}/members/{guest} with the guest session 200
buy the product: find an agent-native or self-serve way to buy a paid planapiblocked ✓No 402 anywhere: unauthenticated /api/v4/users/me and /cloud/products -> 401 application/json; x402./mpp./agents.mattermost.com do not resolve; not in mpp.dev/api/services or the CDP x402 Bazaar; no x402/MPP/ACP/UCP text on pricing or API docs. Pricing page: Professional 'Contact Sales', Enterprise 'Get Pricing', Enterprise Advanced 'Request Quote'. Workspace System Console > Subscription: 'Your free trial will expire in 30 days. Contact Sales to continue after the trial ends.' Documented cloud API (cloud.yaml) has products/subscription/invoices reads but no purchase endpoint. GET /cloud/products lists Cloud Professional $10 per_seat month, Cloud Enterprise 'sales_serve'.
cancel plan: cancel the trialnonedone ✓GET /cloud/subscription: status 'trialing', is_free_trial 'true', no payment method (GET /cloud/customer payment_method type ''), trial_end_at 2026-11-06; subscription page: 'Contact Sales to continue after the trial ends'
delete account and data: delete our data, users and the Cloud workspace and portal accountapipartial ✓Data: DELETE /hooks/incoming, /groups, /custom_profile_attributes/fields, /plugins/github, sidebar category, posts -> 200; after PUT /config/patch EnableAPIUserDeletion+EnableAPIChannelDeletion, DELETE /users/{guest}?permanent=true x2 and DELETE /channels/{id}?permanent=true -> 200, read back 404. Workspace: no delete control in System Console > Subscription, no endpoint in the documented cloud API (cloud.yaml); docs page cloud-billing-account-settings mentions no deletion. Customer Portal profile page has only Update/Cancel, no account deletion.
create Cloud workspace: create a Cloud workspace from the Customer Portalbrowserdone ✓customers.mattermost.com/cloud/workspace-name: 'Create your workspace' -> 'Create my workspace' -> /cloud/preparing-workspace 'Spinning up a dedicated Mattermost server… Hold on for about one minute.' -> after ~4 min 'Your workspace is ready!' -> agentdrives-test-099.cloud.mattermost.com, banner 'Your trial has started! There are 30 days left'; no card asked
CLI and SDK: find official CLI and SDKsnonedone ✓docs.mattermost.com/administration-guide/manage/mmctl-command-line-tool 200, documents 'mmctl post create'; api/v4/source/introduction.yaml: 'Official JavaScript and Golang drivers'

Also in Team chat.