teams_get_ channel_ messageGet one channel message (a top-level post) with its text, sender, mentions, reactions and attachments.
Catch up on the chats and channels you missed, reply in a thread or message a colleague by email address, pull the transcript of yesterday's meeting, and see who is free right now.
PopMCPMicrosoft Teams
All of Microsoft Teams in Microsoft Graph for a signed-in work or school account, from teams, channels and chats to messages, meetings, transcripts, presence, tags, tabs, apps and Shifts schedules, plus the Teams events PopMCP can watch.
278 tools in the full catalog: 129 read and 149 write. 43 load by default, and the rest are found with tool search.
teams_get_ channel_ messageGet one channel message (a top-level post) with its text, sender, mentions, reactions and attachments.
teams_list_ channel_ message_ repliesList the replies to a channel message, newest first, with text, sender and time.
teams_list_ channel_ messagesList a channel's messages (top-level posts, newest activity first; replies are separate).
teams_post_ to_ channelPost in a Teams channel by team and channel name (or id or link): a new conversation (with an optional subject) or, with replyTo, a reply.
teams_read_ channelRead a Teams channel by team and channel name (or id or link): its conversations, latest activity first, each with its replies oldest first, as compact rows (who, when, text, mentions, files, reactions).
teams_reply_ to_ channel_ messageReply in a channel thread (under an existing message).
teams_send_ channel_ messagePost a new message (a new conversation) in a channel.
teams_list_ chat_ membersList the people in a chat: displayName, email, userId, roles.
teams_list_ team_ membersList a team's members and owners: displayName, email, userId, roles (owner, guest or empty for member).
teams_create_ online_ meetingCreate a Teams meeting link (not a calendar event): subject, startDateTime, endDateTime (ISO, e.g. 2026-11-02T15:00:00Z), participants, lobby and recording options.
teams_find_ online_ meetingFind a Teams meeting by its join link or meeting ID: give joinWebUrl (the https://teams.microsoft.com/l/meetup-join/...
teams_get_ meeting_ transcriptA Teams meeting's transcript as plain speaker lines ("Ada Lovelace: we ship Friday"), from the meeting's join link, numeric meeting ID or online meeting id: finds the meeting, its latest transcript (or transcriptId) and reads it.
teams_get_ meeting_ transcript_ contentThe transcript text (WebVTT: who said what, with times).
teams_list_ attendance_ reportsList the attendance reports of a meeting (one per time it ran): id, meetingStartDateTime, meetingEndDateTime, totalParticipantCount.
teams_list_ meeting_ transcriptsList a meeting's transcripts: id, createdDateTime, endDateTime.
teams_meeting_ attendanceWho attended a Teams meeting and for how long, from its join link, numeric meeting ID or online meeting id: the latest attendance report (or reportId) with each attendee's name, email, role, minutes present and join and leave times.
teams_create_ channelCreate a channel in a team: displayName (required, up to 50 characters, no # % & * { } / \ : < > ? + | ' "), description, membershipType (standard default, private or shared; private and shared need members with an owner).
teams_create_ chatStart a chat: chatType oneOnOne (exactly two people: the signed-in user and one other; an existing one-on-one chat is returned instead of a new one) or group (three or more, optional topic).
teams_get_ channelGet one channel: displayName, description, membershipType, email, webUrl, isArchived, createdDateTime.
teams_get_ chatGet one chat: topic, chatType, members count, webUrl, onlineMeetingInfo (for meeting chats) and the signed-in user's viewpoint (hidden, last read time).
teams_list_ channelsList a team's channels: id, displayName, description, membershipType (standard, private, shared), webUrl, isArchived.
teams_list_ chatsList the signed-in user's chats (one-on-one, group and meeting chats), most recent first: id, topic, chatType, webUrl and the last message (lastMessagePreview: from, text, time) with whether it is unread.
teams_mark_ chat_ readMark a chat as read for the signed-in user.
teams_recent_ chatsWhat is new in the signed-in user's Teams chats: their chats, most recent first, each with the latest message (who, what, when), whether it is unread, the people in it and its chat id.
teams_find_ channelsFind teams and channels by name: the signed-in user's teams (filtered by team) with their channels (filtered by channel): ids, names, membershipType (standard, private, shared) and links.
teams_get_ chat_ messageGet one chat message with its text, sender, mentions, reactions, attachments and edit history.
teams_get_ teamGet one team: displayName, description, visibility, isArchived, webUrl, and its member, messaging, fun and guest settings.
teams_list_ chat_ messagesList a chat's messages, newest first, with readable text, sender, time, mentions, reactions and attachments.
teams_list_ my_ teamsList the teams the signed-in user is a member of: id, displayName, description, webUrl, isArchived.
teams_react_ to_ chat_ messageAdd a reaction to a chat message: reactionType is an emoji (👍 ❤️ 😆 😮 😢 😡) or like, heart, laugh, surprised, sad, angry.
teams_read_ chatRead a Teams chat as compact rows, oldest first: who wrote what and when, with mentions, files and reactions.
teams_send_ chat_ messageSend a message in a chat (one-on-one, group or meeting chat).
teams_send_ direct_ messageMessage people in Teams by email address: one person goes to your one-on-one chat with them (started if needed); several go to the group chat with exactly them, or a new group chat (topic names it).
teams_update_ chat_ messageEdit a chat message the signed-in user sent: give the new text, markdown or html.
teams_get_ my_ presenceThe signed-in user's presence: availability (Available, Busy, DoNotDisturb, BeRightBack, Away, Offline) and activity (InACall, InAMeeting, Presenting...), plus the status message.
teams_get_ user_ presenceSomeone's Teams presence by email address or user id: availability (Available, Busy, DoNotDisturb, BeRightBack, Away, Offline), activity and status message.
teams_set_ statusSet how the signed-in user shows in Teams in one call: availability (Available, Busy, DoNotDisturb, BeRightBack, Away, Offline) for a duration (30m, 1h, 1 day), and/or the status message (with when it ends).
teams_find_ peopleFind people in the organization by name or email address, with their Teams presence (available, busy, away...) and status message: user id (what mentions and chats need), name, email, job title.
teams_get_ profileThe signed-in user's profile: id (the user id mentions and chats use), displayName, mail, userPrincipalName, jobTitle.
teams_list_ usersFind people in the organization by name or email address (for mentions, chats and team membership): id, displayName, mail, userPrincipalName, jobTitle.
teams_list_ channel_ filesThe files in a Teams channel's Files tab, by team and channel name (or id or link), optionally a subfolder path: name, file or folder, size, link, last change and who made it.
teams_search_ messagesSearch the signed-in user's Teams messages (chats, and channels when the connection may read channel messages) with Microsoft Search: words, "an exact phrase", from:ada, sent>=2026-10-01.
teams_batch_ readRun up to 20 Teams read (GET) requests in one Microsoft Graph $batch, e.g. several chats' latest messages: [{ "url": "/chats/19:abc@thread.v2/messages?$top=5" }, ...].
teams_approve_ offer_ shift_ requestA manager approves an offer shift request (body message: an optional note to the requester).
teams_approve_ open_ shift_ change_ requestA manager approves an open shift change request (body message: an optional note to the requester).
teams_approve_ swap_ shifts_ change_ requestA manager approves a swap shifts change request (body message: an optional note to the requester).
teams_approve_ time_ off_ requestA manager approves a time off request (body message: an optional note to the requester).
teams_clock_ inClock the signed-in user in (starts a time card): optional isAtApprovedLocation, notes, onBehalfOfUserId (a manager clocking someone in).
teams_clock_ outClock out of a time card.
teams_confirm_ time_ cardConfirm a time card (the worker agrees it is right).
teams_create_ day_ noteAdd a note to a day of the schedule: dayNoteDate (YYYY-MM-DD) and sharedDayNote { contentType, content }.
teams_create_ offer_ shift_ requestCreate an offer shift request in the schedule.
teams_create_ open_ shiftCreate an open shift in the schedule.
teams_create_ open_ shift_ change_ requestCreate an open shift change request in the schedule.
teams_create_ scheduling_ groupCreate a scheduling group in the schedule.
teams_create_ shiftCreate a shift in the schedule.
teams_create_ swap_ shifts_ change_ requestCreate a swap shifts change request in the schedule.
teams_create_ time_ cardCreate a time card in the schedule.
teams_create_ time_ offCreate a time off in the schedule.
teams_create_ time_ off_ reasonCreate a time off reason in the schedule.
teams_create_ time_ off_ requestCreate a time off request in the schedule.
teams_create_ workforce_ integrationRegister a workforce integration for Shifts (administrator): displayName, apiVersion, url, encryption, supportedEntities.
teams_decline_ offer_ shift_ requestA manager declines an offer shift request (body message: an optional note to the requester).
teams_decline_ open_ shift_ change_ requestA manager declines an open shift change request (body message: an optional note to the requester).
teams_decline_ swap_ shifts_ change_ requestA manager declines a swap shifts change request (body message: an optional note to the requester).
teams_decline_ time_ off_ requestA manager declines a time off request (body message: an optional note to the requester).
teams_delete_ day_ noteDelete a day note.
teams_delete_ open_ shiftDelete an open shift.
teams_delete_ scheduling_ groupDelete a scheduling group.
teams_delete_ shiftDelete a shift.
teams_delete_ time_ cardDelete a time card.
teams_delete_ time_ offDelete a time off.
teams_delete_ time_ off_ reasonDelete a time off reason.
teams_delete_ time_ off_ requestDelete a time off request.
teams_delete_ workforce_ integrationRemove a workforce integration.
teams_end_ breakEnd the current break on a time card.
teams_get_ day_ noteOne day note.
teams_get_ offer_ shift_ requestGet one offer shift request.
teams_get_ open_ shiftGet one open shift.
teams_get_ open_ shift_ change_ requestGet one open shift change request.
teams_get_ scheduleA team's Shifts schedule settings: enabled, timeZone, provisionStatus, and whether swaps, offers, open shifts and time off requests are allowed.
teams_get_ scheduling_ groupGet one scheduling group.
teams_get_ shiftGet one shift.
teams_get_ swap_ shifts_ change_ requestGet one swap shifts change request.
teams_get_ time_ cardGet one time card.
teams_get_ time_ offGet one time off.
teams_get_ time_ off_ reasonGet one time off reason.
teams_get_ time_ off_ requestGet one time off request.
teams_get_ workforce_ integrationOne workforce integration.
teams_list_ day_ notesList the notes managers left on days of the schedule.
teams_list_ offer_ shift_ requestsList the schedule's offer shift requests.
teams_list_ open_ shift_ change_ requestsList the schedule's open shift change requests.
teams_list_ open_ shiftsList the schedule's open shifts.
teams_list_ scheduling_ groupsList the schedule's scheduling groups.
teams_list_ shiftsList the schedule's shifts.
teams_list_ swap_ shifts_ change_ requestsList the schedule's swap shifts change requests.
teams_list_ time_ cardsList the schedule's time cards.
teams_list_ time_ off_ reasonsList the schedule's time off reasons.
teams_list_ time_ off_ requestsList the schedule's time off requests.
teams_list_ times_ offList the schedule's times off.
teams_list_ workforce_ integrationsList the Shifts workforce integrations (links to outside scheduling systems).
teams_replace_ day_ noteReplace a day note.
teams_replace_ open_ shiftReplace an open shift.
teams_replace_ scheduling_ groupReplace a scheduling group.
teams_replace_ shiftReplace a shift.
teams_replace_ time_ cardReplace a time card.
teams_replace_ time_ offReplace a time off.
teams_replace_ time_ off_ reasonReplace a time off reason.
teams_set_ scheduleCreate or replace a team's Shifts schedule: enabled, timeZone (IANA, e.g. America/Chicago) and the request settings.
teams_share_ scheduleShare (publish) the schedule for a time range so members see their shifts: notifyTeam, startDateTime, endDateTime.
teams_start_ breakStart a break on a time card.
teams_update_ workforce_ integrationChange a workforce integration.
teams_delete_ catalog_ appDelete an app from the organization's catalog (an administrator, or the submitter for their own pending app).
teams_delete_ catalog_ app_ definitionWithdraw a submitted app version that is still waiting for review.
teams_get_ catalog_ app_ botThe bot of a catalog app version (its Microsoft App ID).
teams_get_ chat_ appOne app installation in a chat.
teams_get_ my_ appOne app the signed-in user installed.
teams_get_ my_ app_ chatThe one-on-one chat between the signed-in user and a personal app (its bot).
teams_get_ team_ appOne app installation in a team.
teams_install_ chat_ appInstall an app in a chat: teamsApp@odata.bind (or appId).
teams_install_ my_ appInstall an app for the signed-in user (personal scope): teamsApp@odata.bind (or appId).
teams_install_ team_ appInstall an app in a team: teamsApp@odata.bind.
teams_list_ catalog_ appsList apps in the organization's Teams app catalog: id, externalId, displayName, distributionMethod (store, organization, sideloaded).
teams_list_ chat_ appsList the apps installed in a chat; $expand=teamsAppDefinition names them.
teams_list_ chat_ permission_ grantsApps that hold resource-specific permissions on this chat.
teams_list_ my_ appsList the apps the signed-in user installed for themselves (personal scope); $expand=teamsAppDefinition names them.
teams_list_ team_ appsList the apps installed in a team; $expand=teamsAppDefinition names them.
teams_list_ team_ permission_ grantsApps that hold resource-specific permissions on this team.
teams_publish_ catalog_ appPublish a custom app to the organization's catalog from its app package (.zip, base64).
teams_review_ catalog_ appAn administrator approves or rejects an app submitted for review: publishingState published or rejected.
teams_send_ activity_ notification_ to_ recipientsSend one activity feed notification to several people.
teams_send_ chat_ activity_ notificationSend an activity feed notification about a chat.
teams_send_ team_ activity_ notificationSend an activity feed notification about a team.
teams_send_ user_ activity_ notificationSend an activity feed notification to one person: topic, activityType, previewText.
teams_uninstall_ chat_ appRemove an app from a chat.
teams_uninstall_ my_ appUninstall one of the signed-in user's personal apps.
teams_uninstall_ team_ appRemove an app from a team.
teams_update_ catalog_ appUpload a new version of a custom catalog app (package .zip as base64).
teams_upgrade_ chat_ appUpgrade an app installed in a chat.
teams_upgrade_ my_ appUpgrade one of the signed-in user's personal apps to its latest version.
teams_upgrade_ team_ appUpgrade an app installed in a team to its latest version.
teams_delete_ channel_ messageDelete a channel message the signed-in user sent.
teams_delete_ channel_ message_ replyDelete a reply the signed-in user sent (restorable).
teams_get_ channel_ message_ hosted_ contentDetails of one embedded image or snippet in a channel message.
teams_get_ channel_ message_ hosted_ content_ valueThe embedded image itself (shown as an image) or the snippet's text.
teams_get_ channel_ message_ replyGet one reply in a channel thread.
teams_get_ channel_ reply_ hosted_ contentDetails of one embedded image or snippet in a reply.
teams_get_ channel_ reply_ hosted_ content_ valueThe image embedded in a reply (shown as an image) or the snippet's text.
teams_list_ channel_ message_ changesTrack new and changed channel messages: the first call returns messages and an @odata.deltaLink; later calls with that link as cursor return only what changed since.
teams_list_ channel_ message_ hosted_ contentsList the images and code snippets embedded in a channel message.
teams_list_ channel_ reply_ changesTrack new and changed replies to one channel message (delta round; pass @odata.deltaLink as cursor next time).
teams_list_ channel_ reply_ hosted_ contentsList the images and snippets embedded in a reply.
teams_react_ to_ channel_ messageAdd a reaction to a channel message: reactionType is an emoji (👍 ❤️ 😆 😮 😢 😡) or like, heart, laugh, surprised, sad, angry.
teams_react_ to_ channel_ message_ replyAdd a reaction to a reply (reactionType: an emoji or like, heart, laugh, surprised, sad, angry).
teams_remove_ channel_ message_ reactionRemove the signed-in user's reaction from a channel message (reactionType as it was set).
teams_remove_ channel_ reply_ reactionRemove the signed-in user's reaction from a reply.
teams_restore_ channel_ messageRestore a channel message that was deleted with delete_channel_message.
teams_restore_ channel_ message_ replyRestore a deleted reply.
teams_update_ channel_ messageEdit a channel message the signed-in user sent: give the new text, markdown or html (and mentions to keep).
teams_update_ channel_ message_ replyEdit a reply the signed-in user sent in a channel thread.
teams_add_ channel_ memberAdd a person to a private or shared channel: user (email address or user id) and roles ([] or ["owner"]).
teams_add_ chat_ memberAdd a person to a group chat: user (email address or user id), and how much history they see (visibleHistoryStartDateTime: an ISO date-time; leave out for none, 0001-01-01T00:00:00Z for all).
teams_add_ team_ memberAdd one person to a team: user (an email address or user id) and roles ([] for member, ["owner"] for owner).
teams_add_ team_ membersAdd several people to a team in one call: users (email addresses or user ids) and roles for all of them.
teams_get_ channel_ memberOne channel membership.
teams_get_ channel_ shared_ teamOne team a shared channel is shared with.
teams_get_ chat_ memberOne chat membership.
teams_get_ tag_ memberOne person in a tag.
teams_get_ team_ memberOne team membership.
teams_list_ channel_ all_ membersEveryone who can reach a channel, including people from teams a shared channel is shared with.
teams_list_ channel_ membersList a channel's direct members (private and shared channels have their own; standard channels list the team).
teams_list_ channel_ shared_ team_ membersPeople of a team a channel is shared with who can reach the channel.
teams_list_ channel_ shared_ teamsFor a shared channel: the teams it is shared with.
teams_list_ tag_ membersList the people in a tag (userId, displayName).
teams_remove_ channel_ memberRemove a person from a private or shared channel.
teams_remove_ chat_ memberRemove a person from a group chat.
teams_remove_ tag_ memberRemove a person from a tag.
teams_remove_ team_ memberRemove one person from a team.
teams_remove_ team_ membersRemove several people from a team in one call: users (email addresses or user ids).
teams_unshare_ channel_ from_ teamStop sharing a shared channel with a team.
teams_update_ channel_ memberChange a channel member's role: roles ["owner"] or [].
teams_update_ team_ memberMake a member an owner or back: roles ["owner"] or [].
teams_create_ or_ get_ online_ meetingCreate a meeting tied to your own externalId, or return the one already made with it (safe to retry): externalId, subject, startDateTime, endDateTime, participants.
teams_delete_ online_ meetingDelete a meeting the signed-in user organized.
teams_get_ attendance_ reportOne attendance report; $expand=attendanceRecords includes who joined, when, for how long and their role.
teams_get_ live_ event_ attendee_ reportThe attendee report of a Teams live event (CSV text).
teams_get_ meeting_ recordingOne recording's details (recordingContentUrl, times).
teams_get_ meeting_ recording_ contentThe recording file (an MP4 video): reports its type and size, since a video cannot be read as text.
teams_get_ meeting_ transcript_ infoOne transcript's details: id, createdDateTime, endDateTime and the organizer.
teams_get_ meeting_ transcript_ metadataThe transcript's metadata (speaker ids and spoken language per line).
teams_get_ online_ meetingGet a Teams meeting by its id (from find_online_meeting or create_online_meeting): subject, times, joinWebUrl, joinMeetingIdSettings, chatInfo.threadId (the meeting chat id), lobby and recording options.
teams_get_ virtual_ appointment_ join_ urlThe join link for a virtual appointment (Teams Premium virtual appointments).
teams_list_ attendance_ recordsWho attended a meeting: identity, emailAddress, role, totalAttendanceInSeconds and each join and leave time.
teams_list_ meeting_ recordingsList a meeting's recordings: id, createdDateTime, endDateTime, contentCorrelationId.
teams_send_ virtual_ appointment_ reminder_ smsSend a reminder text to virtual appointment attendees (Teams Premium): attendees and remindBeforeTimeInMinutesType (mins15, mins30, mins60, mins120, mins1440).
teams_send_ virtual_ appointment_ smsText the attendees of a virtual appointment (Teams Premium): attendees ([{ phoneNumber, timeZone }]) and messageType (confirmation, reschedule, cancellation).
teams_update_ online_ meetingChange a meeting's subject, times or options (lobbyBypassSettings, allowedPresenters, recordAutomatically, allowMeetingChat).
teams_archive_ channelArchive a channel so it becomes read-only.
teams_check_ channel_ accessWhether a person can access a channel (useful for private and shared channels).
teams_delete_ channelDelete a channel (its messages and tabs go with it; it can be restored for 30 days in Teams).
teams_delete_ chatDelete a chat for everyone.
teams_get_ channel_ enabled_ appOne app enabled in a channel.
teams_get_ channel_ files_ folderThe SharePoint folder that holds the channel's Files tab: id, name, webUrl and parentReference.driveId.
teams_get_ deleted_ chatA deleted chat that can still be restored.
teams_get_ primary_ channelGet the team's General (primary) channel, with its id for the channel tools.
teams_hide_ chatHide a chat from the signed-in user's chat list (a new message brings it back).
teams_list_ all_ channelsList every channel the team holds or that is shared with it (including shared channels hosted by other teams).
teams_list_ channel_ enabled_ appsApps enabled in a channel (for private and shared channels).
teams_list_ incoming_ channelsList the shared channels other teams have shared into this team.
teams_list_ pinned_ chat_ messagesList the messages pinned in a chat; $expand=message includes each message.
teams_mark_ chat_ unreadMark a chat as unread for the signed-in user, optionally from a time (lastMessageReadDateTime).
teams_pin_ chat_ messagePin a message in a chat: messageId.
teams_provision_ channel_ emailGive the channel an email address (or return the one it has), so mail sent there is posted in the channel.
teams_remove_ channel_ emailRemove the channel's email address.
teams_remove_ user_ chat_ accessRemove a person's access to a chat, including its history (for example after they left).
teams_restore_ deleted_ chatRestore a chat deleted within the last 30 days.
teams_unarchive_ channelRestore an archived channel (its team must not be archived).
teams_unhide_ chatShow a hidden chat in the signed-in user's chat list again.
teams_unpin_ chat_ messageUnpin a message.
teams_update_ channelRename a channel or change its description.
teams_update_ chatRename a group chat (topic).
teams_archive_ teamArchive a team: it becomes read-only for members.
teams_clone_ teamCopy a team (its structure, not its messages): body displayName (required), mailNickname, description, visibility, partsToClone (apps,tabs,settings,channels,members).
teams_create_ teamCreate a new team.
teams_delete_ chat_ messageDelete a chat message the signed-in user sent.
teams_get_ chat_ message_ hosted_ contentDetails of one image or snippet embedded in a chat message.
teams_get_ chat_ message_ hosted_ content_ valueThe image embedded in a chat message (shown as an image) or the snippet's text.
teams_get_ my_ teams_ settingsThe signed-in user's Teams settings: locale and region.
teams_get_ team_ operationCheck a long-running team operation (create, clone, archive, unarchive): status notStarted, inProgress, succeeded or failed, and targetResourceId.
teams_get_ team_ photoThe team's picture as an image.
teams_list_ all_ teamsList every team in the organization (not only the ones the user belongs to): id, displayName, description, visibility.
teams_list_ associated_ teamsList the teams the signed-in user is associated with: teams they belong to plus the host teams of shared channels they were added to directly.
teams_list_ chat_ message_ changesTrack new and changed messages in one chat: pass the @odata.deltaLink as cursor next time.
teams_list_ chat_ message_ hosted_ contentsList the images and code snippets embedded in a chat message.
teams_list_ deleted_ teamsList teams that were deleted and can still be restored (deleted within the last 30 days): id and their channels when expanded.
teams_remove_ chat_ message_ reactionRemove the signed-in user's reaction from a chat message.
teams_reply_ with_ quoteReply in a chat quoting one or more earlier messages: messageIds (from list_chat_messages) and the reply (text, markdown or html).
teams_restore_ chat_ messageRestore a chat message deleted with delete_chat_message.
teams_set_ team_ photoReplace the team's picture: contentBase64 (a JPEG or PNG file as base64, up to 4 MB).
teams_unarchive_ teamRestore an archived team so members can post again.
teams_update_ teamChange a team's name, description, visibility or settings (memberSettings, messagingSettings, funSettings, guestSettings).
teams_clear_ my_ automatic_ work_ locationStop the automatically detected work location.
teams_clear_ my_ preferred_ presenceGo back to automatic presence.
teams_clear_ my_ work_ locationClear the work location set for today.
teams_clear_ presence_ sessionClear this app's own presence session for the signed-in user (sessionId).
teams_get_ presencesPresence of many people at once: ids (user ids, up to 650).
teams_set_ my_ automatic_ work_ locationLet Teams detect the signed-in user's work location (workLocationType and placeId from the network).
teams_set_ my_ preferred_ presenceSet how the signed-in user shows: availability Available, Busy, DoNotDisturb, BeRightBack, Away or Offline (activity is filled in to match), optional expirationDuration (ISO 8601, e.g. PT1H; default 1 day).
teams_set_ my_ status_ messageSet the signed-in user's status message: message (text), optional expiryDateTime (ISO).
teams_set_ my_ work_ locationSet where the signed-in user works today: workLocationType office, remote or timeOff (and placeId for an office).
teams_set_ presence_ sessionSet the presence of this app's own session for the signed-in user.
teams_add_ channel_ tabPin a tab in a channel: displayName, teamsApp@odata.bind ("https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{appId}") and configuration (entityId, contentUrl, websiteUrl).
teams_add_ chat_ tabPin a tab in a chat: displayName, teamsApp@odata.bind ("https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{appId}") and configuration (entityId, contentUrl, websiteUrl).
teams_get_ channel_ tabOne tab in a channel.
teams_get_ chat_ tabOne tab in a chat.
teams_list_ channel_ tabsList the tabs pinned in a channel (the Files tab is not included): id, displayName, webUrl, configuration; $expand=teamsApp names the app.
teams_list_ chat_ tabsList the tabs pinned in a chat (the Files tab is not included): id, displayName, webUrl, configuration; $expand=teamsApp names the app.
teams_remove_ channel_ tabRemove a tab from a channel.
teams_remove_ chat_ tabRemove a tab from a chat.
teams_update_ channel_ tabRename a tab or change its configuration in a channel.
teams_update_ chat_ tabRename a tab or change its configuration in a chat.
teams_create_ subscriptionGet notified at your own https URL when Teams data changes: resource (/chats/{chatId}/messages, /teams/{teamId}/channels/{channelId}/messages, /users/{userId}/chats/getAllMessages, /teams/{teamId}/channels, /chats/{chatId}/members, /communications/presences/{userId}), changeType (created,updated,deleted), notificationUrl.
teams_delete_ subscriptionStop a change-notification subscription.
teams_get_ subscriptionOne change-notification subscription.
teams_list_ subscriptionsList the change-notification subscriptions this connection's app holds for the signed-in user.
teams_reauthorize_ subscriptionAnswer a reauthorizationRequired lifecycle notification so the subscription keeps delivering.
teams_renew_ subscriptionExtend a subscription: expirationDateTime (Teams messages and chats: up to 3 days; presence: 1 hour).
teams_create_ tagCreate a tag with its members: displayName (up to 40 characters), description, members (user ids: [{ "userId": "..." }], 1 to 25).
teams_delete_ tagDelete a tag.
teams_get_ tagOne tag.
teams_list_ tagsList a team's tags (groups of people you can @mention together): id, displayName, memberCount.
teams_update_ tagRename a tag or change its description.
teams_get_ userOne person's basic profile by email address or user id: id, displayName, mail, userPrincipalName, jobTitle.
teams_get_ teams_ app_ settingsOrganization settings for Teams apps (whether people may install apps that need resource-specific consent).
teams_get_ teamwork_ settingsOrganization-wide Teams facts: whether Teams is enabled and the region (an administrator-approved permission).
teams_update_ teams_ app_ settingsChange the organization's Teams app settings (Teams administrator).
teams_list_ drive_ folder_ itemsList the files and folders in a channel's Files folder (or any folder you can read): give driveId and itemId from get_channel_files_folder.
teams_microsoft_ search_ querySearch the signed-in user's Teams chat and channel messages with Microsoft Search: query (words, "exact phrase", from:ada, sent>=2026-10-01), size (1 to 25, default 25), from (offset).
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Microsoft Teams side.
Register an app in the Microsoft Entra admin center for multiple Entra ID tenants, add PopMCP's Redirect URI under Authentication as a Web platform, copy the Application (client) ID and a client secret Value into PopMCP, tick what PopMCP may do in Teams, then click Sign in with Microsoft and approve access on Microsoft's own page.
00001111-aaaa-2222-bbbb-3333cccc4444••••••••••••3f7aLeave empty unless your app is single tenantpost_to_channel, send_direct_message and send_chat_message post the moment the AI calls them, and Teams notifies the people in that chat or channel right away. New connections start read-only, only clients ticked on the PopMCP consent screen reach Teams, and PopMCP sees only the teams, channels and chats your account is in.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Microsoft Teams credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
What did I miss in my Teams chats since yesterday?
teams_recent_chatsok
Then just ask for the work
“What did I miss in my Teams chats since yesterday?”
“Summarize this week's conversations in the Launch channel of the Marketing team”
“Post the release notes in Marketing's General channel and mention Priya”
“Message sam@contoso.com and ask whether the contract is signed”
“Give me the transcript of this morning's standup and list the action items”
“Who joined Tuesday's client call, and for how long?”
“Is Dana free right now? Then set me to Do not disturb for an hour”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Microsoft Teams behind an AI client.
Sign in with your work or school Microsoft account and approve access on Microsoft's own page, so your password never reaches PopMCP. Today that sign-in runs through an app you register once in the Microsoft Entra admin center: pick Multiple Entra ID tenants, add PopMCP's Redirect URI under Authentication as a Web platform, then copy the Application (client) ID and a client secret Value into the connect form and tick what PopMCP may do in Teams. Tokens renew on their own after that.
No. Microsoft offers Teams data through Microsoft Graph only for work or school accounts on Microsoft 365, so PopMCP refuses a personal Outlook.com or Microsoft Teams (free) account when you connect. Sign in with the account your organization gave you.
The part that is always included (your teams and channels, your chat list, sending messages, people and presence) needs no administrator by Microsoft's rules. Read chats and meetings, ticked by default, needs one in organizations that let Microsoft manage consent, and the other five options need one too. An admin approves once for everyone: in the Entra admin center open Entra ID, Enterprise apps, pick the app, then Permissions and Grant admin consent. Your organization's own settings can be stricter.
Yes. read_channel and post_to_channel take a team and channel name or a Teams link, so nobody has to look up ids. Mentions take email addresses, or channel and team to notify everyone, and replyTo answers in an existing thread. Reading channel posts needs the Read channel messages and files option; posting does not.
Yes, once a meeting was transcribed. get_meeting_transcript takes the join link or the numeric meeting ID and returns plain speaker lines, and meeting_attendance lists who joined and for how long after a meeting you organized ends. Transcripts need the Meeting transcripts and recordings option, which a Microsoft 365 administrator approves.
21 in total. Instant notifications for a chat message received, edited or deleted, a channel message posted or edited, a new chat, a new channel, a new team member and a presence change. Polling for new messages in a chat you watch and changes to a channel's conversations. Change detection for joining a team, a transcript, recording or attendance report becoming ready, a time off request, an open shift, a new tab, a new app in a team and a new tag. One threshold fires when unread chats pile up past the number you set.
43 everyday tools load by default, including the 13 that do several steps at once: recent_chats, read_chat, read_channel, post_to_channel, send_direct_message, find_people, get_meeting_transcript and more. All 265 operations stay reachable through search_tools, describe_tool and raw_operation, 119 that read and 146 that write, from Shifts schedules and time cards to tabs, apps, tags and change notifications.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Microsoft Teams in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Microsoft Teams on the consent screen. The Microsoft Teams tools are then available in that session, and no Microsoft Teams credential is stored on your machine.
Loading 278 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 43-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 278 here. A trigger is something PopMCP watches for you: 21 Microsoft Teams events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Microsoft Teams.
Launch a hosted MCP endpoint for Microsoft Teams, keep tool access under control, and start testing real workflow prompts right away.