> ## 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 365 People Integration for AI Agents & Workflows

> Manage contacts and contact folders via the Microsoft Graph API

{/* 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-365-people.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=483ff0be26a81d928704f7d76054d5df" alt="Microsoft 365 People logo" width="72" height="72" data-path="logos/microsoft-365-people.svg" />

## Overview

Add **Microsoft 365 People** to any ModuleX agent or workflow. Manage contacts and contact folders via the Microsoft Graph API (`graph.microsoft.com/v1.0`).

<Info>
  **Categories**: Productivity & Collaboration · Contacts · **Auth**: OAuth2 · **Actions**: 3
</Info>

## Authentication

### OAuth2 Authentication

Connect using Microsoft OAuth2 (recommended)

#### Required Credentials

| Field         | Description                                | Required | Format                                     |
| ------------- | ------------------------------------------ | -------- | ------------------------------------------ |
| Client ID     | Microsoft Azure AD OAuth App Client ID     | Yes      | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`     |
| Client Secret | Microsoft Azure AD 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**: `Contacts.ReadWrite`, `User.Read`, `offline_access`

## Available Actions

<AccordionGroup>
  <Accordion title="create_contact — Create a new contact in Microsoft 365 People">
    ### Parameters

    <ResponseField name="email" type="string" required>
      Email address of the contact
    </ResponseField>

    <ResponseField name="first_name" type="string" required>
      First name of the contact
    </ResponseField>

    <ResponseField name="last_name" type="string">
      Last name of the contact
    </ResponseField>

    <ResponseField name="folder_id" type="string">
      ID of the contact folder to create the contact in (defaults to the root contacts folder)
    </ResponseField>

    <ResponseField name="mobile_phone" type="string">
      Mobile phone number of the contact
    </ResponseField>

    <ResponseField name="home_phones" type="array">
      List of home phone numbers for the contact (each element is a string)
    </ResponseField>

    <ResponseField name="street" type="string">
      Street address of the contact
    </ResponseField>

    <ResponseField name="city" type="string">
      City of the contact
    </ResponseField>

    <ResponseField name="state" type="string">
      State of the contact
    </ResponseField>

    <ResponseField name="postal_code" type="string">
      Postal code of the contact
    </ResponseField>

    <ResponseField name="country_or_region" type="string">
      Country or region of the contact
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ContactOutput": {
          "additionalProperties": false,
          "description": "A Microsoft 365 contact resource.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "given_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Given Name"
            },
            "surname": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Surname"
            },
            "email_addresses": {
              "items": {
                "$ref": "#/$defs/EmailAddress"
              },
              "title": "Email Addresses",
              "type": "array"
            },
            "mobile_phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mobile Phone"
            },
            "home_phones": {
              "items": {
                "type": "string"
              },
              "title": "Home Phones",
              "type": "array"
            },
            "home_address": {
              "anyOf": [
                {
                  "$ref": "#/$defs/HomeAddress"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "created_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created Date Time"
            },
            "last_modified_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Last Modified Date Time"
            }
          },
          "title": "ContactOutput",
          "type": "object"
        },
        "EmailAddress": {
          "additionalProperties": false,
          "description": "An email address entry on a contact.",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "address": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Address"
            }
          },
          "title": "EmailAddress",
          "type": "object"
        },
        "HomeAddress": {
          "additionalProperties": false,
          "description": "A physical address on a contact.",
          "properties": {
            "street": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Street"
            },
            "city": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "City"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "postal_code": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Postal Code"
            },
            "country_or_region": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Country Or Region"
            }
          },
          "title": "HomeAddress",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "contact": {
          "anyOf": [
            {
              "$ref": "#/$defs/ContactOutput"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateContactOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_contact_folder — Create a new contact folder in Microsoft 365 People">
    ### Parameters

    <ResponseField name="display_name" type="string" required>
      The display name of the new contact folder
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ContactFolderOutput": {
          "additionalProperties": false,
          "description": "A Microsoft 365 contact folder resource.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "parent_folder_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Parent Folder Id"
            }
          },
          "title": "ContactFolderOutput",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "folder": {
          "anyOf": [
            {
              "$ref": "#/$defs/ContactFolderOutput"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateContactFolderOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_contact — Update an existing contact in Microsoft 365 People">
    ### Parameters

    <ResponseField name="contact_id" type="string" required>
      ID of the contact to update
    </ResponseField>

    <ResponseField name="folder_id" type="string">
      ID of the contact folder containing the contact (defaults to the root contacts folder)
    </ResponseField>

    <ResponseField name="email" type="string">
      New email address for the contact
    </ResponseField>

    <ResponseField name="first_name" type="string">
      New first name for the contact
    </ResponseField>

    <ResponseField name="last_name" type="string">
      New last name for the contact
    </ResponseField>

    <ResponseField name="mobile_phone" type="string">
      New mobile phone number for the contact
    </ResponseField>

    <ResponseField name="home_phones" type="array">
      New list of home phone numbers for the contact (each element is a string)
    </ResponseField>

    <ResponseField name="street" type="string">
      New street address for the contact
    </ResponseField>

    <ResponseField name="city" type="string">
      New city for the contact
    </ResponseField>

    <ResponseField name="state" type="string">
      New state for the contact
    </ResponseField>

    <ResponseField name="postal_code" type="string">
      New postal code for the contact
    </ResponseField>

    <ResponseField name="country_or_region" type="string">
      New country or region for the contact
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ContactOutput": {
          "additionalProperties": false,
          "description": "A Microsoft 365 contact resource.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Name"
            },
            "given_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Given Name"
            },
            "surname": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Surname"
            },
            "email_addresses": {
              "items": {
                "$ref": "#/$defs/EmailAddress"
              },
              "title": "Email Addresses",
              "type": "array"
            },
            "mobile_phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Mobile Phone"
            },
            "home_phones": {
              "items": {
                "type": "string"
              },
              "title": "Home Phones",
              "type": "array"
            },
            "home_address": {
              "anyOf": [
                {
                  "$ref": "#/$defs/HomeAddress"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "created_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created Date Time"
            },
            "last_modified_date_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Last Modified Date Time"
            }
          },
          "title": "ContactOutput",
          "type": "object"
        },
        "EmailAddress": {
          "additionalProperties": false,
          "description": "An email address entry on a contact.",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "address": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Address"
            }
          },
          "title": "EmailAddress",
          "type": "object"
        },
        "HomeAddress": {
          "additionalProperties": false,
          "description": "A physical address on a contact.",
          "properties": {
            "street": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Street"
            },
            "city": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "City"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "postal_code": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Postal Code"
            },
            "country_or_region": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Country Or Region"
            }
          },
          "title": "HomeAddress",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "contact": {
          "anyOf": [
            {
              "$ref": "#/$defs/ContactOutput"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateContactOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Microsoft Graph API throttling: 10,000 requests per 10 minutes per app per tenant.
* Per-mailbox limits: 4 concurrent connections.
* Error model: non-2xx responses raise `httpx.HTTPStatusError` (Pattern A).

## Related integrations

<CardGroup cols={3}>
  <Card title="Cal.com" href="/integrations/tools/cal-com" />

  <Card title="Canva" href="/integrations/tools/canva" />

  <Card title="ConvertAPI" href="/integrations/tools/convertapi" />
</CardGroup>

## Links

* [Microsoft 365 People](https://www.microsoft.com/en-us/microsoft-365)
