Drop your Azure Resource Graph export and instantly visualize custom Copilot Studio agents across your tenant — no auth, no backend, no Entra app registration.
Power Platform Admin Center inventory mixes pre-built / system agents (D365 Sales, Customer Service, etc.) with the ones your makers actually built, inflating leadership-facing counts. This tool lets you:
- Export a clean custom-agents-only list from Azure Resource Graph (ARG)
- Drop the CSV here
- Get instant stats, charts, and a filterable table
- Re-export just the filtered slice for a leadership report
Everything runs in the browser — your CSV never leaves your machine.
Live demo: https://mmonisha.github.io/agent-inventory-explorer/
- Open the demo
- Click "try with sample data" to load 160 rows of generic data, or drop your own ARG CSV onto the drop zone
- Search, filter by authoring tool (Copilot Studio vs. M365 Agent Builder) or orchestration mode (Generative vs. Classic)
- Click Export filtered CSV to download the current view
git clone https://github.com/mmonisha/agent-inventory-explorer.git
cd agent-inventory-explorer
# Any static server works. Python is built into Windows:
python -m http.server 8000
# Open http://localhost:8000/Opening
index.htmldirectly withfile://works for drag-and-drop, but the "try with sample data" link needs a local server (browsers blockfetch()againstfile://).
- Open Azure Resource Graph Explorer
- Paste a query that filters Copilot Studio agents (see the example below)
- Click Run query → Download as CSV
- Drop the CSV into this dashboard
Example KQL — custom agents only, excluding pre-built / D365 system agents:
PowerPlatformResources
| where type == "microsoft.copilotstudio/agents"
| extend props = parse_json(properties)
| extend agentName = tostring(props.displayName)
| where agentName !in (
"Case Enrichment Onboarding Agent", "Case Management Agent",
"Copilot in Dynamics 365 Sales", "Copilot in Power Apps",
"Customer Service Copilot Bot", "D365 Sales Agent - Outreach"
/* ...add the full pre-built exclusion list for your tenant... */
)
| project agentName,
environmentId = tostring(props.environmentId),
createdBy = tostring(props.createdBy),
createdAt = tostring(props.createdAt),
createdIn = tostring(props.createdIn),
orchestration = tostring(props.orchestration),
lastPublished = tostring(props.lastPublishedAt),
isManaged = tostring(props.isManaged)
| order by createdAt ascPrerequisites: an Azure subscription in the same tenant + Power Platform Administrator, Dynamics 365 Administrator, or Global Reader role.
The dashboard reads a flat CSV with these columns (header names are case-insensitive and a few aliases are accepted):
| Column | Required | Example |
|---|---|---|
displayname (or agentName) |
✅ | HR Benefits Q&A |
environmentid |
✅ | env-prod-shared-001 |
createdby |
amartin@contoso.com |
|
createdat |
2026-02-15T10:00:00Z |
|
createdin |
Copilot Studio or Microsoft 365 Copilot Agent Builder |
|
orchestration |
Generative or Classic |
|
lastpublishedat |
2026-03-01T09:30:00Z (blank = draft) |
|
ismanaged |
true / false / blank |
See sample-data.csv for 160 rows of generic synthetic data.
.
├── index.html Static dashboard (HTML + vanilla JS)
├── sample-data.csv 160 rows of generic synthetic data
├── generate_sample_data.py Deterministic data generator (seed=42)
├── generate_arg_mock_screenshot.py Renders the ARG Explorer mock for the blog
├── arg-explorer-mock.png Pre-rendered ARG Explorer mock
└── agent-inventory-explorer-dashboard.png Dashboard screenshot
No build step, no dependencies — just open index.html.
MIT. Fork it, tweak it, ship it.
