Microsoft Teams Automation via Rube MCP
Selective Reading Rule
Start with:
references/senior-master-standard.md
references/usage-routing.md
references/quality-checklist.md
Then load only the inherited docs, scripts, assets, or examples that match the user's actual task.
Automate Microsoft Teams operations through Composio's Microsoft Teams toolkit via Rube MCP.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Microsoft Teams connection via
RUBE_MANAGE_CONNECTIONS with toolkit microsoft_teams
- Always call
RUBE_SEARCH_TOOLS first to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLS responds
- Call
RUBE_MANAGE_CONNECTIONS with toolkit microsoft_teams
- If connection is not ACTIVE, follow the returned auth link to complete Microsoft OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Send Channel Messages
When to use: User wants to post a message to a Teams channel
Tool sequence:
MICROSOFT_TEAMS_TEAMS_LIST - List teams to find target team [Prerequisite]
MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS - List channels in the team [Prerequisite]
MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE - Post the message [Required]
Key parameters:
team_id: UUID of the team (from TEAMS_LIST)
channel_id: Channel ID (from LIST_CHANNELS, format: '19:...@thread.tacv2')
content: Message text or HTML
content_type: 'text' or 'html'
Pitfalls:
- team_id must be a valid UUID format
- channel_id must be in thread format (e.g., '19:abc@thread.tacv2')
- TEAMS_LIST may paginate (~100 items/page); follow @odata.nextLink to find all teams
- LIST_CHANNELS can return 403 if user lacks access to the team
- Messages over ~28KB can trigger 400/413 errors; split long content
- Throttling may return 429; use exponential backoff (1s/2s/4s)
2. Send Chat Messages
When to use: User wants to send a direct or group chat message
Tool sequence:
MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS - List existing chats [Optional]
MICROSOFT_TEAMS_LIST_USERS - Find users for new chats [Optional]
MICROSOFT_TEAMS_TEAMS_CREATE_CHAT - Create a new chat [Optional]
MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE - Send the message [Required]
Key parameters:
chat_id: Chat ID (from GET_ALL_CHATS or CREATE_CHAT)
content: Message content
content_type: 'text' or 'html'
chatType: 'oneOnOne' or 'group' (for CREATE_CHAT)
members: Array of member objects (for CREATE_CHAT)
Pitfalls:
- CREATE_CHAT requires the authenticated user as one of the members
- oneOnOne chats return existing chat if one already exists between the two users
- group chats require at least one member with 'owner' role
- member user_odata_bind must use full Microsoft Graph URL format
- Chat filter support is very limited; filter client-side when needed
3. Create Online Meetings
When to use: User wants to schedule a Microsoft Teams meeting
Tool sequence:
MICROSOFT_TEAMS_LIST_USERS - Find participant user IDs [Optional]
MICROSOFT_TEAMS_CREATE_MEETING - Create the meeting [Required]
Key parameters:
subject: Meeting title
start_date_time: ISO 8601 start time (e.g., '2024-08-15T10:00:00Z')
end_date_time: ISO 8601 end time (must be after start)
participants: Array of user objects with user_id and role
Pitfalls:
- end_date_time must be strictly after start_date_time
- Participants require valid Microsoft user_id (GUID) values, not emails
- This creates a standalone meeting not linked to a calendar event
- For calendar-linked meetings, use OUTLOOK_CALENDAR_CREATE_EVENT with is_online_meeting=true
4. Manage Teams and Channels
When to use: User wants to list, create, or manage teams and channels
Tool sequence:
MICROSOFT_TEAMS_TEAMS_LIST - List all accessible teams [Required]
MICROSOFT_TEAMS_GET_TEAM - Get details for a specific team [Optional]
MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS - List channels in a team [Optional]
MICROSOFT_TEAMS_GET_CHANNEL - Get channel details [Optional]
MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL - Create a new channel [Optional]
MICROSOFT_TEAMS_LIST_TEAM_MEMBERS - List team members [Optional]
MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM - Add a member to the team [Optional]
Key parameters:
team_id: Team UUID
channel_id: Channel ID in thread format
filter: OData filter string (e.g., "startsWith(displayName,'Project')")
select: Comma-separated properties to return
Pitfalls:
- TEAMS_LIST pagination: follow @odata.nextLink in large tenants
- Private/shared channels may be omitted unless permissions align
- GET_CHANNEL returns 404 if team_id or channel_id is wrong
- Always source IDs from list operations; do not guess ID formats
5. Search Messages
When to use: User wants to find messages across Teams chats and channels
Tool sequence:
MICROSOFT_TEAMS_SEARCH_MESSAGES - Search with KQL syntax [Required]
Key parameters:
query: KQL search query (supports from:, sent:, attachments, boolean logic)
Pitfalls:
- Newly posted messages may take 30-60 seconds to appear in search
- Search is eventually consistent; do not rely on it for immediate delivery confirmation
- Use message listing tools for real-time message verification
Common Patterns
Team and Channel ID Resolution
1. Call MICROSOFT_TEAMS_TEAMS_LIST
2. Find team by displayName
3. Extract team id (UUID format)
4. Call MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS with team_id
5. Find channel by displayName
6. Extract channel id (19:...@thread.tacv2 format)
User Resolution
1. Call MICROSOFT_TEAMS_LIST_USERS
2. Filter by displayName or email
3. Extract user id (UUID format)
4. Use for meeting participants, chat members, or team operations
Pagination
- Teams/Users: Follow @odata.nextLink URL for next page
- Chats: Auto-paginates up to limit; use top for page size (max 50)
- Use
top parameter to control page size
- Continue until @odata.nextLink is absent
Known Pitfalls
Authentication and Permissions:
- Different operations require different Microsoft Graph permissions
- 403 errors indicate insufficient permissions or team access
- Some operations require admin consent in the Azure AD tenant
ID Formats:
- Team IDs: UUID format (e.g., '87b0560f-fc0d-4442-add8-b380ca926707')
- Channel IDs: Thread format (e.g., '19:abc123@thread.tacv2')
- Chat IDs: Various formats (e.g., '19:meeting_xxx@thread.v2')
- User IDs: UUID format
- Never guess IDs; always resolve from list operations
Rate Limits:
- Microsoft Graph enforces throttling
- 429 responses include Retry-After header
- Keep requests to a few per second
- Batch operations help reduce total request count
Message Formatting:
- HTML content_type supports rich formatting
- Adaptive cards require additional handling
- Message size limit is approximately 28KB
- Split long content into multiple messages
Quick Reference
| Task |
Tool Slug |
Key Params |
| List teams |
MICROSOFT_TEAMS_TEAMS_LIST |
filter, select, top |
| Get team details |
MICROSOFT_TEAMS_GET_TEAM |
team_id |
| List channels |
MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS |
team_id, filter |
| Get channel |
MICROSOFT_TEAMS_GET_CHANNEL |
team_id, channel_id |
| Create channel |
MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL |
team_id, displayName |
| Post to channel |
MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE |
team_id, channel_id, content |
| List chats |
MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS |
user_id, limit |
| Create chat |
MICROSOFT_TEAMS_TEAMS_CREATE_CHAT |
chatType, members, topic |
| Post to chat |
MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE |
chat_id, content |
| Create meeting |
MICROSOFT_TEAMS_CREATE_MEETING |
subject, start_date_time, end_date_time |
| List users |
MICROSOFT_TEAMS_LIST_USERS |
filter, select, top |
| List team members |
MICROSOFT_TEAMS_LIST_TEAM_MEMBERS |
team_id |
| Add team member |
MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM |
team_id, user_id |
| Search messages |
MICROSOFT_TEAMS_SEARCH_MESSAGES |
query |
| Get chat message |
MICROSOFT_TEAMS_GET_CHAT_MESSAGE |
chat_id, message_id |
| List joined teams |
MICROSOFT_TEAMS_LIST_USER_JOINED_TEAMS |
(none) |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
1---2name: microsoft-teams-automation3description: ALWAYS use this when the request matches Microsoft Teams Automation: Automate Microsoft Teams tasks via Rube MCP (Composio): send messages, manage channels, create meetings, handle chats, and search messages.4---56# Microsoft Teams Automation via Rube MCP78## Selective Reading Rule910Start with:1112- `references/senior-master-standard.md`13- `references/usage-routing.md`14- `references/quality-checklist.md`1516Then load only the inherited docs, scripts, assets, or examples that match the user's actual task.1718Automate Microsoft Teams operations through Composio's Microsoft Teams toolkit via Rube MCP.1920## Prerequisites2122- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)23- Active Microsoft Teams connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `microsoft_teams`24- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas2526## Setup2728**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.2930311. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds322. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `microsoft_teams`333. If connection is not ACTIVE, follow the returned auth link to complete Microsoft OAuth344. Confirm connection status shows ACTIVE before running any workflows3536## Core Workflows3738### 1. Send Channel Messages3940**When to use**: User wants to post a message to a Teams channel4142**Tool sequence**:431. `MICROSOFT_TEAMS_TEAMS_LIST` - List teams to find target team [Prerequisite]442. `MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS` - List channels in the team [Prerequisite]453. `MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE` - Post the message [Required]4647**Key parameters**:48- `team_id`: UUID of the team (from TEAMS_LIST)49- `channel_id`: Channel ID (from LIST_CHANNELS, format: '19:...@thread.tacv2')50- `content`: Message text or HTML51- `content_type`: 'text' or 'html'5253**Pitfalls**:54- team_id must be a valid UUID format55- channel_id must be in thread format (e.g., '19:abc@thread.tacv2')56- TEAMS_LIST may paginate (~100 items/page); follow @odata.nextLink to find all teams57- LIST_CHANNELS can return 403 if user lacks access to the team58- Messages over ~28KB can trigger 400/413 errors; split long content59- Throttling may return 429; use exponential backoff (1s/2s/4s)6061### 2. Send Chat Messages6263**When to use**: User wants to send a direct or group chat message6465**Tool sequence**:661. `MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS` - List existing chats [Optional]672. `MICROSOFT_TEAMS_LIST_USERS` - Find users for new chats [Optional]683. `MICROSOFT_TEAMS_TEAMS_CREATE_CHAT` - Create a new chat [Optional]694. `MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE` - Send the message [Required]7071**Key parameters**:72- `chat_id`: Chat ID (from GET_ALL_CHATS or CREATE_CHAT)73- `content`: Message content74- `content_type`: 'text' or 'html'75- `chatType`: 'oneOnOne' or 'group' (for CREATE_CHAT)76- `members`: Array of member objects (for CREATE_CHAT)7778**Pitfalls**:79- CREATE_CHAT requires the authenticated user as one of the members80- oneOnOne chats return existing chat if one already exists between the two users81- group chats require at least one member with 'owner' role82- member user_odata_bind must use full Microsoft Graph URL format83- Chat filter support is very limited; filter client-side when needed8485### 3. Create Online Meetings8687**When to use**: User wants to schedule a Microsoft Teams meeting8889**Tool sequence**:901. `MICROSOFT_TEAMS_LIST_USERS` - Find participant user IDs [Optional]912. `MICROSOFT_TEAMS_CREATE_MEETING` - Create the meeting [Required]9293**Key parameters**:94- `subject`: Meeting title95- `start_date_time`: ISO 8601 start time (e.g., '2024-08-15T10:00:00Z')96- `end_date_time`: ISO 8601 end time (must be after start)97- `participants`: Array of user objects with user_id and role9899**Pitfalls**:100- end_date_time must be strictly after start_date_time101- Participants require valid Microsoft user_id (GUID) values, not emails102- This creates a standalone meeting not linked to a calendar event103- For calendar-linked meetings, use OUTLOOK_CALENDAR_CREATE_EVENT with is_online_meeting=true104105### 4. Manage Teams and Channels106107**When to use**: User wants to list, create, or manage teams and channels108109**Tool sequence**:1101. `MICROSOFT_TEAMS_TEAMS_LIST` - List all accessible teams [Required]1112. `MICROSOFT_TEAMS_GET_TEAM` - Get details for a specific team [Optional]1123. `MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS` - List channels in a team [Optional]1134. `MICROSOFT_TEAMS_GET_CHANNEL` - Get channel details [Optional]1145. `MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL` - Create a new channel [Optional]1156. `MICROSOFT_TEAMS_LIST_TEAM_MEMBERS` - List team members [Optional]1167. `MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM` - Add a member to the team [Optional]117118**Key parameters**:119- `team_id`: Team UUID120- `channel_id`: Channel ID in thread format121- `filter`: OData filter string (e.g., "startsWith(displayName,'Project')")122- `select`: Comma-separated properties to return123124**Pitfalls**:125- TEAMS_LIST pagination: follow @odata.nextLink in large tenants126- Private/shared channels may be omitted unless permissions align127- GET_CHANNEL returns 404 if team_id or channel_id is wrong128- Always source IDs from list operations; do not guess ID formats129130### 5. Search Messages131132**When to use**: User wants to find messages across Teams chats and channels133134**Tool sequence**:1351. `MICROSOFT_TEAMS_SEARCH_MESSAGES` - Search with KQL syntax [Required]136137**Key parameters**:138- `query`: KQL search query (supports from:, sent:, attachments, boolean logic)139140**Pitfalls**:141- Newly posted messages may take 30-60 seconds to appear in search142- Search is eventually consistent; do not rely on it for immediate delivery confirmation143- Use message listing tools for real-time message verification144145## Common Patterns146147### Team and Channel ID Resolution148149```1501. Call MICROSOFT_TEAMS_TEAMS_LIST1512. Find team by displayName1523. Extract team id (UUID format)1534. Call MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS with team_id1545. Find channel by displayName1556. Extract channel id (19:...@thread.tacv2 format)156```157158### User Resolution159160```1611. Call MICROSOFT_TEAMS_LIST_USERS1622. Filter by displayName or email1633. Extract user id (UUID format)1644. Use for meeting participants, chat members, or team operations165```166167### Pagination168169- Teams/Users: Follow @odata.nextLink URL for next page170- Chats: Auto-paginates up to limit; use top for page size (max 50)171- Use `top` parameter to control page size172- Continue until @odata.nextLink is absent173174## Known Pitfalls175176**Authentication and Permissions**:177- Different operations require different Microsoft Graph permissions178- 403 errors indicate insufficient permissions or team access179- Some operations require admin consent in the Azure AD tenant180181**ID Formats**:182- Team IDs: UUID format (e.g., '87b0560f-fc0d-4442-add8-b380ca926707')183- Channel IDs: Thread format (e.g., '19:abc123@thread.tacv2')184- Chat IDs: Various formats (e.g., '19:meeting_xxx@thread.v2')185- User IDs: UUID format186- Never guess IDs; always resolve from list operations187188**Rate Limits**:189- Microsoft Graph enforces throttling190- 429 responses include Retry-After header191- Keep requests to a few per second192- Batch operations help reduce total request count193194**Message Formatting**:195- HTML content_type supports rich formatting196- Adaptive cards require additional handling197- Message size limit is approximately 28KB198- Split long content into multiple messages199200## Quick Reference201202| Task | Tool Slug | Key Params |203|------|-----------|------------|204| List teams | MICROSOFT_TEAMS_TEAMS_LIST | filter, select, top |205| Get team details | MICROSOFT_TEAMS_GET_TEAM | team_id |206| List channels | MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS | team_id, filter |207| Get channel | MICROSOFT_TEAMS_GET_CHANNEL | team_id, channel_id |208| Create channel | MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL | team_id, displayName |209| Post to channel | MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE | team_id, channel_id, content |210| List chats | MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS | user_id, limit |211| Create chat | MICROSOFT_TEAMS_TEAMS_CREATE_CHAT | chatType, members, topic |212| Post to chat | MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE | chat_id, content |213| Create meeting | MICROSOFT_TEAMS_CREATE_MEETING | subject, start_date_time, end_date_time |214| List users | MICROSOFT_TEAMS_LIST_USERS | filter, select, top |215| List team members | MICROSOFT_TEAMS_LIST_TEAM_MEMBERS | team_id |216| Add team member | MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM | team_id, user_id |217| Search messages | MICROSOFT_TEAMS_SEARCH_MESSAGES | query |218| Get chat message | MICROSOFT_TEAMS_GET_CHAT_MESSAGE | chat_id, message_id |219| List joined teams | MICROSOFT_TEAMS_LIST_USER_JOINED_TEAMS | (none) |220221## When to Use222This skill is applicable to execute the workflow or actions described in the overview.223224## Limitations225- Use this skill only when the task clearly matches the scope described above.226- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.227- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.