Teams Phone Numbers & Calling Licence Usage
The question it answers: Which acquired phone numbers are unassigned, and which Calling Plan licences are not used?
Acquired phone numbers cost money whether they are assigned or not, and Calling Plan licences are wasted on users without a number or who never make PSTN calls. This report lists unassigned numbers and calling licences without use.
At a glance
Section titled “At a glance”| Where in the app | Tenant › Teams Voice, Power Platform & Copilot › Phone Numbers & Calling Licences |
| Workload | Teams and collaboration |
| Kind | Findings list · dashboard tile |
| Data | Read from Microsoft 365 when someone first opens it, then kept for the report cache lifetime (Settings > Data & cache, 1 hour unless changed). It reads through PowerShell (Exchange Online or SharePoint Online), so the first load takes longer than a Graph report. |
| Licence | Teams Phone / Calling Plans. |
| Report id (API and MCP) | tenant.collaboration.phone-numbers |
Columns
Section titled “Columns”| Column | Key | Type |
|---|---|---|
| Severity | Severity | Status |
| Finding | Category | Text |
| Number / user | Subject | Link |
| Check | Setting | Text |
| Type / plans | Value | Text |
| Finding | Finding | Text |
| Detail | Detail | Text |
| Date | When | Date |
| Count | Number | Number |
A findings list hides columns that no row fills. Severity is Critical, Serious, Warning, OK or Info; rows rated Critical, Serious or Warning need attention (Working with findings).
What it needs
Section titled “What it needs”Licence: Teams Phone / Calling Plans.
Application permissions on the IntensiveReports app registration (all permissions):
| Permission | API | What it allows | Note |
|---|---|---|---|
Organization.Read.All | Microsoft Graph | Read organization information | |
CallRecords.Read.All | Microsoft Graph | Read all call records | |
User.Read.All | Microsoft Graph | Read all users’ full profiles | |
User-LifeCycleInfo.Read.All | Microsoft Graph | Read all users’ lifecycle information |
Roles and other setup:
- Teams PowerShell app-only (certificate)
Data sources it reads
Get-CsPhoneNumberAssignmentGET /v1.0/subscribedSkusGET /v1.0/communications/callRecords/getPstnCallsGET /v1.0/communications/callRecords/getDirectRoutingCallsGET /v1.0/users (cached)
Through the API and MCP
Section titled “Through the API and MCP”GET /ir-api/v1/reports/tenant.collaboration.phone-numbers?size=100An AI assistant reads it with the MCP tool get_report and the id tenant.collaboration.phone-numbers. The client needs the Read grant for Teams and collaboration. See Using the API.