Microsoft Teams
Arcade Optimized
Arcade.dev LLM tools for Microsoft Teams
38tools
Microsoft Teams Toolkit
Arcade's Microsoft Teams toolkit connects LLMs to Microsoft Teams via the Microsoft Graph API, enabling agents to read and write messages, manage chats and channels, schedule meetings, and inspect team membership on behalf of signed-in users.
Capabilities
- Messaging — Send, edit, soft-delete, and react to messages in 1:1 chats, group chats, meeting chats, and team channels; reply to channel messages (threaded) or quote-reply in chats (Graph limitation workaround).
- Chat & channel management — Create chats, update group chat rosters, list/search channels and chats, retrieve message history with client-side date filtering, paginate large result sets, and search messages across chats and channels.
- Teams & membership — List, get, and search teams (including org-wide discovery); list, search, and retrieve members of teams and channels (up to 999 members via Graph).
- Meetings — Schedule, retrieve, list, and cancel Teams online meetings; list and fetch meeting transcripts (with automatic fallback from speaker-attributed to unattributed format when permissions require).
- User & people lookup — Resolve users by ID or name within the tenant, search people from interaction history (including external tenants), and retrieve the signed-in user's full profile or caller/tenant identity context.
OAuth
This toolkit uses OAuth 2.0 delegated auth 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 | |
|---|---|---|---|
Cancels 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. | |||
Creates 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. | |||
Schedules 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. | |||
Deletes 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. | |||
Deletes 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. | |||
Retrieves the replies to a Microsoft Teams channel message. | |||
Retrieves 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. | |||
Retrieves 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. | |||
Retrieves 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. | |||
Retrieves 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. | |||
Retrieves 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. | |||
Retrieves 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. | |||
Fetches 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. | |||
Retrieves 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. | |||
Lists 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. | |||
Lists 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. | |||
Lists 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. | |||
Lists 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. | |||
Lists the teams the current user is associated with in Microsoft Teams. | |||
Lists the users in the Microsoft Teams tenant. | |||
Adds or removes an emoji reaction on a Microsoft Teams channel message. | |||
Adds or removes 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. | |||
Sends 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