{"openapi":"3.1.0","info":{"title":"Mattermost System Admin (BYOK) API","version":"0.1.0","description":"Mattermost System Admin (BYOK) lets an AI assistant read your own Mattermost System Admin data through the Mattermost System Admin API with a key you supply (Mattermost personal access token (of a system admin for most of these calls)). Read-only: 10 tools (list_bots, get_bot, list_roles, get_role_by_name, list_permission_schemes, get_permission_scheme, list_scheme_teams, list_jobs,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-mattermost-system-admin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mattermost-system-admin/docs"},"termsOfService":"https://connectorbay.com/byok-mattermost-system-admin/terms"},"servers":[{"url":"https://byok-mattermost-system-admin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mattermost-system-admin/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_bots":{"post":{"operationId":"list_bots","summary":"List bot accounts with username, display name, description, owner and creation, update and deletion times. Use for \"Whic","description":"List bot accounts with username, display name, description, owner and creation, update and deletion times. Use for \"Which bots exist in our Mattermost workspace and who owns them\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":60,"description":"How many bots per page (1 to 200, default 60).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"include_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted bots.","title":"Include Deleted"},"only_orphaned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list only bots whose owner was deactivated.","title":"Only Orphaned"}},"required":["workspace"],"title":"list_botsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_bot":{"post":{"operationId":"get_bot","summary":"Get one bot account by its user ID. Use for \"What is the description of this Mattermost bot\".","description":"Get one bot account by its user ID. Use for \"What is the description of this Mattermost bot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"bot_user_id":{"description":"The bot's user ID (26 characters).","maxLength":26,"title":"Bot User Id","type":"string"},"include_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also find a deleted bot.","title":"Include Deleted"}},"required":["workspace","bot_user_id"],"title":"get_botArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_roles":{"post":{"operationId":"list_roles","summary":"List all roles with their permission lists and whether each role is managed by a permission scheme. Use for \"What permis","description":"List all roles with their permission lists and whether each role is managed by a permission scheme. Use for \"What permissions does each Mattermost role have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"}},"required":["workspace"],"title":"list_rolesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_role_by_name":{"post":{"operationId":"get_role_by_name","summary":"Get one role by name (for example system_admin, team_user or channel_admin) with its permissions. Use for \"What can the ","description":"Get one role by name (for example system_admin, team_user or channel_admin) with its permissions. Use for \"What can the team_admin role do in Mattermost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"role_name":{"description":"Role name such as system_admin, system_user, team_admin, team_user, channel_admin or channel_user.","maxLength":64,"title":"Role Name","type":"string"}},"required":["workspace","role_name"],"title":"get_role_by_nameArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_permission_schemes":{"post":{"operationId":"list_permission_schemes","summary":"List permission schemes (team or channel scope) with the roles each scheme assigns by default. Use for \"Which permission","description":"List permission schemes (team or channel scope) with the roles each scheme assigns by default. Use for \"Which permission schemes are defined in our Mattermost workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"scope":{"anyOf":[{"enum":["team","channel"],"type":"string"},{"type":"null"}],"default":null,"description":"Only schemes of this scope: team or channel.","title":"Scope"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":60,"description":"How many schemes per page (1 to 200, default 60).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"}},"required":["workspace"],"title":"list_permission_schemesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_permission_scheme":{"post":{"operationId":"get_permission_scheme","summary":"Get one permission scheme with its scope and default roles. Use for \"Which roles does Mattermost permission scheme X ass","description":"Get one permission scheme with its scope and default roles. Use for \"Which roles does Mattermost permission scheme X assign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"scheme_id":{"description":"The scheme ID (26 characters) from the scheme list.","maxLength":26,"title":"Scheme Id","type":"string"}},"required":["workspace","scheme_id"],"title":"get_permission_schemeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_scheme_teams":{"post":{"operationId":"list_scheme_teams","summary":"List the teams that use a permission scheme. Use for \"Which Mattermost teams use this permission scheme\".","description":"List the teams that use a permission scheme. Use for \"Which Mattermost teams use this permission scheme\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"scheme_id":{"description":"The scheme ID (26 characters) from the scheme list.","maxLength":26,"title":"Scheme Id","type":"string"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":60,"description":"How many teams per page (1 to 200, default 60).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"}},"required":["workspace","scheme_id"],"title":"list_scheme_teamsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_jobs":{"post":{"operationId":"list_jobs","summary":"List background jobs (data retention, exports, LDAP sync and others) with type, status, progress and times; filter by ty","description":"List background jobs (data retention, exports, LDAP sync and others) with type, status, progress and times; filter by type or status. Use for \"Did the last Mattermost data retention job succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"How many jobs per page (1 to 200, default 5).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"job_type":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs of this type, for example data_retention or ldap_sync.","title":"Job Type"},"status":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs with this status, for example pending, in_progress, success or error.","title":"Status"}},"required":["workspace"],"title":"list_jobsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_plugin_statuses":{"post":{"operationId":"list_plugin_statuses","summary":"List installed plugins with their state (not installed, starting, running, failed to start, stopping), name, description","description":"List installed plugins with their state (not installed, starting, running, failed to start, stopping), name, description and version. Use for \"Which Mattermost plugins are running\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"}},"required":["workspace"],"title":"list_plugin_statusesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_latest_version":{"post":{"operationId":"get_latest_version","summary":"Get the latest public Mattermost server release: tag, name, publish date and release page. Use for \"What is the newest M","description":"Get the latest public Mattermost server release: tag, name, publish date and release page. Use for \"What is the newest Mattermost server release\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Mattermost Cloud workspace subdomain: the part before .cloud.mattermost.com, for example 'example'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"}},"required":["workspace"],"title":"get_latest_versionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}