Overview
Add Microsoft Teams to any ModuleX agent or workflow. Create channels, send channel and chat messages, list teams / channels / chats / messages / shifts, search messages, and retrieve the current user via the Microsoft Graph REST API (graph.microsoft.com/v1.0).
Authentication
OAuth2 Authentication
Connect with your Microsoft work or school account using OAuth 2.0. Personal accounts are not supported by Microsoft Teams APIs.Step 1
Step 3
Step 4
Required Credentials
| Field | Description | Required | Format |
|---|---|---|---|
| Client ID | Microsoft Entra Application (client) ID for the registered app. | Yes | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| Client Secret | Microsoft Entra Client Secret Value for the registered app. | Yes | - |
OAuth Configuration
- Authorization URL:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize - Token URL:
https://login.microsoftonline.com/common/oauth2/v2.0/token - Scopes:
offline_access,User.Read,Team.ReadBasic.All,Channel.ReadBasic.All,ChannelMessage.Read.All,ChannelMessage.Send,Chat.ReadWrite,ChatMessage.Send,Schedule.Read.All,Mail.Read
Available Actions
create_channel — Create a new channel in Microsoft Teams.
create_channel — Create a new channel in Microsoft Teams.
get_chat_message — Get a specific message from a chat.
get_chat_message — Get a specific message from a chat.
get_current_user — Returns the authenticated Microsoft Teams user's ID, display name, email, and principal name via Microsoft Graph. Call this first when the user says 'my channels', 'my chats', or needs identity context.
get_current_user — Returns the authenticated Microsoft Teams user's ID, display name, email, and principal name via Microsoft Graph. Call this first when the user says 'my channels', 'my chats', or needs identity context.
Response
list_channel_messages — Lists messages in a Microsoft Teams channel.
list_channel_messages — Lists messages in a Microsoft Teams channel.
list_channels — Lists all channels in a Microsoft Team.
list_channels — Lists all channels in a Microsoft Team.
list_chats — Lists all chat conversations for the authenticated user.
list_chats — Lists all chat conversations for the authenticated user.
Response
list_messages_in_chat — Get the list of messages in a chat, ordered by createdDateTime descending.
list_messages_in_chat — Get the list of messages in a chat, ordered by createdDateTime descending.
list_shifts — Get the list of shift instances for a team.
list_shifts — Get the list of shift instances for a team.
list_teams — Lists all teams the authenticated user has joined.
list_teams — Lists all teams the authenticated user has joined.
Response
search_messages — Search for email or chat messages via Microsoft Graph search. Valid entity_type values: `message` (email), `chatMessage` (Teams chat messages).
search_messages — Search for email or chat messages via Microsoft Graph search. Valid entity_type values: `message` (email), `chatMessage` (Teams chat messages).
Parameters
message for email, chatMessage for Teams chat messages.0)25)Response
send_channel_message — Send a message to a team's channel. Optionally include inline images via `hosted_contents`.
send_channel_message — Send a message to a team's channel. Optionally include inline images via `hosted_contents`.
Parameters
text, html. (Default: text)@microsoft.graph.temporaryId (string), contentBytes (base64-encoded image data), and contentType (MIME type, e.g. image/png). Reference each image in HTML message bodies using <img src="../hostedContents/1/$value">.Response
Limits & Quotas
- Microsoft Graph applies per-app, per-tenant, and per-resource throttling. Teams messaging endpoints have specific RU-based limits documented at https://learn.microsoft.com/en-us/graph/throttling. Retry on HTTP 429 honoring the
Retry-Afterheader. search_messagesreturns at most 25 results per call (upper bound enforced by the Microsoft Graph search API for this entity-type set). Use thefrom_parameter to page beyond the first window.- Dynamic team / channel / chat / message pickers are not available — pass IDs directly; use the corresponding
list_*action to enumerate IDs. - Webhook / change-notification subscriptions are not part of this integration; polling via the
list_*actions is the supported pattern. - Error model: non-2xx responses and timeouts are caught and returned as
success=Falseplus anerrorstring rather than raising. Plan for retries on the agent side based on the error text.