Copilot Package Management MCP connector for Copilot Studio
May 11, 2026
IT admins manage Copilot agents and apps through the Microsoft 365 admin center—one package at a time. The Microsoft Graph beta Package Management API exposes the tenant catalog programmatically, but there’s no built-in Power Platform connector for it. This custom connector surfaces 6 MCP tools so a Copilot Studio agent can inventory, inspect, block, unblock, update access, and reassign ownership of packages without leaving the conversation.
What the connector covers
The connector wraps the beta/copilot/admin/catalog/packages endpoint with both standard Power Automate operations and MCP tools for Copilot Studio.
Standard operations (Power Automate)
| Operation | Description |
|---|---|
| List packages | Retrieve all Copilot agents and apps in the tenant catalog. Supports $filter on supportedHosts, elementTypes, and lastModifiedDateTime |
| Get package details | Get detailed metadata for a specific package including element details, categories, and access information |
| Update package | Update the allowed and acquired users/groups for a package |
| Block package | Block a package to prevent usage across the organization |
| Unblock package | Unblock a package to allow usage |
| Reassign package | Reassign package ownership to a different user |
MCP tools (Copilot Studio)
| Tool | Description |
|---|---|
| list_packages | List all packages with optional filters for host, element type, and modified date |
| get_package_details | Get detailed metadata for a specific package |
| block_package | Block a package to prevent usage |
| unblock_package | Unblock a package to allow usage |
| update_package_access | Update allowed and acquired users/groups for availability and deployment control |
| reassign_package | Reassign package ownership to a new user |
Filtering
The list_packages tool supports three filter parameters that map to OData $filter expressions:
| Parameter | Values | Example filter |
|---|---|---|
| supportedHost | Copilot, Outlook, Teams, M365 | supportedHosts/any(h:h eq 'Copilot') |
| elementType | Bots, DeclarativeAgent, CustomEngineAgent, OfficeAddIns | elementTypes/any(h:h eq 'DeclarativeAgent') |
| lastModifiedAfter | ISO 8601 date | lastModifiedDateTime gt 2026-01-01T00:00:00Z |
Filters combine with and when multiple parameters are provided. The MCP tool builds the OData expression automatically—the agent just passes the values.
Package metadata
Each package returned by list_packages includes:
- displayName — human-readable name
- type — microsoft, external, shared, or custom
- isBlocked — whether the package is administratively blocked
- availableTo / deployedTo — scope: all, some, or none
- supportedHosts — where the package runs (Copilot, Teams, Outlook, M365)
- elementTypes — what’s inside (Bots, DeclarativeAgent, CustomEngineAgent)
- publisher, version, platform — origin and version info
The get_package_details tool returns additional fields: longDescription, sensitivity, categories, allowedUsersAndGroups, acquireUsersAndGroups, and elementDetails.
Agent scenarios
Inventory audit:
“List all declarative agents in the tenant” → Agent calls
list_packageswithelementType: DeclarativeAgent→ returns every declarative agent with publisher, version, and deployment scope
Block a rogue agent:
“Block the package with ID abc-123” → Agent calls
block_package→ package is immediately prevented from running across the organization
Access control:
“Make this agent available only to the Sales team” → Agent calls
update_package_accesswith the Sales group ID inallowedUsersAndGroups→ restricts availability to that group
Ownership transfer:
“Reassign all of Kim’s agents to Alex” → Agent calls
list_packages→ filters by publisher → callsreassign_packagefor each package with Alex’s user ID
Recently changed packages:
“What agents were modified in the last 30 days?” → Agent calls
list_packageswithlastModifiedAfter: 2026-04-11T00:00:00Z→ returns recently updated packages for review
Prerequisites
- A Microsoft Agent 365 license
- An Entra ID app registration with these delegated permissions:
CopilotPackages.Read.All— list and view packagesCopilotPackages.ReadWrite.All— block, unblock, update, and reassign packages
- Global Administrator or appropriate admin role to manage packages
Setup
- Register an Entra ID application (or use an existing one)
- Add the delegated permissions listed above
- Grant admin consent
- Add the redirect URI:
https://global.consent.azure-apim.net/redirect - Update
apiProperties.jsonwith your client ID - Deploy with PAC CLI:
pac connector create `
--api-definition-file apiDefinition.swagger.json `
--api-properties-file apiProperties.json `
--script-file script.csx
For Copilot Studio:
- Open your agent
- Go to Actions > Add an action > Connector
- Search for your connector and add it
- The agent discovers all 6 tools automatically
Application Insights
Add your connection string to script.csx to track:
- All incoming requests with correlation IDs
- MCP tool invocations with timing
- Errors with full exception details
Important notes
- This API is in beta and subject to change. Don’t use in production.
- Only available in the Global service cloud (not US Government or China).
- The
List packagesoperation only supports delegated permissions (not application-only). - Requires a Microsoft Agent 365 license.