# Microsoft Viva Engage

```json
{
  "name": "Microsoft Viva Engage",
  "slug": "microsoft_viva_engage",
  "url": "https://composio.dev/toolkits/microsoft_viva_engage",
  "markdown_url": "https://composio.dev/toolkits/microsoft_viva_engage.md",
  "logo_url": "https://logos.composio.dev/api/microsoft_viva_engage",
  "categories": [
    "collaboration & communication"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-11-12T05:35:00.486Z"
}
```

![Microsoft Viva Engage logo](https://logos.composio.dev/api/microsoft_viva_engage)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Microsoft Viva Engage MCP or direct API to manage communities, list members, assign owners, and discover engagement roles through natural language.

## Summary

Microsoft Viva Engage is an enterprise social network for conversations, communities, and collaboration.
It helps organizations connect employees and share knowledge across teams.

## Categories

- collaboration & communication

## Toolkit Details

- Tools: 19

## Images

- Logo: https://logos.composio.dev/api/microsoft_viva_engage

## Authentication

- **Oauth2**
  - Type: `oauth2`
  - Description: Oauth2 authentication for Microsoft Viva Engage.
  - Setup:
    - Configure Oauth2 credentials for Microsoft Viva Engage.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- List all Viva Engage communities I manage
- Find owners for inactive Viva Engage communities
- Show members of the leadership community

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `MICROSOFT_VIVA_ENGAGE_ADD_COMMUNITY_MEMBER` | Add Community Member | Add one Microsoft Entra user to a Viva Engage community by adding the user to its associated Microsoft 365 group. Requires group_id from community.groupId, not the Viva Engage community ID. |
| `MICROSOFT_VIVA_ENGAGE_ADD_COMMUNITY_MEMBERS_BULK` | Add Community Members in Bulk | Atomically add up to 20 users to a Viva Engage community's associated Microsoft 365 group. If any user reference is invalid, no users are added. |
| `MICROSOFT_VIVA_ENGAGE_ADD_COMMUNITY_OWNER` | Add Community Owner | Make one Microsoft Entra user a Viva Engage community admin by adding the user as an owner of the community's associated Microsoft 365 group. This grants administrative privileges: confirm the target user and group before calling. Add the owner as a member separately if member capabilities are also required. Requires group_id from community.groupId, not the Viva Engage community ID. |
| `MICROSOFT_VIVA_ENGAGE_ASSIGN_ENGAGEMENT_ROLE_MEMBER` | Assign Engagement Role Member | Assign one predefined Viva Engage administrative or corporate communication role to a Microsoft Entra user. This changes the user's privileges; confirm both the role and target user before calling. Retain the returned member ID for safe removal; Graph currently uses the target user ID as that member ID when this route returns 204. |
| `MICROSOFT_VIVA_ENGAGE_CREATE_COMMUNITY` | Create Community | Start asynchronous creation of a Viva Engage community. This provisions Microsoft 365 tenant resources and returns an operation reference; poll the operation separately before treating the community as created. |
| `MICROSOFT_VIVA_ENGAGE_DELETE_COMMUNITY` | Delete Community | Permanently delete a Viva Engage community and all associated Microsoft 365 content, including its connected group, OneNote notebook, and Planner plans. This destructive action cannot be undone. |
| `MICROSOFT_VIVA_ENGAGE_GET_COMMUNITY` | Get Community | Get one Viva Engage community by community ID, including its distinct associated Microsoft 365 group ID. |
| `MICROSOFT_VIVA_ENGAGE_GET_ENGAGEMENT_ASYNC_OPERATION` | Get Engagement Async Operation | Get the status and resulting resource reference for a Viva Engage asynchronous operation such as community creation. Make separate calls more than 30 seconds apart while polling. |
| `MICROSOFT_VIVA_ENGAGE_LIST_COMMUNITIES` | List Communities | List Viva Engage communities in the tenant, one Microsoft Graph page at a time, including each community ID and associated Microsoft 365 group ID. |
| `MICROSOFT_VIVA_ENGAGE_LIST_COMMUNITY_MEMBERS` | List Community Members | List direct members of a Viva Engage community's associated Microsoft 365 group, one Microsoft Graph OData page at a time. Requires group_id from community.groupId, not the Viva Engage community ID. Hidden members are visible only when the connection also has Member.Read.Hidden. |
| `MICROSOFT_VIVA_ENGAGE_LIST_COMMUNITY_OWNERS` | List Community Owners | List owners of a Viva Engage community's associated Microsoft 365 group, who are community admins, one Microsoft Graph OData page at a time. Requires group_id from community.groupId, not the Viva Engage community ID. |
| `MICROSOFT_VIVA_ENGAGE_LIST_ENGAGEMENT_ROLE_MEMBERS` | List Viva Engage Role Members | List users assigned to one predefined Viva Engage role and return the selected assignment properties. Include id for later removal and userId for identity correlation. Requires a role_id from List Viva Engage Roles and a native-mode Viva Engage network; legacy and external networks are unsupported. |
| `MICROSOFT_VIVA_ENGAGE_LIST_ENGAGEMENT_ROLES` | List Viva Engage Roles | List the predefined administrative and corporate communication roles that can be assigned in Viva Engage, one Microsoft Graph page at a time. Custom roles cannot be created, and this API supports only native-mode Viva Engage networks with a work or school account. |
| `MICROSOFT_VIVA_ENGAGE_LIST_MY_ASSIGNED_ENGAGEMENT_ROLES` | List My Assigned Viva Engage Roles | List Viva Engage roles assigned to the signed-in work or school user, one Microsoft Graph page at a time. |
| `MICROSOFT_VIVA_ENGAGE_LIST_USER_ASSIGNED_ENGAGEMENT_ROLES` | List User Assigned Viva Engage Roles | List Viva Engage roles assigned to a specified Microsoft Entra user, one Microsoft Graph page at a time. |
| `MICROSOFT_VIVA_ENGAGE_REMOVE_COMMUNITY_MEMBER` | Remove Community Member | Remove one user from a Viva Engage community's associated Microsoft 365 group, revoking community membership without deleting the user object. Dynamic-group memberships cannot be changed with this action. The request always retains the safety-critical /$ref suffix. |
| `MICROSOFT_VIVA_ENGAGE_REMOVE_COMMUNITY_OWNER` | Remove Community Owner | Remove a user's community admin status by removing the user as an owner of the Viva Engage community's associated Microsoft 365 group. This is destructive to admin access: verify another user owner remains because Microsoft Graph does not allow removal of the last user owner. The request always retains the safety-critical /$ref suffix. |
| `MICROSOFT_VIVA_ENGAGE_REMOVE_ENGAGEMENT_ROLE_MEMBER` | Remove Engagement Role Member | Revoke one user's Viva Engage role assignment. This can remove administrative or corporate communication privileges: confirm the role and assignment before calling. Use the role_member_id returned by listing or assigning role members; Graph currently uses the target user ID as this member ID on assignment. |
| `MICROSOFT_VIVA_ENGAGE_UPDATE_COMMUNITY` | Update Community | Update a Viva Engage community's name, description, or privacy by community ID. Provide at least one field; omitted fields remain unchanged. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to Microsoft Viva Engage
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["microsoft_viva_engage"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["microsoft_viva_engage"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run Microsoft Viva Engage tools with your agent

Send a request, execute the Microsoft Viva Engage tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "List all Microsoft Viva Engage communities I can access and show each community's current owner"}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "List all Microsoft Viva Engage communities I can access and show each community's current owner" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to Microsoft Viva Engage and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["microsoft_viva_engage"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["microsoft_viva_engage"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a Microsoft Viva Engage request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to Microsoft Viva Engage tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("List all Microsoft Viva Engage communities I can access and show each community's current owner")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "List all Microsoft Viva Engage communities I can access and show each community's current owner",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native Microsoft Viva Engage Integration

- Supports both Microsoft Viva Engage MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Microsoft Viva Engage data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Microsoft Viva Engage access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Microsoft Viva Engage
- Scoped, least privilege access to Microsoft Viva Engage resources
- Full audit trail of agent actions to support review and compliance

## Use Microsoft Viva Engage with any AI Agent Framework

Choose a framework you want to connect Microsoft Viva Engage with:

- [ChatGPT](https://composio.dev/toolkits/microsoft_viva_engage/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/microsoft_viva_engage/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/microsoft_viva_engage/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/microsoft_viva_engage/framework/atomic-agent)

## Related Toolkits

- [Gmail](https://composio.dev/toolkits/gmail) - Gmail is Google's email service with powerful spam protection, search, and G Suite integration. It keeps your inbox organized and makes communication fast and reliable.
- [Outlook](https://composio.dev/toolkits/outlook) - Outlook is Microsoft's email and calendaring platform for unified communications and scheduling. It helps users stay organized with powerful email, contacts, and calendar management.
- [Slack](https://composio.dev/toolkits/slack) - Slack is a channel-based messaging platform for teams and organizations. It helps people collaborate in real time, share files, and connect all their tools in one place.
- [Gong](https://composio.dev/toolkits/gong) - Gong is a platform for video meetings, call recording, and team collaboration. It helps teams capture conversations, analyze calls, and turn insights into action.
- [Microsoft teams](https://composio.dev/toolkits/microsoft_teams) - Microsoft Teams is a collaboration platform that combines chat, meetings, and file sharing within Microsoft 365. It keeps distributed teams connected and productive through seamless virtual communication.
- [Slackbot](https://composio.dev/toolkits/slackbot) - Slackbot is a conversational automation tool for Slack that handles reminders, notifications, and automated responses. It boosts team productivity by streamlining onboarding, answering FAQs, and managing timely alerts—all right inside Slack.
- [2chat](https://composio.dev/toolkits/_2chat) - 2chat is an API platform for WhatsApp and multichannel text messaging. It streamlines chat automation, group management, and real-time messaging for developers.
- [Agent mail](https://composio.dev/toolkits/agent_mail) - Agent mail provides AI agents with dedicated email inboxes for sending, receiving, and managing emails. It empowers agents to communicate autonomously with people, services, and other agents—no human intervention needed.
- [Aircall](https://composio.dev/toolkits/aircall) - Aircall is a cloud-based phone and call-center platform for business communications. It centralizes calls, contacts, teams, numbers, and tags in one place.
- [Android Texter](https://composio.dev/toolkits/android_texter) - Android Texter is an API service that connects Android phones to SMS, MMS, contacts, and device data. Use it to automate mobile messaging without building your own phone-to-API bridge.
- [Basecamp](https://composio.dev/toolkits/basecamp) - Basecamp is a project management and team collaboration tool by 37signals. It helps teams organize tasks, share files, and communicate efficiently in one place.
- [Blooio](https://composio.dev/toolkits/blooio) - Blooio is a stable v2 API platform for messaging, chats, contacts, groups, phone numbers, and account analytics. It gives teams a clean way to build reliable communication workflows without stitching together fragile custom APIs.
- [Callback24](https://composio.dev/toolkits/callback24) - Callback24 is a telephony API for managing phone calls, users, services, and routing groups. It centralizes call control and routing to automate voice workflows and operations.
- [CallOnTheGo](https://composio.dev/toolkits/callonthego) - CallOnTheGo is a telephony API for managing phone numbers, caller IDs, suppression lists, audio assets, contact lists, and Voice AI campaigns. It provides programmatic control over calling infrastructure and campaign automation for scalable voice outreach.
- [Carbon Voice MCP](https://composio.dev/toolkits/carbon_voice_mcp) - Carbon Voice MCP is a voice-first collaboration platform for messages, conversations, and workflows. Use it to centralize voice communications and streamline team collaboration.
- [CardClan](https://composio.dev/toolkits/cardclan) - CardClan is a digital card platform for creating and sending personalized team cards. Use it to celebrate moments, share card links, and manage card workflows without extra coordination.
- [Chatwork](https://composio.dev/toolkits/chatwork) - Chatwork is a team communication platform with group chats, file sharing, and task management. It helps businesses boost collaboration and streamline productivity.
- [Clickmeeting](https://composio.dev/toolkits/clickmeeting) - ClickMeeting is a cloud-based platform for running online meetings and webinars. It helps businesses and individuals host, manage, and engage virtual audiences with ease.
- [Confluence](https://composio.dev/toolkits/confluence) - Confluence is Atlassian's team collaboration and knowledge management platform. It helps your team organize, share, and update documents and project content in one secure workspace.
- [Daily](https://composio.dev/toolkits/daily) - Daily is a WebRTC video and audio API platform for building rooms, meetings, recordings, live streams, transcriptions, and telephony. It gives developers reliable real-time media infrastructure without managing complex conferencing stacks.

## Frequently Asked Questions

### Do I need my own developer credentials to use Microsoft Viva Engage with Composio?

Yes, Microsoft Viva Engage requires you to configure your own OAuth credentials. Once set up, Composio handles token storage, refresh, and lifecycle management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
