There is no single Graph, Dataverse, or Power Platform endpoint that returns CSAT, runtime security/risk, and token usage together; use Dataverse transcripts for CSAT, the Agent Review Tool’s Dataverse table for generated risk scores, and Power Platform capacity reports for consumption.
Supported data paths
| Data needed |
Supported source |
Programmatic availability |
| CSAT |
ConversationTranscript in Dataverse |
Yes—export or query the Dataverse table |
| Runtime protection/security |
Copilot Studio Agents → Protection status |
No documented API or Dataverse field for this status |
| Review-generated risk/compliance score |
Agent Review Tool → cat_agentreviews |
Yes—query Dataverse after running reviews |
| Token usage |
Power Platform admin center consumption reports |
Exact input/output/cached token counts aren't provided |
| Agent inventory/metadata |
Microsoft Graph agent registry |
Yes, but it doesn't document CSAT, protection status, or token counts |
1. Retrieve CSAT from Dataverse
Copilot Studio writes usage and transcript data to the associated environment’s ConversationTranscript table. Its Content column contains JSON activities, including CSATSurveyRequest and CSATSurveyResponse; metadata identifies the agent. Default Dataverse transcript retention is 30 days.^1^ ^2^
To inspect the data first:
- Open Power Apps → Tables → All.
- Search for and open ConversationTranscript.
- Select Export → Export data.
- Parse the
Content JSON for activities whose valueType is CSATSurveyResponse.
- Use
Metadata.BotId or Bot_ConversationTranscript to associate results with an agent.
The caller needs the Bot Transcript Viewer security role; Environment Maker alone doesn't automatically grant transcript access.^2^
A simplified parsing pattern is:
const transcript = JSON.parse(row.Content);
const csatResponses = transcript.activities
.filter(a => a.valueType === "CSATSurveyResponse")
.map(a => ({
timestamp: a.timestamp,
response: a.value
}));
For an interface, query conversationtranscript through the normal Dataverse Web API using an application or delegated identity that has table read permission, then perform this JSON parsing in the service layer. Alternatively, Copilot Studio’s Analytics → Effectiveness page displays the CSAT score, calculated as the average score out of five for sessions in which users answered the survey.^3^
2. Separate runtime security from review-generated risk
Runtime protection status
For published agents, Copilot Studio displays Protected, Needs review, or Unknown under Agents → Protection status. Selecting the status opens Authentication, Policies, Content moderation, blocked-message statistics, and security trends for the last 7, 14, or 30 days.^4^
The documented interface is the Copilot Studio UI. Microsoft Graph agent registry APIs provide agent inventory and metadata for administrators, but the documentation doesn't state that they return Copilot Studio’s protection status or security-analytics values.^5^
Therefore, don't scrape the Copilot Studio page or assume the protection value exists in the bot table. A supported public endpoint for this particular runtime status isn't documented.
Risk/compliance scores that can be queried
If your interface can display an assessment generated by the Copilot Agent Kit Agent Review Tool, run a review for each agent:
- Install/open Agent Review Tool.
- Select the environment.
- Find the agent and select Review.
- Read the resulting rows from the Dataverse table
cat_agentreviews.
Useful columns include:
-
cat_botid
-
cat_overallscore
-
cat_patternscore
-
cat_instructionscore
-
cat_totalissues
-
cat_reviewresultjson
These are review results—not the built-in runtime Protection status. Reviews are user-scoped: users can only read reviews they created, and each review consumes Copilot Credits.^6^
3. Retrieve consumption, not exact token counts
For agent-level consumption:
- Open Power Platform admin center.
- Go to Licensing → Products → Copilot Studio → Summary.
- Select Download report.
- Download the agent report, or select an environment and download its detailed report.
The detailed report includes agent, AI feature, channel, LLM model, knowledge source/tool, and billed/non-billed Copilot Credits. It explicitly does not include per-message usage or input, output, and cached token counts.^7^
For supported reasoning-model rows, credits can provide an approximate billed-token estimate by multiplying credits by 100, but prompt-tool consumption can make that approximation inaccurate.^7^
For automation, Agent Inventory can retain up to 180 days of usage metrics in its Agent Details and Agent Usage History Dataverse tables after Agent sync configuration → Include usage metrics is enabled.^8^
References
- Develop a custom analytics strategy
- Understand downloaded conversation transcripts from Power Apps
- Monitor conversational agent effectiveness
- Agent runtime protection status
- Agent registry integration for Copilot Studio
- Analyze agents using Agent Review Tool in Copilot Agent Kit
- Manage Copilot Credits and capacity for Copilot Studio
- Monitor agents by using Agent Inventory in Copilot Agent Kit