microsoft-agent 2.3.9__tar.gz → 2.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. {microsoft_agent-2.3.9/microsoft_agent.egg-info → microsoft_agent-2.5.0}/PKG-INFO +10 -14
  2. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/README.md +7 -11
  3. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/authentication.md +3 -3
  4. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/concepts.md +2 -2
  5. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/index.md +2 -2
  6. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/installation.md +1 -1
  7. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/integrations.md +2 -1
  8. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/office-addin.md +2 -2
  9. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/overview.md +1 -1
  10. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/usage.md +3 -3
  11. microsoft_agent-2.5.0/microsoft_agent/__init__.py +28 -0
  12. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_admin.py +6 -0
  13. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_base.py +4 -3
  14. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_directory.py +2 -0
  15. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_drive.py +3 -0
  16. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_other.py +7 -0
  17. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/config_cli.py +0 -1
  18. microsoft_agent-2.5.0/microsoft_agent/connector_contracts.py +5370 -0
  19. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/integration_tools.py +59 -16
  20. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/intune_service.py +0 -6
  21. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/mcp_config.json +0 -1
  22. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/mcp_server.py +23 -123
  23. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/office_bridge.py +12 -1
  24. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/ontology/__init__.py +1 -1
  25. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/ontology/certification.json +3 -3
  26. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/ontology/microsoft.ttl +14 -10
  27. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/ontology/shapes/connector.shacl.ttl +2 -2
  28. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/power_platform.py +2 -2
  29. microsoft_agent-2.5.0/microsoft_agent/prompts/microsoft-agent-operator.json +441 -0
  30. microsoft_agent-2.5.0/microsoft_agent/prompts/microsoft-collaboration-manager.json +139 -0
  31. microsoft_agent-2.5.0/microsoft_agent/prompts/microsoft-document-author.json +82 -0
  32. microsoft_agent-2.5.0/microsoft_agent/prompts/microsoft-endpoint-engineer.json +107 -0
  33. microsoft_agent-2.5.0/microsoft_agent/prompts/microsoft-identity-administrator.json +151 -0
  34. microsoft_agent-2.5.0/microsoft_agent/prompts/microsoft-mailbox-coordinator.json +113 -0
  35. microsoft_agent-2.5.0/microsoft_agent/prompts/microsoft-security-analyst.json +87 -0
  36. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/settings.py +0 -4
  37. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/skills/microsoft-agent-development/SKILL.md +4 -4
  38. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/skills/microsoft-agent-operations/SKILL.md +9 -3
  39. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +72 -0
  40. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-contacts/SKILL.md +45 -0
  41. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-document-authoring/SKILL.md +60 -0
  42. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-education-booking/SKILL.md +59 -0
  43. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-endpoint-management/SKILL.md +67 -0
  44. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-files-sharepoint/SKILL.md +79 -0
  45. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-graph-integration/SKILL.md +58 -0
  46. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-identity-directory/SKILL.md +140 -0
  47. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +70 -0
  48. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-office-apps/SKILL.md +77 -0
  49. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-power-platform/SKILL.md +55 -0
  50. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-security-operations/SKILL.md +78 -0
  51. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-service-reports/SKILL.md +51 -0
  52. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-session-management/SKILL.md +51 -0
  53. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +74 -0
  54. microsoft_agent-2.5.0/microsoft_agent/skills/microsoft-universal-print/SKILL.md +51 -0
  55. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/tool_policy.py +6 -29
  56. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/windows_companion.py +2 -2
  57. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0/microsoft_agent.egg-info}/PKG-INFO +10 -14
  58. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent.egg-info/SOURCES.txt +23 -39
  59. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent.egg-info/entry_points.txt +0 -3
  60. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent.egg-info/requires.txt +2 -2
  61. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/pyproject.toml +3 -6
  62. microsoft_agent-2.5.0/tests/test_destructive_declaration.py +83 -0
  63. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_graph_reliability.py +14 -64
  64. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_graph_transport.py +3 -3
  65. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_intune_service.py +2 -19
  66. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_mcp_comprehensive.py +0 -63
  67. microsoft_agent-2.5.0/tests/test_mcp_server.py +64 -0
  68. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_onenote_sharepoint_print.py +11 -17
  69. microsoft_agent-2.5.0/tests/test_scion_sdk_0_10_imports.py +59 -0
  70. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_sdk_centralization.py +2 -2
  71. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_settings_and_policy.py +33 -10
  72. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_transport_migration.py +2 -2
  73. microsoft_agent-2.3.9/microsoft_agent/__init__.py +0 -24
  74. microsoft_agent-2.3.9/microsoft_agent/mcp/__init__.py +0 -83
  75. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_admin.py +0 -59
  76. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_agreements.py +0 -63
  77. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_applications.py +0 -63
  78. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_audit.py +0 -54
  79. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_auth.py +0 -56
  80. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_calendar.py +0 -62
  81. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_chat.py +0 -50
  82. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_communications.py +0 -61
  83. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_connections.py +0 -69
  84. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_contacts.py +0 -61
  85. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_devices.py +0 -58
  86. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_directory.py +0 -61
  87. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_domains.py +0 -55
  88. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_education.py +0 -55
  89. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_employee_experience.py +0 -62
  90. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_files.py +0 -84
  91. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_groups.py +0 -60
  92. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_identity.py +0 -59
  93. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_mail.py +0 -77
  94. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_meta.py +0 -50
  95. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_notes.py +0 -52
  96. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_organization.py +0 -56
  97. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_places.py +0 -56
  98. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_policies.py +0 -54
  99. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_print.py +0 -57
  100. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_privacy.py +0 -64
  101. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_reports.py +0 -55
  102. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_search.py +0 -52
  103. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_security.py +0 -66
  104. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_sites.py +0 -65
  105. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_solutions.py +0 -54
  106. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_storage.py +0 -64
  107. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_subscriptions.py +0 -56
  108. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_tasks.py +0 -58
  109. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_teams.py +0 -52
  110. microsoft_agent-2.3.9/microsoft_agent/mcp/mcp_user.py +0 -48
  111. microsoft_agent-2.3.9/microsoft_agent/prompts/collaboration_specialist.json +0 -36
  112. microsoft_agent-2.3.9/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +0 -81
  113. microsoft_agent-2.3.9/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +0 -92
  114. microsoft_agent-2.3.9/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +0 -82
  115. microsoft_agent-2.3.9/tests/test_bug_cx_046_ctx_info_awaited.py +0 -48
  116. microsoft_agent-2.3.9/tests/test_mcp_server.py +0 -93
  117. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/LICENSE +0 -0
  118. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/MANIFEST.in +0 -0
  119. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/control-plane/README.md +0 -0
  120. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/control-plane/control-plane.sample.json +0 -0
  121. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/control-plane/nginx/windows-control-plane.conf +0 -0
  122. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/control-plane/systemd/microsoft-windows-control-plane.env +0 -0
  123. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/control-plane/systemd/microsoft-windows-control-plane.service +0 -0
  124. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/entra/New-MicrosoftAgentApp.ps1 +0 -0
  125. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/entra/New-WindowsControlPlaneEntraResources.ps1 +0 -0
  126. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/entra/README.md +0 -0
  127. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/entra/permission-profiles.json +0 -0
  128. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/integrations.example.json +0 -0
  129. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/windows/Install-WindowsCompanion.ps1 +0 -0
  130. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/windows/README.md +0 -0
  131. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/windows/Run-WindowsCompanion.ps1 +0 -0
  132. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/windows/Test-WindowsCompanionDeployment.ps1 +0 -0
  133. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/windows/Uninstall-WindowsCompanion.ps1 +0 -0
  134. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/deployment/windows/windows-companion.sample.json +0 -0
  135. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/configuration.md +0 -0
  136. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/deployment.md +0 -0
  137. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/enrollment-checklist.md +0 -0
  138. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/docs/windows-companion.md +0 -0
  139. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/__main__.py +0 -0
  140. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/_version.py +0 -0
  141. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/__init__.py +0 -0
  142. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/_graph_models.py +0 -0
  143. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_apps.py +0 -0
  144. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_calendar.py +0 -0
  145. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_mail.py +0 -0
  146. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api/api_client_system.py +0 -0
  147. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/api_client.py +0 -0
  148. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/auth.py +0 -0
  149. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/connector_sources.py +0 -0
  150. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/connectors/__init__.py +0 -0
  151. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/credential_adapter.py +0 -0
  152. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/document_service.py +0 -0
  153. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/graph_file_service.py +0 -0
  154. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/integration_adapters.py +0 -0
  155. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/integration_auth.py +0 -0
  156. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/integration_config.py +0 -0
  157. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/kg_ingest.py +0 -0
  158. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/ontology/fixtures/records.json +0 -0
  159. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/ontology/mappings/source.yaml +0 -0
  160. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/ontology/migrations/manifest.json +0 -0
  161. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/prompts/__init__.py +0 -0
  162. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/skills/__init__.py +0 -0
  163. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/skills/microsoft-agent-operations/agents/openai.yaml +0 -0
  164. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/skills/microsoft-agent-operations/references/catalog.md +0 -0
  165. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/universal_print.py +0 -0
  166. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/windows_companion_service.py +0 -0
  167. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/windows_control_plane.py +0 -0
  168. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/windows_control_plane_service.py +0 -0
  169. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent/windows_runtime.py +0 -0
  170. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent.egg-info/dependency_links.txt +0 -0
  171. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/microsoft_agent.egg-info/top_level.txt +0 -0
  172. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/README.md +0 -0
  173. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/manifest.xml +0 -0
  174. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/package-lock.json +0 -0
  175. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/package.json +0 -0
  176. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/public/assets/icon.png.b64 +0 -0
  177. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/public/assets/icon.svg +0 -0
  178. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/public/config.json +0 -0
  179. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/public/styles.css +0 -0
  180. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/public/taskpane.html +0 -0
  181. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/scripts/validate_manifest.py +0 -0
  182. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/src/backend-client.ts +0 -0
  183. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/src/office-bridge.ts +0 -0
  184. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/src/office-operations.ts +0 -0
  185. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/src/taskpane.ts +0 -0
  186. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/src/validation.ts +0 -0
  187. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/tests/backend-client.test.ts +0 -0
  188. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/tests/office-bridge.test.ts +0 -0
  189. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/tests/validation.test.ts +0 -0
  190. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/tsconfig.json +0 -0
  191. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/vitest.config.ts +0 -0
  192. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/office_addin/webpack.config.cjs +0 -0
  193. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/setup.cfg +0 -0
  194. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_api_client_extended.py +0 -0
  195. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_auth.py +0 -0
  196. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_auth_coverage.py +0 -0
  197. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_config_cli.py +0 -0
  198. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_credential_adapter.py +0 -0
  199. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_default_content_surfaces.py +0 -0
  200. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_document_service.py +0 -0
  201. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_generate_code.py +0 -0
  202. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_graph_file_service.py +0 -0
  203. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_init_dynamics.py +0 -0
  204. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_integration_adapters.py +0 -0
  205. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_integration_auth.py +0 -0
  206. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_integration_config_and_tools.py +0 -0
  207. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_kg_ingest.py +0 -0
  208. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_main.py +0 -0
  209. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_office_bridge.py +0 -0
  210. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_office_manifest.py +0 -0
  211. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_placeholder.py +0 -0
  212. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_power_platform.py +0 -0
  213. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_publication_workflow.py +0 -0
  214. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_startup.py +0 -0
  215. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_teams_reliability.py +0 -0
  216. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_transport_tls.py +0 -0
  217. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_windows_companion.py +0 -0
  218. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_windows_control_plane.py +0 -0
  219. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_windows_control_plane_service.py +0 -0
  220. {microsoft_agent-2.3.9 → microsoft_agent-2.5.0}/tests/test_windows_runtime.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agent
3
- Version: 2.3.9
3
+ Version: 2.5.0
4
4
  Summary: Governed Microsoft Graph agent and MCP server
5
5
  Author-email: Repository Maintainers <maintainers@knuckles.team>
6
6
  License-Expression: MIT
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3
11
11
  Requires-Python: >=3.12
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: scion-sdk[mcp]<0.7.0,>=0.6.4
14
+ Requires-Dist: scion-sdk[mcp]<0.12,>=0.11.0
15
15
  Requires-Dist: azure-core>=1.41.0
16
16
  Requires-Dist: httpx>=0.28.1
17
17
  Requires-Dist: keyring>=25.7.0
@@ -19,7 +19,7 @@ Requires-Dist: msal>=1.39.0
19
19
  Requires-Dist: msgraph-sdk>=1.64.0
20
20
  Requires-Dist: pydantic>=2.14.1
21
21
  Provides-Extra: mcp
22
- Requires-Dist: scion-sdk[mcp]<0.7.0,>=0.6.4; extra == "mcp"
22
+ Requires-Dist: scion-sdk[mcp]<0.12,>=0.11.0; extra == "mcp"
23
23
  Provides-Extra: documents
24
24
  Requires-Dist: python-docx>=1.2.0; extra == "documents"
25
25
  Requires-Dist: python-pptx>=1.0.2; extra == "documents"
@@ -81,7 +81,7 @@ Current package version: **2.3.6**
81
81
  - Entra users, groups, applications, policy, audit, security, and reports
82
82
  - Optional Word and PowerPoint generation and an exact-origin Office.js bridge
83
83
  - Optional Power Platform, Intune, and outbound Windows companion integrations
84
- - Governed ingestion into Epistemic Graph with provider-owned ontology, mapping,
84
+ - Governed ingestion into Medulla with provider-owned ontology, mapping,
85
85
  schema fingerprint, provenance, and quarantine contracts
86
86
  - One consolidated `microsoft-agent-operations` skill
87
87
 
@@ -107,7 +107,7 @@ python -m pip install "microsoft-agent[control-plane]"
107
107
  python -m pip install "microsoft-agent[all]"
108
108
  ```
109
109
 
110
- Scion SDK depends on `epistemic-graph[full]`; the full and numeric engine
110
+ Scion SDK depends on `medulla[full]`; the full and numeric engine
111
111
 
112
112
  ## Authentication
113
113
 
@@ -147,7 +147,6 @@ tokens remain in memory and are not written to plaintext files.
147
147
  | `MICROSOFT_GRAPH_SCOPES` | — | |
148
148
  | `MICROSOFT_ENABLED_TOOL_GROUPS` | `misc,auth,meta,mail,files,calendar,notes,tasks,contacts,user,chat,teams,sites,search,groups,communications,documents,power_platform,windows,intune` | Tools are registered, but side effects remain disabled until explicitly enabled. |
149
149
  | `MICROSOFT_ALLOW_WRITES` | `false` | |
150
- | `MICROSOFT_ALLOW_DESTRUCTIVE` | `false` | |
151
150
  | `MICROSOFT_INGESTION_PSEUDONYMIZATION_KEY_REF` | — | Required only for graph projection/ingestion. Resolve from AgentConfig or a secret store; use at least 32 bytes and never reuse an identity credential. |
152
151
  | `MICROSOFT_INTEGRATIONS_CONFIG_PATH` | — | Complex Power Platform, Intune, and Windows companion allowlists. |
153
152
  | `MICROSOFT_DOCUMENT_ARTIFACT_ROOT` | — | |
@@ -332,13 +331,13 @@ and MCP caller identity are separate boundaries and both must be configured.
332
331
  | `microsoft_tasks` | `TASKSTOOL` | Manage microsoft tasks operations. |
333
332
  | `microsoft_teams` | `TEAMSTOOL` | Manage microsoft teams operations. |
334
333
  | `microsoft_user` | `USERTOOL` | Manage microsoft user operations. |
335
- | `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after destructive action acknowledgement and time-bound confirmation. |
334
+ | `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after time-bound confirmation. |
336
335
  | `remote_lock_intune_device` | `INTUNETOOL` | Remotely lock an allowlisted Intune device after time-bound confirmation bound to that device and action. |
337
336
  | `replace_word_placeholders_in_office` | `DOCUMENTSTOOL` | Replace a literal placeholder throughout a paired, open Word document. |
338
337
  | `run_power_automate_desktop_flow` | `POWER_PLATFORMTOOL` | Run one allowlisted Power Automate desktop flow using its fixed Dataverse connection or connection reference. |
339
338
  | `run_power_automate_flow` | `POWER_PLATFORMTOOL` | Invoke one named, allowlisted, OAuth-protected Power Automate HTTP trigger. The caller cannot supply a trigger URL. |
340
339
  | `scan_intune_device_with_defender` | `INTUNETOOL` | Request a quick or full Microsoft Defender scan on an allowlisted Intune device with time-bound confirmation. |
341
- | `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after destructive action acknowledgement and time-bound confirmation. |
340
+ | `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after time-bound confirmation. |
342
341
  | `submit_windows_action` | `WINDOWS_COMPANIONTOOL` | Submit one typed allowlisted laptop action through the authenticated outbound relay. Arbitrary shell, process, and URL execution are absent. |
343
342
  | `sync_intune_device` | `INTUNETOOL` | Request an Intune sync for an allowlisted device. Time-bound confirmation evidence bound to the action and device is required. |
344
343
  | `write_word_selection_in_office` | `DOCUMENTSTOOL` | Write bounded text at the selection in a paired, open Word task pane. |
@@ -626,8 +625,8 @@ _79 action-routed tool(s) · 268 verbose 1:1 tool(s). Each is enabled unless its
626
625
 
627
626
  Every routed action passes the fail-closed tool policy. Reads are permitted by
628
627
  default; unknown actions are treated as writes. Writes require
629
- `MICROSOFT_ALLOW_WRITES=true`, and destructive actions also require
630
- `MICROSOFT_ALLOW_DESTRUCTIVE=true`.
628
+ `MICROSOFT_ALLOW_WRITES=true`, and destructive actions also need a live
629
+ confirmation (the gateway's approval or the `confirm` argument).
631
630
 
632
631
  ## MCP client configuration
633
632
 
@@ -635,7 +634,7 @@ default; unknown actions are treated as writes. Writes require
635
634
 
636
635
  > **Install the connector-focused `[mcp]` extra.** Examples use `microsoft-agent[mcp]` to add
637
636
  > FastMCP / FastAPI through `scion-sdk`; the required Scion SDK core
638
- > still carries `epistemic-graph[full]`. The `[agent-runtime]` extra additionally
637
+ > still carries `medulla[full]`. The `[agent-runtime]` extra additionally
639
638
  > enables model orchestration.
640
639
 
641
640
  #### stdio Transport (local IDEs — Cursor, Claude Desktop, VS Code)
@@ -675,7 +674,6 @@ default; unknown actions are treated as writes. Writes require
675
674
  "KGTOOL": "true",
676
675
  "MAILTOOL": "true",
677
676
  "METATOOL": "true",
678
- "MICROSOFT_ALLOW_DESTRUCTIVE": "false",
679
677
  "MICROSOFT_ALLOW_DEVICE_CODE": "false",
680
678
  "MICROSOFT_ALLOW_WRITES": "false",
681
679
  "MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
@@ -760,7 +758,6 @@ own runtime secret boundary.
760
758
  "KGTOOL": "true",
761
759
  "MAILTOOL": "true",
762
760
  "METATOOL": "true",
763
- "MICROSOFT_ALLOW_DESTRUCTIVE": "false",
764
761
  "MICROSOFT_ALLOW_DEVICE_CODE": "false",
765
762
  "MICROSOFT_ALLOW_WRITES": "false",
766
763
  "MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
@@ -844,7 +841,6 @@ docker run -i --rm \
844
841
  -e KGTOOL=true \
845
842
  -e MAILTOOL=true \
846
843
  -e METATOOL=true \
847
- -e MICROSOFT_ALLOW_DESTRUCTIVE=false \
848
844
  -e MICROSOFT_ALLOW_DEVICE_CODE=false \
849
845
  -e MICROSOFT_ALLOW_WRITES=false \
850
846
  -e MICROSOFT_AUTHORITY_HOST=https://login.microsoftonline.com \
@@ -13,7 +13,7 @@ Current package version: **2.3.6**
13
13
  - Entra users, groups, applications, policy, audit, security, and reports
14
14
  - Optional Word and PowerPoint generation and an exact-origin Office.js bridge
15
15
  - Optional Power Platform, Intune, and outbound Windows companion integrations
16
- - Governed ingestion into Epistemic Graph with provider-owned ontology, mapping,
16
+ - Governed ingestion into Medulla with provider-owned ontology, mapping,
17
17
  schema fingerprint, provenance, and quarantine contracts
18
18
  - One consolidated `microsoft-agent-operations` skill
19
19
 
@@ -39,7 +39,7 @@ python -m pip install "microsoft-agent[control-plane]"
39
39
  python -m pip install "microsoft-agent[all]"
40
40
  ```
41
41
 
42
- Scion SDK depends on `epistemic-graph[full]`; the full and numeric engine
42
+ Scion SDK depends on `medulla[full]`; the full and numeric engine
43
43
 
44
44
  ## Authentication
45
45
 
@@ -79,7 +79,6 @@ tokens remain in memory and are not written to plaintext files.
79
79
  | `MICROSOFT_GRAPH_SCOPES` | — | |
80
80
  | `MICROSOFT_ENABLED_TOOL_GROUPS` | `misc,auth,meta,mail,files,calendar,notes,tasks,contacts,user,chat,teams,sites,search,groups,communications,documents,power_platform,windows,intune` | Tools are registered, but side effects remain disabled until explicitly enabled. |
81
81
  | `MICROSOFT_ALLOW_WRITES` | `false` | |
82
- | `MICROSOFT_ALLOW_DESTRUCTIVE` | `false` | |
83
82
  | `MICROSOFT_INGESTION_PSEUDONYMIZATION_KEY_REF` | — | Required only for graph projection/ingestion. Resolve from AgentConfig or a secret store; use at least 32 bytes and never reuse an identity credential. |
84
83
  | `MICROSOFT_INTEGRATIONS_CONFIG_PATH` | — | Complex Power Platform, Intune, and Windows companion allowlists. |
85
84
  | `MICROSOFT_DOCUMENT_ARTIFACT_ROOT` | — | |
@@ -264,13 +263,13 @@ and MCP caller identity are separate boundaries and both must be configured.
264
263
  | `microsoft_tasks` | `TASKSTOOL` | Manage microsoft tasks operations. |
265
264
  | `microsoft_teams` | `TEAMSTOOL` | Manage microsoft teams operations. |
266
265
  | `microsoft_user` | `USERTOOL` | Manage microsoft user operations. |
267
- | `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after destructive action acknowledgement and time-bound confirmation. |
266
+ | `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after time-bound confirmation. |
268
267
  | `remote_lock_intune_device` | `INTUNETOOL` | Remotely lock an allowlisted Intune device after time-bound confirmation bound to that device and action. |
269
268
  | `replace_word_placeholders_in_office` | `DOCUMENTSTOOL` | Replace a literal placeholder throughout a paired, open Word document. |
270
269
  | `run_power_automate_desktop_flow` | `POWER_PLATFORMTOOL` | Run one allowlisted Power Automate desktop flow using its fixed Dataverse connection or connection reference. |
271
270
  | `run_power_automate_flow` | `POWER_PLATFORMTOOL` | Invoke one named, allowlisted, OAuth-protected Power Automate HTTP trigger. The caller cannot supply a trigger URL. |
272
271
  | `scan_intune_device_with_defender` | `INTUNETOOL` | Request a quick or full Microsoft Defender scan on an allowlisted Intune device with time-bound confirmation. |
273
- | `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after destructive action acknowledgement and time-bound confirmation. |
272
+ | `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after time-bound confirmation. |
274
273
  | `submit_windows_action` | `WINDOWS_COMPANIONTOOL` | Submit one typed allowlisted laptop action through the authenticated outbound relay. Arbitrary shell, process, and URL execution are absent. |
275
274
  | `sync_intune_device` | `INTUNETOOL` | Request an Intune sync for an allowlisted device. Time-bound confirmation evidence bound to the action and device is required. |
276
275
  | `write_word_selection_in_office` | `DOCUMENTSTOOL` | Write bounded text at the selection in a paired, open Word task pane. |
@@ -558,8 +557,8 @@ _79 action-routed tool(s) · 268 verbose 1:1 tool(s). Each is enabled unless its
558
557
 
559
558
  Every routed action passes the fail-closed tool policy. Reads are permitted by
560
559
  default; unknown actions are treated as writes. Writes require
561
- `MICROSOFT_ALLOW_WRITES=true`, and destructive actions also require
562
- `MICROSOFT_ALLOW_DESTRUCTIVE=true`.
560
+ `MICROSOFT_ALLOW_WRITES=true`, and destructive actions also need a live
561
+ confirmation (the gateway's approval or the `confirm` argument).
563
562
 
564
563
  ## MCP client configuration
565
564
 
@@ -567,7 +566,7 @@ default; unknown actions are treated as writes. Writes require
567
566
 
568
567
  > **Install the connector-focused `[mcp]` extra.** Examples use `microsoft-agent[mcp]` to add
569
568
  > FastMCP / FastAPI through `scion-sdk`; the required Scion SDK core
570
- > still carries `epistemic-graph[full]`. The `[agent-runtime]` extra additionally
569
+ > still carries `medulla[full]`. The `[agent-runtime]` extra additionally
571
570
  > enables model orchestration.
572
571
 
573
572
  #### stdio Transport (local IDEs — Cursor, Claude Desktop, VS Code)
@@ -607,7 +606,6 @@ default; unknown actions are treated as writes. Writes require
607
606
  "KGTOOL": "true",
608
607
  "MAILTOOL": "true",
609
608
  "METATOOL": "true",
610
- "MICROSOFT_ALLOW_DESTRUCTIVE": "false",
611
609
  "MICROSOFT_ALLOW_DEVICE_CODE": "false",
612
610
  "MICROSOFT_ALLOW_WRITES": "false",
613
611
  "MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
@@ -692,7 +690,6 @@ own runtime secret boundary.
692
690
  "KGTOOL": "true",
693
691
  "MAILTOOL": "true",
694
692
  "METATOOL": "true",
695
- "MICROSOFT_ALLOW_DESTRUCTIVE": "false",
696
693
  "MICROSOFT_ALLOW_DEVICE_CODE": "false",
697
694
  "MICROSOFT_ALLOW_WRITES": "false",
698
695
  "MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
@@ -776,7 +773,6 @@ docker run -i --rm \
776
773
  -e KGTOOL=true \
777
774
  -e MAILTOOL=true \
778
775
  -e METATOOL=true \
779
- -e MICROSOFT_ALLOW_DESTRUCTIVE=false \
780
776
  -e MICROSOFT_ALLOW_DEVICE_CODE=false \
781
777
  -e MICROSOFT_ALLOW_WRITES=false \
782
778
  -e MICROSOFT_AUTHORITY_HOST=https://login.microsoftonline.com \
@@ -103,12 +103,12 @@ server is currently allowed to invoke:
103
103
 
104
104
  ```text
105
105
  MICROSOFT_ALLOW_WRITES=false
106
- MICROSOFT_ALLOW_DESTRUCTIVE=false
107
106
  ```
108
107
 
109
- Reads work with both flags disabled. Sends, creates, edits, uploads, flow runs,
108
+ Reads work with writes disabled. Sends, creates, edits, uploads, flow runs,
110
109
  and remote actions require writes. Deletes, wipes, retirements, immediate
111
- reboots, shutdowns, and other destructive tools require both flags. Intune and
110
+ reboots, shutdowns, and other destructive tools require writes and also a live
111
+ confirmation (the gateway's approval or the `confirm` argument). Intune and
112
112
  Windows companion actions also enforce per-device/action allowlists and
113
113
  time-bound confirmation evidence inside their service layer.
114
114
 
@@ -4,7 +4,7 @@
4
4
  > **Version**: 0.15.0
5
5
  > **Bridge**: [`CONCEPT:AU-ECO.messaging.native-backend-abstraction`](https://github.com/Knuckles-Team/scion-sdk/blob/main/docs/concepts.md) (Unified Toolkit Ingestion)
6
6
  Microsoft Agent contributes Microsoft Graph provider semantics to the ecosystem; it
7
- does not replace Scion SDK or Epistemic Graph authorities.
7
+ does not replace Scion SDK or Medulla authorities.
8
8
 
9
9
  | Concept | Provider responsibility | Ecosystem authority |
10
10
  |---|---|---|
@@ -12,7 +12,7 @@ does not replace Scion SDK or Epistemic Graph authorities.
12
12
  | Graph actions | execute bounded asynchronous operations through one modular client | Scion SDK owns tool discovery, session, approval, and trace context |
13
13
  | Action policy | classify the routed action and fail closed for writes/destructive actions | permission governance provides caller policy and approval |
14
14
  | Optional integrations | expose native document, Power Platform, Intune, Office, and Windows connection points | deployment AgentConfig provides allowlists, endpoints, trust, and secrets |
15
- | Knowledge ingestion | map approved provider records into quarantined change envelopes | Epistemic Graph owns persistence, ACL, provenance, lineage, and deletion semantics |
15
+ | Knowledge ingestion | map approved provider records into quarantined change envelopes | Medulla owns persistence, ACL, provenance, lineage, and deletion semantics |
16
16
  | Microsoft skill | provide one consolidated operational workflow and provider catalog | Arbora owns skill discovery and direct/delegated execution |
17
17
  | Observability | attach privacy-safe provider outcome metadata | Scion SDK and Langfuse own trace transport and retention policy |
18
18
 
@@ -1,6 +1,6 @@
1
1
  # Microsoft Agent
2
2
 
3
- for the Scion SDK and Epistemic Graph ecosystem.
3
+ for the Scion SDK and Medulla ecosystem.
4
4
 
5
5
  It supplies:
6
6
 
@@ -11,7 +11,7 @@ It supplies:
11
11
  - fail-closed read, write, and destructive action policy;
12
12
  - optional document, Office bridge, Power Platform, Intune, and Windows companion
13
13
  connection points;
14
- - governed Epistemic Graph ingestion with provider-owned ontology, mappings,
14
+ - governed Medulla ingestion with provider-owned ontology, mappings,
15
15
  provenance, schema fingerprints, and quarantine; and
16
16
  - one consolidated `microsoft-agent-operations` skill.
17
17
 
@@ -27,7 +27,7 @@ Install a broader approved profile when required:
27
27
  python -m pip install "microsoft-agent[agent,documents,cloud]"
28
28
  ```
29
29
 
30
- Scion SDK resolves Epistemic Graph with the `full` feature set, including the
30
+ Scion SDK resolves Medulla with the `full` feature set, including the
31
31
  folded numeric ABI. Do not substitute a minimal or numeric-only engine artifact.
32
32
 
33
33
  ## Source checkout
@@ -77,7 +77,8 @@ protected.
77
77
  Intune configuration requires at least one managed-device UUID and an explicit
78
78
  action allowlist. Every mutation requires evidence bound to the device, action,
79
79
  correlation ID, idempotency key, approver, reason, and a short expiration. Reboot
80
- and shutdown also require destructive acknowledgement.
80
+ and shutdown also need a live confirmation (the gateway's approval or the
81
+ `confirm` argument).
81
82
 
82
83
  The service uses only Microsoft Graph v1.0. `rotateBitLockerKeys` is visible in
83
84
  the capability report as unsupported because Microsoft currently documents it
@@ -27,8 +27,8 @@ URLs, or an open-ended action name.
27
27
 
28
28
  1. Start the MCP server over HTTPS and set
29
29
  `MICROSOFT_OFFICE_ADDIN_ORIGINS` to the task pane's exact HTTPS origin.
30
- 2. Enable `documents` and `MICROSOFT_ALLOW_WRITES`. Enable
31
- `MICROSOFT_ALLOW_DESTRUCTIVE` only if the agent may delete slides.
30
+ 2. Enable `documents` and `MICROSOFT_ALLOW_WRITES`. Deleting a slide also needs
31
+ a live confirmation (the gateway's approval or the `confirm` argument).
32
32
  3. Ask the agent to call `create_office_pairing` with `Word` or `PowerPoint`
33
33
  and a recognizable window label.
34
34
  4. Paste the returned one-time secret into **Agent pairing** in that intended
@@ -1,7 +1,7 @@
1
1
  # Architecture overview
2
2
 
3
3
  Microsoft Agent is a governed Microsoft Graph provider for the Scion SDK and
4
- Epistemic Graph ecosystem. It contributes one MCP server, one modular Graph client,
4
+ Medulla ecosystem. It contributes one MCP server, one modular Graph client,
5
5
  one authentication authority, optional integration adapters, a consolidated skill,
6
6
  and a provider-owned connector capability bundle.
7
7
 
@@ -17,14 +17,14 @@ The installed provider families cover:
17
17
  - mail, calendars, contacts, tasks, files, sites, notes, Teams, and chat;
18
18
  - applications, policy, security, audit, reports, devices, storage, print, and
19
19
  subscriptions;
20
- - keyed zero-PII projection and governed Epistemic Graph ingestion; and
20
+ - keyed zero-PII projection and governed Medulla ingestion; and
21
21
  - optional documents, Office bridge, Power Platform, Intune, and Windows
22
22
  companion capabilities.
23
23
 
24
24
  Every routed action crosses the fail-closed Microsoft tool policy. Read actions are
25
25
  available by default. Unknown actions are classified as writes. Non-destructive
26
- writes require `MICROSOFT_ALLOW_WRITES=true`; destructive actions also
27
- require `MICROSOFT_ALLOW_DESTRUCTIVE=true`.
26
+ writes require `MICROSOFT_ALLOW_WRITES=true`; destructive actions also need a live
27
+ confirmation (the gateway's approval or the `confirm` argument).
28
28
 
29
29
  `list_microsoft_ingestion_projection` returns only keyed opaque node identifiers,
30
30
  types, and relationships. Arbora validates the signed source manifest and
@@ -0,0 +1,28 @@
1
+ """Microsoft Agent.
2
+
3
+ CONCEPT:AU-ECO.mcp.fastmcp-middleware
4
+ """
5
+
6
+ from scion_sdk.connector import Connector
7
+ from scion_sdk.connector_hooks import RegistrationContext
8
+
9
+ from microsoft_agent._version import __version__
10
+ from microsoft_agent.api_client import MicrosoftGraphApi
11
+ from microsoft_agent.auth import get_client_dependency
12
+
13
+
14
+ def _register_extras(context: RegistrationContext) -> None:
15
+ """Register the non-Graph tools and the side-effect policy through the SDK hook."""
16
+ from microsoft_agent.mcp_server import register_extra_surface
17
+
18
+ register_extra_surface(context.server)
19
+
20
+
21
+ connector = Connector(
22
+ instructions="microsoft-agent MCP Server: one typed tool per Microsoft Graph operation.",
23
+ api=MicrosoftGraphApi,
24
+ get_client=get_client_dependency,
25
+ extra_registrations=(_register_extras,),
26
+ )
27
+
28
+ __all__ = ["__version__", "connector"]
@@ -1,5 +1,7 @@
1
1
  from typing import Any
2
2
 
3
+ from scion_sdk.mcp.destructive import destructive_operation
4
+
3
5
  from microsoft_agent.api._graph_models import (
4
6
  graph_model_from_dict,
5
7
  )
@@ -137,6 +139,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
137
139
  print(f"Operation failed: {type(e).__name__}")
138
140
  return {"error": "Operation failed"}
139
141
 
142
+ @destructive_operation
140
143
  async def update_organization(
141
144
  self, org_id: str, data: dict[str, Any], params: dict | None = None
142
145
  ) -> dict[str, Any]:
@@ -555,6 +558,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
555
558
  print(f"Operation failed: {type(e).__name__}")
556
559
  return {"error": "Operation failed"}
557
560
 
561
+ @destructive_operation
558
562
  async def create_conditional_access_policy(
559
563
  self, data: dict[str, Any], params: dict | None = None
560
564
  ) -> dict[str, Any]:
@@ -582,6 +586,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
582
586
  print(f"Operation failed: {type(e).__name__}")
583
587
  return {"error": "Operation failed"}
584
588
 
589
+ @destructive_operation
585
590
  async def update_conditional_access_policy(
586
591
  self, policy_id: str, data: dict[str, Any], params: dict | None = None
587
592
  ) -> dict[str, Any]:
@@ -919,6 +924,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
919
924
  print(f"Operation failed: {type(e).__name__}")
920
925
  return {"error": "Operation failed"}
921
926
 
927
+ @destructive_operation
922
928
  async def create_role_assignment(
923
929
  self, data: dict[str, Any], params: dict | None = None
924
930
  ) -> dict[str, Any]:
@@ -8,7 +8,7 @@ from kiota_authentication_azure.azure_identity_authentication_provider import (
8
8
  from msgraph import GraphServiceClient
9
9
  from msgraph.graph_request_adapter import GraphRequestAdapter
10
10
  from scion_sdk.exceptions import AuthError
11
- from scion_sdk.http.client import create_async_http_client
11
+ from scion_sdk.http.client import build_http_client
12
12
  from scion_sdk.http.options import HttpClientOptions
13
13
  from scion_sdk.http.retry import RetryPolicy
14
14
  from scion_sdk.tls.profile import ResolvedTLSProfile
@@ -44,7 +44,7 @@ class MicrosoftGraphApiBase(ABC):
44
44
  scopes=auth_manager.scopes,
45
45
  allowed_hosts=[endpoint_host],
46
46
  )
47
- self._http_client = create_async_http_client(
47
+ self._http_client = build_http_client(
48
48
  HttpClientOptions(
49
49
  base_url=auth_manager.graph_base_url,
50
50
  timeout=httpx.Timeout(30.0),
@@ -55,7 +55,8 @@ class MicrosoftGraphApiBase(ABC):
55
55
  max_keepalive_connections=16,
56
56
  ),
57
57
  pin_egress=True,
58
- )
58
+ ),
59
+ async_=True,
59
60
  )
60
61
  except Exception:
61
62
  self.tls_profile.cleanup()
@@ -1,6 +1,7 @@
1
1
  from typing import Any
2
2
 
3
3
  from msgraph.generated.users.users_request_builder import UsersRequestBuilder
4
+ from scion_sdk.mcp.destructive import destructive_operation
4
5
 
5
6
  from microsoft_agent.api._graph_models import (
6
7
  graph_model_from_dict,
@@ -639,6 +640,7 @@ class MicrosoftGraphApiDirectory(MicrosoftGraphApiBase):
639
640
  print(f"Operation failed: {type(e).__name__}")
640
641
  return {"error": "Operation failed"}
641
642
 
643
+ @destructive_operation
642
644
  async def dismiss_risky_user(
643
645
  self, user_id: str, params: dict | None = None
644
646
  ) -> dict[str, Any]:
@@ -1,5 +1,7 @@
1
1
  from typing import Any
2
2
 
3
+ from scion_sdk.mcp.destructive import destructive_operation
4
+
3
5
  from microsoft_agent.api._graph_models import (
4
6
  comma_separated_values,
5
7
  graph_model_from_dict,
@@ -581,6 +583,7 @@ class MicrosoftGraphApiDrive(MicrosoftGraphApiBase):
581
583
  print(f"Operation failed: {type(e).__name__}")
582
584
  return {"error": "Operation failed"}
583
585
 
586
+ @destructive_operation
584
587
  async def update_admin_sharepoint(
585
588
  self, data: dict[str, Any], params: dict | None = None
586
589
  ) -> dict[str, Any]:
@@ -5,6 +5,8 @@ from typing import TYPE_CHECKING, Any
5
5
  if TYPE_CHECKING:
6
6
  from microsoft_agent.power_platform import AsyncHttpTransport
7
7
 
8
+ from scion_sdk.mcp.destructive import destructive_operation
9
+
8
10
  from microsoft_agent.api._graph_models import (
9
11
  decode_graph_base64,
10
12
  graph_model_from_dict,
@@ -482,6 +484,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
482
484
  print(f"Operation failed: {type(e).__name__}")
483
485
  return {"error": "Operation failed"}
484
486
 
487
+ @destructive_operation
485
488
  async def create_application(
486
489
  self, data: dict[str, Any], params: dict | None = None
487
490
  ) -> dict[str, Any]:
@@ -553,6 +556,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
553
556
  print(f"Operation failed: {type(e).__name__}")
554
557
  return {"error": "Operation failed"}
555
558
 
559
+ @destructive_operation
556
560
  async def add_application_password(
557
561
  self, app_id: str, data: dict[str, Any], params: dict | None = None
558
562
  ) -> dict[str, Any]:
@@ -657,6 +661,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
657
661
  print(f"Operation failed: {type(e).__name__}")
658
662
  return {"error": "Operation failed"}
659
663
 
664
+ @destructive_operation
660
665
  async def create_service_principal(
661
666
  self, data: dict[str, Any], params: dict | None = None
662
667
  ) -> dict[str, Any]:
@@ -1069,6 +1074,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
1069
1074
  print(f"Operation failed: {type(e).__name__}")
1070
1075
  return {"error": "Operation failed"}
1071
1076
 
1077
+ @destructive_operation
1072
1078
  async def wipe_managed_device(
1073
1079
  self, device_id: str, params: dict | None = None
1074
1080
  ) -> dict[str, Any]:
@@ -1094,6 +1100,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
1094
1100
  print(f"Operation failed: {type(e).__name__}")
1095
1101
  return {"error": "Operation failed"}
1096
1102
 
1103
+ @destructive_operation
1097
1104
  async def retire_managed_device(
1098
1105
  self, device_id: str, params: dict | None = None
1099
1106
  ) -> dict[str, Any]:
@@ -39,7 +39,6 @@ def configuration_report() -> dict[str, Any]:
39
39
  },
40
40
  "policy": {
41
41
  "writes_enabled": settings.allow_write_tools,
42
- "destructive_enabled": settings.allow_destructive_tools,
43
42
  "enabled_tool_groups": list(settings.enabled_tool_groups),
44
43
  },
45
44
  "documents": get_document_capabilities().model_dump(mode="json"),