microsoft
teams.
Reads Microsoft Teams: where the person can read and post, and the messages
setup & usage
on the "Teams" card, click Authorize Teams and choose your work account. Nothing else to install or register. The account itself is the "Microsoft 365 account" connector: Teams borrows it and only adds its own permissions (your teams and channels, posting in a channel, your chats).
Microsoft lets a person authorize alone everything above, except reading the messages of a channel: that permission (ChannelMessage.Read.All) can only be granted by a Microsoft 365 administrator of the organization, once for everyone.
microsoft_admin_consent(services=["teams"]) gives the same link (valid seven days), for the account's directory or the one you name in tenantteams reads — where you can read and post (op=teams|channels|chats) and the messages (op=list|replies) — and teams_act(op=post|reply) writes: two tools, so that allowing reads never allows posting (your client asks you to confirm teams_act) — on a channel (team_id + channel_id) or a chat (chat_id), under the account the call names (_account=), otherwise the default one.
teams(); "the channels of Sales" → teams(op="channels", team_id="…"); "my chats" → teams(op="chats")teams(op="list", chat_id="…")teams(op="list", team_id="…", channel_id="…") (administrator's approval needed), and a thread → op="replies" with message_idteams_act(team_id="…", channel_id="…", body="…"); "answer in that thread" → teams_act(op="reply", …) with message_id; in a chat → teams_act with chat_idbody is written in markdown and posted as formatted text; each message comes back as text (full=true for the complete Microsoft Graph object)teams_act(op="post")list returns its root messages only; the replies of one are op="replies"19:…@thread.tacv2: pass them exactly as returnedteams, channels, chats: list them, read messages (channels with the administrator's approval), post, reply in a channel thread. Nothing creates a team or a channel, adds a member, edits or deletes a message, or reads files shared in Teams (those are in SharePoint: the "SharePoint & OneDrive" connector).
this connector accepts multiple comptes: connecting with another compte adds it alongside the others, named by its address; reconnecting with the same one replaces its own.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='teams')oto_identity(op='set', connector='teams', identity_id='<name>')_account) and adding upoutils
utilisation
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.pipx install oto-cli puis oto teams …