atmon docs

REFERENCE/TOOLKITS/MICROSOFT_TEAMS.MD

Microsoft Teams

Chat and meetings. Send channel and chat messages, work with teams and their membership, and schedule online meetings.

PropertyValue
Slugmicrosoft_teams
Definition version0.1.0
Base URLhttps://graph.microsoft.com/v1.0
Auth schemesoauth2
Action tools38
By class19 read, 12 write, 7 destructive
Triggers0
Provider rate limitnot declared, so outbound calls are unpaced

Measured routing accuracy

59 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 38 cases written by hand and 18 cases from the paraphrase pass, plus 3 context cases whose intent names no app and is decided by the session. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-139/5966.1%
top-857/5996.6%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

oauth2

PropertyValue
Authorization URLhttps://login.microsoftonline.com/common/oauth2/v2.0/authorize
Token URLhttps://login.microsoftonline.com/common/oauth2/v2.0/token
Default scopesChat.ReadWrite, ChannelMessage.Send, Team.ReadBasic.All, offline_access
Refresh tokensyes, the refresh daemon renews ahead of expiry

Tools

38 action tools. The catalog-wide slug is microsoft_teams.<tool>, which is what search_tools returns and call_tool takes.

microsoft_teams.list_chats

List the connected account's Microsoft Teams chats: 1:1 conversations, group chats, and meeting chats. Use to browse recent chats or find a chat id by its topic before sending a message. For a team's channels instead of chats, use list_channels.

Class read (reads only). Scopes Chat.Read. Calls GET /me/chats.

Arguments:

ArgumentTypeRequiredNotes
filterstringnoRaw OData $filter expression, e.g. "chatType eq 'group'".
topintegernoPage size, default 20.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
@odata.nextLinkstring
valuearray of object
value[].chatTypestring
value[].createdDateTimestring
value[].idstring
value[].lastUpdatedDateTimestring
value[].topicstring

Also retrieved by: "show me my recent conversations in Microsoft Teams", "what dms do I have open in Teams", "pull up who I've been talking to on Teams lately", "browse my Teams direct messages", "see all my Teams one on ones and group threads".

microsoft_teams.get_chat

Get one Microsoft Teams chat's details by chat id: its topic, type (one-on-one, group, or meeting), and when it was created. Use after list_chats to confirm which chat you have, or before send_chat_message when the chat id is already known.

Class read (reads only). Scopes Chat.Read. Calls GET /chats/{{params.chat_id}}.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id from list_chats.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
chatTypestring
createdDateTimestring
idstring
topicstring
webUrlstring

Also retrieved by: "what is this Teams thread actually about", "who's in this particular Teams conversation", "pull up the details on that Teams dm", "check when this Microsoft Teams conversation started".

microsoft_teams.create_chat

Start a new Microsoft Teams chat: a 1:1 direct message or a group chat with several people. Use when the user wants to message, start a conversation with, or set up a group chat with specific people who do not already share a chat. Returns the chat id to pass to send_chat_message. To message inside a team channel instead, use send_channel_message.

Class write (writes, no confirmation needed). Scopes Chat.ReadWrite. Calls POST /chats.

Arguments:

ArgumentTypeRequiredNotes
chat_typestring, one of oneOnOne, groupyes"oneOnOne" for two people, "group" for three or more.
membersarray of objectyesChat members in Graph's conversationMember shape, e.g. [{"@odata.type": "#microsoft.graph.aadUserConversationMember", "roles": ["owner"], "user@odata.bind": "https://graph.microsoft.com/v1.0/users('priya@acme.com')"}]. Every chat, including a 1:1, must include the connected account itself as a member.
topicstringnoGroup chat name. Ignored for oneOnOne; required for group.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
chatTypestring
idstring
webUrlstring

Also retrieved by: "start a new Teams conversation with a coworker", "kick off a Microsoft Teams group thread with a few people", "get a Teams dm going with someone", "set up a side conversation in Teams outside any team", "open a direct line with the design lead on Microsoft Teams".

microsoft_teams.send_chat_message

Send a message in a Microsoft Teams chat. Use when the user wants to message, tell, or reply to a person or group in Teams chat, not a channel. Content can be plain text or simple HTML. For a channel instead of a chat, use send_channel_message.

Class write (writes, no confirmation needed). Scopes ChatMessage.Send. Calls POST /chats/{{params.chat_id}}/messages.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id from list_chats or create_chat.
contentstringyesMessage text or HTML.
content_typestring, one of text, htmlnoFormat of content. Default text.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
bodyobject
body.contentstring
body.contentTypestring
createdDateTimestring
idstring

Also retrieved by: "ping someone directly in Microsoft Teams, not a channel", "drop a quick note to a coworker on Teams", "reply to that person in our private Teams thread", "let them know one on one over Microsoft Teams", "shoot someone a message on Teams".

microsoft_teams.list_chat_messages

Fetch recent messages from a Microsoft Teams chat, newest first. Use when the user wants to read, catch up on, or summarize a Teams chat. For a channel's messages instead, use list_channel_messages.

Class read (reads only). Scopes Chat.Read. Calls GET /chats/{{params.chat_id}}/messages.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id to read from.
topintegernoPage size, default 20.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
@odata.nextLinkstring
valuearray of object
value[].bodyobject
value[].body.contentstring
value[].body.contentTypestring
value[].createdDateTimestring
value[].fromobject
value[].from.userobject
value[].idstring

Also retrieved by: "catch me up on what we've been discussing on Teams", "pull the history of this Microsoft Teams conversation", "what has this person been saying lately on Teams", "scroll back through our recent Teams back and forth".

microsoft_teams.update_chat_message

Edit the text of a message already posted in a Microsoft Teams chat. Use when the user wants to fix, correct, or change something they already sent in a chat. Identify the message by its chat and message id. For a channel message instead, there is no equivalent edit tool here; channel messages are edited in the Teams client.

Class write (writes, no confirmation needed). Scopes Chat.ReadWrite. Calls PATCH /chats/{{params.chat_id}}/messages/{{params.message_id}}.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id containing the message.
contentstringyesReplacement message text or HTML.
content_typestring, one of text, htmlnoFormat of content. Default text.
message_idstringyesMessage id to edit, from list_chat_messages.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
lastEditedDateTimestring

Also retrieved by: "fix a typo in something I sent them on Teams", "reword what I already told them in Microsoft Teams", "correct what I typed in our Teams conversation", "clean up the wording of my last Teams note".

microsoft_teams.delete_chat_message

Delete a message from a Microsoft Teams chat. Use when the user wants to remove, retract, or take back something they posted in a chat. Identify the message by its chat and message id. Permanent; the message cannot be restored.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes Chat.ReadWrite. Calls POST /chats/{{params.chat_id}}/messages/{{params.message_id}}/softDelete.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id containing the message.
message_idstringyesMessage id to delete, from list_chat_messages.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "take back something I sent on Teams by accident", "erase that Microsoft Teams note I regret sending", "pull down what I just typed to them in Teams", "undo a Teams message I fired off too fast".

microsoft_teams.list_chat_members

List the members of a Microsoft Teams chat: who is in a 1:1 or group chat and their roles. Use when the user asks who is in a chat. For a channel's members instead, use list_channel_members.

Class read (reads only). Scopes ChatMember.Read. Calls GET /chats/{{params.chat_id}}/members.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id to list members of.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].displayNamestring
value[].emailstring
value[].idstring
value[].rolesarray of string
value[].userIdstring

Also retrieved by: "who's actually in this Microsoft Teams group thread", "see everyone on this Teams conversation", "how many people are on this Teams dm".

microsoft_teams.add_chat_member

Add a person to an existing Microsoft Teams group chat. Use when the user wants to add, invite, or bring someone into a chat that already exists. For a brand-new chat, use create_chat instead.

Class write (writes, no confirmation needed). Scopes ChatMember.ReadWrite. Calls POST /chats/{{params.chat_id}}/members.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id to add the person to.
rolesarray of stringyes[] for an ordinary chat member, ["owner"] for an owner. A group chat has no owners, so [] is the usual value.
userstringyesThe person to add, as their Entra user id or user principal name, e.g. "priya@acme.com".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
rolesarray of string

Also retrieved by: "loop someone into this Microsoft Teams conversation", "bring another coworker into the Teams thread", "invite a person into this Teams group dm".

microsoft_teams.remove_chat_member

Remove a person from a Microsoft Teams group chat. Use when the user wants to remove or take someone out of a group chat. The person loses access to the chat immediately. Cannot be used on a 1:1 chat.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes ChatMember.ReadWrite. Calls DELETE /chats/{{params.chat_id}}/members/{{params.membership_id}}.

Arguments:

ArgumentTypeRequiredNotes
chat_idstringyesChat id to remove the person from.
membership_idstringyesMembership id from list_chat_members, not the person's user id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "take someone out of this Microsoft Teams group thread", "drop a person from this Teams conversation", "cut someone out of the Teams dm".

microsoft_teams.list_joined_teams

List the Microsoft Teams teams the connected account belongs to. Use to browse teams or resolve a team's display name to its id before calling list_channels or another team-scoped tool.

Class read (reads only). Scopes Team.ReadBasic.All. Calls GET /me/joinedTeams.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].descriptionstring
value[].displayNamestring
value[].idstring

Also retrieved by: "what Microsoft Teams teams am I actually part of", "show every Teams workspace I belong to", "browse my teams in the Microsoft Teams app".

microsoft_teams.get_team

Get one Microsoft Teams team's details by team id: display name, description, visibility, and whether it is archived. Use when the user asks about a specific team rather than a channel inside it.

Class read (reads only). Scopes Team.ReadBasic.All. Calls GET /teams/{{params.team_id}}.

Arguments:

ArgumentTypeRequiredNotes
team_idstringyesTeam id from list_joined_teams.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
descriptionstring
displayNamestring
idstring
isArchivedboolean
visibilitystring

Also retrieved by: "tell me about this particular Microsoft Teams team", "is this Teams team still active", "pull up the info on that Microsoft Teams workspace".

microsoft_teams.archive_team

Archive a Microsoft Teams team, making it read-only for every member: no new posts, and channel files locked. Use when the user wants to archive, retire, or freeze a team for good. Reversible only through a separate unarchive call outside this toolkit, and it disrupts every member immediately.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes TeamSettings.ReadWrite.All. Calls POST /teams/{{params.team_id}}/archive.

Arguments:

ArgumentTypeRequiredNotes
set_spo_site_read_onlybooleannoAlso make the team's SharePoint site read-only for members. Default false.
team_idstringyesTeam id to archive.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
archivedboolean

Also retrieved by: "freeze this Microsoft Teams team, we're done with it", "shut this Teams team down for good", "retire this Microsoft Teams workspace, nobody needs it anymore", "lock this Teams team so nobody can post".

microsoft_teams.list_team_members

List everyone on a Microsoft Teams team, with their roles. Use when the user asks who is on a team, as opposed to one channel within it; for a channel's members, use list_channel_members.

Class read (reads only). Scopes TeamMember.Read.All. Calls GET /teams/{{params.team_id}}/members.

Arguments:

ArgumentTypeRequiredNotes
team_idstringyesTeam id to list members of.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].displayNamestring
value[].emailstring
value[].idstring
value[].rolesarray of string
value[].userIdstring

Also retrieved by: "who's on this whole Microsoft Teams team", "see the full roster for this Teams workspace", "how many people belong to this team in Microsoft Teams".

microsoft_teams.add_team_member

Add a person to a Microsoft Teams team. Use when the user wants to add, invite, or bring someone onto a whole team rather than into one channel. For one private channel only, use add_channel_member instead.

Class write (writes, no confirmation needed). Scopes TeamMember.ReadWrite.All. Calls POST /teams/{{params.team_id}}/members.

Arguments:

ArgumentTypeRequiredNotes
rolesarray of stringyes[] for an ordinary team member, ["owner"] for a team owner.
team_idstringyesTeam id to add the person to.
userstringyesThe person to add, as their Entra user id or user principal name, e.g. "priya@acme.com".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
rolesarray of string

Also retrieved by: "bring a new hire onto the Microsoft Teams team", "add someone to the whole Teams workspace", "get this person into every Microsoft Teams channel here".

microsoft_teams.remove_team_member

Remove a person from a Microsoft Teams team. Use when the user wants to remove, kick, or take someone off a whole team. They lose access to every channel in the team immediately.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes TeamMember.ReadWrite.All. Calls DELETE /teams/{{params.team_id}}/members/{{params.membership_id}}.

Arguments:

ArgumentTypeRequiredNotes
membership_idstringyesMembership id from list_team_members, not the person's user id.
team_idstringyesTeam id to remove the person from.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "take someone off the whole Microsoft Teams team", "offboard this person from the Teams workspace", "cut this coworker out of everything in Microsoft Teams".

microsoft_teams.list_channels

List the channels in a Microsoft Teams team. Use to browse a team's channels or find a channel id from its name before reading or posting messages. For chats outside any team, use list_chats.

Class read (reads only). Scopes Channel.ReadBasic.All. Calls GET /teams/{{params.team_id}}/channels.

Arguments:

ArgumentTypeRequiredNotes
team_idstringyesTeam id from list_joined_teams.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].descriptionstring
value[].displayNamestring
value[].idstring
value[].membershipTypestring

Also retrieved by: "what channels does this Microsoft Teams team have", "browse the rooms inside this Teams workspace", "show me every topic area in this Teams team".

microsoft_teams.get_channel

Get one Microsoft Teams channel's details: display name, description, membership type (standard or private), and its web link. Use when the user asks about a specific channel.

Class read (reads only). Scopes Channel.ReadBasic.All. Calls GET /teams/{{params.team_id}}/channels/{{params.channel_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id from list_channels.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
descriptionstring
displayNamestring
idstring
membershipTypestring
webUrlstring

Also retrieved by: "what's this particular Microsoft Teams room about", "tell me the details on that Teams channel", "is this Microsoft Teams channel private or open to everyone".

microsoft_teams.create_channel

Create a new channel in a Microsoft Teams team. Use when the user wants to make, start, or set up a new channel. Standard channels are visible to the whole team; a private channel is visible only to the members it is created with.

Class write (writes, no confirmation needed). Scopes Channel.Create. Calls POST /teams/{{params.team_id}}/channels.

Arguments:

ArgumentTypeRequiredNotes
descriptionstringnoOptional description of what the channel is for.
display_namestringyesChannel name, e.g. "Incident Response".
membership_typestring, one of standard, privatenostandard is visible to the whole team. Default standard.
team_idstringyesTeam id to create the channel in.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
idstring
webUrlstring

Also retrieved by: "set up a new Microsoft Teams topic area for the team", "make a private Teams room for a smaller group", "spin up a channel for this project on Microsoft Teams".

microsoft_teams.update_channel

Rename a Microsoft Teams channel or change its description. Use when the user wants to rename, retitle, or update what a channel is called or about. Does not change its membership type or delete it.

Class write (writes, no confirmation needed). Scopes ChannelSettings.ReadWrite.All. Calls PATCH /teams/{{params.team_id}}/channels/{{params.channel_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to update.
descriptionstringnoNew description text.
display_namestringnoNew channel name.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
descriptionstring
displayNamestring
idstring

Also retrieved by: "rename this Microsoft Teams room to something clearer", "fix the description on this Teams channel", "retitle that Microsoft Teams topic area".

microsoft_teams.delete_channel

Permanently delete a channel from a Microsoft Teams team, its messages included. Use when the user wants to delete or remove a channel for good, not just archive the team. Irreversible.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes Channel.Delete.All. Calls DELETE /teams/{{params.team_id}}/channels/{{params.channel_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to delete.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "get rid of this Microsoft Teams channel for good", "wipe out this Teams room entirely", "remove this Microsoft Teams topic area and its history".

microsoft_teams.list_channel_members

List the members of one Microsoft Teams channel, most relevant for a private channel where membership differs from the team. Use when the user asks who is in a channel. For the whole team's members, use list_team_members.

Class read (reads only). Scopes ChannelMember.Read.All. Calls GET /teams/{{params.team_id}}/channels/{{params.channel_id}}/members.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to list members of.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].displayNamestring
value[].emailstring
value[].idstring
value[].rolesarray of string
value[].userIdstring

Also retrieved by: "who has access to this private Microsoft Teams room", "see everyone allowed in this Teams channel", "check the membership on this Microsoft Teams topic area".

microsoft_teams.add_channel_member

Give a person access to one Microsoft Teams channel by adding them to it. Use when the user wants to add someone to a single, usually private, channel rather than the whole team. Standard channels are open to every team member already; this tool matters most for private channels. For the whole team, use add_team_member.

Class write (writes, no confirmation needed). Scopes ChannelMember.ReadWrite.All. Calls POST /teams/{{params.team_id}}/channels/{{params.channel_id}}/members.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to add the person to.
rolesarray of stringyes[] for an ordinary channel member, ["owner"] for a channel owner.
team_idstringyesTeam id containing the channel.
userstringyesThe person to add, as their Entra user id or user principal name, e.g. "priya@acme.com".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
rolesarray of string

Also retrieved by: "give someone access to this private Microsoft Teams room", "let a person into just this one Teams channel", "add a teammate to this specific Microsoft Teams topic area".

microsoft_teams.remove_channel_member

Remove a person from one Microsoft Teams channel, most relevant for a private channel. Use when the user wants to remove or take someone out of a channel specifically. The rest of the team is unaffected unless also removed with remove_team_member.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes ChannelMember.ReadWrite.All. Calls DELETE /teams/{{params.team_id}}/channels/{{params.channel_id}}/members/{{params.membership_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to remove the person from.
membership_idstringyesMembership id from list_channel_members, not the person's user id.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "pull someone's access to just this Microsoft Teams room", "take a person out of this one Teams channel", "revoke access to this private Microsoft Teams topic area".

microsoft_teams.send_channel_message

Post a new top-level message in a Microsoft Teams channel. Use when the user wants to post, announce, or share something with a whole channel, not a single person. For a reply inside an existing thread, use reply_to_channel_message; for a chat instead of a channel, use send_chat_message.

Class write (writes, no confirmation needed). Scopes ChannelMessage.Send. Calls POST /teams/{{params.team_id}}/channels/{{params.channel_id}}/messages.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to post in.
contentstringyesMessage text or HTML.
content_typestring, one of text, htmlnoFormat of content. Default text.
subjectstringnoOptional bold subject line shown above the message.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdDateTimestring
idstring
subjectstring
webUrlstring

Also retrieved by: "post something in Microsoft Teams for the whole team to see", "announce this in the group's main Teams room", "drop an update in the project channel on Microsoft Teams".

microsoft_teams.list_channel_messages

Fetch recent top-level messages from a Microsoft Teams channel, newest first. Use when the user wants to read, catch up on, or summarize a channel. Returns top-level posts only; use list_message_replies for the replies under one of them.

Class read (reads only). Scopes ChannelMessage.Read.All. Calls GET /teams/{{params.team_id}}/channels/{{params.channel_id}}/messages.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to read from.
team_idstringyesTeam id containing the channel.
topintegernoPage size, default 20.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
@odata.nextLinkstring
valuearray of object
value[].bodyobject
value[].body.contentstring
value[].body.contentTypestring
value[].createdDateTimestring
value[].fromobject
value[].from.userobject
value[].idstring
value[].subjectstring

Also retrieved by: "what's been posted in this Microsoft Teams room lately", "catch me up on the Teams channel's activity", "show recent posts in this Microsoft Teams topic area".

microsoft_teams.get_channel_message

Get one Microsoft Teams channel message's full content by message id: sender, subject, body, and link. Use after list_channel_messages to read a specific post in full.

Class read (reads only). Scopes ChannelMessage.Read.All. Calls GET /teams/{{params.team_id}}/channels/{{params.channel_id}}/messages/{{params.message_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id containing the message.
message_idstringyesMessage id from list_channel_messages.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
bodyobject
body.contentstring
body.contentTypestring
createdDateTimestring
fromobject
from.userobject
from.user.displayNamestring
from.user.idstring
idstring
subjectstring
webUrlstring

Also retrieved by: "pull up that specific Microsoft Teams post in full", "read the whole thing someone posted in Teams", "open that Microsoft Teams update in detail".

microsoft_teams.reply_to_channel_message

Reply inside the thread under an existing Microsoft Teams channel message. Use when the user wants to reply, respond, or comment on a specific post rather than start a new one. For a brand-new top-level post, use send_channel_message.

Class write (writes, no confirmation needed). Scopes ChannelMessage.Send. Calls POST /teams/{{params.team_id}}/channels/{{params.channel_id}}/messages/{{params.message_id}}/replies.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id containing the parent message.
contentstringyesReply text or HTML.
content_typestring, one of text, htmlnoFormat of content. Default text.
message_idstringyesParent message id to reply to, from list_channel_messages.
team_idstringyesTeam id containing the channel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
createdDateTimestring
idstring

Also retrieved by: "respond under that post in Microsoft Teams", "comment on what someone shared in the Teams channel", "answer back in that Microsoft Teams thread".

microsoft_teams.list_message_replies

Fetch the replies under one Microsoft Teams channel message, the parent included. Use when the user wants to read a thread or its replies. For a channel's top-level posts, use list_channel_messages.

Class read (reads only). Scopes ChannelMessage.Read.All. Calls GET /teams/{{params.team_id}}/channels/{{params.channel_id}}/messages/{{params.message_id}}/replies.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id containing the parent message.
message_idstringyesParent message id, from list_channel_messages.
team_idstringyesTeam id containing the channel.
topintegernoPage size, default 20.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].bodyobject
value[].body.contentstring
value[].body.contentTypestring
value[].createdDateTimestring
value[].fromobject
value[].from.userobject
value[].idstring

Also retrieved by: "what did people say back on that post in Microsoft Teams", "pull up the responses under that Teams update", "read the thread under that message on Microsoft Teams".

microsoft_teams.create_meeting

Schedule a new Microsoft Teams online meeting for the connected account. Use when someone wants to set up, schedule, or book a Teams video call or meeting. Returns the joinWebUrl to share with attendees. To update it afterward, use update_meeting.

Class write (writes, no confirmation needed). Scopes OnlineMeetings.ReadWrite. Calls POST /me/onlineMeetings.

Arguments:

ArgumentTypeRequiredNotes
end_date_timestringyesMeeting end, RFC 3339.
start_date_timestringyesMeeting start, RFC 3339, e.g. "2026-08-04T15:00:00Z".
subjectstringnoMeeting title, e.g. "Q3 planning".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
endDateTimestring
idstring
joinWebUrlstring
startDateTimestring
subjectstring

Also retrieved by: "set up a Microsoft Teams video call with the team", "book a Teams call for tomorrow afternoon", "get a Teams video conference on the calendar", "schedule time to talk over video in Microsoft Teams".

microsoft_teams.get_meeting

Get a Microsoft Teams online meeting's details by meeting id: subject, scheduled time, and its joinWebUrl. Use when the user asks about a meeting they already scheduled through create_meeting.

Class read (reads only). Scopes OnlineMeetings.Read. Calls GET /me/onlineMeetings/{{params.meeting_id}}.

Arguments:

ArgumentTypeRequiredNotes
meeting_idstringyesOnline meeting id from create_meeting.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
endDateTimestring
idstring
joinWebUrlstring
startDateTimestring
subjectstring

Also retrieved by: "pull up the link for that Microsoft Teams video call", "what time is that Teams call I booked", "check the details on that scheduled Microsoft Teams call".

microsoft_teams.update_meeting

Change the subject or time of an already-scheduled Microsoft Teams online meeting. Use when the user wants to reschedule, retitle, or move a meeting they already set up. To cancel it instead, use cancel_meeting.

Class write (writes, no confirmation needed). Scopes OnlineMeetings.ReadWrite. Calls PATCH /me/onlineMeetings/{{params.meeting_id}}.

Arguments:

ArgumentTypeRequiredNotes
end_date_timestringnoNew end time, RFC 3339.
meeting_idstringyesOnline meeting id to update.
start_date_timestringnoNew start time, RFC 3339.
subjectstringnoNew meeting title.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
endDateTimestring
idstring
startDateTimestring
subjectstring

Also retrieved by: "push that Microsoft Teams call back an hour", "retitle the Teams video call I set up", "move that Microsoft Teams meeting to a different time".

microsoft_teams.cancel_meeting

Cancel a Microsoft Teams online meeting that was already set up. Use when the user wants to cancel, call off, or delete a meeting they no longer need. Irreversible; attendees keep whatever calendar invite they already have unless cancelled separately.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes OnlineMeetings.ReadWrite. Calls DELETE /me/onlineMeetings/{{params.meeting_id}}.

Arguments:

ArgumentTypeRequiredNotes
meeting_idstringyesOnline meeting id to cancel.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean

Also retrieved by: "call off the Microsoft Teams video meeting", "scrap that Teams call, we don't need it", "take that Microsoft Teams meeting off the calendar".

microsoft_teams.list_meeting_transcripts

List the transcripts generated for a past Microsoft Teams meeting. Use when the user wants the transcript, notes, or a written record of what was said in a meeting that already happened. Requires transcription to have been turned on during the meeting.

Class read (reads only). Scopes OnlineMeetingTranscript.Read.All. Calls GET /me/onlineMeetings/{{params.meeting_id}}/transcripts.

Arguments:

ArgumentTypeRequiredNotes
meeting_idstringyesOnline meeting id the transcript belongs to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].createdDateTimestring
value[].idstring

Also retrieved by: "what was actually said on that Microsoft Teams call", "pull up the written record of that Teams meeting", "get me the notes from that Microsoft Teams video call".

microsoft_teams.get_user

Get a Microsoft Teams person's directory details by Graph user id or userPrincipalName: display name, email, and job title. Use when the user asks who someone is. If you only have an email address and not a directory id, use find_user_by_email.

Class read (reads only). Scopes User.ReadBasic.All. Calls GET /users/{{params.user_id}}.

Arguments:

ArgumentTypeRequiredNotes
user_idstringyesGraph user id or userPrincipalName, e.g. "priya@acme.com".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
displayNamestring
idstring
jobTitlestring
mailstring
userPrincipalNamestring

Also retrieved by: "who is this person in the Microsoft Teams directory", "look up someone's title and email in Teams", "pull up a coworker's Microsoft Teams profile".

microsoft_teams.find_user_by_email

Find a person in the Microsoft Teams directory by email address. Use when the user identifies someone by email, or when a member or chat tool needs a Graph user id and only an email address is known.

Class read (reads only). Scopes User.ReadBasic.All. Calls GET /users.

Arguments:

ArgumentTypeRequiredNotes
emailstringyesThe email address to look up, e.g. "priya@acme.com".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].displayNamestring
value[].idstring
value[].mailstring
value[].userPrincipalNamestring

Also retrieved by: "match this email address to a real person in Microsoft Teams", "whose Teams account is this address", "figure out who in Microsoft Teams owns this email".

microsoft_teams.get_user_presence

Check whether a person is currently available, busy, or away in Microsoft Teams. Use when the user asks if someone is online, around, in a meeting, or free right now.

Class read (reads only). Scopes Presence.Read.All. Calls GET /users/{{params.user_id}}/presence.

Arguments:

ArgumentTypeRequiredNotes
user_idstringyesGraph user id or userPrincipalName to check.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
activitystring
availabilitystring
idstring

Also retrieved by: "is this person online right now in Microsoft Teams", "are they free to talk on Teams at the moment", "check if someone is in a Microsoft Teams meeting currently".

microsoft_teams.search_messages

Search Microsoft Teams chat and channel messages by keyword across the connected account's chats and channels. Use when the user wants to find, look up, or dig up something someone said in Teams and does not know which chat or channel it is in.

Class read (reads only). Scopes ChannelMessage.Read.All, Chat.Read.All. Calls POST /search/query.

Arguments:

ArgumentTypeRequiredNotes
fromintegernoNumber of results to skip, for paging. Default 0.
querystringyesSearch terms, e.g. "q3 budget numbers".
sizeintegernoResults per page, up to 25. Default 25.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
valuearray of object
value[].hitsContainersarray of object
value[].hitsContainers[].hitsarray of object
value[].hitsContainers[].totalinteger

Also retrieved by: "dig up something someone said in Microsoft Teams a while back", "find that link somebody shared on Teams", "look for a decision buried in an old Microsoft Teams conversation".