Teams Send Message
teams_send_messageSends a text message to a Microsoft Teams chat as a connected Microsoft 365 work or school account (connect_m365_account), through Microsoft 365. The chat_id MUST come from teams_list_chats of the same account — never fabricate ids. This is a write operation: the first call returns a preview that says who is in the chat (or that they could not be read: chat_unresolved), the second call (with confirm=true) actually sends. Show the user those participants before confirming, above all when participants_state is not "resolved" or has_external_members is true. sent:true means Microsoft accepted the message; teams_search_messages reads Microsoft's search index, which can lag behind a send, so a zero-result search right after sending is NOT evidence the send failed.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Plain-text message body. Max 28000 chars. No formatting / mentions / attachments. | |
| account | No | Which connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account. | |
| chat_id | Yes | Chat id from teams_list_chats (e.g. '19:<uuid>_<uuid>@unq.gbl.spaces' for 1:1, '19:<id>@thread.v2' for a group) | |
| confirm | No | Must be true to actually send. Without it, returns a preview and sends nothing: the preview reads who is in the chat (`chat`: title, participants, participant_count, participants_state, has_external_members), or says chat_unresolved when that could not be read. | |
| remember | No | With confirm: true, also stop asking for this kind of action from now on. Only when the person said so ("don't ask again"). The person can revoke it in LMCP or with set_always_allowed. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||