Skip to content

Microsoft service integrations

The default tool groups cover the daily Microsoft 365 surface while leaving side effects disabled. Use get_microsoft_configuration and each integration's configuration/capability tool before authentication.

Service Implemented path Representative tools
Outlook mail Microsoft Graph list_mail_messages, send_mail, drafts, folders, attachments, move/update/delete
Outlook calendar Microsoft Graph calendars, events, calendar view, invitations and updates
Teams Microsoft Graph chats, chat messages, teams, channels, replies, members, meetings, presence
OneDrive/SharePoint Microsoft Graph drives, items, lists/sites, download/upload, generated-document upload
Excel Graph workbook APIs workbooks, worksheets, tables, ranges, formatting, sorting, charts
OneNote/Planner/To Do/contacts Microsoft Graph notes, tasks/plans, contacts and related resources
Word Local OOXML generation, Graph upload, paired Office.js bridge, optional Windows COM create/fill .docx, upload, agent-driven current-selection/placeholders, open/export PDF
PowerPoint Local OOXML generation, Graph upload, paired Office.js bridge, optional Windows COM create/fill .pptx, upload, agent-driven list/add/delete slides and text boxes, open/export PDF
Power Automate cloud Supported Dataverse Web API plus named OAuth triggers list/get/activate/deactivate solution flows, run allowlisted flow
Power Automate Desktop Documented Dataverse desktop-flow APIs list/schema/run/status/outputs/cancel for configured named desktop flows
Intune Microsoft Graph v1.0 allowlisted device/app inventory, sync, lock, reboot, shutdown, Defender scan
Windows laptops Authenticated outbound companion inventory, bounded files, Office, services, notifications, clipboard, typed extension hook

Document generation and upload

Install the document dependencies with pip install .[documents] or .[all]. Templates must remain under MICROSOFT_DOCUMENT_TEMPLATE_ROOT; file outputs must remain under MICROSOFT_DOCUMENT_ARTIFACT_ROOT. Macro-enabled packages, embedded objects, external relationships, zip bombs, symlink escapes, and unbounded files are rejected by default.

The combined generation/upload tools create content in memory and upload to a drive-relative OneDrive or SharePoint path. Uploads over 10 MiB use sequential, resumable Graph sessions; preauthenticated upload URLs never receive the Graph bearer token. Graph documents upload-session URLs as opaque, so the connector does not hardcode a tenant or storage hostname. It rejects unsafe URL forms and private IP literals, then uses the shared DNS-pinned transport to reject private/reserved DNS answers and verify the connected peer without a second resolver lookup.

Power Platform configuration

Set a Dataverse organization root URL or place a power_platform object in the integration configuration file:

MICROSOFT_DATAVERSE_ENVIRONMENT_URL=https://contoso.crm.dynamics.com
MICROSOFT_POWER_PLATFORM_ALLOW_LIFECYCLE_CHANGES=false

The object may also select one deployment-owned Agent Utilities TLS profile with tls_profile or tls_profile_ref. The fields are mutually exclusive and TLS verification cannot be disabled.

Cloud-flow definitions are read and lifecycle-managed through Dataverse's workflows entity. The unsupported api.flow.microsoft.com management API is rejected. Running a flow uses an administrator-configured map of names to OAuth-protected HTTP trigger URLs; callers can supply a name and payload but never a URL. Each invocation carries an idempotency key and correlation ID.

Desktop flows use Dataverse's documented workflows, RunDesktopFlow, and flowsessions APIs. Configure each runnable flow by name with a fixed workflow ID and fixed connection or connection-reference name. Execution and cancellation have separate fail-closed flags, run modes are allowlisted per flow, inputs are capped at Dataverse's 2 MiB limit, and callback URLs are not accepted. The returned flow-session ID can be used to read status and outputs. This API targets the machine or machine group bound to the configured Power Automate connection, so it works without an arbitrary local executable hook.

For flows without an OAuth-protected request trigger, add a small solution flow that receives the approved request and calls the target flow. Keep every URL in the protected local configuration/secret provider even when it is OAuth protected.

Intune behavior

Intune configuration requires at least one managed-device UUID and an explicit action allowlist. Every mutation requires evidence bound to the device, action, correlation ID, idempotency key, approver, reason, and a short expiration. Reboot and shutdown additionally require destructive acknowledgement.

The service uses only Microsoft Graph v1.0. rotateBitLockerKeys is visible in the capability report as unsupported because Microsoft currently documents it only under Graph beta; this project does not silently cross that boundary.

Copy deployment/integrations.example.json to a filename ending in .local.integrations.json, replace the disabled examples, protect it with user-only filesystem permissions, and set MICROSOFT_INTEGRATIONS_CONFIG_PATH. The optional Windows companion object uses the same mutually exclusive TLS profile selectors. Keep those selectors and any trust-bundle reference in the external deployment file or secret provider rather than in source control.