# Three access reports return identities as IDs only
URL: https://docs.autociso.io/release-notes/2026-09-mcp-access-report-identities/
Description: uar_status, access_normalization_health and access_anomaly_discovery no longer carry the reviewed account's name, the reviewer's name or a free-text description over MCP — each item carries employee, user and task IDs instead.

## Three access reports return identities as IDs only

**Plans:** The Seed and above (backend 2.5.14).
**Where:** the `/mcp` endpoint — `uar_status`, `access_normalization_health`, `access_anomaly_discovery`

Every MCP result is masked by field name before it leaves the server. Three of the original access reports carried a person's identity under a field the mask did not cover, so an `mcp:read` token could read it without `pii:read`:

- `uar_status` → `overdueItems[].subjectName` (the account name as the connected system reported it) and `reviewerName`;
- `access_normalization_health` → `lowConfidenceItems[].rawName`;
- `access_anomaly_discovery` → `items[].description`, a sentence that embedded the account name and email.

### What changed

The three tools now return a projected item, in the same envelope as before:

| Tool | Item fields |
|------|-------------|
| `uar_status` | `taskId`, `campaignName`, `subjectEmployeeId` (when the account was matched), `reviewerUserId`, `assetId`, `assetName`, `status`, `daysSinceDue`, `riskScore` |
| `access_normalization_health` | `taskId`, `suggestedEmployeeId` (when the matcher has a candidate), `assetId`, `assetName`, `confidence`, `status`, `riskScore` |
| `access_anomaly_discovery` | `auditId`, `assetId`, `assetName`, `assetCriticality`, `auditedAt`, `type`, `severity`, `employeeId` (when matched), `riskScore`, `dueAt` |

The removed fields are gone from the wire, not blanked: `subjectName`, `reviewerName`, `reviewerEmail`, `rawName`, `rawEmail`, `description`, `name` and `email` no longer appear in these results. Counts, buckets and per-asset breakdowns are unchanged. A `pii:read` token resolves any of the returned employee IDs to a name with [`employee_resolve`](https://docs.autociso.io/developers/mcp/authentication/#pii-read), which records the lookup in the audit trail.

The console pages behind these reports are not affected — they still show names to signed-in users with the right role.

### If you integrate with these tools

- Read the identity from `subjectEmployeeId` / `suggestedEmployeeId` / `employeeId`. An item without one is an account the matcher could not attribute to an employee — that is itself the finding for a ghost-account review.
- Drop any parsing of `description`; `type` and `severity` carry the classification.
- The TypeScript and Python SDKs regenerate from the manifest; the tool descriptions now state what each item carries.
