Microsoft Teams
Arcade Optimized
Arcade.dev LLM tools for Microsoft Teams
38tools
Microsoft Teams Toolkit
Arcade's Microsoft Teams toolkit lets LLM agents interact with Teams chats, channels, meetings, and users via the Microsoft Graph API, acting on behalf of the signed-in user.
Capabilities
- Messaging — Send, edit, soft-delete, and react to messages in 1:1 chats, group chats, meeting chats, and channels; reply to channel messages with full thread support; quote-reply in non-channel chats where native threading is unsupported.
- Chat & channel management — Create chats (with automatic deduplication for 1:1), update group chat rosters, list and search chats, retrieve or search channels within a team.
- Teams & member discovery — List teams the user belongs to, search across the org by name prefix, list or search team members (up to 999 per Graph API limit), resolve users by name or ID within the tenant or from interaction history.
- Meeting lifecycle — Schedule Teams meetings with calendar invites and join links, list meetings by date range, cancel meetings (organizer only), retrieve meeting details.
- Transcripts — List generated transcripts for a meeting, fetch transcript content with speaker attribution (falls back to unattributed text automatically).
- Search — Full-text search across messages (eventual consistency; recent messages may lag), people search across 365 interaction history (falls back to tenant user search when relevance graph omits a known contact), and user/team/channel search.
OAuth
This toolkit uses OAuth 2.0 via the Microsoft provider. See the Arcade Microsoft auth provider docs for setup details.
Available tools(38)
38 of 38 tools
Operations
Behavior
| Tool name | Description | Secrets | |
|---|---|---|---|
Cancel a Microsoft Teams meeting the signed-in user organizes, notifying attendees.
Only the meeting's organizer can cancel it; cancelling a meeting organized by someone else
fails. | |||
Create a Microsoft Teams chat.
For a 1:1 chat (exactly one other member besides the caller), the MS Graph API deduplicates
reliably: if a one-on-one chat already exists with that member, this returns the existing
chat instead of creating a new one.
For a group chat (two or more other members), the MS Graph API does NOT guarantee dedup: a
new group chat may be created even when a group chat with the exact same member set already
exists. To reuse an existing group chat, look it up first (e.g. by its members or in the
user's chat list) rather than relying on this tool to return it.
Provide any combination of user_ids and/or user_names. When available, prefer providing
user_ids for optimal performance. | |||
Schedule a new Microsoft Teams online meeting on the signed-in user's calendar.
Creates a calendar event with an attached Teams meeting (join link, dial-in info) and sends
invites to any attendees provided. The response's join_url is what attendees use to join. | |||
Delete a previously sent Microsoft Teams channel message.
This soft-deletes the message: it is marked as deleted and its content is replaced with a
placeholder for other members, not permanently erased. Only the original sender's own
message can be deleted. | |||
Delete a previously sent Microsoft Teams chat message.
This soft-deletes the message: it is marked as deleted and its content is replaced with a
placeholder for other members, not permanently erased. Only the original sender's own
message can be deleted.
Provide exactly one of chat_id or user_ids/user_names. When available, prefer providing a
chat_id or user_ids for optimal performance. | |||
Retrieve the replies to a Microsoft Teams channel message. | |||
Retrieve the messages in a Microsoft Teams channel, newest first.
The channel-messages endpoint rejects server-side date filtering outright, so start_datetime
and end_datetime are applied client-side over the most recent messages this tool walks from
upstream: it may miss older matches beyond that window, and the response's scanned_count
field reports how many messages were inspected before filtering. | |||
Retrieve metadata about a Microsoft Teams channel and its members.
Provide exactly one of channel_id, channel_name, or channel_id_or_name. When available,
prefer providing a channel_id for optimal performance.
The Microsoft Graph API returns only up to the first 999 members in the channel.
This tool does not return messages exchanged in the channel.
It is not necessary to list the user's teams before calling this tool. If the user does not
provide a team_id_or_name, the tool will try to find a unique team to use. | |||
Retrieve a Microsoft Teams chat message.
Provide exactly one of chat_id or user_ids/user_names. When available, prefer providing a
chat_id or user_ids for optimal performance.
When user_names is provided instead of chat_id, this tool also searches the caller's People
(contacts and interaction history) to resolve the chat. | |||
Retrieve messages from a Microsoft Teams chat (individual, group, or meeting).
Provide one of chat_id OR any combination of user_ids and/or user_names. When available, prefer
providing a chat_id or user_ids for optimal performance.
If the user provides user name(s), DO NOT SEARCH FOR THE USERS OR PEOPLE first. Instead,
provide the user name(s) directly to this tool through the `user_names` argument. It is not
necessary to provide the currently signed in user's name/id, so do not look up the signed-in
user's profile before calling this tool.
Messages will be sorted in descending order by the messages' `created_datetime` field.
Date filters use creation time in UTC; editing a message does not change its selected
period. Messages without creation timestamps are excluded when a date bound is provided.
Only ordinary messages are returned; system events and unknown or missing message types
are excluded. The tool scans subsequent pages until the message limit is reached or history
ends. If the scan exceeds the pagination timeout, it raises an error rather than returning
incomplete results. Echo pagination.next_page_token to continue with older messages;
For continuation calls, use the previous response's chat.id as chat_id and omit user_ids
and user_names; participant lookup can select another chat as activity changes.
pagination.is_last_page is true only when the selected history is exhausted. Graph does
not provide a snapshot: messages added or removed during pagination can shift results. | |||
Retrieve metadata about a Microsoft Teams chat.
Provide exactly one of chat_id or user_ids/user_names. When available, prefer providing a
chat_id or user_ids for optimal performance.
If multiple roup chats exist with those exact members, returns the most recently updated one.
Max 20 DIFFERENT users can be provided in user_ids/user_names.
This tool DOES NOT return messages in a chat.
When user_names is provided instead of chat_id, this tool also searches the caller's People
(contacts and interaction history) to resolve the chat. | |||
Retrieve a Microsoft Teams meeting scheduled on the signed-in user's calendar.
The meeting_id comes from a meeting listing, or from the id returned after scheduling a new
meeting. | |||
Fetch the text content of a Teams meeting transcript.
Prefers speaker-attributed content; when the signed-in user's role does not permit speaker
attribution, automatically falls back to unattributed text instead of failing outright. The
format field on the response states which one was returned. | |||
Get the current user's full profile (name, job title, employment, contacts, location).
Use this to fetch profile details about the signed-in user, not to confirm caller identity
or tenant context before acting. This tool is not necessary to call before calling other
tools. | |||
Retrieve metadata about a team in Microsoft Teams.
Provide one of team_id OR team_name, never both. When available, prefer providing a team_id for
optimal performance.
If team_id nor team_name are provided: 1) if the user has a single team, the tool will retrieve
it; 2) if the user has multiple teams, an error will be returned with a list of all teams to
pick from.
Retrieving a team by ID requires access under the signed-in account. A team discovered
through organization-wide search may not be accessible to that account. | |||
List the channels owned by a Microsoft Teams team (standard, private, and shared
channels it hosts). Does not include channels shared into this team by another team.
This tool does not return messages nor members in the channels. | |||
List the Microsoft Teams chats to which the current user is a member of. | |||
List Microsoft Teams online meetings on the signed-in user's calendar within a date
range, oldest first.
Only returns calendar events that are Teams online meetings; regular (non-meeting) calendar
events in the same date range are excluded. | |||
List the transcripts Microsoft Graph has generated for a Teams meeting, most recent
first.
Works for meetings the signed-in user attended without organizing them, not just ones they
organize. Returns an empty list for a meeting that has not yet occurred or has no generated
transcript, rather than an error. Requires the tenant to have transcript access enabled for
Teams; when it is not, the call fails naming the tenant-level setting an admin must enable. | |||
List the members of a team in Microsoft Teams.
Provide one of team_id OR team_name, never both. When available, prefer providing a team_id for
optimal performance.
If team_id nor team_name are provided: 1) if the user has a single team, the tool will use it;
2) if the user has multiple teams, an error will be returned with a list of all teams to pick
from.
The Microsoft Graph API returns only up to the first 999 members. | |||
List the teams the current user is associated with in Microsoft Teams. | |||
List the users in the Microsoft Teams tenant. | |||
Add or remove an emoji reaction on a Microsoft Teams channel message. | |||
Add or remove an emoji reaction on a Microsoft Teams chat message.
Provide exactly one of chat_id or user_ids/user_names. When available, prefer providing a
chat_id or user_ids for optimal performance. | |||
Send a reply to a Microsoft Teams channel message.
When available, prefer providing a channel_id for optimal performance.
It is not necessary to list the user's teams before calling this tool. If the user does not
provide a team_id_or_name, the tool will try to find a unique team to use. |
Page 1 of 2(25 of 38)
Get Building
Last updated on