> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Entra ID Integration for AI Agents & Workflows

> Identity and access management via Microsoft Graph API for users, groups, and directory objects.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/microsoft-entra-id.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=0443f3d2aec7d611a9de3e8f3c2a5312" alt="Microsoft Entra ID logo" width="72" height="72" data-path="logos/microsoft-entra-id.svg" />

## Overview

Add **Microsoft Entra ID** to any ModuleX agent or workflow. Identity and access management via the Microsoft Graph API (`graph.microsoft.com/v1.0`) for managing users, groups, and directory objects in Microsoft Entra ID (formerly Azure Active Directory).

<Info>
  **Categories**: Developer Tools & Infrastructure · Identity & Access Management · Enterprise · Security · **Auth**: OAuth2 · **Actions**: 12
</Info>

## Authentication

### OAuth2 Authentication

Connect using Microsoft Entra ID OAuth (recommended)

#### Required Credentials

| Field         | Description                                | Required | Format                                     |
| ------------- | ------------------------------------------ | -------- | ------------------------------------------ |
| Client ID     | Microsoft Entra ID OAuth App Client ID     | Yes      | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`     |
| Client Secret | Microsoft Entra ID OAuth App Client Secret | Yes      | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |

#### OAuth Configuration

* **Authorization URL**: `https://login.microsoftonline.com/common/oauth2/v2.0/authorize`
* **Token URL**: `https://login.microsoftonline.com/common/oauth2/v2.0/token`
* **Scopes**: `User.Read`, `User.ReadWrite.All`, `Group.ReadWrite.All`, `GroupMember.ReadWrite.All`, `Directory.ReadWrite.All`

## Available Actions

<AccordionGroup>
  <Accordion title="add_member_to_group — Add a user as a member to a Microsoft Entra ID group.">
    ### Parameters

    <ResponseField name="group_id" type="string" required>
      Identifier of the group
    </ResponseField>

    <ResponseField name="user_id" type="string" required>
      Identifier of the user to add
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddMemberToGroupOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_group — Create a new group in Microsoft Entra ID.">
    ### Parameters

    <ResponseField name="display_name" type="string" required>
      The name to display in the address book for the group
    </ResponseField>

    <ResponseField name="mail_enabled" type="boolean" required>
      Set to true for mail-enabled groups
    </ResponseField>

    <ResponseField name="mail_nickname" type="string" required>
      The mail alias for the group, unique for groups in the organization. Maximum length is 64 characters.
    </ResponseField>

    <ResponseField name="security_enabled" type="boolean" required>
      Set to true for security-enabled groups
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "GroupSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "mail_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Enabled"
            },
            "mail_nickname": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Nickname"
            },
            "security_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Security Enabled"
            },
            "group_types": {
              "items": {
                "type": "string"
              },
              "title": "Group Types",
              "type": "array"
            },
            "deleted_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Deleted Date Time"
            }
          },
          "title": "GroupSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "group": {
          "anyOf": [
            {
              "$ref": "#/$defs/GroupSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateGroupOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_group — Delete a group in Microsoft Entra ID.">
    ### Parameters

    <ResponseField name="group_id" type="string" required>
      Identifier of the group to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteGroupOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_manager — Get the user's manager information. Returns the user or organizational contact assigned as the user's manager.">
    ### Parameters

    <ResponseField name="user_id" type="string">
      Identifier of the user. Leave empty to use the signed-in user.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ManagerInfo": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "email": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Email"
            },
            "job_title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Job Title"
            },
            "mobile_phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mobile Phone"
            }
          },
          "title": "ManagerInfo",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "manager": {
          "anyOf": [
            {
              "$ref": "#/$defs/ManagerInfo"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetManagerOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_ms365_groups — Get the user's Microsoft 365 groups (unified groups). Returns groups the user is a direct member of.">
    ### Parameters

    <ResponseField name="user_id" type="string">
      Identifier of the user. Leave empty to use the signed-in user.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "GroupSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "mail_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Enabled"
            },
            "mail_nickname": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Nickname"
            },
            "security_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Security Enabled"
            },
            "group_types": {
              "items": {
                "type": "string"
              },
              "title": "Group Types",
              "type": "array"
            },
            "deleted_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Deleted Date Time"
            }
          },
          "title": "GroupSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "groups": {
          "items": {
            "$ref": "#/$defs/GroupSummary"
          },
          "title": "Groups",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetMs365GroupsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_organization_groups — List all groups in the organization (excluding dynamic distribution groups).">
    ### Response

    ```json theme={null}
    {
      "$defs": {
        "GroupSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "mail_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Enabled"
            },
            "mail_nickname": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Nickname"
            },
            "security_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Security Enabled"
            },
            "group_types": {
              "items": {
                "type": "string"
              },
              "title": "Group Types",
              "type": "array"
            },
            "deleted_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Deleted Date Time"
            }
          },
          "title": "GroupSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "groups": {
          "items": {
            "$ref": "#/$defs/GroupSummary"
          },
          "title": "Groups",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetOrganizationGroupsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_organization_users — List all users in the organization. By default returns only enabled accounts.">
    ### Parameters

    <ResponseField name="max_users" type="integer">
      Maximum number of users to return. Omit for no limit.
    </ResponseField>

    <ResponseField name="filter" type="string">
      OData filter expression, e.g. 'accountEnabled eq true' (Default: `accountEnabled eq true`)
    </ResponseField>

    <ResponseField name="search" type="string">
      OData search expression, e.g. '"displayName:John"'
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "UserSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "full_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Full Name"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "email": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Email"
            },
            "user_principal_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "User Principal Name"
            },
            "surname": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Surname"
            },
            "given_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Given Name"
            },
            "job_title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Job Title"
            },
            "mobile_phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mobile Phone"
            }
          },
          "title": "UserSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "users": {
          "items": {
            "$ref": "#/$defs/UserSummary"
          },
          "title": "Users",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetOrganizationUsersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_profile — Get the user's profile information from Microsoft Entra ID.">
    ### Parameters

    <ResponseField name="user_id" type="string">
      Identifier of the user. Leave empty to use the signed-in user.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Data"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetProfileOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="remove_member_from_group — Remove a member from a Microsoft Entra ID group.">
    ### Parameters

    <ResponseField name="group_id" type="string" required>
      Identifier of the group
    </ResponseField>

    <ResponseField name="user_id" type="string" required>
      Identifier of the user to remove
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "RemoveMemberFromGroupOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_groups — Search for groups by name or description in Microsoft Entra ID.">
    ### Parameters

    <ResponseField name="query" type="string" required>
      Keywords to search by
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      The maximum number of groups to return (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "GroupSummary": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "mail_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Enabled"
            },
            "mail_nickname": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mail Nickname"
            },
            "security_enabled": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Security Enabled"
            },
            "group_types": {
              "items": {
                "type": "string"
              },
              "title": "Group Types",
              "type": "array"
            },
            "deleted_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Deleted Date Time"
            }
          },
          "title": "GroupSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "groups": {
          "items": {
            "$ref": "#/$defs/GroupSummary"
          },
          "title": "Groups",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchGroupsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_group — Update an existing group in Microsoft Entra ID.">
    ### Parameters

    <ResponseField name="group_id" type="string" required>
      Identifier of the group to update
    </ResponseField>

    <ResponseField name="allow_external_senders" type="boolean">
      Whether people external to the organization can send messages to the group
    </ResponseField>

    <ResponseField name="auto_subscribe_new_members" type="boolean">
      Whether new members added to the group will be auto-subscribed to receive email notifications
    </ResponseField>

    <ResponseField name="description" type="string">
      An optional description for the group
    </ResponseField>

    <ResponseField name="display_name" type="string">
      The name to display in the address book for the group
    </ResponseField>

    <ResponseField name="mail_nickname" type="string">
      The mail alias for the group. Maximum length is 64 characters.
    </ResponseField>

    <ResponseField name="security_enabled" type="boolean">
      Set to true for security-enabled groups
    </ResponseField>

    <ResponseField name="visibility" type="string">
      Specifies the visibility of the group. Allowed values: Public, Private.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateGroupOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_user — Update an existing user in Microsoft Entra ID.">
    ### Parameters

    <ResponseField name="user_id" type="string" required>
      Identifier of the user to update
    </ResponseField>

    <ResponseField name="display_name" type="string">
      The name to display in the address book for the user
    </ResponseField>

    <ResponseField name="mail" type="string">
      The SMTP address for the user
    </ResponseField>

    <ResponseField name="mail_nickname" type="string">
      The mail alias for the user
    </ResponseField>

    <ResponseField name="account_enabled" type="boolean">
      Whether the account is enabled (Default: `true`)
    </ResponseField>

    <ResponseField name="street_address" type="string">
      The street address of the user's place of business
    </ResponseField>

    <ResponseField name="city" type="string">
      The city in which the user is located
    </ResponseField>

    <ResponseField name="state" type="string">
      The state or province in the user's address
    </ResponseField>

    <ResponseField name="postal_code" type="string">
      The postal code for the user's postal address
    </ResponseField>

    <ResponseField name="country" type="string">
      The country/region in which the user is located
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateUserOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Microsoft Graph throttling**: Varies by resource and tenant; typically 10,000 requests per 10 minutes per app per tenant for most directory endpoints.
* **Pagination**: List endpoints may return paginated results; the integration follows `@odata.nextLink` automatically.
* **Error model**: Non-2xx responses and timeouts are caught and returned as `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Okta" href="/integrations/tools/okta" />

  <Card title="Algolia" href="/integrations/tools/algolia" />

  <Card title="Amazon Web Services" href="/integrations/tools/aws" />
</CardGroup>

## Links

* [Microsoft Entra ID](https://entra.microsoft.com)
